我正在使用scikit-learn
来解决文本分类问题,我想知道是否存在使用一对一,互斥映射进行标记的机器学习技术。
例如,假设我想根据他们所代表的城市标记三个文件。我的标签选择是纽约,底特律和洛杉矶。我的文件是"大苹果," "大城市,"和#34;天使之城。"让我们来说这个例子就是天使之城"最贴心地映射到洛杉矶,而两个"大苹果"和#34;大城市"应该最贴近纽约。但是,我想要一个人映射到纽约("大苹果"因为让我们说它更合适)和一个映射到底特律,因为纽约已经被使用,而底特律是唯一的选择,它在某种意义上仍然适用。
我想告诉预测器,如果它使用了一个标签,它就不能再使用它,所以它需要对该标签做出最佳猜测,因为它只能使用一次。
scikit-learn
或其他库是否具有处理此一对一(且仅一个)文本分类的功能,如我想做的那样?
答案 0 :(得分:1)
为了实现这种功能,我建议您执行以下操作:
我假设在您的文本分类算法中,您为每个标签获得每个文档的概率分数。
e.g:
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约克“和”洛杉矶“)。然后你转到下一个标签“洛杉矶”,argmax函数告诉你文件“天使之城”具有最高概率(最大匹配)的标签“洛杉矶”。然后从剩余标签中删除标签“Lost Angeles”。此时,剩余标签 - > “纽约”。然后转到下一个标签“纽约”并看到它可以分配给的唯一文档是“The Big Apple”,并且您在文档和标签之间有一对一的映射。
我之前已经通过两种方式完成了这项工作,通过随机为文档分配标签来打破平局,或者通过计算下一个标签的概率来打破平局。该技术还用于决策树算法,以在树中的给定级别找到最合适的属性。它被称为该属性的熵或信息增益。该实现是来自ID3决策树算法的信息增益的更简单版本。
有关ID3决策树算法here的更多信息。