Question

J'ai un problème de regroupement énorme quantité de phrases en groupes par leurs significations. Ceci est similaire à un problème lorsque vous avez beaucoup de phrases et que vous voulez les regrouper par leur signification.

Quels algorithmes sont proposés pour le faire? Je ne sais pas le nombre de groupes à l'avance (et que de nouvelles données à venir clusters peuvent changer aussi bien), les fonctionnalités qui sont normalement utilisés pour représenter chaque phrase?

Je suis en train maintenant les fonctionnalités les plus simples avec la liste juste des mots et de la distance entre les phrases définies comme:

entrer image description ici

(A et B correspondent à des ensembles de mots phrase A et B)

Est-il sens?

Je suis en train d'appliquer l'algorithme de Mean-Shift de la bibliothèque de scikit à cette distance, car il ne nécessite pas le nombre de groupes à l'avance.

Si quelqu'un vous conseillera de meilleures méthodes / approches pour le problème -. Il sera très apprécié que je suis encore nouveau au sujet

Était-ce utile?

La solution

Vérifier Stanford Group PNL logiciel open source "( http: //www-nlp.stanford .edu / logiciel ), en particulier ( Stanford classificateur http: / /www-nlp.stanford.edu/software/classifier.shtml ). Le logiciel est écrit en Java, qui sera probablement vous ravira, mais a également des liaisons pour d'autres langues. Remarque, licence -. Si vous prévoyez d'utiliser leur code dans des produits commerciaux, vous devez acquérir la licence commerciale

Une autre série intéressante de bibliothèques open source, à mon humble avis adapté à cette tâche et bien plus encore, est cadre parallèle pour l'apprentissage machine GraphLab ( http://select.cs.cmu.edu/code/graphlab ), qui comprend bibliothèque regroupement , la mise en œuvre de divers algorithmes de regroupement (http://select.cs.cmu.edu/code/graphlab/clustering.html ). Il est particulièrement adapté pour les très grand volume de données (comme vous), car il met en œuvre le modèle de MapReduce et, par conséquent, les supports multicoeur et multiprocesseur traitement parallèle .

Vous êtes très probablement au courant de ce qui suit, mais je vais le mentionner au cas où. Natural Language Toolkit (NLTK) pour Python ( http://www.nltk.org ) contient des modules pour le regroupement / classification / texte catégoriser. Vérifiez le chapitre correspondant dans le NLTK Book: http://www.nltk.org/book/ch06.html .

Mise à jour:

En parlant de algorithmes , il semble que vous avez essayé la plupart de ceux de scikit-learn, comme illustré dans cet exemple d'extraction de sujet: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . Cependant, vous pouvez trouver d'autres bibliothèques utiles qui mettent en œuvre une grande variété de algorithmes cluster , y compris non négatif factorisation de la matrice (NMF) . L'une de ces bibliothèques est Python factorisation de la matrice (PyMF) page d'accueil à https://code.google. com / p / pymf et le code source https://github.com/nils-werner/pymf . Une autre, encore plus intéressant, bibliothèque, également en Python, est nimfa , qui met en œuvre divers algorithmes NMF : http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . Voici un exemple de sa documentation, qui présente la solution pour le problème de traitement de texte très similaire de sujet regroupement :

scroll top