我一直在学习基本的
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之前抓取所有相关同义词集的问题.