Ich suche eine Python-Bibliothek, mit der ich die Ähnlichkeit zwischen zwei Wörtern oder Sätzen erkennen kann.
Ich werde eine Audio-zu-Text-Konvertierung durchführen, die zu einem englischen Wörterbuch oder einem anderen Wort als einem Wörterbuch führt (dies kann ein Name für eine Person oder eine Firma sein).
Beispiel:
1) Text in Audio-Ergebnis: Danke, dass Sie America Expansion angerufen haben, wird mit American Express verglichen .
Beide Sätze sind irgendwie ähnlich, aber nicht gleich.
Es sieht so aus, als müsste ich untersuchen, wie viele Zeichen sie gemeinsam haben. Irgendwelche Ideen werden großartig sein. Sieht nach einer Funktion aus, die der Google-Suche "Meinten Sie" ähnelt.
Abgesehen von sehr guten Antworten können Sie SequenceMatcher in einer anderen Python-Bibliothek ausprobieren.
https://docs.python.org/2/library/difflib.html
Betrachten Sie nun den folgenden Code:
Jetzt können Sie den d-Wert vergleichen, um die Ähnlichkeit zu bewerten.
quelle
Wenn Ihr Wörterbuch nicht zu groß ist, ist es ein gängiger Ansatz, die Levenshtein-Distanz zu ermitteln, die im Grunde zählt, wie viele Änderungen Sie vornehmen müssen, um von einem Wort zum anderen zu gelangen. Änderungen umfassen das Ändern eines Zeichens, das Entfernen eines Zeichens oder das Hinzufügen eines Zeichens. Ein Beispiel aus Wikipedia :
lev (Kätzchen, sitzend) = 3
Hier sind einige Python-Werkzeuge für Wikibooks.
Der Algorithmus zur Berechnung dieser Abstände ist jedoch nicht billig. Wenn Sie dies in großem Maßstab tun müssen, gibt es Möglichkeiten, die Kosinusähnlichkeit für Bi-Gramm-Vektoren zu verwenden, die viel schneller und einfacher zu verteilen sind, wenn Sie Übereinstimmungen für viele Wörter gleichzeitig finden müssen. Sie sind jedoch nur eine Annäherung an diese Entfernung.
quelle
Eine alte und bekannte Vergleichstechnik ist der Soundex- Algorithmus. Die Idee ist, nicht die Wörter selbst zu vergleichen, sondern nur ungefähre Angaben darüber, wie sie ausgesprochen werden. Inwieweit dies die Qualität der Ergebnisse tatsächlich verbessert, weiß ich nicht.
Es fühlt sich jedoch etwas seltsam an, Soundex auf Ergebnisse einer Spracherkennung anzuwenden. Sie werfen zuerst Informationen darüber weg, wie die Wörter ausgesprochen werden, und versuchen dann, sie erneut hinzuzufügen. Es wäre besser, diese beiden Phasen zu kombinieren.
Daher erwarte ich, dass die neueste Technologie in diesem Bereich dies tut und eine Form der adaptiven Klassifizierung ist, z. B. basierend auf neuronalen Netzen. Google gibt aktuelle Forschungsergebnisse zur Spracherkennung mit neuronalen Netzen zurück .
quelle