千家信息网

怎样用Python代码做情感分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇文章为大家展示了怎样用Python代码做情感分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一台可以上网的电脑基本的python代码阅读能力,用于修改几
千家信息网最后更新 2026年11月01日怎样用Python代码做情感分析

本篇文章为大家展示了怎样用Python代码做情感分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

  1. 一台可以上网的电脑

  2. 基本的python代码阅读能力,用于修改几个模型参数

  3. 对百度中文NLP最新成果的浓烈兴趣

  • 训练模型:Senta情感分析模型基本简介

Senta是百度NLP开放的中文情感分析模型,可以用于进行中文句子的情感分析,输出结果为{正向/中性/负向}中的一个,关于模型的结构细节,请查看Senta----github.com/PaddlePaddle/Paddlehub/demo/senta
  • 本示例代码选择的是Senta-BiLSTM模型。

  • 模型来源:Paddlehub简介

PaddleHub是基于PaddlePaddle开发的预训练模型管理工具,可以借助预训练模型更便捷地开展迁移学习工作。
  • 本次评测中只使用了预训练模型,没有进行fine-tune

  • 代码运行环境:百度 AI studio

实验代码

  • 来自paddlehub/senta_demo.py

github:https://github.com/PaddlePaddle/PaddleHub/blob/release/v0.5.0/demo/senta/senta_demo.py

from __future__ import print_function import json import os import six import paddlehub as hub if __name__ == "__main__":  # 加载senta模型  senta = hub.Module(name="senta_bilstm")  # 把要测试的短文本以str格式放到这个列表里  test_text = [  "这家餐厅不是很好吃",  "这部电影差强人意",  ]  # 指定模型输入  input_dict = {"text": test_text}  # 把数据喂给senta模型的文本分类函数  results = senta.sentiment_classify(data=input_dict)  # 遍历分析每个短文本  for index, text in enumerate(test_text):  results[index]["text"] = text  for index, result in enumerate(results):  if six.PY2:  print(  json.dumps(results[index], encoding="utf8", ensure_ascii=False))  else:  print('text: {},    predict: {}'.format(results[index]['text'],results[index]['sentiment_key']))

详细测评

成语情感分析

input

  1. test_text = [

  2. '沧海桑田', # 中型,世事变化很大

  3. '下里巴人', # 褒义,通俗的文学艺术

  4. '有口皆碑', # 褒义,对突出的好人好事一致颂扬

  5. '危言危行', # 褒义,说正直的话,做正直的事

  6. '鬼斧神工', # 褒义,指大自然美景

  7. '不赞一词', # 褒义,不能再添一句话,表示写的很好

  8. '文不加点', # 褒义,指写作技巧高超

  9. '差强人意', # 褒义,大体还能使人满意

  10. '无微不至', # 褒义,指细心周到

  11. '事倍功半', # 褒义,指不费力就有好的效果

  12. '事半功倍', # 贬义,指浪费了力气却没有好效果

  13. '蠢蠢欲动', # 贬义,指要干坏事

  14. '面目全非', # 贬义,指大破坏

  15. '江河日下', # 贬义,指事物日渐衰落

  16. '评头论足', # 贬义,指小节过分挑剔

  17. '生灵涂炭', # 贬义,指人民极端困苦

  18. '始作俑者', # 贬义,第一个做坏事的人

  19. '无所不为', # 贬义,什么坏事都干

  20. '无所不至', # 贬义,什么坏事都干

  21. '阳春白雪', # 贬义,高深不容易理解的艺术

  22. ]

output

运行耗时: 4秒480毫秒 text: 沧海桑田, positive_prob: 0.3838, predict: negative # 错误 text: 下里巴人, positive_prob: 0.7957, predict: positive  text: 有口皆碑, positive_prob: 0.906, predict: positive text: 危言危行, positive_prob: 0.588, predict: positive text: 鬼斧神工, positive_prob: 0.657, predict: positive text: 不赞一词, positive_prob: 0.9698, predict: positive text: 文不加点, positive_prob: 0.1284, predict: negative # 错误 text: 差强人意, positive_prob: 0.0429, predict: negative # 错误 text: 无微不至, positive_prob: 0.8997, predict: positive text: 事倍功半, positive_prob: 0.6181, predict: positive text: 事半功倍, positive_prob: 0.8558, predict: positive # 错误 text: 蠢蠢欲动, positive_prob: 0.7353, predict: positive # 错误 text: 面目全非, positive_prob: 0.2186, predict: negative text: 江河日下, positive_prob: 0.2753, predict: negative text: 评头论足, positive_prob: 0.6737, predict: positive # 错误 text: 生灵涂炭, positive_prob: 0.4661, predict: neutral # 错误 text: 始作俑者, positive_prob: 0.247, predict: negative text: 无所不为, positive_prob: 0.5948, predict: positive # 错误 text: 无所不至, positive_prob: 0.553, predict: positive # 错误 text: 阳春白雪, positive_prob: 0.7552, predict: positive # 错误

