Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算dicts值之间的相似性_Python_Levenshtein Distance - Fatal编程技术网

Python 如何计算dicts值之间的相似性

Python 如何计算dicts值之间的相似性,python,levenshtein-distance,Python,Levenshtein Distance,我有一个这样的单词列表,其中每个单词都有一个匹配项。我想计算所有单词之间的相似性,例如,python和mypython,它们都是相似的,所以所有匹配项的总和都是: my_list = [{ "name": "python", "occ": 1623 }, { "name": "C++", "occ": 1527

我有一个这样的单词列表,其中每个单词都有一个匹配项。我想计算所有单词之间的相似性,例如,
python
mypython
,它们都是相似的,所以所有匹配项的总和都是:

my_list = [{
      "name": "python",
      "occ": 1623
    },
    {
      "name": "C++",
      "occ": 1527
    },
    {
      "name": "programming",
      "occ": 390
    },
    {
      "name": "programme",
      "occ": 371
    },
    {
      "name": "mypython",
      "occ": 252
    },
    {
      "name": "pythonne",
      "occ": 219
    }]
我想计算一下这个列表中所有单词之间的相似性,并将出现的单词加起来,得到类似的结果

my_list = [{
      "name": "python",
      "occ": 2094
    },
    {
      "name": "C++",
      "occ": 1527
    },
    {
      "name": "programming",
      "occ": 761
    }]
我想使用Levenshtein距离,但我不知道这是否是一个好的选择和最快的方法

def levenshtein(seq1, seq2):
    size_x = len(seq1) + 1
    size_y = len(seq2) + 1
    matrix = np.zeros ((size_x, size_y))
    for x in xrange(size_x):
        matrix [x, 0] = x
    for y in xrange(size_y):
        matrix [0, y] = y

    for x in xrange(1, size_x):
        for y in xrange(1, size_y):
            if seq1[x-1] == seq2[y-1]:
                matrix [x,y] = min(
                    matrix[x-1, y] + 1,
                    matrix[x-1, y-1],
                    matrix[x, y-1] + 1
                )
            else:
                matrix [x,y] = min(
                    matrix[x-1,y] + 1,
                    matrix[x-1,y-1] + 1,
                    matrix[x,y-1] + 1
                )
    print (matrix)
    return (matrix[size_x - 1, size_y - 1])

这个问题是相关的,并讨论了一些选项:如果你熟悉NLP,你可以使用词干或柠檬化谢谢你的回答,但我不能得到的是我如何将其应用到我的列表中