我正在编写一个 java 软件,它必须对以 UTF-8 编码的两个文档的相似性做出最终判断。
这两个文档很可能相同或略有不同,因为它们具有许多共同特征,例如日期、位置、创建者等,但它们的文本决定了它们是否真实。
我希望这两个文档的文本要么非常相似,要么根本不相似,因此我可以对设置相似性的阈值相当严格。例如,我可以说这两个文档只有在它们有 90% 的词是相同的情况下才相似,但我想要更健壮的东西,它适用于短文本和长文本。
总结一下,我有:
- 两份文件,要么非常相似,要么根本不相似,但是:
- 两份文件更可能相似
- 文档可以很长(一些段落)也可以很短(一些句子)
我已经尝试过simmetrics,它有大量的字符串匹配函数,但我最感兴趣的是关于可能使用的算法的建议。
我有可能的候选人是:
- Levenshtein:它的输出对于短文本更重要
- 重叠系数:可能,但它可以很好地区分不同长度的文档吗?
此外,仅当它们完全相同时才考虑两个相似的文本不会很好,因为我希望只有几个单词不同的文档通过相似性测试。