帮WenYi分析代码

代码需求是,传入一句包含多个单词的话,判断这句话中是否包含了一个负面情绪的单词,若包含了,则标记“是”,否则标记“否”

原始代码

#定义负面情绪词典的位置
diswords_path = "负面情绪词典2.xlsx"
#读取词典表中的数据
diswords = pd.DataFrame(pd.read_excel(diswords_path))
# 此方法用户判断mytext中的单词是否包含负面情绪词
def dis_words(mytext):
    #缓存一下这句话,用于输出
    currentText = mytext
    # 将mytext按照空格划分成一个单词数组
    mytext = mytext.split(" ")  
    final_sen = []
    #遍历单词数组,其中word是遍历时的当前单词
    for word in mytext:
        #判断当前单词是否出现在负面情绪表中
        if word in diswords.values:
            #存在,则标记为“是”
            word = '是'
        else:
            #不存在,则标记为“否”
            word = '否'
        #将判断结果放入final_sen中    
        final_sen.append(word)
        #结束循环
        break
    final_sen = " ".join(final_sen)  # 将列表转化为字符串
    print(currentText,"是否包含负面情绪词:", final_sen)
    return final_sen

运行结果如下:
在这里插入图片描述

这个结果是不准确的

代码分析
这段代码存在的问题如下:
循环只会执行一次,最终执行完后,final_sen中的值为:
[否] 或者[是],这个结果是不准确的;只执行一次是因为break放在了循环体的内部,当if和else执行完毕后,会直接去执行break,就终止循环了;

代码改进

#定义负面情绪词典的位置
diswords_path = "负面情绪词典2.xlsx"
#读取词典表中的数据
diswords = pd.DataFrame(pd.read_excel(diswords_path))
# 此方法用户判断mytext中的单词是否包含负面情绪词
def dis_words(mytext):
    #缓存一下这句话,用于输出
    currentText = mytext
    # 将mytext按照空格划分成一个单词数组
    mytext = mytext.split(" ")  
    final_sen = []
    #遍历单词数组,其中word是遍历时的当前单词
    for word in mytext:
        #判断当前单词是否出现在负面情绪表中
        if word in diswords.values:
            #存在,则标记为“是”
            word = '是'
            #将判断结果放入final_sen中    
            final_sen.append(word)
            #结束循环
            break
        else:
            #不存在,则标记为“否”
            word = '否'
            # 判断是否已经把 “否”放入了final_sen中
            if not word in final_sen:
               final_sen.append(word)
    final_sen = " ".join(final_sen)  # 将列表转化为字符串
    print(currentText,"是否包含负面情绪词:", final_sen)
    return final_sen

运行结果如下:

在这里插入图片描述

这段代码看起来已经满足需求了,但是代码量比较冗余,而且运行结果中包含了我们不需要的结果,可以接着改进

 #定义负面情绪词典的位置
diswords_path = "负面情绪词典2.xlsx"
#读取词典表中的数据
diswords = pd.DataFrame(pd.read_excel(diswords_path))
# 此方法用户判断mytext中的单词是否包含负面情绪词
def dis_words(mytext):
    #缓存一下这句话,用于输出
    currentText = mytext
    # 将mytext按照空格划分成一个单词数组
    mytext = mytext.split(" ")  
    final_sen = []
    #遍历单词数组,其中word是遍历时的当前单词
    for word in mytext:
        #判断当前单词是否出现在负面情绪表中
        if word in diswords.values:
            #存在,则标记为“是”
            word = '是'
            #将判断结果放入final_sen中    
            final_sen.append(word)
            #结束循环
            break
    if len(final_sen) == 0:
        final_sen.append('否')    
    final_sen = " ".join(final_sen)  # 将列表转化为字符串
    print(currentText,"是否包含负面情绪词:", final_sen)
    return final_sen

最终执行结果如下:

在这里插入图片描述

这个结果就已经满足需要了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值