J'utilise l'analyse sémantique latente pour représenter un corpus de documents dans un espace dimensionnel inférieur. Je veux regrouper ces documents en deux groupes en utilisant k-means.
Il y a plusieurs années, j'ai fait cela en utilisant le gensim de Python et en écrivant mon propre algorithme k-means. J'ai déterminé les centroïdes de cluster en utilisant la distance euclidienne, mais j'ai ensuite regroupé chaque document en fonction de la similitude du cosinus avec le centroïde. Cela semblait plutôt bien fonctionner.
Maintenant, j'essaie de le faire sur un corpus de documents beaucoup plus vaste. K-means ne converge pas, et je me demande si c'est un bug dans mon code. J'ai lu récemment que vous ne devriez pas regrouper en utilisant la similitude cosinus, car k-means ne fonctionne que sur la distance euclidienne. Même si, comme je l'ai mentionné, cela semblait bien fonctionner dans mon cas de test plus petit.
Maintenant, je rencontre cela sur la page Wikipedia de LSA :
Les documents et les représentations vectorielles de termes peuvent être regroupés en utilisant des algorithmes de regroupement traditionnels comme k-means en utilisant des mesures de similitude comme cosinus.
Alors c'est quoi? Puis-je utiliser la similitude cosinus ou non?
I then assigned each document to a cluster based on cosine similarity
- Cosinus entre un doc et un centroïde? Et une fois tous les documents attribués, vous mettez à jour les centroïdes de manière habituelle (euclidienne), car les coordonnées des documents dans l'espace sont connues. Est-ce vrai?