Szukam biblioteki Python, która pomoże mi zidentyfikować podobieństwo między dwoma słowami lub zdaniami.
Będę robił konwersję audio na tekst, co spowoduje, że słownik języka angielskiego lub słowo (słowa) nie w słowniku (może to być nazwa osoby lub firmy). Następnie muszę porównać je ze znanym słowem lub słowami.
Przykład:
1) Wynik zamiany tekstu na dźwięk: Dziękujemy za wywołanie rozszerzenia America zostanie porównane z American Express .
Oba zdania są w jakiś sposób podobne, ale nie takie same.
Wygląda na to, że będę musiał sprawdzić, ile znaków dzielą. Wszelkie pomysły będą świetne. Wygląda na funkcjonalność taką jak wyszukiwarka Google „miałeś na myśli”.
Oprócz bardzo dobrych odpowiedzi tutaj, możesz wypróbować SequenceMatcher w bibliotece Pythona w difflib.
https://docs.python.org/2/library/difflib.html
Teraz rozważ poniższy kod:
Teraz możesz porównać wartość d, aby ocenić podobieństwo.
źródło
Jeśli słownik nie jest zbyt duży, powszechnym podejściem jest wzięcie dystansu Levenshteina, który w zasadzie liczy, ile zmian należy wprowadzić, aby przejść od jednego słowa do drugiego. Zmiany obejmują zmianę postaci, usunięcie postaci lub dodanie postaci. Przykład z Wikipedii :
lew (kotek, siedzący) = 3
Oto niektóre narzędzia Python na Wikibooks.
Algorytm obliczania tych odległości nie jest jednak tani. Jeśli musisz to zrobić na dużą skalę, istnieją sposoby na zastosowanie podobieństwa kosinusowego w wektorach bi-gramowych, które są znacznie szybsze i łatwiejsze do rozpowszechnienia, jeśli chcesz znaleźć dopasowania dla wielu słów na raz. Są one jednak jedynie przybliżeniem tej odległości.
źródło
Starą i dobrze znaną techniką porównywania jest algorytm Soundex . Chodzi o to, aby nie porównywać samych słów, ale przybliżenia ich wymowy. W jakim stopniu poprawia to jakość wyników, których nie znam.
Jednak trochę dziwne jest zastosowanie czegoś takiego jak Soundex do wyników z mechanizmu rozpoznawania mowy na tekst. Najpierw wyrzucasz informacje o wymowie słów, a następnie próbujesz dodać je ponownie. Lepiej byłoby połączyć te dwie fazy.
Dlatego oczekuję, że najnowocześniejsza technologia w tym obszarze to zrobi i będzie jakąś formą adaptacyjnej klasyfikacji, np. Opartej na sieciach neuronowych. Google zwraca ostatnie badania dotyczące rozpoznawania mowy za pomocą sieci neuronowych .
źródło