2016-06-01 3 views
0

Хорошо, что прямо сейчас у меня есть код для создания пользовательских тегов с помощью nltk. Я использую теггер POS NLTK в качестве отсрочки с помощью тегатора триграмм, где я тренирую свои тегированные теги с помощью пользовательских тегов. Это работает прилично, но я хочу иметь возможность сделать то же самое с тегом POS-тегов. Есть ли способ сделать это?Пользовательские теги POS с spacy

Вот мой код:

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) 

ответ

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

oDoc = oNlp(sUnicodeInputText) 

loTokens = [o for o in oDoc] 

loTokens здесь содержит список всех лексем, добытых Spacy. Каждый токен имеет свойства, которые вы можете использовать. Чтобы получить POS, используйте атрибут .pos_. Например, чтобы посмотреть на все ваши lemmatized имя лексемы и POS-тег, связанный с ним в кортеже:

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

spacy documentation замечательно. Проверьте это.