正确率:10/20 = 50%

转折复句情绪分析

input

test_text = [  '小明虽然考了第一,但是他一点也不骄傲', # 积极   '你不是不聪明,而是不认真', # 消极  '虽然小明很努力,但是他还是没有考100分', # 消极   '虽然小明有时很顽皮,但是他很懂事', # 积极   '虽然这座桥已经建了很多年,但是她依然很坚固', # 积极   '他虽然很顽皮,但是学习很好', # 积极  '学习不是枯燥无味,而是趣味横生', # 积极   '虽然很困难,但是我还是不会退缩', # 积极   '虽然小妹妹只有5岁,但是她能把乘法口诀倒背如流', # 积极   '虽然我很过分,但是都是为了你好', # 积极   '小明成绩不好,不是因为不聪明,而是因为不努力', # 消极   '虽然这样做不妥当,但已经是最好的选择', # 积极   '这次虽然失败,但却是成功的开始', # 积极  '虽然这道题很难,但是我相信我会把它做出来', # 积极   '虽然爷爷已经很老了,但是他还是坚持每天做运动', # 积极   '不是没有美,而是我们缺少发现美的眼光', # 消极   '虽然他们有良好的生活条件,但是浪费资源迟早会带来恶果', # 消极   '他不是我们的敌人,而是我们的朋友', # 积极   '他不是不会做,而是不想做', # 消极  '虽然那个梦想看起来离我遥不可及,但是我相信经过我的努力它一定会实现', # 积极  ]

output

运行耗时: 2秒667毫秒 text: 小明虽然考了第一,但是他一点也不骄傲, positive_prob: 0.9598,  predict: positive  text: 你不是不聪明,而是不认真, positive_prob: 0.0275,  predict: negative text: 虽然小明很努力,但是他还是没有考100分, positive_prob: 0.7188,  predict: positive # 错误 text: 虽然小明有时很顽皮,但是他很懂事, positive_prob: 0.8776,  predict: positive text: 虽然这座桥已经建了很多年,但是她依然很坚固, positive_prob: 0.9782,  predict: positive text: 他虽然很顽皮,但是学习很好, positive_prob: 0.9181,  predict: positive text: 学习不是枯燥无味,而是趣味横生, positive_prob: 0.3279,  predict: negative # 错误 text: 虽然很困难,但是我还是不会退缩, positive_prob: 0.3974,  predict: negative # 错误 text: 虽然小妹妹只有5岁,但是她能把乘法口诀倒背如流, positive_prob: 0.5124,  predict: neutral text: 虽然我很过分,但是都是为了你好, positive_prob: 0.399,  predict: negative # 错误 text: 小明成绩不好,不是因为不聪明,而是因为不努力, positive_prob: 0.1881,  predict: negative text: 虽然这样做不妥当,但已经是最好的选择, positive_prob: 0.806,  predict: positive text: 这次虽然失败,但却是成功的开始, positive_prob: 0.4862,  predict: neutral # 错误 text: 虽然这道题很难,但是我相信我会把它做出来, positive_prob: 0.3959,  predict: negative # 错误 text: 虽然爷爷已经很老了,但是他还是坚持每天做运动, positive_prob: 0.9178,  predict: positive text: 不是没有美,而是我们缺少发现美的眼光, positive_prob: 0.5614,  predict: positive text: 虽然他们有良好的生活条件,但是浪费资源迟早带来恶果, positive_prob: 0.1086,  predict: negative text: 他不是我们的敌人,而是我们的朋友, positive_prob: 0.3749,  predict: negative # 错误 text: 他不是不会做,而是不想做, positive_prob: 0.1247,  predict: negative  text: 虽然那个梦想看起来离我遥不可及,但是我相信经过我的努力它一定会实现, positive_prob: 0.957,  predict: positive

正确率:13/20 = 65%

具体场景情绪分析

input

test_text = [  '这车耗油很快',   '这车开的很快',  '这房间有一股死老鼠味道',  '这房间有烟味',  '他的发型像杀马特',  '这衣服机洗掉色',  '这衣服穿多了起球',  '这软件容易闪退',  '他打球的样子像蔡徐坤',  '这把20了',  '这把可以打',  '他射球的样子像科比',  '这房间的布置很有情调',  '这酒让人回味',  '这衣服很酷',  '他的侧脸好像林峰',  '五星好评',  '以后会回购的',  '性价比很高',  '物美价廉',  '这女生让我心动'  ]

output

运行耗时: 2秒676毫秒 text: 这车耗油很快, positive_prob: 0.2926, predict: negative text: 这车开的很快, positive_prob: 0.8478, predict: positive text: 这房间有一股死老鼠味道, positive_prob: 0.0071, predict: negative text: 这房间有烟味, positive_prob: 0.2071, predict: negative text: 他的发型像杀马特, positive_prob: 0.3445, predict: negative text: 这衣服机洗掉色, positive_prob: 0.3912, predict: negative text: 这衣服穿多了起球, positive_prob: 0.679, predict: positive # 错误 text: 这软件容易闪退, positive_prob: 0.0051, predict: negative text: 他打球的样子像蔡徐坤, positive_prob: 0.8684, predict: positive # 错误 text: 这把20了, positive_prob: 0.1695, predict: negative text: 这把可以打, positive_prob: 0.3503, predict: negative # 错误 text: 他射球的样子像科比, positive_prob: 0.7263, predict: positive text: 这房间的布置很有情调, positive_prob: 0.9519, predict: positive text: 这酒让人回味, positive_prob: 0.7431, predict: positive text: 这衣服很酷, positive_prob: 0.9817, predict: positive text: 他的侧脸好像林峰, positive_prob: 0.5621, predict: positive text: 五星好评, positive_prob: 0.9971, predict: positive text: 以后会回购的, positive_prob: 0.6903, predict: positive text: 性价比很高, positive_prob: 0.9799, predict: positive text: 物美价廉, positive_prob: 0.9542, predict: positive text: 这女生让我心动, positive_prob: 0.956, predict: positive

正确率:17/20 = 85%

总结,三个不同类别的测评如下所示:

总结

1.模型计算耗时较小,使用体验不错。

2.成语情感分析方面,我专门挑选的是一些比较难从字面理解的,容易混淆情感的成语(比如差强人意被判定为消极),这些也是高考常考的内容。虽然最后模型正确率只有一般,但是我认为是可以接受的,适当增加成语语句作为训练语料会使模型"更懂"中文。

大家有兴趣的可以试一试一些比较容易从字面理解情感的成语,我觉得得分会比本次评测的结果要好。

3.转折语句情感分析本身也是对模型的一种挑战,实测效果为65分,个人觉得模型对于像"但是","虽然"这样的词语没有足够的attention,因为这些转折词背后的语义往往才是最影响整个句子的情感的,最终评分65分,个人认为模型在这方面表现一般。

4.评分最好看的是具体场景情感分析,大概预训练语料中有大量的淘宝评价?像杀马特 20 科比 这些小字眼是判定情感的关键,而模型也确实捕捉到并判断出来了,这点比较让我惊喜。

上述内容就是怎样用Python代码做情感分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

模型 错误 情感 分析 而是 贬义 褒义 小明 代码 房间 衣服 还是 训练 成语 学习 聪明 顽皮 差强人意 坏事 很快 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 中国互联网科技工作委员会毛军 腾讯阿里互联网科技 深圳互联网络科技有限公司 互联网科技logo设计 华中科技有哪些互联网大佬 南山科技园互联网公司有哪些 崇明区互联网教育科技诚信经营 注册互联网科技公司经营范围大全 互联网媒体平台算高科技产业 洛阳昕诺飞互联网科技有限公司 互联网科技扶贫时间 乌苏新华互联网科技做什么的 南京一网一红互联网科技有限公司 青岛易易互联网科技 长沙易易互联网科技有限公司 上海互联网科技园景观 青岛互联网科技园 恒生互联网科技趋势 小牛互联网科技有限公司地址 南京欣网互联网络科技有限公司 互联网品科技 卓越科技(互联网 ) 老年人脱离互联网科技的作文 知域互联网科技有限公司大骗子 互联网科技大奖都有哪些公司 徐州市互联网科技有限公司 互联网科技圈年度人物 上海互联网科技公司ppt 图游互联网科技
0