我写了一个小算法,使我能够根据单词的位置为单词分配权重,并检查单词在词典中是否存在。脚本在元素列表中循环,然后为每个单词检索索引,如果在词典中找到该单词,则将单词的索引乘以1,如果不是,则值为0。保存在字典中,它们的总和除以elt的len。
到目前为止,它仍然有效,但是我不明白为什么,循环在一个元素处停止,并且没有覆盖整个词典。
这里有一个样本:
lexiconpos =['beau','bel', 'gentil', 'bon', 'généreux']
lexiconneg =['gros', 'laid','méchant']
def find_nearest(texte, liste1, liste2):
d_neg = {}
d_pos = {}
d_0 = {}
sentences_weight =[]
for elt in texte:
print(elt)
for w in elt.split():
#print (w, ':')
pos = elt.split().index(w)
#print(pos)
if w in lexiconpos:
d_pos[w] = pos * 1
elif w in lexiconneg:
d_neg[w] = pos * 1
else:
d_0[w] = 0
mot_weight_pos = sum(d_pos.values()) / len(elt)
mot_weight_neg = sum(d_neg.values()) / len(elt)
print(d_neg)
print(d_pos)
print(d_0)
print(mot_weight_pos)
print(mot_weight_neg)
if mot_weight_pos > mot_weight_neg:
return elt, "pos"
else:
return elt, "neg"
a = ['tu être beau mais très méchant', 'ta gros tête est laid mais tu es bon et généreux']
find_nearest(a, lexiconpos, lexiconneg)
结果:不要打印其他句子
tu être beau mais très méchant
{'méchant': 5}
{'beau': 2}
{'tu': 0, 'être': 0, 'mais': 0, 'très': 0}
0.06666666666666667
0.16666666666666666
('tu être beau mais très méchant', 'neg')
答案 0 :(得分:1)
您的return语句在for循环内。函数执行在遇到的第一个return语句处终止。 将return语句从for循环中拉出。