как я могу рассчитать сходство между значениями dicts

#python #levenshtein-distance

Вопрос:

У меня есть список таких слов, где каждое слово имеет вхождение, я хочу , например, вычислить сходство между всеми словами, 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
    }]
 

Я подумываю об использовании расстояния Левенштейна, но я не знаю, будет ли это хорошим выбором и самым быстрым способом сделать это?

 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])
 

Комментарии:

1. Этот вопрос связан и обсуждает некоторые варианты: datascience.stackexchange.com/questions/12575/…

2. Если вы знакомы с НЛП, вы могли бы использовать вывод или лемматизацию

3. спасибо за ваши ответы, но чего я не могу понять, так это как я могу применить это к своему списку