Python读懂你的心

家住魔仙堡 提交于 2020-11-03 14:01:22

Python读懂你的心

一、前言

人工智能是Python语言的一大应用热门,而自然语言处理又是人工智能的一大方向。自然语言处理( natural language processing )简称NLP,是研究人同计算机之间用自然语言通信的一种方法。我们都知道,计算机本质上只认识0和1,但是通过编程语言我们可以使用编程语言同计算机交流。这实际上就是程序员同计算机之间的通信,而我们日常生活中使用的是自然语言,是一种带有情感的语言。那么要怎么使计算机理解这种带有情感的语言呢?这就是自然语言处理研究的内容了。

语言的情绪识别是自然语言处理的一种操作,如果要我们从0开始实现情绪识别是比较繁琐的。首先我们需要准备好足够的数据,为了让计算机更好的理解,我们还需要对数据进行预处理,之后需要训练数据,有了训练数据我们才能开始情绪识别。识别的准确率在于数据的相关性和数据量,数据相关性越高,数据量越大,识别的准确率就越高。

然而,我们使用paddlehub可以很快的实现情绪识别,我们先看看如何安装。

二、安装paddlehub

paddlehub是百度飞桨PaddlePaddle中的一个模型库,使用paddlepaddle可以很快的实现多种多样的操作,其中就有我们今天要说到的文字情绪识别,而且代码非常简单。首先我们需要安装paddlepaddle,我们进入官网 https://www.paddlepaddle.org.cn/install/quick ,进入官网后可以看到如下界面:

在这里插入图片描述

我们可以根据自己Python版本,计算机系统等选择安装方式。关于paddlepaddle支持版本等信息可以在官网中查看,这里就不赘述了。我使用的是Python3.7,这里直接使用pip安装,我们在控制台执行下列语句

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

然后在控制台查看是否安装成功。先输入Python,然后执行import paddle.fluid,再执行 paddle.fluid.install_check.run_check()如下:

C:\Users\zaxwz>python
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
Type "help""copyright""credits" or "license" for more information.
>>> import paddle.fluid
>>> paddle.fluid.install_check.run_check()

如果显示Your Paddle is installed successfully! Let's start deep Learning with Paddle now就表示安装成功了。另外我们还需要安装paddlehub,这里同样是使用pip安装,执行语句如下:

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

把paddlepaddle和paddlehub安装成功后我们就可以开始写代码了。

三、情绪识别

(1)情绪识别

使用paddlehub完成情绪识别的步骤如下:

  1. 导入模块

  2. 加载模型

  3. 准备句子

  4. 识别情绪

而完成上面的步骤只需要四行代码,另外我们需要输出一下识别的结果,一共就是五行代码,下面让我们看看这五行神奇的代码:

# 导入模块
import paddlehub as hub
# 加载模型
senta = hub.Module(name='senta_lstm')
# 准备句子
sentence = ['你真美']
# 情绪识别
result = senta.sentiment_classify(data={"text":sentence})
# 输出识别结果
print(result)

识别结果如下:

[{'text''你真美''sentiment_label'1'sentiment_key''positive''positive_probs'0.9602'negative_probs'0.0398}]

我们可以看到准备的句子是列表类型,识别的结果也是列表类型,结果中列表的元素是一个字典。在这个字典列表中,就包含了我们识别的结果。下面我们来分析一下这个字典。

(2)结果分析

结果字典中包含了4个字段,我们以表格的形式展示一下:

字段名称 字段含义 解释
text 识别的源文本 识别的源文本
sentiment_label 分类标签 1为积极,0为消极
sentiment_key 分类结果 positive为积极,negative为消极
positive_probs 积极率 情绪为积极的可能性
negative_probs 消极率 情绪为消极的可能性
上面的表格是本人编的,用词不当的地方多见谅。 我们对照上述表可以分析一下我们上述程序的结果。 其含义就是语句“你真美”中包含了积极的情绪。 我们再多看几个例子:



import
 paddlehub as hub

senta = hub.Module(name='senta_lstm')

sentence = [
    '你真美',
    '你真丑',
    '我好难过',
    '我不开心',
    '这个游戏好好玩',
    '什么垃圾游戏',
]

results = senta.sentiment_classify(data={"text":sentence})

for result in results:
    print(result)

识别结果如下:

{'text''你真美''sentiment_label'1'sentiment_key''positive''positive_probs'0.9602'negative_probs'0.0398}
{'text''你真丑''sentiment_label'0'sentiment_key''negative''positive_probs'0.0033'negative_probs'0.9967}
{'text''我好难过''sentiment_label'1'sentiment_key''positive''positive_probs'0.5324'negative_probs'0.4676}
{'text''我不开心''sentiment_label'0'sentiment_key''negative''positive_probs'0.1936'negative_probs'0.8064}
{'text''这个游戏好好玩''sentiment_label'1'sentiment_key''positive''positive_probs'0.9933'negative_probs'0.0067}
{'text''什么垃圾游戏''sentiment_label'0'sentiment_key''negative''positive_probs'0.0108'negative_probs'0.9892}

上面有6个句子,大多数都成功识别了情绪,但是我好难过识别的结果为积极,很明显是错误的。总体来说,对于简单语句的识别还是比较准的。另外,如果对识别的准确率不满的话,我们还可以训练自己的数据集,详细操作可以参考项目地址 https://github.com/PaddlePaddle/models/tree/develop/PaddleNLP/sentiment_classification 。


本文分享自微信公众号 - ZackSock(ZackSock)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!