5 Stimmen

Extrahieren semantische/stilistische Merkmale aus Text

Ich möchte gerne wissen, welche Open-Source-Tools (für Java/Python) mir helfen könnten, semantische und stilistische Merkmale aus Texten zu extrahieren. Beispiele für semantische Merkmale wären das Adjektiv-Substantiv-Verhältnis, eine bestimmte Folge von Teilen der Sprache (Adjektiv gefolgt von einem Substantiv: adj|nn) usw. Beispiele für stilistische Merkmale wären die Anzahl der einzigartigen Wörter, die Anzahl der Pronomen usw. Aktuell kenne ich nur Word to Web Tools , das einen Textblock in das rudimentäre Vektorraummodell umwandelt.

Ich kenne einige Text-Mining-Pakete wie GATE, NLTK, Rapid Miner, Mallet und MinorThird . Allerdings konnte ich keine Mechanismen finden, die meiner Aufgabe entsprechen.

Mit freundlichen Grüßen,
--Denzil

3voto

sholsapp Punkte 14674

Ich denke, dass der Stanford Parser eines der besten und umfassendsten NLP-Tools ist, das kostenlos verfügbar ist: Es ermöglicht nicht nur das Parsen der strukturellen Abhängigkeiten (um Nomen/Adjektive zu zählen), sondern gibt Ihnen auch die grammatischen Abhängigkeiten im Satz (so dass Sie das Subjekt, Objekt usw. extrahieren können). Der letztere Bestandteil ist etwas, das Python-Bibliotheken einfach noch nicht können (siehe Does NLTK have a tool for dependency parsing?) und wahrscheinlich das wichtigste Feature in Bezug auf die Fähigkeit Ihrer Software, mit Semantik zu arbeiten.

Wenn Sie an Java- und Python-Tools interessiert sind, ist Jython wahrscheinlich am unterhaltsamsten für Sie zu verwenden. Ich war in derselben Situation, also habe ich diesen Beitrag darüber geschrieben, wie man Jython verwendet, um den Beispielcode im Stanford Parser auszuführen - ich würde mir das mal ansehen und sehen, was Sie denken: http://blog.gnucom.cc/2010/using-the-stanford-parser-with-jython/

Bearbeitung: Nachdem ich einen Ihrer Kommentare gelesen habe, habe ich erfahren, dass Sie 29 Millionen Sätze parsen müssen. Ich denke, Sie könnten sehr davon profitieren, indem Sie reines Java verwenden, um zwei wirklich leistungsstarke Technologien zu kombinieren: Stanford Parser + Hadoop. Beide sind rein in Java geschrieben und haben eine äußerst umfangreiche API, mit der Sie große Datenmengen auf einem Cluster von Maschinen in einem Bruchteil der Zeit parsen können. Wenn Sie keine Maschinen haben, können Sie den Amazon-EC2-Cluster verwenden. Wenn Sie ein Beispiel zur Verwendung von Stanford Parser + Hadoop benötigen, hinterlassen Sie mir einen Kommentar, und ich werde den Beitrag mit einem URL zu meinem Beispiel aktualisieren.

2voto

Ken Pu Punkte 41

Wenn Ihr Text hauptsächlich in natürlicher Sprache (in Englisch) verfasst ist, versuchen Sie, Phrasen mithilfe eines Wortart (POS) -Taggers zu extrahieren. Monty Tagger ist ein reiner Python POS Tagger. Ich habe sehr zufriedenstellende Leistungen von einem C++ POS Tagger wie dem CRFTagger http://sourceforge.net/projects/crftagger/ erhalten. Ich habe es mit Python unter Verwendung von subprocess.Popen verbunden. Die POS-Tags ermöglichen es Ihnen, nur die wichtigen Teile eines Satzes zu behalten: Substantive und Verben zum Beispiel, die dann mit beliebigen Indexierungswerkzeugen wie Lucene oder Xapian (mein Favorit) indiziert werden können.

1voto

Ruggiero Spearman Punkte 6485

Ich verwende Lucene's Analyzers und Indexierungsmechanismus, um Vektorräume für Dokumente zu erstellen und dann in diesem Raum zu navigieren. Sie können Termhäufigkeitsvektoren für Dokumente erstellen, ein vorhandenes Dokument verwenden, um andere ähnliche Dokumente im Vektorraum zu suchen. Wenn Ihre Daten groß sind (Millionen von Dokumenten, Zehntausende von Merkmalen), dann könnten Sie Lucene mögen. Sie können auch Stemmung, POS-Tagging und andere Dinge machen. Dieser Blog-Beitrag könnte ein guter Ausgangspunkt für POS-Tagging sein. Kurz gesagt, Lucene bietet Ihnen alle notwendigen Mechanismen, um die genannten Aufgaben umzusetzen.

Eine Bibliothek, von der ich oft höre, ist Semantic Vectors. Sie ist wiederum auf Lucene aufgebaut, aber ich habe keine direkte Erfahrung damit. Abgesehen davon empfehle ich, sich den Artikel zum Vektorraummodell von Wikipedia anzusehen hier.

1voto

Gabe Punkte 988

Ich habe NLTK für einige NLP (Natural Language Processing) Aufgaben verwendet und es hat wirklich gut funktioniert (wenn auch etwas langsam). Warum genau möchtest du eine so strukturierte Darstellung deines Textes? (echte Frage, da je nach Anwendung manchmal viel einfachere Darstellungen besser sein können)

1voto

Jon Punkte 78

Hier ist eine Zusammenstellung von Java NLP-Tools, die relativ aktuell ist: http://www.searchenginecaffe.com/2007/03/java-open-source-text-mining-and.html

LingPipe (http://alias-i.com/lingpipe/) wurde in den Antworten noch nicht erwähnt und ist ein exzellentes und aktiv entwickeltes Toolkit.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X