【问题标题】:How to find similarity in texts如何找到文本中的相似性
【发布时间】:2010-06-26 11:45:06
【问题描述】:
我有一个用户上传文章的数据库。
我想制定一种算法,让我的网络应用程序根据用户阅读的内容建议类似的文本。
我看到了一些像Levenshtein distance 这样的例子。但是这些算法测量的是字符串的距离,而不是整篇文章的距离。有没有办法从文本中提取最重要的关键字?当然,我理解“最重要”是一个模棱两可的术语。
其他网站如何管理?
非常感谢
【问题讨论】:
标签:
algorithm
text
levenshtein-distance
【解决方案1】:
有没有办法从文本中提取最重要的关键字?
是的。基本上,您从文本中提取所有单词,按频率对单词进行排序,通过将常用词(a、an、the 等)与常用词典匹配来消除它们,然后保存前 20 个或更多的词每篇文章的频率。
您保存的热门词的数量与文章的长度和所有文章的主题有关。一般感兴趣的文章需要较少的字数,而特殊兴趣的文章需要较多的字数,例如编程问题的答案。
匹配超过一半的热门词的文章可以被认为是相关的。相关程度取决于匹配的热门词的数量和匹配词的频率。
您可以通过将两篇文章中每个匹配词的频率相乘并将所有乘积相加来计算相关性分数。分数越高,相关文章越多。
【解决方案2】:
您可以尝试根据每个词在所有文章中出现的频率来纠正每个词的“权重”。因此,最好的相似性指标是只出现在两个比较的词中而不出现在其他任何地方的词。这将自动忽略@Gilbert Le Blanc 提到的常用词(a、an、the 等)。