在重复检测算法中组合独立分数以生成总分

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

  • 文档长度的比较
  • 文档标题的比较
  • 文档引用的比较
  • 使用”gestalt模式匹配“比较文档文本

我可以轻松地为这些因素中的任何一个获得0-1的值,但我卡在如何将这些因素组合成一个总分上。

例如,如果长度完全一致且标题非常相似,我可以假设它是重复的,即使引用相当不同,因为这个语料库中的引用很混乱。你可以想象类似的情况(长度不一致,但其他因素一致;所有因素都还不错但不完美;等等)。

最终我想让系统识别可能重复的文档(这部分很容易),然后我来决定是或不是。当我对这些重复进行投票时,它会确定在有效的重复中应该期望什么样的分数,并学会在没有我的投票的情况下如何继续进行。


回答:

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

也就是说,你需要的是一个黑盒函数,它为这些因素中的每一个提供0-1的分数,并给你一个总体分数,以判断文档对是否应被视为重复。你需要根据一系列(输入,输出)对来选择这样的函数,其中输入是上述四个特征(或你认为可能有意义的其他特征),输出是0(非重复)或1(重复)。

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

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

如果你想要一个简单的numpy实现作为参考,这里有一个我为课堂作业写的


请注意,这种方法只告诉你如何进行成对比较:除非你的文档数量非常少,否则你可能不希望对每对文档都这样做(因为至少模糊内容匹配的计算成本可能相当高,尽管使用逻辑回归实际预测相当容易)。你可能需要想出一些启发式方法来决定哪些文档应被视为重复(基于,例如,最近邻标题搜索或引用匹配或TF-IDF分数或其他什么)。

Related Posts

L1-L2正则化的不同系数

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

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

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

f1_score metric in lightgbm

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

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

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

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

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

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

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

发表回复

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