Python: score de similarité sémantique pour les chaînes [dupliquer]
cette question a déjà une réponse ici:
- similarité entre deux documents textuels 7 réponses
y a-t-il des bibliothèques pour calculer les scores de similarité sémantique pour une paire de phrases ?
Je suis au courant de la base de données sémantique de WordNet, et comment je peut générer le score pour 2 mots, mais je suis à la recherche de bibliothèques qui font toutes les tâches de pré-traitement comme le port-stemming, arrêter la suppression de mot, etc, sur des phrases entières et produit un score pour la façon dont les deux phrases sont liées.
j'ai trouvé un work en cours qui est écrit en utilisant le .net framework qui calcule la partition en utilisant un tableau des étapes de pré-traitement. Est-il un projet qui fait cela en python?
Je ne regarde pas pour la séquence des opérations qui m'aideraient à trouver le score (comme est demandé pour ici )
J'aimerais mettre en œuvre chaque étape sur mon propre, ou coller des fonctions de différentes bibliothèques de sorte qu'il fonctionne pour les paires de phrases, mais j'ai besoin de cela principalement comme un outil pour tester des inférences sur les données.
EDIT: j'envisageais d'utiliser NLTK et de calculer la note pour chaque paire de mots itéré les deux phrases, puis de tirer des conclusions à partir de l'écart type des résultats, mais je ne sais pas si c'est une estimation légitime de similitude. En plus, ça prendra beaucoup de temps pour de longues cordes.
Encore une fois, je suis à la recherche de projets/bibliothèques qui mettent déjà en œuvre cela intelligemment. Quelque chose qui me permet de faire cela:
import amazing_semsim_package
str1='Birthday party ruined as cake explodes'
str2='Grandma mistakenly bakes cake using gunpowder'
>>similarity(str1,str2)
>>0.889
3 réponses
le meilleur paquet que j'ai vu pour cela est Gensim, trouvé à la page D'accueil Gensim . Je l'ai utilisé de nombreuses fois, et dans l'ensemble été très heureux avec sa facilité d'utilisation; il est écrit en Python, et a un facile à suivre tutoriel pour vous aider à démarrer, ce qui compare 9 cordes. Il peut être installé via pip, donc vous n'aurez pas beaucoup de tracas à le faire installer j'espère.
L'algorithme de notation que vous utilisez dépend fortement le contexte de votre problème, mais je suggère de commencer par la fonctionnalité LSI si vous voulez quelque chose de Basique. (C'est ce que le tutoriel vous guide à travers.)
si vous passez par le tutoriel pour gensim, il vous guidera à travers la comparaison de deux chaînes, en utilisant la fonction similitudes. Cela vous permettra de voir comment votre pique comparer les uns aux autres, ou à une autre piqûre, sur la base du texte qu'ils contiennent.
si vous êtes intéressé par le la science derrière comment ça marche, regardez ce papier.
malheureusement, je ne peux pas vous aider avec PY mais vous pouvez jeter un oeil à mon vieux projet qui utilise des dictionnaires pour accomplir les comparaisons sémantiques entre les phrases (qui peuvent plus tard être codées dans PY mettant en œuvre l'analyse vectorielle-spatiale). Il devrait être juste quelques heures de codage pour traduire de JAVA à PY. https://sourceforge.net/projects/semantics/
AFAIK le plus puissant NLP-Lib pour Python est http://nltk.org/