Quelle est la bonne méthode pour le regroupement de texte court?
15
Je travaille sur un problème de clustering de texte. Les données contiennent plusieurs phrases. Existe-t-il un bon algorithme qui atteint une grande précision sur un texte court?
Pouvez-vous fournir de bonnes références?
Des algorithmes tels que KMeans, le clustering spectral ne fonctionnent pas bien pour ce problème.
Cela dépend principalement de la quantité d '«état de l'art» (SOTA) que vous souhaitez par rapport à la profondeur que vous souhaitez atteindre (jeu de mots voulu ...).
Si vous pouvez vivre avec des intégrations de mots peu profondes comme fournies par word2vec, Glove ou fastText, je pense que la distance Word Mover (WMD [oui, vraiment ...]) est une fonction intéressante pour mesurer des distances de document (courtes) [1] . J'ai même vu plusieurs cahiers Python dans le passé qui fournissent des "tutoriels" pour cette mesure de distance, donc c'est vraiment facile de commencer.
Cependant, si vous êtes plus intéressé par SOTA, vous devrez vous pencher sur l'apprentissage profond (représentation de séquence), en utilisant une sorte de réseau récurrent qui apprend un modèle de sujet à partir de vos phrases. En plus d'intégrer des incorporations (sémantiques) de mots, ces approches vont au-delà de la [bonne, vieille] approche «sac de mots» en apprenant les représentations de sujets à l'aide des dépendancesdes mots de la ou des phrases. Par exemple, le modèle de sujet récurrent au niveau de la phrase (SLRTM) est un modèle profond et récurrent assez intéressant basé sur les idées de la LDA plus traditionnelle (par Blei et al.) Ou de la LSA (Landauer et al.), Mais ce n'est qu'un arXiv papier (donc tous les "avertissements par défaut à prendre avec un grain de sel" sur la recherche non évaluée par les pairs devraient s'appliquer ...) [2]. Néanmoins, le document contient de nombreux excellents pointeurs et références pour démarrer vos recherches si vous souhaitez descendre ce terrier de lapin.
Enfin, il convient de préciser que je ne prétends pas que ce sont les méthodes convenues les plus performantes pour le sac de mots et les modèles de séquence, respectivement. Mais ils devraient vous rapprocher de ce que pourrait être le "meilleur" SOTA, et devraient au moins constituer un excellent point de départ.
j'ai essayé word2vec et il ne fonctionne pas bien pour le texte court.
Enthusiast
Juste pour être sûr: ma réponse ci-dessus ne recommande pas d'utiliser word2vec (seul) pour le clustering de texte court. Il recommande plutôt d'utiliser des méthodes WMD (sur des vecteurs intégrés) et / ou Deep Learning. (Pourtant, si vous pouvez former vos propres vecteurs, vous obtenez de très bons résultats avec eux seuls, en utilisant la similitude du cosinus mou , au moins pour un "prototype réalisable".)
fnl
-1
https://github.com/RandyPen/TextCluster
Il s'agit d'une méthode de cluster spécifique au texte court, qui surpasse KMeans etc. Pas besoin de définir le nombre de variables latentes.
L'idée de base est de symboliser la phrase en mots. Ensuite, dirigez-vous vers un compartiment différent selon le composant de texte. Dans chaque compartiment, calculez la similitude entre la phrase et le compartiment. Si le score de similitude est supérieur à la valeur spécifique, ajoutez cette phrase dans ce compartiment, sinon recherchez le compartiment suivant.
https://github.com/RandyPen/TextCluster
Il s'agit d'une méthode de cluster spécifique au texte court, qui surpasse KMeans etc. Pas besoin de définir le nombre de variables latentes.
L'idée de base est de symboliser la phrase en mots. Ensuite, dirigez-vous vers un compartiment différent selon le composant de texte. Dans chaque compartiment, calculez la similitude entre la phrase et le compartiment. Si le score de similitude est supérieur à la valeur spécifique, ajoutez cette phrase dans ce compartiment, sinon recherchez le compartiment suivant.
la source