gpt4 book ai didi

python - python中的wordnet词形还原和pos标记

转载 作者:IT老高 更新时间:2023-10-28 20:30:42 25 4
gpt4 key购买 nike

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

我的问题是,为了准确地执行上述词形还原,最好的方法是什么?

我使用 nltk.pos_tag 进行了 pos 标记,但在将树库 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 tag set .

以下函数会将树库标签映射到 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 - python中的wordnet词形还原和pos标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15586721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com