Próbuję zrobić tagowanie POS za pomocą modułu spaCy w Pythonie.POS tagging using spaCy
Oto mój kod dla tego samego
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)
wyjściowa:
[(We , u'PRP'), (had , u'VBD'), (crispy , u'NN'), (dosa, u'NN')]
Tu zwraca chrupiące jako rzeczownika zamiast przymiotnika. Jednak jeśli użyję zdania testowego, takiego jak
a="we had crispy fries"
Uznaje, że chrupiący jest przymiotnikiem. Oto wynik:
[(we , u'PRP'), (had , u'VBD'), (crispy , u'JJ'), (fries, u'NNS')]
Myślę, że głównym powodem, chrupiące nie został oznaczony jako przymiotnik w pierwszym przypadku było to, dosa zostało oznaczone jako „NN”, podczas gdy frytki został oznaczony jako „NNS” w sekundę walizka.
Czy jest jakikolwiek sposób, abym stał się chrupiący, aby został oznaczony jako przymiotnik również w drugim przypadku?
+1, żaden model nie jest idealny: patrz również http://stackoverflow.com/questions/30821188/python-nltk-pos-tag-not-returning-trect-correct-part-of-speech-tag – alvas
Czy istnieje sposób, w jaki mogę używać korpusu z tagger'a StanfordPOS do uruchamiania spaCy? – pd176
Nie sądzę, byś zyskał wiele, robiąc to. Modele IIRC Stanforda zostały przećwiczone w Penn Tree Bank, który można pobrać i wykorzystać do szkolenia spacy. Nie mogę znaleźć żadnych informacji na temat tego, w jaki sposób trenujący spacy jest przeszkolony, ale nie byłbym zaskoczony, gdyby to było to samo. – mbatchkarov