多类文本分类,每类一个训练样例

Posted

技术标签:

【中文标题】多类文本分类,每类一个训练样例【英文标题】:Multi-class text classification with one training example per class 【发布时间】:2021-07-03 01:12:40 【问题描述】:

我正在尝试解决多类单标签文档分类问题,将单个类分配给文档。文档是特定领域的技术文档,带有技术术语:

Train:我有 19 个班级,每个班级都有一个文档。 目标:我有 77 个没有标签的文档,我想将其分类为 19 个已知类别。 预处理后的文档有 60-3000 个令牌。 我的整个语料库(19+77 个文档)有 65k 个术语(uni/bi/tri-grams),其中 4.5k 个共同术语(在训练和目标之间)

目前,我正在使用 tf-idf 矢量化器对文档进行矢量化,并将维度缩减为常用术语。然后在训练和目标之间做余弦相似度。

我想知道是否有更好的方法?由于训练中每个类中的单个文档,我无法使用 sklearn 分类器。关于可能的改进/方向的任何想法?特别是:

鉴于语料库较小,使用 word-embeddings/doc2vec 是否有意义? 从训练集中的术语生成合成训练数据是否有意义? 还有其他想法吗?

提前致谢!

【问题讨论】:

【参考方案1】:

很高兴看到您已经考虑了用于半监督文本分类场景的常用策略 - 生成合成数据、预训练词嵌入。不幸的是,由于每个类只有一个训练示例,因此无论您的特征提取有多好或数据生成有多有效,您训练的分类器几乎肯定不会泛化。您需要更多(真实)标记数据。

【讨论】:

感谢塞西尔的回答!我知道分类器不会泛化,但是,我想知道是否有任何其他方法可以可靠地标记文档?例如:将标签与主题建模等结合使用...也许您对此有任何想法? 您确定学习分类器是最好的方法吗?如果这些是特定领域的技术文档,并且其中只有 77 个具有最多 3000 个令牌,您可能只想自己标记它们并编写基于规则的分类器。

以上是关于多类文本分类,每类一个训练样例的主要内容,如果未能解决你的问题,请参考以下文章

使用预先训练的BERT模型对多类文本分类进行错误分类

SVM 多类文本分类

如何在多类文本分类问题中平衡数据?

多类文本分类:如果输入与类不匹配,则新类

多类文本分类不平衡,处理类“其他”

使用 python 和 nltk 进行多类文本分类