Je veux utiliser l'allocation Dirichlet latente pour un projet et j'utilise Python avec la bibliothèque gensim. Après avoir trouvé les sujets, j'aimerais regrouper les documents en utilisant un algorithme tel que k-means (Idéalement, j'aimerais en utiliser un bon pour les clusters qui se chevauchent, donc toute recommandation est la bienvenue). J'ai réussi à obtenir les sujets mais ils se présentent sous la forme de:
0,041 * Ministre + 0,041 * Clé + 0,041 * moments + 0,041 * controversé + 0,041 * Premier
Afin d'appliquer un algorithme de clustering et de me corriger si je me trompe, je pense que je devrais trouver un moyen de représenter chaque mot comme un nombre en utilisant soit tfidf soit word2vec.
Avez-vous des idées sur la façon dont je pourrais "retirer" les informations textuelles d'une liste, par exemple, afin de le faire, puis les replacer afin de faire la multiplication appropriée?
Par exemple, la façon dont je le vois si le mot ministre a un poids tfidf de 0,042 et ainsi de suite pour tout autre mot dans le même sujet, je devrais calculer quelque chose comme:
0,041 * 0,42 + ... + 0,041 * tfidf (Prime) et obtenez un résultat qui sera utilisé plus tard afin de regrouper les résultats.
Merci pour votre temps.
la source
Réponses:
En supposant que LDA a produit une liste de sujets et attribue un score à chaque sujet pour chaque document, vous pouvez représenter le document et ses scores en tant que vecteur:
Pour obtenir les scores de chaque document, vous pouvez exécuter le document. comme un sac de mots, à travers un modèle LDA formé. De la documentation gensim:
Ensuite, vous pouvez exécuter les k-means sur cette matrice et regrouper les documents similaires. Par défaut, K-means est un algorithme de clustering dur impliquant qu'il classe chaque document en un cluster. Vous pouvez utiliser des mécanismes de clustering doux qui vous donneront un score de probabilité qu'un document s'intègre dans un cluster - c'est ce que l'on appelle des k-means flous . https://gist.github.com/mblondel/1451300 est un résumé de Python montrant comment vous pouvez le faire avec scikit learn.
ps: je ne peux pas poster plus de 2 liens
la source
En complément de la réponse précédente, il vaut mieux non seulement exécuter kmeans directement sur les données de composition dérivées de la distribution lda topic-doc, mais utiliser une transformation de données de composition pour les projeter dans l'espace euclidien comme ilr ou clr.
( Exemple )
la source