【问题标题】:Javascript text similarity algorithmJavascript文本相似度算法
【发布时间】:2023-03-27 01:14:01
【问题描述】:

我正在建立一个网站,该网站应该收集各种新闻提要,并希望比较文本的相似性。我需要的是某种新闻文本相似性算法。 我知道 php 具有similar_text 函数,但不确定它有多好 + 我需要它用于 javascript。 因此,如果有人可以向我指出一个示例或插件或任何关于如何实现这一点的说明,或者至少在哪里寻找和开始调查。

【问题讨论】:

  • 为什么在 JS 中特别需要它?您意识到这将在用户访问该站点时发生,您不一定可以在其上运行 cron 作业并保存在服务器上(也不像服务器端语言那么容易)
  • @Loktar - 也有服务器端的 JavaScript。 :) 当然,它也可以在(客户端)Javascript 中完成,只需检索提要并将它们合并到客户端。它将为您节省一个支持服务器端脚本的服务器。
  • 是的,但是这样的事情传统上是在服务器上完成的,而且速度会快得多..另外你可以做一次,缓存结果并为新用户提供服务。我怀疑 OP 指的是 NodeJS 之类的东西:P
  • 关键是有一个管理面板,管理员可以将类似的新闻分组在一起。我有很多选项可以让他们更轻松,但我需要在他们选择标题时使用它,它将其文本与所有其他新闻文本进行比较,并找出最有可能相似的标题。

标签: javascript algorithm text similarity


【解决方案1】:

有一个 Levenshtein 距离度量的javascript implementation,它通常用于文本比较。如果您想比较整篇文章或标题,尽管您最好查看构成文本的词集(以及这些词的频率)之间的交集,而不仅仅是字符串相似性度量。

【讨论】:

    【解决方案2】:

    两个文本是否相似的问题是一个哲学问题,只要你没有具体说明它应该是什么意思。考虑字符串“house”和“mouse”。从语义层面上看,它们不是很相似,但它们在“外观”方面非常相似,因为只有一个字母不同(在这种情况下,您可以使用Levenshtein distance)。

    要确定相似性,您需要一个适当的文本表示。例如,您可以提取并计算所有n-grams,并使用相似性度量比较两个结果频率向量,例如cosine similarity。或者,您可以在删除所有 stopwords 后将单词 stem 转换为它们的根形式,总结它们的出现并使用 this 作为相似性度量的输入。

    有很多关于该主题的方法和论文,例如这个one 关于短文本。在任何情况下:您想要确定两个文本是否相似的抽象级别越高,就越难。我认为您的问题很重要(因此我的回答相当抽象)... ;-)

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2013-05-11
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2019-10-23
      相关资源
      最近更新 更多