Domanda

Ho un problema di clustering di enormi quantità di frasi in gruppi per il loro significato. Questo è simile a un problema quando hai un sacco di frasi e si desidera raggrupparli per il loro significato.

Quello che gli algoritmi sono suggerito di fare questo? Non so numero di cluster in anticipo (e come più dati sta arrivando cluster possono cambiare pure), quali caratteristiche sono normalmente utilizzati per rappresentare ogni frase?

sto provando ora le caratteristiche più semplici con un solo elenco di parole e la distanza tra le frasi definite come:

entrare descrizione dell'immagine qui

(A e B sono insiemi di parole frase A e B corrispondenti)

Ha senso a tutti?

Sto cercando di applicare medio-shift algoritmo dalla libreria scikit a questa distanza, in quanto non richiede numero di cluster in anticipo.

Se qualcuno vi consiglierà metodi migliori / approcci per il problema -. Sarà molto apprezzato come io sono ancora nuovo al tema

È stato utile?

Soluzione

Controllare la Stanford NLP gruppo 's software open source ( http: //www-nlp.stanford .edu / software ), in particolare, Stanford Classificatore ( http: / /www-nlp.stanford.edu/software/classifier.shtml ). Il software è scritto in Java, che probabilmente si delizierà, ma ha anche binding per alcune altre lingue. Nota, il di licenza -. Se si prevede di utilizzare il proprio codice in prodotti commerciali, è necessario acquisire la licenza commerciale

Un altro interessante insieme di librerie open source, IMHO adatto per questo compito e molto altro ancora, è quadro in parallelo per la macchina di apprendimento GraphLab ( http://select.cs.cmu.edu/code/graphlab ), che include biblioteca di clustering , implementando vari algoritmi di clustering (http://select.cs.cmu.edu/code/graphlab/clustering.html ). E 'particolarmente adatto per molto grande volume di dati (come si deve), in quanto implementa il modello MapReduce e, quindi, supporti multicore e multiprocessore l'elaborazione parallela .

Molto probabilmente sono a conoscenza di quanto segue, ma citerò solo nel caso. Natural Language Toolkit (NLTK) per Python ( http://www.nltk.org ) contiene i moduli per il clustering / classificazione / categorizzazione di testo. Controllare il relativo capitolo nella NLTK Book: http://www.nltk.org/book/ch06.html .

UPDATE:

A proposito di algoritmi , sembra che hai provato la maggior parte di quelli da scikit-learn, come illustrato in questo esempio argomento di estrazione: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html . Tuttavia, si possono trovare utili altre biblioteche, che implementano una vasta gamma di il clustering algoritmi , tra cui non negativo Matrix Factorization (NMF) . Uno di tali librerie è Python Matrix Factorization (PyMF) con home page all'indirizzo https://code.google. com / p / pymf e il codice sorgente a https://github.com/nils-werner/pymf . Un altro, ancora più interessante, biblioteca, anche basato su Python, è NIMFA , che implementa varie NMF algoritmi : http://nimfa.biolab.si . Ecco un documento di ricerca, descrivendo NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf . Ecco un esempio dalla relativa documentazione, che presenta la soluzione per molto simile problema l'elaborazione del testo di topic raggruppamento : http://nimfa.biolab.si/nimfa.examples.documents.html .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top