2016-06-01 23 views
0

In Ordnung, jetzt habe ich einen Code, um benutzerdefinierte Tagging mit Nltk zu tun. Ich verwende NLTKs POS-Tagger als Backoff mit einem Trigramm-Tagger, wo ich meine eigenen getaggten Sätze mit benutzerdefinierten Tags trainiere. Das funktioniert anständig, aber ich möchte das gleiche mit dem POS-Tagger von Spacy machen können. Gibt es eine Möglichkeit, dies zu tun?Benutzerdefinierte POS-Tagging mit spacy

Hier ist mein Code:

import string 
import nltk 
from nltk.tokenize import RegexpTokenizer 
from nltk.corpus import stopwords 
import nltk.tag, nltk.data 

    tagger = nltk.TrigramTagger(train_sents, backoff=nltk.data.load(nltk.tag._POS_TAGGER)) 

    def tagSentence(sentence): 

     # Method to tag sentence according to the tagger that is trained. 
     sentence = sentence.lower() 
     tokens = nltk.word_tokenize(sentence) 
     filtered_words = [w for w in tokens if not w in stopwords.words('english')] 
     " ".join(filtered_words) 
     return tagger.tag(filtered_words) 

Antwort

1
from spacy.en import English 
oNlp = English() 

oDoc = oNlp(sUnicodeInputText) 

loTokens = [o for o in oDoc] 

loTokens hier eine Liste aller Token von spacigen extrahiert enthält. Jedes Token verfügt über Eigenschaften, die Sie verwenden können. Verwenden Sie das .pos_ Attribut, um das POS zu erhalten. Zum Beispiel bei allen Ihren lemmatized Token Namen und POS-Tag suchen mit ihm verbunden in einem Tupel:

print([ (o.lemma_, o.pos_) for o in loTokens ]) 

Die spacy documentation ist wunderbar. Hör zu.

Verwandte Themen