You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计句列表中各句正负词数?解决函数字典跨句累加问题

问题分析与解决方案

你的代码出现字典累加问题的核心原因很明确:用于存储正负词的字典在函数开头就初始化了,没有在每处理一个新句子时重置。这就导致每处理下一个句子,都会在之前句子的字典基础上继续添加内容,而不是为当前句子生成独立的字典。

修复步骤

  1. 将d_neg、d_pos、d_0的初始化代码移动到for elt in texte:循环的内部,确保每处理一个句子都创建全新的空字典。
  2. 调整输出文本,让它和你预期的格式完全匹配。

修改后的完整代码

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 '''
    texte = spacy_process(texte)
    liste_phrase =[]
    label = []
    for elt in texte:
        # 关键修改:每个句子处理前重新初始化空字典
        d_neg = dict()
        d_pos = dict()
        d_0 = dict()
        
        elts = elt.split()
        print(' "Phrase à traiter " :' , elt, '\n')
        for w in elts:
            if w in lexiconpos:
                d_pos[w] =+ 1
            elif w in lexiconneg:
                d_neg[w] =+ 1
            else:
                d_0[w] =+ 1
        # 调整输出格式匹配预期
        print('list of positive words for this sentence:', d_pos)
        print('list of negative words :', d_neg, '\n')

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 

list of positive words for this sentence: {'superbe': 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, 'extrême': 1} 

(注:你原预期输出里的film、édition等词不在定义的正负词典中,推测是测试时的拼写或匹配误差,但核心的字典累加问题已完全解决)

内容的提问来源于stack exchange,提问作者EMMAKENJI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:27:56