python - 在重复检测算法中合并独立分数以形成总分

标签 python machine-learning scoring

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

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

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

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

最佳答案

您可以使用某种机器学习 classification algorithm将您的输入用作特征。

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

这正是分类的标准设置。完成此操作的一些选项包括 logistic regression , decision trees , neural networks , support vector machines ,还有更多。

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

如果您想要一个简单的 numpy 实现以供引用,here's one我为类作业写的。


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

关于python - 在重复检测算法中合并独立分数以形成总分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9561231/

相关文章:

python - 标准化字符串文件路径的函数

python - 与 ROC 交叉验证?

python - 如何使用列表理解将元素添加到字典的副本中?

python - 使用 scipy.io.wavfile 读取 wav 文件然后写入不会重现原始文件

machine-learning - k-means会陷入无限循环吗?

database - 您如何从数据库中预先计算评分系统?

java - 在(还)不存在的字段上使用 field_value_factor 进行函数评分查询

algorithm - 计算游戏中相对于之前得分和其他玩家的最终得分

python - 为什么 Sqlite 在我明明创建时告诉我不存在这样的列?

machine-learning - 使用rapidminer中的堆叠模块