python中的wordnet词法化和pos标记

发布于 2021-01-29 19:35:28

我想在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()带标签的语料库,还是可以直接在数据中使用它来进行评估?

关注者
0
被浏览
68
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    首先,您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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看