Имейте этот код, я хочу иметь расстояние Левенштейна между двумя списками чисел.
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, можно было рассматривать как один элемент функции выше? Есть идеи ..
@Drecker, если он работал со сходством, он будет работать и с расстоянием. Distance дает мне 4 , что тоже неверно. Правильное расстояние равно 3.
@Drecker Я обновил код выше и добавил расстояние.
Попробуйте использовать библиотеку медуз как таковую:
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/
Это имеет ту же проблему, что и библиотека, которую он использует. Преобразование двузначных чисел в строки приводит к двузначной строке.
pip install textdistance
Не преобразовывать в строку, оставить код как есть:
S1=[1,2,3,7,9,15,19,20]
S2=[1,2,3,7,8,14,20]
textdistance.levenshtein.similarity(S1,S2)
textdistance.levenshtein.distance(S1,S2)
После удаления convert to string код заработал в juypter Notebook, но в Visual Studio 2017 выдает ошибку am: «последовательность item():expected str instance,int found».
textdistance.levenshtein.distance
это то, что сработало для меня.
Не сработает ли использование
distance
вместоsimilarity
?