使用nltk根据关键字的输入列表生成同义词列表。
当nltk没有同义词时,我得到了"TypeError:'NoneType‘对象不可迭代“(即,当"None”返回时)。
from nltk.corpus import stopwords
from PyDictionary import PyDictionary
dictionary=PyDictionary()
inputWords = ['word1','word2','word3','word4','word5','word6','word7','word8']
synonyms = list(dictionary.synonym(i) for i in inputWords 同义词的当前输出:
[['syn1','syn2','syn3'],['syn4'],None,['syn5'],None,['syn6','syn7'],None,['syn8'],None]]对同义词的期望输出:
['syn1','syn2','syn3','syn4','syn5','syn6','syn7','syn8']我试过:
flat_list = [item for sublist in synonyms for item in sublist]产出:
TypeError: 'NoneType' object is not iterable我应该写些什么来返回一个干净列表中的同义词呢?我更喜欢使用列表理解。任何帮助都很感激。我是条蟒蛇,找不到确切的答案。
发布于 2021-01-20 18:32:46
这里有一条更多的琵琶内衬:
flat_list = [i for sublist in synonyms if sublist is not None for i in sublist]
flat_list
>>>
['syn1', 'syn2', 'syn3', 'syn4', 'syn5', 'syn6', 'syn7', 'syn8']发布于 2021-01-20 18:28:42
您可以删除None值并使用迭代工具-
import itertools
list(itertools.chain(*[x for x in synonyms if x]))发布于 2021-01-20 18:30:18
尝试:
flat_list = []
for i in range(len(synonyms):
if isinstance(synonyms, list):
flat_list += ihttps://stackoverflow.com/questions/65815430
复制相似问题