文本分类中的一对一标签匹配

我在使用scikit-learn进行文本分类任务,我想了解是否有机器学习技术可以使用一对一、互斥的方式进行标签映射。

例如,假设我想根据城市对三份文档进行标记,可选的标签是纽约、底特律和洛杉矶。我的文档分别是“大苹果”、“大城市”和“天使之城”。假设在这个例子中,“天使之城”最接近洛杉矶,而“大苹果”和“大城市”都最接近纽约。但是,我想让一个映射到纽约(因为假设“大苹果”更适合),另一个映射到底特律,因为纽约标签已被使用,底特律是剩下的唯一选择,尽管它在某种程度上也合适。

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

scikit-learn或其他库是否有处理这种一对一(且仅此一对一)的文本分类功能,就像我希望的那样?


回答:

为了实现这种功能,我建议你这样做:

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

例如:

  文档            "大苹果"       "大城市"       "天使之城"      标签
       "纽约"        0.45           0.45            0.1
    "底特律"         0.4            0.5             0.1
  "洛杉矶"         0.15           0.05            0.8

你现在可能已经明白我的意思了。

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

在这种情况下,argmax函数将为文档“大苹果”和“大城市”返回标签“纽约”,为文档“底特律”返回标签“大城市”,为文档“天使之城”返回标签“洛杉矶”。

由于在这种情况下分配标签“纽约”给文档时存在冲突(我宁愿不称之为冲突),因为你需要一对一的映射,所以我建议你转到下一个标签。标签“大城市”可以明确分配给文档“底特律”,因为它具有最大的概率(匹配),然后你从可能的标签集中移除标签“底特律”(剩余标签 -> “纽约”和“洛杉矶”)。然后你继续到下一个标签“洛杉矶”,argmax函数告诉你文档“天使之城”具有最高的概率(最大匹配)拥有标签“洛杉矶”。然后你从剩余标签中移除标签“洛杉矶”。此时,剩余标签 -> “纽约”。然后你转到下一个标签“纽约”,发现它只能分配给“大苹果”,这样你就实现了文档和标签之间的一对一映射。

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

关于ID3决策树算法的更多信息,请点击这里

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注