您现在的位置:首页 > 教案格式 > 正文

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

2019-06-02 11:15 网络整理 教案网

一师一优课晒课平台_课课家教育平台_22课跑进家来的松鼠ppt

>>>

(你的 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)

6)f. han, m. higuchi, d. g. kurth, “synthesis of spacer introduction bis(terpyridine) compound used as electrochromic material for display device such as electronic paper, involves coupling two or more terpyridine compound with boron compound”, jp2008162976-a.。4. this study was designed to investigate the mechanisms of histone deacetylase inhibitors (sulfonamide anilide compound referred as the compound') with antitumor activity against human bladder cancer cells. materials and methods: treated with different concentrations of the compound and hcpt for different periods of time, human bladder cancer cell line biu-87 growthwas measured by mtt assay.。in the present invention, an alkylene oxide is polymerized in the presence of the carboxylate initiator compound, the dmc catalyst complex and the mg3-15la compound, or a catalyst mixture formed by combining the dmc catalyst complex and the mg3-15la compound。

这个结构是什么意思?

22课跑进家来的松鼠ppt_课课家教育平台_一师一优课晒课平台

表面上,这是一个只有一个字典对象的数组。如果有多个句子,那么每个句子都会对应一个字典对象。字典中有四个键对应不同类型的情感。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的值发生了巨大变化。

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

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

这个环境几乎与上一节中的环境相同,唯一的区别是在 Python 环境中添加了 Flask 包。

1、安装所需依赖项:

pip install spacy vaderSentiment flask

2、安装 spaCy 的英语语言模型:

python -m spacy download en_core_web_sm

打开编辑器,创建一个名为app.py的文件。添加以下内容(不用担心,我们将解释每一行):

import flask

import spacy

import vaderSentiment.vaderSentiment as vader

22课跑进家来的松鼠ppt_一师一优课晒课平台_课课家教育平台

app = flask.Flask(__name__)

analyzer = vader.SentimentIntensityAnalyzer()

english = spacy.load("en_core_web_sm")

def get_sentiments(text):

result = english(text)

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

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

return sentiments

@app.route("/", methods=["POST","GET"])

def index():

if flask.request.method =="GET":

return"To Access this service send a POST request to this URL with" \\

" the text you want analyzed in the body."

body = flask.request.data.decode("utf-8")

sentiments = get_sentiments(body)

return flask.json.dumps(sentiments)

虽然这个源文件不是很大,但它非常密集。让我们来看看这个应用程序的各个部分,并解释它们在做什么。

import flask

import spacy

一师一优课晒课平台_22课跑进家来的松鼠ppt_课课家教育平台

import vaderSentiment.vaderSentiment as vader

前三行引入了执行语言分析和 HTTP 框架所需的包。

app = flask.Flask(__name__)

analyzer = vader.SentimentIntensityAnalyzer()

english = spacy.load("en_core_web_sm")

接下来的三行代码创建了一些全局变量。第一个变量app,它是 Flask 用于创建 HTTP 路由的主要入口点。第二个变量analyzer与上一个示例中使用的类型相同,它将用于生成情感分数。最后一个变量english也与上一个示例中使用的类型相同,它将用于注释和标记初始文本输入。

你可能想知道为什么全局声明这些变量。对于app变量,这是许多 Flask 应用程序的标准过程。但是,对于analyzer和english变量,将它们设置为全局变量的决定是基于与所涉及的类关联的加载时间。虽然加载时间可能看起来很短,但是当它在 HTTP 服务器的上下文中运行时,这些延迟会对性能产生负面影响。

def get_sentiments(text):

result = english(text)

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

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

return sentiments

这部分是服务的核心 —— 一个用于从一串文本生成情感值的函数。你可以看到此函数中的操作对应于你之前在 Python 解释器中运行的命令。这里它们被封装在一个函数定义中,text源作为文本变量传入,最后sentiments变量返回给调用者。

@app.route("/", methods=["POST","GET"])

def index():

if flask.request.method =="GET":

return"To access this service send a POST request to this URL with" \\

" the text you want analyzed in the body."

body = flask.request.data.decode("utf-8")

课课家教育平台_22课跑进家来的松鼠ppt_一师一优课晒课平台

sentiments = get_sentiments(body)

return flask.json.dumps(sentiments)

源文件的最后一个函数包含了指导 Flask 如何为服务配置 HTTP 服务器的逻辑。它从一行开始,该行将 HTTP 路由/与请求方法POST和GET相关联。

在函数定义行之后,if子句将检测请求方法是否为GET。如果用户向服务发送此请求,那么下面的行将返回一条指示如何访问服务器的文本消息。这主要是为了方便最终用户。

下一行使用flask.request对象来获取请求的主体,该主体应包含要处理的文本字符串。decode函数将字节数组转换为可用的格式化字符串。经过解码的文本消息被传递给get_sentiments函数以生成情感分数。最后,分数通过 HTTP 框架返回给用户。

你现在应该保存文件,如果尚未保存,那么返回 shell。

一切就绪后,使用 Flask 的内置调试服务器运行服务非常简单。要启动该服务,请从与源文件相同的目录中输入以下命令:

FLASK_APP=app.py flask run

现在,你将在 shell 中看到来自服务器的一些输出,并且服务器将处于运行状态。要测试服务器是否正在运行,你需要打开第二个 shell 并使用curl命令。

首先,输入以下命令检查是否打印了指令信息:

curl http://localhost:5000

你应该看到说明消息:

To access this service send a POST request to this URI with the text you want analyzed in the body.