【发布时间】:2020-07-09 13:26:16
【问题描述】:
我正在编写一个函数,它应该计算一个句子中正词和负词的数量,并为每个句子创建两个字典,列出词典中存在的单词,然后对每个字典求和以获得每个句子的肯定词和否定词的长度。
我写了一个函数,但是我在为每个句子打印字典时遇到问题,它总是附加其他句子的单词,这不是我想要的
这里是代码:
def pwd_3(texte, liste1, liste2):
''' Calcul de la polarité d'une phrase
On récupère le nombre de mots positifs et négatifs
et on divise par le nombre total de mots dans la phrase '''
d_neg = dict()
d_pos = dict()
d_0 = dict()
texte = spacy_process(texte)
#print(texte)
liste_phrase =[]
label = []
for elt in texte:
elts = elt.split()
print(' "Phrase à traiter " :' , elt, '\n')
for w in elts:
if w in lexiconpos:
#print(w, ': est dans le lexique positif', )
d_pos[w] =+ 1
elif w in lexiconneg:
#print(w ,': est dans le lexique négatif', )
d_neg[w] =+ 1
else:
#print(w, ': ne se trouve dans aucun des deux dictionnaires', )
d_0[w] =+ 1
print(d_pos)
print(d_neg)
a= ["Le film est superbe mais cette édition DVD est nulle !","J'allais dire déplorable, mais je serais peut-être un peu trop extrême."]
lexiconpos =['aller','superbe']
lexiconneg = ['nul', 'déplorable', 'extrême']
pwd_3(a, lexiconpos, lexiconneg)
结果如下:
"Phrase à traiter " : le film être superbe mais ce édition dvd être nul
{'film': 1, 'superbe': 1, 'édition': 1}
{'nul': 1}
"Phrase à traiter " : je aller dire déplorable mais je être pouvoir être un peu trop extrême
{'film': 1, 'superbe': 1, 'édition': 1, 'aller': 1}
{'nul': 1, 'déplorable': 1, 'pouvoir': 1}
这是预期的答案:
"Phrase à traiter " : le film être superbe mais ce édition dvd être nul
list of positive words for this sentence: {'film': 1, 'superbe': 1, 'édition': 1}
list of negative words : {'nul': 1}
"Phrase à traiter " : je aller dire déplorable mais je être pouvoir être un peu trop extrême
list of positive words for this sentence: {'aller': 1}
list of negative words : {''déplorable': 1, 'pouvoir': 1}
【问题讨论】:
-
d_pos[w] =+ 1等。应该是d_pos[w] += 1? -
每次句子迭代后,您需要将 d_pos 、 d_neg 和 d_0 的值重置为 {}
标签: python python-3.x function loops dictionary