问题标签 [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 投票
4 回答
7881 浏览

c# - C#比较相似的字符串

我有一个带有一些文件名的泛型(LIST1)和另一个带有完整名称列表的大泛型(LIST2)。我需要将 LIST1 中的名称与 LIST2 中的类似名称相匹配。例如

我已经阅读了Levenshtein distance并在框架(SignumFramework Utilities)中使用了它的实现。 它在第 2 行和第 3 行返回 distance=1。但在我的情况下,第 3 行比第 2 行更好。

有没有更好的方法来比较相似的字符串?更灵活的东西?

0 投票
9 回答
13193 浏览

php - Levenshtein 距离:如何更好地处理单词交换位置?

我在使用 PHP levenshtein函数比较字符串方面取得了一些成功。

但是,对于包含交换位置的子字符串的两个字符串,算法将它们计为全新的子字符串。

例如:

被视为具有以下共同点

我更喜欢一种算法,它看到前两个更相似。

我怎么能想出一个比较函数来识别已经切换位置的子字符串与编辑不同?

我想到的一种可能的方法是在比较之前将字符串中的所有单词按字母顺序排列。这将单词的原始顺序完全排除在比较之外。然而,这样做的一个缺点是,仅更改单词的第一个字母会造成比更改单个字母更大的干扰。

我想要实现的是比较关于人的两个作为自由文本字符串的事实,并确定这些事实表明相同事实的可能性有多大。事实可能是某人就读的学校,例如他们的雇主或出版商的名称。两个记录可能有相同的学校拼写不同,单词的顺序不同,多余的单词等,所以如果我们要很好地猜测它们指的是同一所学校,匹配必须有点模糊。到目前为止,它在拼写错误方面效果很好(我使用的是类似于变音位的语音算法),但如果你切换学校中常见的单词顺序,效果就很差:“xxx 学院”vs “xxx学院”。

0 投票
4 回答
14178 浏览

php - 余弦相似度与汉明距离

为了计算两个文档之间的相似度,我创建了一个包含词频的特征向量。但是,对于下一步,我无法在“余弦相似度”和“汉明距离”之间做出决定。

我的问题:你有使用这些算法的经验吗?哪一个给你更好的结果?

除此之外:你能告诉我如何在 PHP 中编写余弦相似度吗?对于汉明距离,我已经得到了代码:

我不想使用任何其他算法。我只想在两者之间做出决定。

也许有人可以谈谈如何改进算法。如果过滤掉停用词或常用词,你会得到更好的结果吗?

我希望你能帮助我。提前致谢!

0 投票
3 回答
5658 浏览

algorithm - 视觉相似度搜索算法

我正在尝试构建一个类似http://labs.ideeinc.com/multicolr的实用程序,但我不知道他们使用的是哪种算法,有人知道吗?

0 投票
3 回答
5069 浏览

php - 在 PHP 中加速 levenshtein /similar_text

我目前正在使用similar_text将字符串与〜50,000 的列表进行比较,尽管由于比较的次数非常慢,但该列表有效。比较大约 500 个唯一字符串大约需要 11 分钟。

在运行它之前,我会检查数据库以查看它是否在过去被处理过,所以每次在初始运行之后它都接近即时。

我确信使用levenshtein会稍微快一些,并且手册中发布的 LevenshteinDistance 函数看起来很有趣。我是否遗漏了一些可以显着加快速度的东西?

0 投票
2 回答
732 浏览

algorithm - 两个文本的相似性(关键字的自适应局部对齐?)

我有 2 个不同长度的文本(最多 4000 个字符)。我需要根据(部分)释义获得相似率。请注意,相同部分的文本在每个文本中可能位于不同的位置(因此Levenshtein不是解决方案)。

比较过程还应该:

  • 不增加博览会。带文字大小
  • 表现友好。:)

似乎“关键字的自适应局部对齐”是一种可能的解决方案。

您有任何实现示例吗?首选语言是 PHP,但我可以翻译。:)

您对该主题有任何其他解决方案/想法/经验吗?

感谢您的大力帮助。

0 投票
8 回答
1587 浏览

python - Pearson Similarity Score,我该如何进一步优化?

我已经实现了 Pearson 的相似度分数,用于比较两个值的字典。这种方法花费的时间比其他任何地方都多(可能有数百万次调用),因此这显然是优化的关键方法。

即使是最轻微的优化也会对我的代码产生很大的影响,所以我热衷于探索即使是最小的改进。

这是我到目前为止所拥有的:

0 投票
6 回答
5309 浏览

python - 查找重复邮寄地址的策略

我试图想出一种基于相似度分数来查找重复地址的方法。考虑这些重复的地址:

我计划应用一些字符串转换来使长单词缩写,如 NORTH -> N,删除所有空格、逗号和破折号以及井号。现在,有了这个输出,我如何将 addr_3 与其余地址进行比较并检测到相似之处?多少百分比的相似性是安全的?你能为此提供一个简单的python代码吗?

谢天谢地,

爱德华多

0 投票
4 回答
554 浏览

algorithm - 如何像 Excel 那样发现和分析类似的模式?

当您键入具有特定模式的 3 行并将列一直向下拖动时,您就知道 Excel 中的功能 Excel 会尝试为您继续该模式。

例如

类型...

  • 测试一
  • 测试2
  • 测试3

Excel 将继续:

  • 测试4
  • 测试5
  • 试...

同样适用于其他一些模式,例如日期等。

我正在尝试完成类似的事情,但我也想处理更多特殊情况,例如:

  • 测试蓝色的东西
  • 测试黄色的东西
  • 测试红色的东西

现在基于这些条目,我想说模式是:

  • 测试-[动态]-某事

继续使用其他颜色的 [DYNAMIC] 完全是另一回事,我现在真的不在乎。我最感兴趣的是检测模式中的 [DYNAMIC] 部分。

我需要从大量池条目中检测到这一点。假设您有 10.000 个具有这种模式的字符串,并且您希望根据相似性对这些字符串进行分组,并检测文本的哪个部分不断变化([DYNAMIC])。

文档分类在这种情况下可能很有用,但我不知道从哪里开始。

更新:

我忘了提到也可以有多个 [DYNAMIC] 模式。

如:

  • test_[动态] 12 [动态2]

我认为这并不重要,但我计划在 .NET 中实现它,但任何有关使用算法的提示都会非常有帮助。

0 投票
3 回答
2905 浏览

algorithm - 查找两个矢量形状的相似性

寻找与比较矢量图形相关的任何信息/算法。例如,假设有两个点集合或具有两个几乎相同图形的矢量文件。我想确定第一个数字与第二个数字大约 90% 相似。