就像这个问题一样,我对按词性获取大量单词列表(长名词列表;形容词列表)感兴趣,以便在其他地方以编程方式使用。这个回答提供了一个使用WordNet数据库(SQL格式)的解决方案。
是否有办法使用Python NLTK内置的语料库/工具来获取这样的列表?我可以拿一大段文本,解析它,然后存储名词和形容词。但考虑到内置的词典和其他工具,是否有更智能的方法来提取已经存在于NLTK数据集中的单词,这些单词被编码为名词/形容词(无论是什么)?
谢谢。
回答:
值得注意的是,Wordnet实际上是NLTK下载器默认包含的语料库之一。因此,你可以直接使用你已经找到的解决方案,而无需重新发明轮子。
例如,你可以像这样做来获取所有名词同义词集:
from nltk.corpus import wordnet as wnfor synset in list(wn.all_synsets('n')): print synset# 或者,等效地for synset in list(wn.all_synsets(wn.NOUN)): print synset
这个例子将为你提供所有你想要的名词,并且还会将它们分组到它们的同义词集中,这样你就可以尝试确保它们在正确的上下文中使用。
如果你想将它们全部放入一个列表中,你可以做类似以下的事情(虽然这会根据你如何使用单词和同义词集而有很大不同):
all_nouns = []for synset in wn.all_synsets('n'): all_nouns.extend(synset.lemma_names())
或者作为一行代码:
all_nouns = [word for synset in wn.all_synsets('n') for word in synset.lemma_names()]