2017-04-14 3 views
1

als Trainingsdaten haben Restaurant-Bewertungen in XML, mit zugehörigen Zielausdruck ein Gefühl in Richtung ausgedrückt wird, eine Kategorie, die ein diskretes Etikett dazu gehört ist und die Polarität in Richtung diese wie folgt ausgedrückt:TextBlob Naive Bayes. höchste Wahrscheinlichkeit der Wahl

<text>With the great variety on the menu , I eat here often and never get bored .</text> 
    <Opinions> 
     <Opinion target="menu" category="FOOD#STYLE_OPTIONS" polarity="positive" from="30" to="34"/> 
    </Opinions> 

Ich habe den TextBlob-NB-Klassifikator verwendet, um Zielbegriffe zu zugehörigen Kategorien zu trainieren.

Für Testdaten ist es mein Ziel, den Zielausdruck vorherzusagen, einen Satz und die Kategorie gegeben. Ich habe zuerst Substantive und Nominalphrasen aus dem Satz extrahiert, wobei angenommen wird, dass der Ausdruck eine Teilmenge davon ist. Für den Satz:

"what may be interesting to most is the worst sevice attitude come from the owner of this establishment“, das sind ['sevice attitude', 'owner', 'establishment']

Ich möchte wissen, welche von ihnen ist höchstwahrscheinlich die Kategorie angegeben, die in diesem Fall ist SERVICE#GENERAL Wie könnte ich über diese gehen

..?
+0

Ein Klassifizierer führt immer eine Kennzeichnung Aufgabe. Die Information, die es vorhersagen soll, ist das, was Sie während des Trainings als Label angeben. Wenn Sie das Wort einer Kategorie vorhersagen möchten, müssen Sie die Kategorie als Merkmal und jedes Wort als Bezeichnung während des Trainings angeben. – lenz

+0

@lenz Okay, verstanden. Wie würde ich den Klassifikator für jeden Satz auf nur Wörter in meinem Kandidatensatz beschränken (das sind Nominalphrasen, die aus dem Satz extrahiert werden), wie würde ich das tun? – user3058703

+0

Ich bin mir nicht sicher, ob ich das verstehe. Kannst du deine Frage aktualisieren oder eine neue schreiben? – lenz

Antwort

0

Der NB-Classifier von TextBlob extrahiert die Textfunktionen standardmäßig als einen Beutel mit Wörtern, sodass Sie die Wörter in der Liste der extrahierten Substantive einfach verketten und dann mit der Kategorie verketten können, um das Ergebnis als Trainingstext zu verwenden als Trainingsetikett

Wenn man bedenkt, dass der Beutel mit Wörtern Wörter unabhängig behandelt, sollten Sie diese Nominalphrasen in nur einem Wort umwandeln. Sie können zum Beispiel ein "-" anstelle von Leerzeichen setzen ("Serviceeinstellung" wäre "Serviceeinstellung").

Beispiel:

from textblob.classifiers import NaiveBayesClassifier 

train = [('sevice-attitude owner establishment SERVICE#GENERAL', 'owner'), 
     ('menu variety FOOD#STYLE_OPTIONS', 'menu')] 

cl = NaiveBayesClassifier(train) 

Wenn Sie möchten, dass Sie die Merkmalsextraktion anpassen: https://textblob.readthedocs.io/en/dev/classifiers.html#feature-extractors

Verwandte Themen