Meilleur algorithme pratique pour la similitude des phrases

18

J'ai deux phrases, S1 et S2, qui ont toutes deux un nombre de mots (généralement) inférieur à 15.

Quels sont les algorithmes les plus utiles et les plus efficaces (apprentissage automatique), qui sont peut-être faciles à mettre en œuvre (le réseau de neurones est correct, sauf si l'architecture est aussi compliquée que Google Inception, etc.).

Je recherche un algorithme qui fonctionnera bien sans y mettre trop de temps. Y a-t-il des algorithmes que vous avez trouvés efficaces et faciles à utiliser?

Cela peut, mais ne doit pas entrer dans la catégorie du clustering. Mon expérience provient de l'apprentissage automatique, donc toutes les suggestions sont les bienvenues :)

DaveTheAl
la source
Qu'avez-vous mis en œuvre? Je suis également confronté à la même chose, je dois trouver une solution pour les articles liés à «k» dans un corpus qui ne cesse de se mettre à jour.
Dileepa

Réponses:

16

La similitude des cosinus pour l'espace vectoriel pourrait être votre réponse: http://blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/

Ou vous pouvez calculer le vecteur propre de chaque phrase. Mais le problème est, quelle est la similitude?

"Ceci est un arbre", "Ce n'est pas un arbre"

Si vous voulez vérifier la signification sémantique de la phrase, vous aurez besoin d'un jeu de données wordvector. Avec l'ensemble de données wordvector, vous pourrez vérifier la relation entre les mots. Exemple: (Roi - Homme + femme = Reine)

Siraj Raval a un bon bloc-notes en python pour créer des jeux de données wordvector: https://github.com/llSourcell/word_vectors_game_of_thrones-LIVE

Christian Frei
la source
8

Une approche que vous pourriez essayer est de faire la moyenne des vecteurs de mots générés par les algorithmes d'intégration de mots (word2vec, gant, etc.). Ces algorithmes créent un vecteur pour chaque mot et la similitude cosinus entre eux représente la similitude sémantique entre les mots. Dans le cas des vecteurs moyens parmi les phrases. Un bon point de départ pour en savoir plus sur ces méthodes est cet article: Comment les incorporations de phrases captent-elles le sens ? Il traite de certaines méthodes d'intégration de phrases. Je suggère également que vous examiniez l' apprentissage non supervisé des intégrations de phrases à l'aide des fonctionnalités de composition n-gramme, les auteurs prétendent que leur approche est supérieure aux méthodes de pointe. Ils fournissent également le code et quelques instructions d'utilisation dans ce dépôt github .

feynman410
la source
2

Vous devriez vérifier https://github.com/seatgeek/fuzzywuzzy#usage . fuzzywuzzy est une bibliothèque géniale pour la correspondance chaîne / texte qui donne un nombre compris entre 0 et 100 en fonction de la similitude de deux phrases. Il utilise la distance de Levenshtein pour calculer les différences entre les séquences dans un package simple à utiliser. Consultez également cet article de blog pour une explication détaillée de la façon dont fuzzywuzzy fait le travail. Ce blog est également écrit par l'auteur fuzzywuzzy

karthikeyan mg
la source
1

Ce blog a la solution pour la similitude de texte court. Ils utilisent principalement le modèle de réseau neuronal BERT pour trouver des similitudes entre les phrases. https://medium.com/@vimald8959/sentence-categorisation-short-text-similarity-61bb88fae15e

vimal Dharmalingam
la source
Bonjour, bienvenue sur Data Science Stack Exchange! Lorsque vous référencez une solution à partir d'un site Web externe, pensez à rédiger un résumé dans votre réponse. En effet, cela sera plus facile à lire et empêchera votre réponse de devenir obsolète si la page cible change ou si le lien se casse.
Romain Reboulleau
Bien, c'est vraiment du bon matos. Donc, ils utilisent essentiellement BERT? @RomainReboulleau a certainement raison!
DaveTheAl