"Nützliche" Informationen aus Sätzen extrahieren?

8

Ich versuche gerade, Sätze dieser Form zu verstehen:

The problem was more with the set-top box than the television. Restarting the set-top box solved the problem.

Ich bin völlig neu in Natural Language Processing und habe begonnen, Pythons NLTK-Paket zu benutzen, um meine Hände schmutzig zu machen. Ich frage mich jedoch, ob mir jemand einen Überblick über die hochstufigen Schritte geben könnte, die damit verbunden sind.

Was ich versuche, ist zu identifizieren, was das Problem in diesem Fall war, set-top box und ob die Aktion, die ausgeführt wurde, das Problem löste, in diesem Fall yes , weil der Neustart das Problem behob. Wenn also alle Sätze von dieser Form wären, wäre mein Leben einfacher gewesen, aber weil es eine natürliche Sprache ist, könnten die Sätze auch die folgende Form haben:

I took a look at the car and found nothing wrong with it. However, I suspect there is something wrong with the engine

Also in diesem Fall war das Problem mit dem car . Die durchgeführte Maßnahme löste das Problem aufgrund des Vorhandenseins des Wortes suspect nicht. Und das mögliche Problem könnte mit dem engine sein.

Ich suche keine absolute Antwort, da ich vermute, dass dies sehr komplex ist. Was ich suche, ist vielmehr eine übergeordnete Übersicht, die mich in die richtige Richtung weisen wird. Wenn es eine einfachere / alternative Möglichkeit gibt, dies zu tun, ist das ebenfalls willkommen.

    
Legend 26.06.2011, 04:33
quelle

2 Antworten

3

Wahrscheinlich, wenn die Sätze wohlgeformt sind, würde ich mit Abhängigkeitsanalyse experimentieren (http: // nltk. googlecode.com/svn/trunk/doc/api/nltk.parse.malt.MaltParser-class.html#raw_parse). Das gibt Ihnen eine Grafik der Bestandteile eines Satzes und Sie können die Beziehungen zwischen den lexikalischen Einzelteilen erzählen. Später können Sie Phrasen aus der Ausgabe eines Abhängigkeitsparsers extrahieren (http://nltk.googlecode.com/svn/trunk/doc/book/ch08.html#code-cfg2). Dies könnte Ihnen helfen, das direkte Objekt zu extrahieren ein Satz oder die Verbalphrase in einem Satz.

Wenn Sie nur Phrasen oder "Chunks" aus einem Satz erhalten möchten, können Sie den Chunk Parser ausprobieren (http://nltk.googlecode.com/svn/trunk/doc/api/nltk.chunk-module.html) . Sie können auch named entity recognition durchführen (http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/). Es wird normalerweise verwendet, um Instanzen von Orten, Organisationen oder Personennamen zu extrahieren, aber es könnte auch in Ihrem Fall funktionieren.

Wenn Sie davon ausgehen, dass Sie das Problem lösen, Substantiv- / Verbalphrasen aus einem Satz zu extrahieren, müssen Sie sie möglicherweise herausfiltern, um die Arbeit Ihres Domänenexperten zu erleichtern (zu viele Sätze könnten einen Richter überwältigen). Sie können eine Häufigkeitsanalyse für Ihre Phrasen durchführen, sehr häufige entfernen, die normalerweise nicht mit der Problemdomäne verwandt sind, oder eine Whitelist kompilieren und die Phrasen beibehalten, die eine vordefinierte Menge von Wörtern usw. enthalten.

>     
Ruggiero Spearman 26.06.2011, 20:37
quelle
4

Wirklich das Beste, auf das Sie hoffen können, ist ein Naive Bayesian Classifier mit einem ausreichend großen (wahrscheinlich mehr als Sie haben) Trainingssatz und bereit sein, eine faire Rate von Fehlbestimmungen zu tolerieren.

Auf der Suche nach dem heiligen Gral von NLP wirst du etwas unzufrieden sein.

    
msw 26.06.2011 05:01
quelle