6

Kennt jemand gute Open-Source-Text-Kategorisierung Modelle? Ich kenne Stanford Classifier, Weka, Mallet usw., aber alle von ihnen erfordern ein Training.Text Kategorisierung Klassifikatoren

Ich muss Nachrichtenartikel in Sport/Politik/Gesundheit/Gaming/etc klassifizieren. Gibt es irgendwelche vortrainierten Modelle?

Alchemie, OpenCalais usw. sind keine Optionen. Ich brauche Open-Source-Tools (vorzugsweise in Java).

Antwort

5

nimmt eine vortrainiert Modell hat, dass der Korpus, der Zug wurde verwendet, um aus exakt den gleichen Domäne wie die Dokumente, die Sie versuchen zu klassifizieren. Im Allgemeinen wird dies nicht zu den gewünschten Ergebnissen führen, da Sie nicht den Originalkorpus haben. Maschinelles Lernen ist nicht statisch. Wenn Sie einen Klassifikator trainieren, müssen Sie das Modell aktualisieren, wenn neue Funktionen/Informationen verfügbar sind.

Nehmen Sie zum Beispiel klassifizieren Nachrichtenartikel wie Sie wollen im Bereich Sport/Politik/Gesundheit/Gaming/etc.

Zuerst welche Sprache? Sprechen wir nur über Englisch? Wie wurde das Originalkorpus bezeichnet? Und das größte Unbekannte ist die usw. Kategorie.

Das Training Ihres eigenen Klassifikators ist wirklich sehr einfach. Wenn Sie Text klassifizieren, ist MALLET die beste Wahl. Sie können in weniger als 10 Minuten in Betrieb sein. Sie können MALLET in weniger als 1 Stunde zu Ihrer eigenen Anwendung hinzufügen.

Wenn Sie Nachrichtenartikel klassifizieren möchten, gibt es viele Open Source-Korpora, die Sie als Basis für das Training verwenden können. Ich würde mit Reuters-21578 oder RCV-1 beginnen.

+0

Vielen Dank, Shane, für Ihre Antwort.Ich werde auf jeden Fall die von Ihnen erwähnten Datensätze prüfen! Aber ja, ich arbeite nur an englischen Daten und allgemeinen Domänen von Nachrichtenartikeln (ähnlich denen von Alchemy und OpenCalais klassifiziert). Ich werde MALLET eine Chance geben. – MFARID

+0

Great lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben! – Shane

0

Es gibt eine lange Liste von vortrainiert Modelle für OpenNLP

http://opennlp.sourceforge.net/models-1.5/

+1

Vielen Dank, aber keiner von ihnen tun Text-Kategorisierung – MFARID

+0

nicht sicher, ob dies Ihre Notwendigkeit https://cwiki.apache.org/MAHOUT/bayesian.html Hotel würde auch zitieren Sie ein Beispiel, das mit ihrer Quelle einhergeht. https://cwiki.apache.org/MAHOUT/wikipedia-bayes-example.html –

2

Es gibt viele Klassifikatoren je nach Bedarf. Zuerst denke ich, dass Sie vielleicht eingrenzen möchten, was Sie mit den Klassifikatoren machen wollen.

Und Training ist Teil von Schritten der Klassifizierung, ich glaube nicht, dass Sie viel vortrainierte Klassifikatoren da draußen finden werden. Außerdem ist Training fast immer ein einfacher Teil der Klassifizierung.

Das gesagt, es gibt tatsächlich eine Menge Ressourcen, die Sie betrachten können. Ich kann nicht Kredit dafür zu nehmen vorgeben, aber dies ist eines der Beispiele:

Weka - ist eine Sammlung von Maschinen Lernalgorithmen für Data Mining. Es ist eines der beliebtesten Textklassifizierungs-Frameworks. Es enthält Implementierungen einer breiten Vielzahl von Algorithmen einschließlich Naive Bayes und Support Vector Maschinen (SVM, unter SMO aufgelistet) [Hinweis: Andere häufig verwendete nicht-Java SVM-Implementierungen sind SVM-Light, LibSVM und SVMTorch]. Ein ähnliches Projekt ist Kea (Schlüsselwort-Extraktionsalgorithmus) ein Algorithmus für Extrahieren von Schlüsselphrasen aus Textdokumenten.

Apache Lucene Mahout - Ein Inkubator-Projekt erstellt hochskalierbaren verteilten Implementierungen von gängigen Maschinenlernalgorithmen auf oben auf den Hadoop Karten reduzieren Rahmen.

Quelle: http://www.searchenginecaffe.com/2007/03/java-open-source-text-mining-and.html

+0

Danke, herzhaft, für Sie beantworten. – MFARID

2

Was Sie durch Klassifizierung bedeutet ist sehr wichtig.

