怎么使用Python构建可扩展的社交媒体情感分析服务

本篇文章为大家展示了怎么使用Python构建可扩展的社交媒体情感分析服务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

探索 Python 库 spaCy 和 vaderSentiment

前提条件
  • 一个终端 shell

  • shell 中的 Python 语言二进制文件(3.4+ 版本)

  • 用于安装 Python 包的 pip 命令

  • (可选)一个 Python 虚拟环境使你的工作与系统隔离开来

配置环境

在开始编写代码之前,你需要安装 spaCy 和 vaderSentiment 包来设置 Python 环境,同时下载一个语言模型来帮助你分析。幸运的是,大部分操作都容易在命令行中完成。

在 shell 中,输入以下命令来安装 spaCy 和 vaderSentiment 包:

pip install spacy vaderSentiment

命令安装完成后,安装 spaCy 可用于文本分析的语言模型。以下命令将使用 spaCy 模块下载并安装英语模型:

python -m spacy download en_core_web_sm

安装了这些库和模型之后,就可以开始编码了。

一个简单的文本分析

使用 Python 解释器交互模式 编写一些代码来分析单个文本片段。首先启动 Python 环境:

$ pythonPython 3.6.8 (default, Jan 31 2019, 09:38:34)[GCC 8.2.1 20181215 (Red Hat 8.2.1-6)] on linuxType "help", "copyright", "credits" or "license" for more information.>>

(你的 Python 解释器版本打印可能与此不同。)

1、导入所需模块:

> import spacy>> from vaderSentiment import vaderSentiment

2、从 spaCy 加载英语语言模型:

> english = spacy.load("en_core_web_sm")

3、处理一段文本。本例展示了一个非常简单的句子,我们希望它能给我们带来些许积极的情感:

> result = english("I like to eat applesauce with sugar and cinnamon.")

4、从处理后的结果中收集句子。SpaCy 已识别并处理短语中的实体,这一步为每个句子生成情感(即时在本例中只有一个句子):

> sentences = [str(s) for s in result.sents]

5、使用 vaderSentiments 创建一个分析器:

> analyzer = vaderSentiment.SentimentIntensityAnalyzer()

6、对句子进行情感分析:

> sentiment = [analyzer.polarity_scores(str(s)) for s in sentences]

sentiment 变量现在包含例句的极性分数。打印出这个值,看看它是如何分析这个句子的。

> print(sentiment)[{'neg': 0.0, 'neu': 0.737, 'pos': 0.263, 'compound': 0.3612}]

这个结构是什么意思?

表面上,这是一个只有一个字典对象的数组。如果有多个句子,那么每个句子都会对应一个字典对象。字典中有四个键对应不同类型的情感。neg 键表示负面情感,因为在本例中没有报告任何负面情感,0.0 值证明了这一点。neu 键表示中性情感,它的得分相当高,为 0.737(***为 1.0)。pos 键代表积极情感,得分适中,为 0.263。***,cmpound 键代表文本的总体得分,它可以从负数到正数,0.3612 表示积极方面的情感多一点。

要查看这些值可能如何变化,你可以使用已输入的代码做一个小实验。以下代码块显示了如何对类似句子的情感评分的评估。

> result = english("I love applesauce!")>> sentences = [str(s) for s in result.sents]>> sentiment = [analyzer.polarity_scores(str(s)) for s in sentences]>> print(sentiment)[{'neg': 0.0, 'neu': 0.182, 'pos': 0.818, 'compound': 0.6696}]

你可以看到,通过将例句改为非常积极的句子,sentiment 的值发生了巨大变化。

建立一个情感分析服务

现在你已经为情感分析组装了基本的代码块,让我们将这些东西转化为一个简单的服务。

在这个演示中,你将使用 Python Flask 包 创建一个 RESTful HTTP 服务器。此服务将接受英文文本数据并返回情感分析结果。请注意,此示例服务是用于学习所涉及的技术,而不是用于投入生产的东西。

怎么使用Python构建可扩展的社交媒体情感分析服务