在python nltk中将wordnet txt转换为列表
我正在运行以下功能:在python nltk中将wordnet txt转换为列表,python,list,function,nltk,Python,List,Function,Nltk,我正在运行以下功能: import nltk from nltk.corpus import wordnet as wn def noun_names(list): for synset in list: for lemma in synset.lemmas(): print lemma.name() noun_names(list(wn.all_synsets(wn.NOUN))) 并返回wordnet中所有名词名称的长列表: impor
import nltk
from nltk.corpus import wordnet as wn
def noun_names(list):
for synset in list:
for lemma in synset.lemmas():
print lemma.name()
noun_names(list(wn.all_synsets(wn.NOUN)))
并返回wordnet中所有名词名称的长列表:
import nltk
from nltk.corpus import wordnet as wn
def noun_names(list):
for synset in list:
for lemma in synset.lemmas():
print lemma.name()
noun_names(list(wn.all_synsets(wn.NOUN)))
e、 g
如何将这个既不是字符串也不是列表的输出转换为列表?非常感谢 而不是使用以下命令打印到标准输出:
print lemma.name()
为什么不将其附加到列表并返回列表
def noun_names(list):
names = []
for synset in list:
for lemma in synset.lemmas():
names.append(lemma.name())
return names
names = noun_names(list(wn.all_synsets(wn.NOUN)))
它没有归还任何东西。您的功能是打印,而不是返回 您需要返回一个列表。作为旁注,您应该从
列表中重命名函数参数。你会无意中用那东西砸到东西
一个选项是稍微修改函数以附加到列表中,然后返回:
def noun_names(word_list):
lemma_list = []
for synset in word_list:
for lemma in synset.lemmas():
lemma_list.append(lemma.name())
return lemma_list
另一个选项是将上述内容更改为列表:
def noun_names(word_list):
return [lemma.name() for synset in word_list for lemma in synset.lemmas()]
这两个函数都返回具有相同信息的列表。请注意,我删除了list()
函数在wn.all\u synsets(wn.noon)
周围的包装,因为该函数返回list
lemma_list1 = noun_names(wn.all_synsets(wn.NOUN))
lemma_list2 = noun_names_1(wn.all_synsets(wn.NOUN))
print len(lemma_list1), len(lemma_list2), len(lemma_list1) == len(lemma_list2), lemma_list1 == lemma_list2
最终打印报表输出:
146347 146347 True True
这表明两个列表具有相同数量的元素(146347
每个元素和第一个True
),并且列表本身是相等的。代码中更合适的测试是:
assert len(lemma_list1) == len(lemma_list2)
assert lemma_list1 == lemma_list2
如果列表长度不相同或不相等,则断言语句将抛出异常。如果您只需要引理列表,请查看OMW(打开多语言WordNet)
非常感谢你。我以前尝试过这样做,但我忘记了完成循环的最后一行“returnnames”。非常有帮助!不用担心——您可能也应该注意Andy的警告——用python命名一个列表“list”通常是一个危险的提议。非常感谢Andy的建议和详细的回复。我是NLP的新手,很高兴看到这样一个有用的在线社区。
$ wget http://compling.hss.ntu.edu.sg/omw/wns/eng.zip
$ unzip eng.zip
$ cut -f3 eng/wn-data-eng.tab | (read;cat)