Klassifizierung ist eine überwachte Aufgabe, die zuvor einen vormarkierten Korpus erfordert. Wenn Sie von dem bereits beschrifteten Korpus weggehen, müssen Sie ein Modell erstellen, indem Sie mehrere Methoden und Ansätze verwenden, und schließlich können Sie einen unmarkierten Testkorpus unter Verwendung dieses Modells klassifizieren. Wenn dies der Fall ist, können Sie einen Klassifikator mit mehreren Klassen verwenden, bei dem es sich in der Regel um eine binäre Baumanwendung eines binären Klassifikators handelt. Stand der Technik Ansatz für eine solche Art von Aufgabe ist mit einem Zweig der maschinellen Lernen, SVM. Zwei der besten SVM-Klassifikatoren sind LibSVM und SVMlight. Diese sind open-source, einfach zu bedienen und enthalten Klassifizierungswerkzeuge für mehrere Klassen. Schließlich müssen Sie eine Literaturstudie durchführen, um zu verstehen, was Sie zusätzlich tun müssen, um gute Ergebnisse zu erzielen, da die Verwendung dieser Klassifikatoren alleine nicht ausreicht. Sie müssen Ihren Korpus manipulieren/vorverarbeiten, um informationstragende Teile (z. B. Unigramme) zu extrahieren und laute Teile auszuschließen. Im Allgemeinen haben Sie wahrscheinlich einen langen Weg vor sich, aber NLP ist ein sehr interessantes Thema und es lohnt sich, daran zu arbeiten.

Wenn Sie jedoch unter Clustering klassifizieren, wird das Problem komplizierter. Clustering ist ein nicht überwachte Aufgabe, was bedeutet, dass Sie dem Programm, das Sie verwenden, keine Informationen darüber geben werden, welches Beispiel zu welcher Gruppe/Thema/Klasse gehört. Es gibt auch wissenschaftliche Arbeiten zu hybriden, halb überwachten Ansätzen, die jedoch vom eigentlichen Zweck des Clusterproblems abweichen. Die Vorverarbeitung, die Sie verwenden müssen, während Sie Ihren Korpus manipulieren, hat eine ähnliche Natur mit dem, was Sie im Klassifizierungsproblem tun müssen, deshalb werde ich es nicht noch einmal erwähnen. Um Clustering durchzuführen, müssen Sie mehreren Vorgehensweisen folgen. Erstens können Sie die Methode LDA (Latent Dirichlet Allocation) verwenden, um die Dimensionalität (Anzahl der Dimensionen Ihres Feature-Space) Ihres Corpus zu reduzieren, was zur Effizienz und zum Informationsgewinn von Features beiträgt. Neben oder nach LDA können Sie Hierarchical Clustering oder ähnliche andere Methoden wie K-Means verwenden, um Ihr unmarkiertes Korpus zu clustern. Sie können Gensim oder Scikit-Learn als Open-Source-Tools für Clustering verwenden. Beide sind leistungsstarke, gut dokumentierte und einfach zu bedienende Tools.

In allen Fällen, machen Sie viel akademische Lektüre und versuchen Sie, die Theorie unter diesen Aufgaben und Problemen zu verstehen. Auf diese Weise können Sie innovative und effiziente Lösungen für Ihr spezifisches Problem entwickeln, denn die Probleme in NLP sind in der Regel korpusabhängig und Sie sind in der Regel auf sich allein gestellt, während Sie sich mit Ihrem spezifischen Problem befassen. Es ist sehr schwierig, generische und gebrauchsfertige Lösungen zu finden, und ich empfehle auch nicht, sich auf eine solche Option zu verlassen.

Ich kann Ihre Frage überantworten, sorry für die irrelevanten Teile.

Viel Glück =)

+0

Große Antwort! Danke vielmals. Ich bin mir über die Klassifizierung bewusst. Ich suchte nach einem überwachten Ansatz, aber mit vortrainierten Modellen – MFARID

+1

Modell ist das primäre Ergebnis Ihrer Arbeit in der Klassifizierung; Alle anderen Dinge dienen dazu, ein gutes Modell zu erstellen, das Ihren Bedürfnissen entspricht. In diesem Sinne ist der Versuch, ein fertiges Modell zu finden, irrelevant und höchstwahrscheinlich unmöglich. Dies liegt hauptsächlich daran, dass die Aufgabe, die Sie zu erreichen versuchen, das Korpus, an dem Sie arbeiten, die Effizienz, die Sie benötigen, und alle anderen Aspekte für Sie und Ihren Fall einzigartig sind. Es ist also reine Glückssache, ein Modell zu finden, das Ihre Ziele erfüllt. Mein Rat ist, sich so schnell wie möglich die Hände schmutzig zu machen, viel Glück =) – clancularius