python - 如何自动识别同一篇论文的引用情况?

标签 python string-comparison similarity citations

考虑引用同一篇论文的 3 种方法:

cite1 = "Yoshua Bengio, Réjean Ducharme, Pascal Vincent and Christian Jauvin, A Neural Probabilistic Language Model (2003), in: Journal of Machine Learning Research, 3(1137--1155)"

cite2 = "Yoshua Bengio, Réjean Ducharme, Pascal Vincent, Christian Jauvin. (2003) A Neural Probabilistic Language Model"

cite3 = "Bengio Y, Ducharme R, Vincent P, Jauvin C. (2003) A Neural Probabilistic Language Model"

自动识别同一篇论文的引用的一个简单方法是使用 Python 标准库中的 difflib 模块计算这些引用的相似度:

from difflib import SequenceMatcher as smatch
def similar(x, y): return smatch(None, x.strip(), y.strip()).ratio()

similar(cite1, cite2)    # 0.721
similar(cite1, cite3)    # 0.553
similar(cite2, cite3)    # 0.802

不幸的是,相似度指标的范围是 0.553 到 0.802,因此不清楚应该设置什么阈值。如果阈值太低,那么不同论文的引用可能会被误认为是同一篇论文。但如果阈值太高,我们就会错过一些引用。

有更好的解决方案吗?

最佳答案

重要的是要考虑是什么使引文独一无二?

根据您的示例,作者、文章标题以及发表年份的组合似乎构成了唯一的引用。

这意味着您可以解析名称,然后比较它们的接近程度(因为第三个示例列出的名称不同)。解析标题,应该100%匹配。解析年份,也应该是100%匹配。

关于python - 如何自动识别同一篇论文的引用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51159642/

相关文章:

python - 如何以完全矢量化的方式确定多行之间的行相等性?

python - 将每个 seaborn 图形附加到 for 循环内的 PDF

python - 为什么我的脚本不写入文件?

c - 如何检查字符串是否包含特定字符?

php - 使用 PHP 从 MySQL 数据库中选择可能相关的项目(如 : for 'orange' , 给出 'bread')

algorithm - 相似性搜索的索引

python - 使用生成器按多个属性对对象列表进行排序

python - 我的 "urls.py"文件在我的 Django 项目中放在哪里?

Javascript 字母数字字符串比较

batch-file - 批量字符串与符号的比较