18行!Python 识别文本情感就这么简单

菜鸟学Python

共 2973字,需浏览 6分钟

 ·

2021-10-10 09:17

很多同学都对自然语言处理感兴趣,但是却不知道应该从哪里下手。需要从构建数据集到训练数据,再到测试数据,整个流程确实需要耐心的人才能成功走通。

不过现在有了paddlehub,我们可以先省略掉构建数据集和训练数据这两个步骤,直接拿模型过来分类。一旦简单版的分类成功了,你就会有动力继续前进,继续学习如何训练属于自己的模型。

今天我们用paddlehub中比较简单的情感倾向分析模型 senta_lstm 来对文本做一个简单的积极和消极的分类。

1.准备

为了实现这个实验,Python是必不可少的,如果你还没有安装Python,建议阅读我们的这篇文章哦:超详细Python安装指南

然后,我们需要安装百度的paddlepaddle, 进入他们的官方网站就有详细的指引:
https://www.paddlepaddle.org.cn/install/quick

根据你自己的情况选择这些选项,最后一个CUDA版本,由于本实验不需要训练数据,也不需要太大的计算量,所以直接选择CPU版本即可。选择完毕,下方会出现安装指引,不得不说,Paddlepaddle这些方面做的还是比较贴心的(就是名字起的不好)

不过虽然它里面写了这么多,大部分人用一句话安装,打开CMD(Win+R)或者Terminal(Command+空格搜索)输入以下命令即可安装:

pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

还需要安装paddlehub,这点别忘了:

pip install -i https://mirror.baidu.com/pypi/simple paddlehub

2.编写代码

整个步骤分为三步:

1.加载模型
2.指定待分类文本
3.情感分类


就能得到以下结果:

{'text': '你长得真好看', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9866, 'negative_probs': 0.0134}

{'text': '《黑色四叶草》是部不错的番', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9401, 'negative_probs': 0.0599}

其中:
1.sentiment_key 代表分类结果,postive是 积极 ,negative是 消极 。
2.sentiment_label 是分类结果标签,1代表 积极 ,0代表 消极 。
3. positive_probs 是积极分类的置信度,0.9866即模型判断98.66%的可能性是正面。
4. negative_probs 与 positive_probs 相对,是消极分类的置信度。

3.结果分析

这么看,你会发现其实在有明显的积极消极词汇面前,这个模型的分类效果还是不错的。那在特殊的例子面前效果又如何呢?我们去微博随便取一条试一下,比如银教授的段子:

分类结果:

{'text': '他们都网上办公、网上学习了,你什么时候跟我网恋?', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0507, 'negative_probs': 0.9493}

竟然意外的分对了虽然是段子,但确实,明显有对方不跟自己网恋的消极态度。


再试试有潜在含义的句子:

{'text': '不想说什么了,听首歌吧', 'sentiment_label': 0, 'sentiment_key': 'negative', 'positive_probs': 0.0321, 'negative_probs': 0.9679}

{'text': '我忘了世界还有一种人火星人,你从那来的吧', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.7261, 'negative_probs': 0.2739}

第一句分对了,第二句没分对。确实,第二句太隐晦了,机器可能分不出来。不过,置信度并不高,如果真的需要应用这个模型,可以通过置信度过滤掉一些分类。

总的而言,这个模型效果还是不错的,在网上那么多情感分类开源的模型中,百度的这个应该可以打80分左右。而且,它支持你自己做一些微调(Fine-tune),也就是能够使用自定义的训练集调整模型到你需要的样子,详见github:
https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/sentiment_classification

如果你喜欢今天的Python 教程,请持续关注菜鸟学Python,如果对你有帮助,麻烦在下面点一个赞/在看,欢迎来留言区点评指导工作!






推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径


量化定投基金到底能赚多少钱?  | 我用Python对去年800只基金的数据分析  


干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影


趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!


AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影


小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!


年度爆款文案


点阅读原文,领AI全套资料!

浏览 16
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报