小编典典

python中的wordnet词法化和pos标记

python

我想在python中使用wordnet
lemmatizer,并且我了解到默认pos标记为NOUN,并且除非为pos标记明确指定为VERB,否则它不会为动词输出正确的引理。

我的问题是,为了准确地进行上述词素化,什么是最好的镜头?

我使用了pos标记nltk.pos_tag,但是迷失了将树库pos标记集成到wordnet兼容pos标记中的信息。请帮忙

from nltk.stem.wordnet import WordNetLemmatizer
lmtzr = WordNetLemmatizer()
tagged = nltk.pos_tag(tokens)

我得到了NN,JJ,VB,RB中的输出标签。如何将它们更改为Wordnet兼容标签?

我还必须训练nltk.pos_tag()带标签的语料库,还是可以直接在数据中使用它来进行评估?


阅读 182

收藏
2020-12-20

共1个答案

小编典典

首先,您nltk.pos_tag()无需培训即可直接使用。该函数将从文件中加载预训练的标记器。您可以使用以下命令查看文件名nltk.tag._POS_TAGGER

nltk.tag._POS_TAGGER
>>> 'taggers/maxent_treebank_pos_tagger/english.pickle'

在使用Treebank语料库进行训练时,它也使用Treebank标签集

以下功能会将树库标签映射到语音名称的WordNet部分:

from nltk.corpus import wordnet

def get_wordnet_pos(treebank_tag):

    if treebank_tag.startswith('J'):
        return wordnet.ADJ
    elif treebank_tag.startswith('V'):
        return wordnet.VERB
    elif treebank_tag.startswith('N'):
        return wordnet.NOUN
    elif treebank_tag.startswith('R'):
        return wordnet.ADV
    else:
        return ''

然后可以将返回值与lemmatizer一起使用:

from nltk.stem.wordnet import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
lemmatizer.lemmatize('going', wordnet.VERB)
>>> 'go'

在将返回值传递给Lemmatizer之前,请先检查返回值,因为空字符串会产生KeyError

2020-12-20