Je recherche une bibliothèque Python qui m'aide à identifier la similitude entre deux mots ou phrases.
Je ferai une conversion audio en texte qui se traduira par un dictionnaire anglais ou des mots non-dictionnaire (cela pourrait être un nom de personne ou d'entreprise) Après cela, je dois le comparer à un ou plusieurs mots connus.
Exemple:
1) Résultat texte en audio: Merci d'avoir appelé America Expansion sera comparé à American Express .
Les deux phrases sont en quelque sorte similaires mais pas identiques.
On dirait que j'ai peut-être besoin de voir combien de caractères ils partagent. Toutes les idées seront géniales. On dirait une fonctionnalité telle que la recherche Google "vouliez-vous dire"
En dehors de très bonnes réponses ici, vous pouvez essayer SequenceMatcher dans la bibliothèque python difflib.
https://docs.python.org/2/library/difflib.html
Considérez maintenant le code ci-dessous:
Vous pouvez maintenant comparer la valeur d pour évaluer la similitude.
la source
Si votre dictionnaire n'est pas trop grand, une approche courante consiste à prendre la distance Levenshtein, qui compte essentiellement le nombre de changements que vous devez apporter pour passer d'un mot à un autre. Les changements incluent la modification d'un personnage, la suppression d'un personnage ou l'ajout d'un personnage. Un exemple de Wikipedia :
lev (chaton, assis) = 3
Voici quelques implémentations Python sur Wikibooks.
Cependant, l'algorithme pour calculer ces distances n'est pas bon marché. Si vous devez le faire à grande échelle, il existe des moyens d'utiliser la similitude en cosinus sur des vecteurs bi-gramme qui sont beaucoup plus rapides et faciles à distribuer si vous avez besoin de trouver des correspondances pour beaucoup de mots à la fois. Ils ne sont cependant qu'une approximation de cette distance.
la source
L' algorithme Soundex est une technique de comparaison ancienne et bien connue . L'idée est de comparer non pas les mots eux-mêmes mais des approximations de leur prononciation. Dans quelle mesure cela améliore réellement la qualité des résultats, je ne sais pas.
Cependant, il semble un peu étrange d'appliquer quelque chose comme Soundex aux résultats d'un moteur de reconnaissance vocale. D'abord, vous jetez des informations sur la façon dont les mots sont prononcés, puis vous essayez de les ajouter à nouveau. Il serait préférable de combiner ces deux phases.
Par conséquent, je m'attends à ce que la technologie de pointe dans ce domaine le fasse et soit une forme de classification adaptative, par exemple basée sur des réseaux de neurones. Google renvoie des recherches récentes sur la reconnaissance vocale avec les réseaux de neurones .
la source