查看原文
其他

来,试试百度的深度学习情感分析工具

52nlp AINLP 2020-10-22

感分析是自然语言处理里面一个热门话题,去年参加AI Challenger时关注了一下细粒度情感分析赛道,当时模仿baseline写了一个fasttext版本:AI Challenger 2018 细粒度用户评论情感分析 fastText Baseline ,至今不断有同学在star这个项目:fastText-for-AI-Challenger-Sentiment-Analysis


周末通过PaddleHub试用了一下百度的深度学习中文情感分析工具Senta,还是很方便,于是,将这个作为中文情感分析的一个技能点加入到了AINLP公众号的对话中,感兴趣的同学可以先测试:

至于安装和使用,还是简单说一下,以下是在Ubuntu16.04, Python3.x virtualenv环境下安装和测试。

安装直接通过pip install即可:

pip install paddlepaddle(这里用的是CPU版本)
pip install paddlehub

关于如何使用百度这个中文情感分析工具,最直接的方法还是follow官方demo脚本:

PaddleHub/demo/senta/senta_demo.py

在iPython中大致如下调用:

1<pre lang="python">
2Python 3.5.2 (default, Nov 12 201813:43:14
3Type 'copyright''credits' or 'license' for more information
4IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
5
6In [1]: import paddlehub as hub                                                                 
7
8In [2]: senta = hub.Module(name="senta_bilstm")                                                 
92019-07-06 22:33:01,181-INFO: Installing senta_bilstm module
102019-07-06 22:33:01,182-INFO: Module senta_bilstm already installed in /home/textminer/.paddlehub/modules/senta_bilstm
11
12In [3]: test_text = ["这家餐厅很好吃""这部电影真的很差劲","我爱自然语言处理"]                
13
14In [4]: input_dict = {"text": test_text}                                                        
15
16In [5]: results = senta.sentiment_classify(data=input_dict)                                     
172019-07-06 22:33:53,835-INFO: 13 pretrained paramaters loaded by PaddleHub
182019-07-06 22:33:53,839-INFO: 20 pretrained paramaters loaded by PaddleHub
19
20In [6]: for result in results: 
21   ...:     print(result) 
22   ...:                                                                                         
23{'positive_probs'0.9363'text''这家餐厅很好吃''sentiment_key''positive''negative_probs'0.0637'sentiment_label'2}
24{'positive_probs'0.0213'text''这部电影真的很差劲''sentiment_key''negative''negative_probs'0.9787'sentiment_label'0}
25{'positive_probs'0.9501'text''我爱自然语言处理''sentiment_key''positive''negative_probs'0.0499'sentiment_label'2}
26</pre>


目前百度Senta提供3个情感分析分类标签,分别是正向(Positive/积极),负向(Negative/消极),中性(Neutral/中立),中性的Case也会给出正向及负向概率,例如测试"我恨自然语言处理",得到了一个中性分类标签,不过负向概率还是大一点:

1In [27]: text = ['我恨自然语言处理']                                                            
2
3In [28]: input_dict = {"text": text}                                                            
4
5In [29]: result = senta.sentiment_classify(data=input_dict)                                     
6
7In [30]: print(result[0])                                                                       
8{'positive_probs': 0.4598, 'text''我恨自然语言处理''sentiment_key''neutral''negative_probs': 0.5402, 'sentiment_label': 1}


至于这个工具的效果如何,大家可以多测测,也可以参考这篇文中的一些测试用例:
17行代码做情感分析?试试PaddlePaddle的Senta-BiLSTM吧!

关于百度情感分析工具,官方已经开源了相关代码,可以参考官方代码和文档,写得很详细:

百度Senta github:https://github.com/baidu/Senta
baidu/Senta:Baidu's open-source Sentiment Classification System.

飞桨PaddlePaddle知乎专栏:https://zhuanlan.zhihu.com/p/60583819
PaddlePaddle Fluid实战:使用百度 Senta 情感分析系统

最后,如果什么都不想做只想测试这个工具的同学,欢迎关注AINLP公众号,对话直接输入'中文情感分析: 测试内容' 触发测试即可:

相关文章:

百度深度学习中文词法分析工具LAC试用之旅

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存