我正在构建一个网站,应该会收集各种新闻来源,并希望比较这些文本的相似度。我需要一种新闻文本相似度算法。 我知道php具有similar_text函数,但不确定它有多好,而且我需要它用于javascript。 因此,如果有人能向我指出示例、插件或任何关于如何实现这一点或至少在哪里查找和开始调查的指示。
我正在构建一个网站,应该会收集各种新闻来源,并希望比较这些文本的相似度。我需要一种新闻文本相似度算法。 我知道php具有similar_text函数,但不确定它有多好,而且我需要它用于javascript。 因此,如果有人能向我指出示例、插件或任何关于如何实现这一点或至少在哪里查找和开始调查的指示。
有一个 Levenshtein 距离度量的 JavaScript 实现,通常用于文本比较。不过,如果你想比较整篇文章或标题,最好查看组成文本的单词集合之间的交集(以及这些单词的频率),而不仅仅是字符串相似性度量。
如果你没有明确指定两个文本应该具有什么相似性,那么判断它们是否相似就是一个哲学问题。考虑字符串"house"和"mouse"。从语义层面上看,它们并不相似,但是从"物理外观"的角度来看,它们非常相似,因为只有一个字母不同(在这种情况下,可以使用Levenshtein distance)。
要确定相似性,需要适当的文本表示。例如,您可以提取并计算所有n-grams,然后比较两个结果频率向量,使用相似性度量,如cosine similarity。或者您可以将单词stem到其根形式,在删除所有stopwords后总结它们的出现次数,并将其作为相似度量的输入。
有很多关于这个主题的方法和论文,例如这篇关于短文本的文章。无论如何:你想要决定两个文本是否相似的抽象级别越高,就越难。我认为你的问题是一个非平凡的问题(因此我的答案比较抽象)... ;-)