Frage

Ich habe das Problem, eine große Anzahl von Sätzen durch ihre Bedeutungen in Gruppen zu gruppieren. Dies ähnelt einem Problem, wenn Sie viele Sätze haben und sie nach ihren Bedeutungen gruppieren möchten.

Welche Algorithmen werden dafür empfohlen? Ich weiß nicht, dass die Anzahl der Cluster im Voraus (und da sich auch mehr Daten ändern können), welche Funktionen werden normalerweise verwendet, um jeden Satz darzustellen?

Ich versuche jetzt die einfachsten Funktionen mit nur Liste von Wörtern und Distanz zwischen Sätzen als:

enter image description here

(A und B sind entsprechende Wörtersätze in Satz A und B)

Macht es überhaupt Sinn?

Ich versuche zu bewerben Mittelschicht Algorithmus von der Scikit -Bibliothek zu dieser Entfernung, da keine Anzahl von Clustern im Voraus erforderlich ist.

Wenn jemand bessere Methoden/Ansätze für das Problem beraten wird, wird es sehr geschätzt, da ich immer noch neu im Thema bin.

War es hilfreich?

Lösung

Überprüf den Stanford NLP GroupOpen Source -Software (http://www-nlp.stanford.edu/software), im Speziellen, Stanford -Klassifizierer (http://www-nlp.stanford.edu/software/classifier.shtml). Die Software ist in geschrieben Java, was Sie wahrscheinlich erfreuen wird, aber auch Bindungen für einige andere Sprachen hat. Beachten Sie das Lizenzierung - Wenn Sie ihren Code in kommerziellen Produkten verwenden möchten, müssen Sie kommerzielle Lizenz erwerben.

Ein weiterer interessanter Satz von Open -Source -Bibliotheken, IMHO für diese Aufgabe geeignet und vieles mehr, ist Parallele Framework für maschinelles Lernen GraphLab (http://select.cs.cmu.edu/code/graphlab), welches beinhaltet Clustering -Bibliothek, Implementierung verschiedener Clustering -Algorithmen (http://select.cs.cmu.edu/code/graphlab/clustering.html). Es ist besonders geeignet für sehr großes Datenvolumen (wie Sie haben), wie es impliziert MapReduce Modell und unterstützt somit Multicore und Multiprozessor Parallelverarbeitung.

Sie sind sich der folgenden wahrscheinlich bewusst, aber ich werde es für den Fall erwähnen. Natural Language Toolkit (NLTK) zum Python (http://www.nltk.org) Enthält Module zum Clustering/Klassifizieren/Kategorisieren von Text. Überprüfen Sie das entsprechende Kapitel in der NLTK Book: http://www.nltk.org/book/ch06.html.

AKTUALISIEREN:

Apropos Algorithmen, Es scheint, dass Sie die meisten von denen ausprobiert haben scikit-learn, wie in diesem Thema Extraktionsbeispiel dargestellt: http://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf.html. Möglicherweise finden Sie jedoch nützliche andere Bibliotheken, die eine Vielzahl von Vielfalt implementieren Clustering -Algorithmen, einschließlich Nicht negative Matrixfaktorisierung (NMF). Eine dieser Bibliotheken ist Python -Matrixfaktorisierung (PYMF) mit Homepage bei https://code.google.com/p/pymf und Quellcode bei https://github.com/nils-werner/pymf. Eine andere, noch interessantere Bibliothek, ebenfalls Python-basierte, ist Nimfa, was verschiedene implementiert NMF -Algorithmen: http://nimfa.biolab.si. Hier ist ein Forschungspapier, der beschreibt NIMFA: http://jmlr.org/papers/volume13/zitnik12a/zitnik12a.pdf. Hier ist ein Beispiel aus seiner Dokumentation, in dem die Lösung für ein sehr ähnliches Textverarbeitungsproblem von vorgestellt wird Thema Clustering: http://nimfa.biolab.si/nimfa.examples.documents.html.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top