当涉及到Python和一般编程时,我是一个刚出生两天的婴儿,所以我需要一些指导。基本上,我正在尝试编写一个函数,该函数将遍历文档列表,并计算特定关键字及其同义词出现的次数。
作为参考,代码中的“条目”指的是具有"word“和"synonyms”属性的一类对象。主题词表是一个条目对象列表,语料库是一个文档列表,每个文档是一个字符串列表。
我设法做到的是:第2-6行涉及创建一个列表All_words,该列表包含关键字和关键字的同义词。第7-12行是问题所在。我只能让函数输出All_words中的第一个Search_word及其出现的次数。
def search(keyword) : #user inputs keyword
All_words = [keyword]
for Entry in Thesaurus:
if Entry.word == keyword:
for Word in Entry.synonyms:
All_words.append(Word)
for Search_word in All_words:
count = 0
for Document in Corpus:
for Word in Document:
if Search_word == Word:
count = count + 1
return Search_word, count
input = "sad"
output = search(input)
print(output)作为参考,如果关键词是“悲伤”,All_words应该是:‘悲伤’,‘沮丧’,‘沮丧’,‘不快乐’我目前的结果是:
('sad', 4)我预计结果如下所示:
(('sad', 4), ('upset', 2), ('depressed', 2), ('unhappy', 0)) 我觉得我遗漏了一些简单的东西。
发布于 2019-01-10 21:18:19
问题是您的返回语句-- return Search_word, count在for循环中。因此,在搜索完第一个单词后,它将立即执行return并停止执行。
您必须将return语句移到for循环之外运行,并对其稍作修改,以便从您要搜索的所有单词中输出结果。
另外,这只是一个风格上的问题--变量名不应该以大写字母开头。
关于如何存储所有不同的同义词及其对应的计数,见下文:
answer = []
for Search_word in All_words:
count = 0
....
answer.append([Search_word, count])
return answerhttps://stackoverflow.com/questions/54129498
复制相似问题