Tout d'abord, avant de commencer, je vous recommande de vous référer à des questions similaires sur le réseau telles que /datascience/25053/best-practical-algorithm-for-sentence-similarity et https: // stackoverflow. com / questions / 62328 / est-il-un-algorithme-qui-dit-la-similitude-sémantique-de-deux-phrases
Pour déterminer la similitude des phrases, nous devons considérer le type de données dont nous disposons. Par exemple, si vous aviez un ensemble de données étiqueté, c'est-à-dire des phrases similaires et des phrases différentes, une approche simple aurait pu être d'utiliser un algorithme supervisé pour classer les phrases.
Une approche qui pourrait déterminer la similitude structurelle des phrases serait de faire la moyenne des vecteurs de mots générés par les algorithmes d'intégration de mots, c'est-à-dire word2vec. Ces algorithmes créent un vecteur pour chaque mot et la similitude cosinus entre eux représente la similitude sémantique entre les mots. (Daniel L 2017)
En utilisant des vecteurs de mots, nous pouvons utiliser les métriques suivantes pour déterminer la similitude des mots.
- Distance cosinus entre les intégrations de mots des mots
- Distance euclidienne entre les intégrations de mots des mots
La similitude de cosinus est une mesure de la similitude entre deux vecteurs non nuls d'un espace de produit interne qui mesure le cosinus de l'angle entre eux. L'angle cosinus est la mesure du chevauchement entre les phrases en termes de leur contenu.
La distance euclidienne entre deux vecteurs de mots fournit une méthode efficace pour mesurer la similitude linguistique ou sémantique des mots correspondants. (Frank D 2015)
Alternativement, vous pouvez calculer le vecteur propre des phrases pour déterminer la similitude des phrases.
Les vecteurs propres sont un ensemble spécial de vecteurs associés à un système linéaire d'équations (c'est-à-dire une équation matricielle). Ici, une matrice de similarité de phrase est générée pour chaque cluster et le vecteur propre de la matrice est calculé. Vous pouvez en savoir plus sur l'approche basée sur Eigenvector pour le classement des phrases sur cet article https://pdfs.semanticscholar.org/ca73/bbc99be157074d8aad17ca8535e2cd956815.pdf
Pour le code source, Siraj Rawal dispose d'un bloc-notes Python pour créer un ensemble de vecteurs de mots. Les vecteurs de mots peuvent ensuite être utilisés pour trouver la similitude entre les mots. Le code source est disponible ici https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE
Une autre option est un tutoriel d'Oreily qui utilise la bibliothèque gensin Python pour déterminer la similitude entre les documents. Ce didacticiel utilise NLTK pour créer des jetons, puis crée un modèle tf-idf (terme fréquence-fréquence de document inverse) à partir du corpus. Le tf-idf est ensuite utilisé pour déterminer la similitude des documents. Le tutoriel est disponible ici https://www.oreilly.com/learning/how-do-i-compare-document-similarity-using-python