web-dev-qa-db-fra.com

Mesurer la similarité sémantique entre deux phrases

Je veux mesurer la similarité sémantique entre deux phrases/phrases. Existe-t-il un cadre que je puisse utiliser directement et de manière fiable?

J'ai déjà vérifié cette question , mais c'est assez vieux et je ne pouvais pas y trouver de réponse vraiment utile. Il y avait un lien , mais j'ai trouvé cela peu fiable.

par exemple.:
J'ai une phrase: senti écrasé
J'ai plusieurs choix: forcer vers l'intérieur, pulvériser, détruire émotionnellement, remodeler, etc.
Je souhaite trouver le terme/la phrase présentant la plus grande similitude avec le premier.
La réponse ici est: détruit émotionnellement.

La vue d'ensemble est la suivante: je veux identifier le cadre de FrameNet qui correspond au verbe donné selon son utilisation dans une phrase.

Mise à jour: j'ai trouvé cette bibliothèque très utile pour mesurer la similarité entre deux mots. Le mécanisme de similarité ConceptNet est également très bon.

et cette bibliothèque pour mesurer la similarité sémantique entre phrases

Si quelqu'un a des idées s'il vous plaît partager.

19
tejas

C'est un problème très compliqué.

La technique principale à laquelle je peux penser (avant d’entrer dans des processus de PNL plus complexes) serait d’appliquer une similarité cosinus (ou toute autre métrique) à chaque paire de phrases. Évidemment, cette solution serait très inefficace pour le moment en raison du problème de non appariement: les phrases pourraient faire référence au même concept avec des mots différents.

Pour résoudre ce problème, vous devez transformer la représentation initiale de chaque phrase en un sens plus "conceptuel". Une option serait d'étendre chaque mot avec ses synonymes (c'est-à-dire en utilisant WordNet , une autre option consiste à appliquer des métriques telles que la sémantique de distribution DS ( http://liawww.epfl.ch/ Publications/Archive/Besanconetal2001.pdf ) qui étend la représentation de chaque terme avec les mots les plus susceptibles de l’apparaître.

Exemple: Une représentation d'un document: {"voiture", "course"} serait transformée en {"voiture", "automobile", "course"} avec des synonymes. Alors que, avec DS, ce serait quelque chose comme: {"voiture", "roue", "route", "pilote", ...}

De toute évidence, cette transformation ne sera pas binaire. Chaque terme aura des poids associés.

J'espère que ça aide.

8
miguelmalvarez

Peut-être que l’API cortical.io pourrait vous aider à résoudre votre problème. L’approche consiste ici à convertir chaque mot en une empreinte sémantique qui en caractérise la signification avec des caractéristiques sémantiques de 16K. Des phrases, des phrases ou des textes plus longs sont convertis en empreintes digitales en combinant les empreintes digitales de Word. Après cette conversion en une représentation vectorielle binaire (numérique), la distance sémantique peut facilement être calculée à l'aide de mesures de distance telles que la distance euclidienne ou la similarité cosinus. Toutes les fonctions de conversion et de comparaison nécessaires sont fournies par l'api.

0
Francisco Webber