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 :)
nlp
clustering
word2vec
similarity
DaveTheAl
la source
la source
Réponses:
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
la source
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 .
la source
bert-as-service ( https://github.com/hanxiao/bert-as-service#building-a-qa-semantic-search-engine-in-3-minutes ) offre exactement cette solution.
Pour répondre à votre question, l'implémenter vous-même à partir de zéro serait assez difficile car BERT n'est pas un NN trivial, mais avec cette solution, vous pouvez simplement le brancher dans votre algo qui utilise la similitude de phrase.
la source
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
la source
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
la source