中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python構建可擴展的社交媒體情感分析服務

發布時間:2021-10-26 18:08:42 來源:億速云 閱讀:159 作者:柒染 欄目:編程語言

本篇文章為大家展示了怎么使用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 服務器。此服務將接受英文文本數據并返回情感分析結果。請注意,此示例服務是用于學習所涉及的技術,而不是用于投入生產的東西。

前提條件
  • 一個終端 shell

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

  • 安裝 Python 包的 pip 命令

  • curl 命令

  • 一個文本編輯器

  • (可選) 一個 Python 虛擬環境使你的工作與系統隔離開來

配置環境

這個環境幾乎與上一節中的環境相同,唯一的區別是在 Python 環境中添加了 Flask 包。

1、安裝所需依賴項:

pip install spacy vaderSentiment flask

2、安裝 spaCy 的英語語言模型:

python -m spacy download en_core_web_sm
創建應用程序文件

打開編輯器,創建一個名為 app.py 的文件。添加以下內容 (不用擔心,我們將解釋每一行)

import flaskimport spacyimport vaderSentiment.vaderSentiment as vader 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 flaskimport spacyimport 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 應用程序的標準過程。但是,對于 analyzerenglish 變量,將它們設置為全局變量的決定是基于與所涉及的類關聯的加載時間。雖然加載時間可能看起來很短,但是當它在 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")  sentiments = get_sentiments(body)  return flask.json.dumps(sentiments)

源文件的***一個函數包含了指導 Flask 如何為服務配置 HTTP 服務器的邏輯。它從一行開始,該行將 HTTP 路由 / 與請求方法 POSTGET 相關聯。

在函數定義行之后,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.

接下來,運行以下命令發送測試消息,查看情感分析:

curl http://localhost:5000 --header "Content-Type: application/json" --data "I love applesauce!"

你從服務器獲得的響應應類似于以下內容:

[{"compound": 0.6696, "neg": 0.0, "neu": 0.182, "pos": 0.818}]

恭喜!你現在已經實現了一個 RESTful HTTP 情感分析服務。你可以在 GitHub 上找到此服務的參考實現和本文中的所有代碼。

繼續探索

現在你已經了解了自然語言處理和情感分析背后的原理和機制,下面是進一步發現探索該主題的一些方法。

在 OpenShift 上創建流式情感分析器

雖然創建本地應用程序來研究情緒分析很方便,但是接下來需要能夠部署應用程序以實現更廣泛的用途。按照Radnaalytics.io 提供的指導和代碼進行操作,你將學習如何創建一個情感分析儀,可以容器化并部署到 Kubernetes 平臺。你還將了解如何將 Apache Kafka 用作事件驅動消息傳遞的框架,以及如何將 Apache Spark 用作情緒分析的分布式計算平臺。

使用 Twitter API 發現實時數據

雖然 Radanalytics.io 實驗室可以生成合成推文流,但你可以不受限于合成數據。事實上,擁有 Twitter 賬戶的任何人都可以使用 Tweepy Python 包訪問 Twitter 流媒體 API 對推文進行情感分析。

上述內容就是怎么使用Python構建可擴展的社交媒體情感分析服務,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台山市| 广灵县| 霍林郭勒市| 会理县| 宁德市| 商南县| 荣成市| 定日县| 辽源市| 上林县| 夏河县| 邳州市| 临清市| 沁阳市| 陆良县| 拜城县| 久治县| 宜川县| 门头沟区| 海宁市| 肇州县| 天长市| 巴彦县| 宝山区| 古交市| 彰化县| 龙川县| 哈尔滨市| 隆林| 枣阳市| 大城县| 织金县| 巴林左旗| 从江县| 拜泉县| 铜川市| 上虞市| 扎囊县| 图木舒克市| 南城县| 潢川县|