javascript - javascript和python中的字符串序列相似/差异比

标签 javascript python

假设我有一个引用字符串

“abcdabcd”

和一个目标字符串

“abcdabEd”

javascript和python有没有简单的方法获取字符串序列相似度?

例子:

“abcdabcd”与“abcdabEd”的区别在于字符“E”,因此相似度很高但小于1.0

“bcdabcda”与“abcdabEd”的区别很大,因为特定字符串索引处的每个字符都不同,因此相似率为 0.0

注意相似度不是每个字符串中相似字符的数量,而是序列之间的相似程度

因此代码如下

# python - incorrect for this problem 
difflib.SequenceMatcher(None, "bcdabcda", "abcdabEd").ratio()

错了

最佳答案

您可以使用这个通用公式,它适用于具有相同或不同长度的字符串或对象数组:

相似度=#common/(sqrt(nx*ny));

其中 #common 是常见的出现(在本例中是匹配字符的数量);
nx 是对象数组 x(或称为 x 的字符串)的长度;
ny 是对象数组 y(或名为 y 的字符串)的长度。

如果字符串的长度相同,公式将简化为简单的情况:

相似度=#common/n;
在哪里: n=nx=ny.

在 python 中,这个字符串相似度公式(根据需要考虑字符的顺序)可以写成:

from math import sqrt

def similarity(x, y):
    n=min(len(x), len(y))
    common=0
    for i in range(n):
        if (x[i]==y[i]):
            common+=1
    return common/sqrt(len(x)*len(y))

在 javascript 中是类似的。

关于javascript - javascript和python中的字符串序列相似/差异比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076773/

相关文章:

python - 连接 mongodb 时如何避免提示输入 PEM 密码?

javascript - Vuejs 计算属性依赖于其他异步计算属性

javascript - JQuery:使用 :not(.active) 选择器,并向所选项目添加 Active 类

python - 阅读 gtfs google transitFeed python

python - BeautifulSoup : Trying to select tags on conflicting multiple criteria

python - 如何在Python中获得具有多个值的相同名称并获得唯一的结果

python - 如何在 Plotly 中将多索引数据框绘制为堆叠条形图

javascript - 我的 annyang 程序出错

javascript - 使用 JavaScript 更改嵌套 HTML 元素的字体颜色

javascript - jQuery 查找具有特定属性的所有元素并获取它的值