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

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

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

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

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

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


回答:

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

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

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

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

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


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

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中创建了一个多类分类项目。该项目可以对…

发表回复

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