查找列表中每个项目的Python NLTK Wordnet Synsets

我一直在学习基本的
python,但我是NLTK的新手.我想使用nltk为给定的单词列表提取下位词.当我手动输入每个术语时,它工作正常,但当我尝试迭代列表项时它似乎不起作用.

这有效:

from nltk.corpus import wordnet as wn

syn_sets = wn.synsets("car")

for syn_set in syn_sets:
    print(syn_set, syn_set.lemma_names())
    print(syn_set.hyponyms())

但是我如何使用Wordnet方法处理像这样的项目列表

token = ["cat", "dog", "car"]
syn_sets = wn.synsets((*get each item from the list*))

在一个循环?

谢谢!

最佳答案 列出对救援的理解!

完全可能,甚至使用与之前相同的语法. Python有一个称为[list comprehension] [1]的构造,它完全适用于这个应用程序.基本上,它是内联循环的函数式语法,但往往是更清晰,更强大的实现,开销略低.

例:

tokens = ["cat", "dog", "car"]
syn_sets = [wn.synsets(token) for token in tokens]

这甚至可以很容易地扩展到稍微复杂的数据结构,例如:

split_syn_sets = [(syn_set.lemma_names(), syn_set.hyponyms()) for syn_set in syn_sets]

不确定这是否正是你正在寻找的,但它应该推广到你想做的任何类似的事情.

如果它有用,我问了一个关于here之前抓取所有相关同义词集的问题.

点赞