Левенштейн расстояние между списком чисел - PullRequest
0 голосов
/ 14 июня 2019

Имею этот код, я хочу, чтобы между двумя списками чисел было левенштейновое расстояние.

import textdistance
S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]
#convert lists to string 
Str1=‘’.join(str(e) for e in S1)
Str2=‘’.join(str(e) for e in S2)
textdistance.levenshtein.similarity(Str1,Str2)
textdistance.levenshtein.distance(Str1,Str2)

Приведенный выше код дает сходство: 7 Что не так, то правильно 5.И показывает значение расстояния 4, что также неверно, правильное расстояние равно 3.

Как манипулировать кодом, чтобы числа, такие как 14 и 15, могли рассматриваться как один элемент для функции выше?Любая идея ..

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Не преобразовывать в строку, сохраняйте код просто:

S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]

Textdistnace.levenshtein.similarity(S1,S2)
Textdistance.levenshtein.distance(S1,S2)
0 голосов
/ 14 июня 2019

Попробуйте использовать библиотеку медуз как таковую:

import jellyfish
S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]
#convert lists to string 
Str1=‘’.join(str(e) for e in S1)
Str2=‘’.join(str(e) for e in S2)

jellyfish.levenshtein_distance(Str1, Str2)

Подробнее об этом можно прочитать здесь: https://pypi.org/project/jellyfish/

...