计算众多文件(例如圣经书籍)相似度的算法

时间:2011-11-15 05:15:34

标签: algorithm search text graph indexing

我的目标是以一种能够计算圣经任何两本书相对相似性的方式处理圣经。理想情况下,如果他们的单词分布相似,那么两本书应该得分更高,但如果他们有更多共同的短语。例如,马太的书大量借用马克的书,但大约是长度的两倍,虽然许多段落是逐字重复的,但重复经文的顺序并不一致。

如果这可以分层次地完成,那将是很好的;经文分别处理,汇总成章,然后最后书。给出一节经文,能够通过章节和书籍检索相似经文的排序列表等等是件好事。

如果系统可以对类似的单词(步行,走路,走路)给予部分功劳,那也是好的。

一旦完成,我想将其扩展到任何文档集。

到目前为止,我正在考虑将每个单词存储为图形数据库中的inverted index,然后使用图算法对图表的相似性进行评分,但我不知道用于评分的算法是什么(Collaborative Filtering?)。

Levenstein DistanceBK-Trees之类的东西可能会有所帮助(对于模糊匹配)但似乎不适合整体解决方案。也许通过BK树预处理单词并使用结果向图中添加额外的链接可以帮助实现模糊匹配功能。

1 个答案:

答案 0 :(得分:4)

词频相似度包括http://en.wikipedia.org/wiki/Cosine_similarity http://en.wikipedia.org/wiki/Jaccard_index(请注意http://en.wikipedia.org/wiki/MinHash的引用 - 您可以将其与短语一起使用)http://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence是不对称。

只要您感兴趣的是单词或短语频率,您只需要计数,而使用MinHash,您只需要选择计数。如果您对所讨论的语言有所了解,则可以通过将每个单词缩减为根来查看相似的单词。对于英语,您可能从http://en.wikipedia.org/wiki/Wordnet#Other_languages获得语言信息。不知道希伯来语/新约希腊文。

如果您在两个文档之间复制了大块,则可以使用后缀数组 - 一个跳出点为http://algs4.cs.princeton.edu/63suffix/