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

One-to-one matching to labels for text classification

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

例如,假设我想根据它们代表的城市来标记三个文档。我的标签选择是纽约、底特律和洛杉矶。我的文档是 "The Big Apple," "The Big City," 和 "City of Angels." 就这个例子来说,"City of Angels" 最接近洛杉矶,而 "The Big Apple" 和 "The Big City" 应该最接近纽约。但是,我希望一个映射到纽约("The Big Apple",因为假设它更合适),一个映射到底特律,因为纽约已经被使用过,而底特律是唯一剩下的选择,它仍然某种意义上符合。

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

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

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

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

例如:

  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 函数(returns 是每个文档具有最大概率的标签)。

在这种情况下,argmax 函数将 return 标签 "New York" 用于文档 "The Big Apple" 和 "The Big City",标签 "The Big City" 用于文档 "Detroit" 和文档 "City of Angels".

的标签 "Los Angeles"

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

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

有关 ID3 决策树算法的更多信息 here