3

好吧,现在我有一个代码可以使用 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)
4

1 回答 1

0
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 ])

spacy 文档很棒。一探究竟。

于 2016-06-15T09:26:23.797 回答