问题标签 [similarity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2919 浏览

ruby - 按相似度对字符串进行分组

我有一个字符串数组,不多(可能几百个)但通常很长(几百个字符)。

这些字符串通常是无意义的,并且彼此不同。但在一组字符串中,可能有 300 个字符串中的 5 个,有很大的相似性。实际上它们是同一个字符串,不同的是格式、标点和几个单词。

我怎样才能算出那组字符串?

顺便说一句,我正在用 ruby​​ 编写,但如果没有别的,伪代码中的算法就可以了。

谢谢

0 投票
2 回答
2530 浏览

search - 您如何有效地实现文档相似性搜索系统?

您如何为一组标签描述的项目实施“相似项目”系统?

在我的数据库中,我有三个表,Article、ArticleTag 和 Tag。每篇文章通过多对多关系与多个标签相关。对于每篇文章,我想找到五篇最相似的文章来实现“如果你喜欢这篇文章,你也会喜欢这些”系统。

我熟悉余弦相似度 ,并且使用该算法效果很好。但这是慢下来的方式。对于每篇文章,我需要遍历所有文章,计算文章对的余弦相似度,然后选择相似度最高的五篇文章。

200k 篇文章和 30k 个标签,我需要半分钟来计算一篇文章的相似文章。所以我需要另一种算法,它可以产生与余弦相似度大致一样好的结果,但它可以实时运行,并且不需要我每次都迭代整个文档语料库。

也许有人可以为此提出现成的解决方案?我查看的大多数搜索引擎都没有启用文档相似性搜索。

0 投票
5 回答
16490 浏览

java - 文本相似度算法

我有两个字幕文件。我需要一个函数来判断它们是代表相同的文本还是相似的文本

有时仅在一个文件中会出现诸如“风在吹……音乐正在播放”之类的评论。但是 80% 的内容将是相同的。该函数必须返回 TRUE(文件代表相同的文本)。有时会出现像 1 这样的拼写错误,而不是 l (one - L),如下所示: She 1eft the bag。当然,这意味着函数必须返回 TRUE。

我的评论:
该函数应该返回文本相似度的百分比 - 同意

“所有人都很开心”和“所有人都不开心”——在这里这会被认为是拼写错误,所以会被认为是相同的文本。确切地说,函数返回的百分比会更低,但足以说明短语相似

请考虑是否要将 Levenshtein 应用于整个文件或只是一个搜索字符串 - 不确定 Levenshtein,但该算法必须应用于整个文件。不过,这将是一个很长的字符串。

0 投票
4 回答
1791 浏览

java - 用于严格文档相似度的文本相似度函数

我正在编写一个 java 软件,它必须对以 UTF-8 编码的两个文档的相似性做出最终判断。

这两个文档很可能相同或略有不同,因为它们具有许多共同特征,例如日期、位置、创建者等,但它们的文本决定了它们是否真实。

我希望这两个文档的文本要么非常相似,要么根本不相似,因此我可以对设置相似性的阈值相当严格。例如,我可以说这两个文档只有在它们有 90% 的词是相同的情况下才相似,但我想要更健壮的东西,它适用于短文本和长文本。

总结一下,我有:

  • 两份文件,要么非常相似,要么根本不相似,但是:
  • 两份文件更可能相似
  • 文档可以很长(一些段落)也可以很短(一些句子)

我已经尝试过simmetrics,它有大量的字符串匹配函数,但我最感兴趣的是关于可能使用的算法的建议。

我有可能的候选人是:

  • Levenshtein:它的输出对于短文本更重要
  • 重叠系数:可能,但它可以很好地区分不同长度的文档吗?

此外,仅当它们完全相同时才考虑两个相似的文本不会很好,因为我希望只有几个单词不同的文档通过相似性测试。

0 投票
5 回答
53744 浏览

c# - 将字符串与容差进行比较

我正在寻找一种将字符串与字符串数组进行比较的方法。进行精确搜索当然很容易,但我希望我的程序能够容忍拼写错误、字符串的缺失部分等等。

是否有某种框架可以执行这样的搜索?我有一些想法,搜索算法将按匹配百分比或类似的东西返回一些结果顺序。

0 投票
5 回答
1021 浏览

similarity - 如何实现“相关文章”?

如何编写代码以找到与用户当前正在阅读的文章相关(相似)的文章?

例如,假设我有文章:

(我现在想出了这些标题。)

我如何查询数据库并发现它们都是相关的?

我会很感激任何建议。

谢谢,博达赛多。

0 投票
4 回答
4542 浏览

python - 协同过滤:非个性化项目间相似性

我正在尝试按照亚马逊的“查看/购买 X 的客户也查看/购买 Y 和 Z”的方式计算项目与项目的相似性。我看到的所有示例和参考资料都用于计算排名项目的项目相似度、查找用户-用户相似度或根据当前用户的历史记录查找推荐项目。在考虑当前用户的偏好之前,我想先采用一种非针对性的方法。

查看Amazon.com 推荐白皮书,他们使用以下逻辑来进行离线商品相似度:

如果我理解正确,当我们在“计算 I1 和 I2 之间的相似性”时,我有一个与单个值 I1(外循环)一起购买的项目(I2)列表。

这个计算是如何进行的?

另一个想法是我想多了,这比我需要的更困难 - 对与 I1 一起购买的 I2 的计数进行前 n 个查询是否足够?

我也很欣赏有关这种方法是否正确的建议。我的产品数据库随时都有大约 150k 项。由于我看到的大部分阅读材料都显示了用户-项目相似性甚至用户-用户相似性,我是否应该转而走这条路。

我过去曾使用过相似度算法,但它们总是涉及排名或分数。我认为唯一可行的方法是建立一个客户-产品矩阵,对未购买/购买的产品评分为 0/1。考虑到购买历史和商品大小,这可能会变得非常大。

编辑:虽然我将python列为标签,但我更愿意将逻辑保留在数据库中,最好使用Oracle PL/SQL。

0 投票
6 回答
4346 浏览

java - 百分比相似性分析 (Java)

我有以下情况:

String a = "网络爬虫是一种自动浏览万维网互联网的计算机程序"; String b = "Web Crawler 计算机程序浏览万维网";

是否有任何想法或标准算法来计算相似度的百分比?

例如,上述情况,通过手动查找估计的相似度应该是 90%++。

我的想法是标记两个字符串并比较匹配的标记数量。类似于 (7 个令牌 /1 0 个令牌) * 100。但是,当然,这种方法根本无效。比较匹配的字符数似乎也无效....

任何人都可以提供一些指导吗???

以上是我的项目抄袭分析器的一部分。

因此,匹配的单词将完全相同,没有任何同义词。

在这种情况下,唯一的问题是如何计算一个相当准确的相似度百分比。

非常感谢您的帮助。

0 投票
2 回答
621 浏览

design-patterns - 在 n 个文本文档中检测相似词

我有 n 个文档,想查找这些文档中包含的常用词。例如,我想说 (n-3) 个文档包含单词“web”。

当然,我可以通过基本的数据结构来做到这一点,但可能有有效的算法或处理具有不同后缀的相同单词的方法。有没有用于这种目的的算法?

我不熟悉数据挖掘世界。一般来说,是否有一个术语用于寻找不同文档之间的相似性?如果有的话,我会很容易地进行我的研究。

谢谢。

0 投票
1 回答
478 浏览

dom - 有没有一些算法来比较不同页面的 DOM 相似度?

有没有人有这方面的经验?