Я ищу библиотеку Python, которая помогает мне определить сходство между двумя словами или предложениями.
Я буду выполнять преобразование аудио в текст, что приведет к появлению английского словаря или словарных слов (это может быть имя человека или компании). После этого мне нужно сравнить его с известным словом или словами.
Пример:
1) Результат преобразования текста в аудио: спасибо за вызов America Expansion будет сравниваться с American Express .
Оба предложения как-то похожи, но не одинаковы.
Похоже, мне нужно посмотреть, сколько символов они разделяют. Любые идеи будут отличными. Похоже, функциональность, как поиск Google "вы имели в виду" функцию.
Помимо очень хороших ответов, вы можете попробовать SequenceMatcher в библиотеке difflib python.
https://docs.python.org/2/library/difflib.html
Теперь рассмотрим следующий код:
Теперь вы можете сравнить значение d, чтобы оценить сходство.
источник
Если ваш словарь не слишком большой, то обычным подходом является определение расстояния Левенштейна, которое в основном подсчитывает, сколько изменений нужно сделать, чтобы перейти от одного слова к другому. Изменения включают в себя изменение символа, удаление символа или добавление символа. Пример из Википедии :
лев (котенок сидит) = 3
Вот некоторые инструменты Python для Wikibooks.
Однако алгоритм для вычисления этих расстояний не из дешевых. Если вам нужно сделать это в больших масштабах, есть способы использовать косинусное сходство на двухграммных векторах, которые намного быстрее и проще распределить, если вам нужно найти совпадения для большого количества слов одновременно. Они, однако, только приближение к этому расстоянию.
источник
Старый и хорошо известный метод сравнения - алгоритм Soundex . Идея состоит в том, чтобы сравнить не сами слова, а приблизительные значения их произношения. Насколько это на самом деле улучшает качество результатов, я не знаю.
Однако немного странно применять что-то вроде Soundex к результатам из механизма распознавания речи в текст. Сначала вы выбрасываете информацию о том, как произносятся слова, а затем пытаетесь добавить ее снова. Было бы лучше объединить эти две фазы.
Следовательно, я ожидаю, что современные технологии в этой области сделают это, и станут некой формой адаптивной классификации, например, основанной на нейронных сетях. Google возвращает недавнее исследование по распознаванию речи в нейронных сетях .
источник