python教程—python中的wordnet引理和词性标注-Python实用宝典

python教程—python中的wordnet引理和词性标注

我想在python中使用wordnet lemmatizer,我了解到默认的pos标记是名词,它不会输出动词的正确引理,除非pos标记被显式指定为动词。

我想在python中使用wordnet lemmatizer,我了解到默认的pos标记是名词,它不会输出动词的正确引理,除非pos标记被显式指定为动词。

我的问题是,为了准确地执行上述的引理,最好的镜头是什么?

我用nltk做pos标签。pos_tag和我在将tree bank pos标签集成到wordnet兼容的pos标签中迷失了方向。请帮助

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

我得到输出标签在NN,JJ,VB,RB。如何将这些更改为与wordnet兼容的标记?

另外,我必须使用带标记的语料来训练nltk.pos_tag(),还是可以直接在数据上使用它来求值?

回答

首先,可以直接使用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。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论