Ich versuche POS-Tagging mit dem SpaCy-Modul in Python zu machen.POS-Tagging mit spaCy
Hier ist mein Code für die gleiche
from spacy.en import English, LOCAL_DATA_DIR
import spacy.en
import os
data_dir = os.environ.get('SPACY_DATA', LOCAL_DATA_DIR)
nlp = English(parser=False, tagger=True, entity=False)
def print_fine_pos(token):
return (token.tag_)
def pos_tags(sentence):
sentence = unicode(sentence, "utf-8")
tokens = nlp(sentence)
tags = []
for tok in tokens:
tags.append((tok,print_fine_pos(tok)))
return tags
a = "we had crispy dosa"
print pos_tags(a)
Ausgang:
[(We , u'PRP'), (had , u'VBD'), (crispy , u'NN'), (dosa, u'NN')]
Hier gibt es knusprige als Substantiv anstelle eines Adjektivs. Allerdings, wenn ich einen Testsatz wie
a="we had crispy fries"
verwenden Es erkennt, dass knusprig ist ein Adjektiv. Hier ist die Ausgabe:
[(we , u'PRP'), (had , u'VBD'), (crispy , u'JJ'), (fries, u'NNS')]
Ich denke, der Hauptgrund, warum knusprig nicht als Adjektiv im ersten Fall markiert wurde, weil Dosa markiert wurde als ‚NN‘ während Pommes wurde markiert als ‚NNS‘ in der zweiten Fall.
Gibt es eine Möglichkeit, knusprig zu werden, um auch im zweiten Fall als Adjektiv markiert zu werden?
+1, kein Modell ist perfekt: siehe auch http://stackoverflow.com/questions/30821188/python-nltk-pos-tag-not-returning-the-correc-part-of-speech-tag – alvas
Allerdings Kann ich den Corpus von StanfordPOS tagger zum Laufen von spaCy benutzen? – pd176
Ich glaube nicht, dass du dadurch viel gewinnen würdest. IIRC Stanfords vorgefertigte Modelle wurden auf der Penn Tree Bank trainiert, die du herunterladen und zum Training von Spacy verwenden kannst. Ich kann keine Informationen darüber finden, auf welchem Spacys Tagger trainiert wird, aber ich wäre nicht überrascht, wenn es dasselbe wäre. – mbatchkarov