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

Sup*_*rel 3 python machine-learning nltk wordnet python-3.x

我一直在学习基本的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())
Run Code Online (Sandbox Code Playgroud)

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

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

在一个循环?

谢谢!

Sla*_*off 6

列出对救援的理解!

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

例:

tokens = ["cat", "dog", "car"]
syn_sets = [wn.synsets(token) for token in tokens]
Run Code Online (Sandbox Code Playgroud)

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

split_syn_sets = [(syn_set.lemma_names(), syn_set.hyponyms()) for syn_set in syn_sets]
Run Code Online (Sandbox Code Playgroud)

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

如果它是有用的,我问一个关于抢占了所有相关的同义词集的问题在这里前一阵子.