Nltk 获取与其词性标记相关的语法集

Nltk 获取与其词性标记相关的语法集,nltk,Nltk,我想得到文本中与其词性标记相关的对应语法集。 例如,如果您键入 print('Synsets nouns : {}'.format(wn.synsets('title', pos = 'n'))) out : [Synset('title.n.01'),Synset('title.n.02'),Synset('title.n.03'), ...] 你最终得到了大量的同义词,仅仅与名词有关(例如,如果有任何动词,它们将被忽略) 我不想手动键入pos='n',而是想为一个句子自动化它 例如: fr

我想得到文本中与其词性标记相关的对应语法集。 例如,如果您键入

print('Synsets nouns : {}'.format(wn.synsets('title', pos = 'n')))
out : [Synset('title.n.01'),Synset('title.n.02'),Synset('title.n.03'), ...]
你最终得到了大量的同义词,仅仅与名词有关(例如,如果有任何动词,它们将被忽略)

我不想手动键入
pos='n'
,而是想为一个句子自动化它

例如:

from nltk.corpus import wordnet as wn

text = 'Theim won his first ever grandslam title'
text_tokens = nltk.word_tokenize(text)
text_posTags = nltk.pos_tag(text_tokens)

corresponding_synsets = [wn.synsets(i[0], pos = i[1]) for i in text_posTags]
但现在我最终出现了一个错误,因为文字邮资的格式不同, 例如,“title”一词的词性名称为“NN”,而不是“n”

print(text_posTags)
out:
[('Theim', 'NNP'), ('won', 'VBD'), ('his', 'PRP$'), ('first', 'JJ'), ('ever', 'RB'), ('grandslam', 'VBP'), ('title', 'NN')] 

有什么想法可以解决这个问题吗?

您可能已经知道NLTK使用表示同一词类中的不同类别(例如专有名词与名词)

如果我正确理解了你的问题,一个可能的解决办法是处理一个名词的所有可能的指称:

noun_types = ['NN', 'NNP', 'NNS', 'NNPS']
tag = 'NN'

if tag in noun_types:
    print('n')
如果您使用上述方法,并希望在列表理解中包含条件,则可能是一个有用的资源