在重复检测算法中合并独立分数以获得总分

mli*_*ner 5 python scoring machine-learning

我正在构建一个重复检测器,并且我已经确定了一些与重复相关的因素:

我可以轻松获得这些因素中任何一个的 0-1 值,但我遇到的问题是如何将这些因素组合成一个聚合值。

因此,例如,如果长度准确并且标题非常相似,即使引文相当不同,我也可能会认为它是重复的,因为这个语料库中的引文很混乱。或者你可以想象类似的事情(长度关闭,但其他因素开启;所有因素都很好,但不是很好;等等)。

最终我想做的是让系统识别可能重复的文档(这部分很简单),然后我说是或否。当我对这些重复项进行投票时,它会确定有效的重复项应该得到什么样的分数,并学习如何在没有我的同意或反对的情况下继续进行。

Dou*_*gal 2

您可以使用某种机器学习分类算法,将您的输入用作特征。

也就是说,您要求的是一个黑盒函数,它为每个因素取 0-1 的分数,并为您提供关于文档对是否应被视为重复的总体分数。您需要根据(输入,输出)对列表选择这样的函数,其中输入是上面的四个特征(或您认为可能有意义的任何其他特征),输出是 0 (不重复)或1(重复)。

这正是分类的标准设置。实现这一目标的一些选项包括逻辑回归决策树神经网络支持向量机等等。

逻辑回归可能是一个不错的选择;它实施起来相当容易和快速,但也非常强大。基本上,它根据训练数据选择分配给每个维度的权重,然后通过将加权特征相加并将该总和传递给逻辑函数来进行预测,1/(1+exp(sum))以给出重复的概率。这相当于在由特征选择的 4 维空间中选择一个分离超平面:如果 4 维输入点位于一侧,则为正,在另一侧为负。

如果您想要一个简单的 numpy 实现来参考,这里是我为课堂作业编写的一个。


请注意,这种方法仅告诉您如何进行成对比较:除非您的文档数量非常小,否则您可能不想对每对文档都执行此操作(因为模糊内容匹配至少可能相当昂贵来计算,尽管使用逻辑回归,实际预测相当容易)。您可能必须想出一些启发式方法来决定将哪些文档视为重复项(例如,基于最近邻标题搜索或引文匹配或 TF-IDF 分数等)。