与标签进行一对一匹配以进行文本分类

Posted

技术标签:

【中文标题】与标签进行一对一匹配以进行文本分类【英文标题】:One-to-one matching to labels for text classification 【发布时间】:2016-11-10 09:56:23 【问题描述】:

我正在使用scikit-learn 解决文本分类问题,我想知道是否有一种机器学习技术使用一对一、互斥的映射进行标记。

例如,假设我想根据它们所代表的城市来标记三个文档。我的品牌选择是纽约、底特律和洛杉矶。我的文件是“大苹果”、“大城市”和“天使之城”。对于这个例子,我们假设“天使之城”最接近洛杉矶,而“大苹果”和“大城市”都应该最接近纽约。但是,我想要一个映射到纽约(“大苹果”,因为让我们说它更合适),一个映射到底特律,因为纽约已经被使用过,而底特律是唯一剩下的选择,它仍然某种意义上是合适的。

我想告诉预测器,如果它使用了一个标签,它就不能再次使用它,所以它需要对该标签做出最好的猜测,因为它只能使用一次。

scikit-learn 或其他库是否具有像我想要的那样处理这种一对一(且只有一个)文本分类的功能?

【问题讨论】:

【参考方案1】:

要实现这种功能,我建议您执行以下操作:

我假设在您的文本分类算法中,您会针对每个标签获得每个文档的概率分数。

例如:

  Documents  "The Big Apple"  "The Big City"  "City of Angels"

  Label     

  "New York"       0.45           0.45            0.1

  "Detroit"        0.4            0.5             0.1                

  "Los Angeles"    0.15           0.05            0.8

你现在也许可以看到我的前进方向了。

使用 argmax 函数(返回每个文档概率最大的标签)。

在这种情况下,argmax 函数将返回文档“The Big Apple”和“The Big City”的标签“New York”,文档“Detroit”的标签“The Big City”和标签文件“天使之城”的“洛杉矶”。

因为在这种情况下,在为文档分配标签“纽约”时存在冲突(我不想称之为冲突)(因为您需要一对一映射),我会说你去到下一个标签。标签“The Big City”可以清楚地分配给文档“Detroit”,因为它具有最大概率(匹配),然后您从可能的标签集中删除标签“Detroit”(剩余标签 -> “New York” ”和“洛杉矶”)。然后转到下一个标签“Los Angeles”,argmax 函数告诉您文档“City of Angels”具有标签“Los Angeles”的最高概率(最大匹配)。然后,您从其余标签中删除标签“洛杉矶”。此时,剩余标签->“纽约”。然后,您转到下一个标签“New York”,看到它可以分配到的唯一文档是“The Big Apple”,并且文档和标签之间存在一对一的映射。

我以前通过两种方式做到这一点,通过随机为文档分配标签来打破平局,或者通过计算下一个标签的概率来打破平局。该技术也用于决策树算法中,以在树中的给定级别找到最合适的属性。它被称为该属性的熵或信息增益。此实现是 ID3 决策树算法的信息增益的更简单版本。

更多关于 ID3 决策树算法here。

【讨论】:

以上是关于与标签进行一对一匹配以进行文本分类的主要内容,如果未能解决你的问题,请参考以下文章

使用 scikit-learn 进行多标签文本分类,使用哪些分类器?

《自然语言处理实战入门》深度学习 ---- 预训练模型的使用(ALBERT 进行多标签文本分类与微调 fine tune)

使用 Sklearn 进行多标签文本分类

如何解决基于 NLP 的 CNN 模型中的过度拟合问题,以使用词嵌入进行多类文本分类?

《自然语言处理实战入门》深度学习 ---- 预训练模型的使用(ALBERT 进行多标签文本分类与CPU 下的微调 fine tune)

使用 Weka 进行文本分类