2010-08-08 7 views
11

Ich bin auf der Suche nach einem Weg mit einem englischen Text zählen Verbalphrasen in Vergangenheit, Gegenwart und Zukunft Zeiten. Für jetzt verwende ich NLTK, mache ein POS (Part-of-Speech) -Tagging und zähle dann 'VBD', um vergangene Zeiten zu erhalten. Dies ist jedoch nicht genau genug, also denke ich, dass ich weiter gehen und Chunking verwenden muss, um dann VP-Chunks nach bestimmten Tempusmustern zu analysieren. Gibt es etwas, das das tut? Jede weitere Lektüre, die hilfreich sein könnte? Die NLTK book konzentriert sich hauptsächlich auf NP-Chunks, und ich kann ziemlich viele Informationen über VP-Chunks finden.Detect Englisch Zeitformen mit NLTK

+0

Es gibt einen Fehler in Ihrer Logik. Wenn ein Chunker NP erkennen kann, muss er VP erkennen können. –

+0

Natürlich interessiert mich aber vor allem die weitere VP-Analyse - wie man zwischen verschiedenen Zeiten unterscheidet. –

Antwort

9

Die genaue Antwort hängt davon ab, welche Chunker Sie verwenden möchten, aber Listenkomprehensionen werden Sie sehr weit bringen. Dadurch erhalten Sie die Anzahl der Verbalphrasen, die einen nicht vorhandenen Chunker verwenden.

len([phrase for phrase in nltk.Chunker(sentence) if phrase[1] == 'VP']) 

Sie können eine feinkörnigere Methode zum Erfassen von Zeitformen verwenden.

+0

Danke für den Zeiger, das ist, was ich verwenden werde - meine nächste Frage ist, ob es etwas gibt, um angespannte Muster zu erkennen. Für jeden VP würde ich gerne wissen, in welcher Zeit es sich befindet. –

+2

Ich schaffte es tatsächlich, mein Problem mit diesem Ansatz zu lösen, und markierte dies als akzeptierte Antwort. Der folgende Artikel ist wirklich hilfreich: http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/ –

+0

Hallo Michael, großartig zu hören, dass die Dinge gut für Sie arbeiten! –

1

Sie können dies entweder mit der Berkeley Parser oder Stanford Parser tun. Aber ich weiß nicht, ob es für beide eine Python-Schnittstelle gibt.

+0

Vielen Dank, dies könnte eine Option sein - aber da ich NLTK bereits intensiv verwende, könnte es sehr viel Arbeit sein, um zu wechseln. Werde aber gucken. –

+1

Es gibt eine Schnittstelle für den Stanford Parser in der NLTK. Sie können es wie folgt verwenden: 'tagger = nltk.tag.stanford.POSTagger ('models/german-fast.tagger', 'stanford-posttagger.jar')' Eventuell müssen Sie die Zeichenfolgen zuerst in UTF-8 codieren (zumindest für das deutsche Modell). –

+2

Berkeley wurde oben falsch geschrieben. Ich kann keine Tippfehler für die Antwort vorschlagen. – Streeter