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

我在使用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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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