好吧,现在我有一个代码来使用 nltk 进行自定义标记。我使用 NLTK 的 POS 标记器作为带有三元组标记器的退避,在那里我使用自定义标记训练自己的标记句子。这工作得很好,但我希望能够使用 spacy 的 POS 标记器做同样的事情。有没有办法做到这一点?
这是我的代码:
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)
from spacy.en import English
oNlp = English()
oDoc = oNlp(sUnicodeInputText)
loTokens = [o for o in oDoc]
此处loTokens
包含 spacy 提取的所有令牌的列表。 每个令牌都有可以使用的属性。 若要获取 POS,请使用 .pos_
属性。 例如,要查看元组中与其关联的所有词形还原令牌名称和 POS 标记,请执行以下操作:
print([ (o.lemma_, o.pos_) for o in loTokens ])
空间文档很棒。 看看吧。