Я хочу получить процент схожести двух слов, например)
abcd versus zzabcdzz == 50% similarity
Не нужно быть очень точным. Есть ли способ сделать это? Я использую Python, но не стесняйтесь рекомендовать другие языки.
Я хочу получить процент схожести двух слов, например)
abcd versus zzabcdzz == 50% similarity
Не нужно быть очень точным. Есть ли способ сделать это? Я использую Python, но не стесняйтесь рекомендовать другие языки.
Попробуйте использовать python-Levenshtein
для вычисления редактировать расстояние.
Модуль расширения Levenshtein Python C содержит функции для быстрого вычисления
- Расстояние Левенштейна (править) и операции редактирования
- сходство строк
- приблизительные средние строки и, как правило, усреднение строк
- последовательность строк и установить подобие
Вы можете получить приблизительное представление о сходстве, вычислив расстояние редактирования между двумя строками, разделенное на длину самой длинной строки. В вашем примере расстояние редактирования равно 4, а максимально возможное расстояние редактирования - 8, поэтому сходство составляет 50%.
Вы можете использовать встроенный модуль python difflib
Вот пример с той страницы
>>> s = SequenceMatcher(None, "abcd", "bcde")
>>> s.ratio()
0.75
некоторые метрики сходства из библиотеки nltk:
http://www.opendocs.net/nltk/0.9.5/api/nltk.wordnet.similarity-module.html
Копирование из этого ответа:
В Python есть difflib.
difflib
предлагает класс SequenceMatcher, который можно использовать для определения степени сходства . Пример функции:
def text_compare(text1, text2, isjunk=None):
return difflib.SequenceMatcher(isjunk, text1, text2).ratio()