Sto provando a fare tagging POS utilizzando il modulo spaCy in Python.Tag POS con spaCy
Ecco il mio codice per lo stesso
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)
uscita:
[(We , u'PRP'), (had , u'VBD'), (crispy , u'NN'), (dosa, u'NN')]
Qui restituisce croccante come un sostantivo, invece di un aggettivo. Tuttavia, se uso una frase di prova come
a="we had crispy fries"
Riconosce che croccante è un aggettivo. Ecco l'output:
[(we , u'PRP'), (had , u'VBD'), (crispy , u'JJ'), (fries, u'NNS')]
Penso che il motivo principale per cui non è stato croccanti etichettato come aggettivo nel primo caso è stato perché dosa è stato etichettato come 'NN', mentre patatine fritte è stato taggato come 'NNS' nel secondo Astuccio.
C'è un modo in cui posso essere definito croccante come aggettivo anche nel secondo caso?
+1, nessun modello è perfetto: vedere anche http://stackoverflow.com/questions/30821188/python-nltk-pos-tag-not-returning-the-correct-part-of-speech-tag – alvas
Tuttavia , c'è un modo per utilizzare il corpus del tagger StanfordPOS per eseguire spaCy? – pd176
Non penso che guadagneresti molto facendo così. I modelli pre-costruiti di IIRC Stanford sono stati addestrati sulla Penn Tree Bank, che è possibile scaricare e utilizzare per addestrare spacy. Non riesco a trovare alcuna informazione su cosa sia addestrato il tagger di spacy, ma non sarei sorpreso se fosse lo stesso. – mbatchkarov