我正在考虑写一个简单的研究论文管理器。这个想法是有一个存储库,其中包含每篇论文的元数据
paper_id -> [title, authors, journal, comments...]
由于有可能导入朋友的纸质转储会很好,我正在考虑如何生成论文的 paper_id:恕我直言,应该由 pdf 的文本生成,以保证两个不同的集合有相同的 ID 仅适用于相同的论文。目前,我使用 iText 库提取第一页的文本(删除可能的注释),并从文本中计算 simhash 足迹。主要问题是有时文本略有不同(是的,它发生了!例如this和this)所以我想宽容。使用 simhash 我可以计算出与原始文档有多少相似之处,因此如果足迹不在 repo 中,我将不得不遍历集合以寻找“接近”的足迹。
我不相信这种方法,你能建议一些更好的方法来为这类文件生成签名(短的、数字的或字母数字的)吗?
更新我有这个想法:将第一页分成 8 个(或多或少)不重叠的正方形,覆盖所有页面,然后考虑每个正方形中的文本并生成一个 simhash 签名。最后,我将得到一个 8x64=512 位的签名,如果两篇论文的 simhash 签名集之间的差异之和低于某个阈值,我可以认为它们是相同的。