【发布时间】:2013-05-11 20:40:29
【问题描述】:
我需要实现算法(或在开源库中找到一种算法)来评估文本相似性。对于给定的任意两组文档(相对较少的大文本块),我需要一种有效的算法,以便在它们之间创建匹配对 - 最有可能从哪个文档生成哪个文档。
我相信我会将其一分为二——定义每一对的相似系数——然后应用一些分配问题算法。虽然对于分配算法,我可以找到大量的解决方案,但我找不到用于计算相似系数的好解决方案。
请注意,文档是事先不知道的 - 文本的计算索引(如果有的话)也必须很快。
我知道 Hamming 距离、Levenshtein 距离以及其他一些用于字符串差异的算法。不过,这不是我想要的——我是故意使用文本这个词而不是字符串。
我不是在寻找短语搜索算法,也不是在寻找像 Lucene 和 Xapian 这样的库的用途(至少看起来如此)。
可能是基于 tf–idf 的东西。
我想问题是,是否有一些东西已经解决了这个问题,或者是否有可能使用像 lucete 这样的库来解决这个问题。
【问题讨论】:
-
也许你可以使用最长公共子序列算法的略微修改版本,它在 linux
diff命令中使用。更多信息:en.wikipedia.org/wiki/Longest_common_subsequence_problem -
是的,这是一个选项。不幸的是,这似乎过于昂贵的性能明智,因为它需要为每一对独立完成。我希望找到一些可以降低基于某种形式的索引的每对比较复杂性的东西。谢谢
-
您可能想查看paper by Coeurjolly, Drouilhet and Robineau。上次我做这样的事情时,我发现它非常有用(虽然当时它很新——现在可能有更好的论文)。
-
Levenstein 距离算法可在 Wikipedia 上找到:en.wikipedia.org/wiki/Levenshtein_distance