englische Verben aus einem gegebenen Text extrahieren [geschlossen]

8

Ich muss alle englischen Verben aus einem gegebenen Text extrahieren und ich frage mich, wie ich das machen könnte ... Auf den ersten Blick ist es meine Idee, reguläre Ausdrücke zu verwenden, da alle englischen Zeitformen den Mustern folgen, aber vielleicht gibt es eine andere Möglichkeit, dies zu tun. Was ich dachte, ist einfach:

  1. Erstellen Sie ein Muster für jede Verbform. Ich muss in gewisser Weise zwischen regulären Verben (http://en.wikipedia.org/wiki/English_verbs) und unregelmäßigen Verben (http://www.chompchomp.com/rules/irregularrules01.htm) unterscheiden.
  2. Iteriere über diese Muster und teile den Text mit ihnen auf (das letzte Wort jedes Teilstrings soll das Verb sein, das dem Satz vollständige Bedeutung gibt, was ich für andere Zwecke brauche - & gt; Nominalisierung)

Was denkst du? Ich denke, das ist kein effizienter Weg, aber ich kann mir keinen anderen vorstellen.

Vielen Dank im Voraus!

PS:

  1. Ich habe zwei Wörterbücher, eines für alle englischen Verben und das andere für alle englischen Substantive
  2. Das Hauptproblem von all dem ist, dass das Projekt auf der Verb Nominalisierung (ist nur ein Uni-Projekt), so dass alle "Anstrengung" soll in diesem Teil, Nominalisierung konzentriert werden. Konkret folge ich diesem Modell: acl.ldc.upenn.edu/P/P00/P00-1037.pdf). Das Projekt besteht darin, einen Text zu geben, alle Verben in diesem Text zu finden und mehrere Nominalisierungen für jedes Verb vorzuschlagen. Also sollte der erste Schritt (Verben finden) so einfach wie möglich sein ... aber ich kann keinen Parser verwenden, es ist nicht erlaubt
jarandaf 23.03.2011, 11:04
quelle

4 Antworten

13

Sprachteil-Tagger

Das Identifizieren und dann Extrahieren aller Verben in einem Text ist sehr einfach mit einem < stark> Sprachteil (POS) -Tagger . Solche Tagger bezeichnen alle Wörter in einem Text mit Wortarten, die angeben, ob es sich um Verben, Substantive, Adjektive, Adverbien usw. handelt. Moderne POS-Tagger sind sehr genau. Zum Beispiel, Toutanova et al. 2003 berichtet Stanfords Open-Source-POS-Tagger weist den Newswire-Daten das korrekte Tag 97,24% der Zeit zu zu.

POS-Tagging durchführen

Java Wenn Sie Java verwenden, ist das Stanford-Protokoll ein gutes Paket für das POS-Tagging -linearer Wortart-Tagger . Matthew Jockers hat ein tolles Tutorial zur Verwendung dieses Taggers zusammengestellt, das Sie hier finden können.

Python Wenn Sie Python bevorzugen, können Sie den POS-Tagger verwenden, der im Natural Language Toolkit (nltk) enthalten ist. . Ein Code-Snippet, das zeigt, wie das POS-Tagging mit diesem Paket durchgeführt wird, finden Sie unten:

%Vor%

Die resultierenden POS-markierten Token sind ein Array von Tupeln, wobei der erste Eintrag in jedem Tupel die Identität des markierten Wortes ist und der zweite Eintrag das POS-Tag des Wortes ist, z. Für das obige Code-Snippet wird pos_tagged_tokens auf:

gesetzt %Vor%

Den Tag-Satz verstehen

Sowohl der Stanford POS-Tagger als auch die NLTK verwenden den Penn Treebank-Tagsatz . Wenn Sie nur daran interessiert sind, die Verben zu extrahieren, ziehen Sie alle Wörter heraus, die ein POS-Tag haben, das mit einem "V" beginnt (z. B. VB, VBD, VBG, VBN, VBP und VBZ).

    
dmcer 23.03.2011 18:46
quelle
4

Parsen natürlicher Sprache mit Regex ist unmöglich. Vergiss es.

Als ein drastisches Beispiel: Wie finden Sie die Verben (mit Sternchen markiert) in diesem Satz?

  

Buffalo Buffalo Buffalo Buffalo   Büffel * Büffel * Büffel Büffel

Während Sie extreme Fälle wie diesen kaum finden werden, gibt es Dutzende von Verben, die auch Substantive, Adjektive usw. sein können, wenn Sie nur auf das Wort schauen.

Sie benötigen einen Parser für natürliche Sprache wie Stanford NLP . Ich habe noch nie einen benutzt, also weiß ich nicht, wie gut deine Ergebnisse sein werden, aber besser als mit Regex kann ich dir das sagen.

    
Sean Patrick Floyd 23.03.2011 11:07
quelle
0

Dies ist eine sehr schwierige Aufgabe in NLP (Natural Language Processing). Reguläre Ausdrücke auf eigene Faust werden nicht ausreichen. Nehmen Sie zum Beispiel das Wort "Training" - es kann entweder als Verb oder Nomen verwendet werden ("Ich gehe zur Trainingseinheit"). Offensichtlich wird ein regulärer Ausdruck nicht in der Lage sein, den Unterschied zwischen den beiden zu unterscheiden. Es gibt auch Probleme, das "-ed" ist eine übliche Art, Vergangenheitsverben zu beenden, wird aber im Falle von "angewidert" scheitern.

Es gibt einige Techniken, die Ihnen gute (nicht perfekte, aber gute) Hinweise geben können, ob ein gegebenes Wort ein Verb ist oder nicht - sie können auch sehr rechenintensiv sein.

Die erste Frage, die Sie sich stellen sollten (meiner Meinung nach), ist die Qualität der Antwort im Vergleich zur Bearbeitungszeit.

    
Noam Weiss 23.03.2011 11:19
quelle
0

Obwohl ein Jahr später, aber ich fand ein sehr nützliches Werkzeug von der Northwestern University namens MorphAdorner .

Es behandelt alle Arten von Situationen, z.B. Lemmatisierung, Spracherkennung, Namenserkennung, Parser, Satzteiler, etc ..

Einfach zu bedienen.

    
myro 05.04.2012 13:14
quelle

Tags und Links