① word文本中的文檔部件里的域 打開之後不是一個方框,而是一個代碼是怎麼回事
編者按
文本情感分析是對帶有主觀感情色彩的文本進行分析、處理、歸納和推理的過程。互聯網上每時每刻都會產生大量文本,這其中也包含大量的用戶直接參與的、對人、事、物的主觀評價信息,比如微博、論壇、汽車、購物評論等,這些評論信息往往表達了人們的各種主觀情緒,如喜、怒、哀、樂,以及情感傾向性,如褒義、貶義等。基於此,潛在的用戶就可以通過瀏覽和分析這些主觀色彩的評論來了解大眾輿論對於某一事件或產品的看法。
百分點認知智能實驗室基於前沿的自然語言處理技術和實際的演算法落地實踐,真正實現了整體精度高、定製能力強的企業級情感分析架構。從單一模型到定製化模型演變、文本作用域優化、多模型(相關度)融合、靈活規則引擎、以及基於實體的情感傾向性判定,探索出了一套高精準、可定製、可干預的智能分析框架,為輿情客戶提供了高效的預警研判服務。
本文作 者: 常全有 劉政
一、
情感分析概述
文本情感分析,即 Sentiment Analysis(SA),又稱意見挖掘或情緒傾向性分析。 針對通用場景下帶有主觀描述的中文文本,自動判斷該文本的情感極性類別並給出相應的置信度,情感極性分為積極、消極、中性等。
在文本分析的基礎上,也衍生出了一系列細粒度的情感分析任務,如:
基於方面的情感分析(ABSA):一般稱作 Aspect Based Sentiment Analysis。旨在識別一條句子中一個指定方面(Aspect)的情感極性。常見於電商評論上,一條評論中涉及到關於價格、服務、售後等方面的評價,需要區分各自的情感傾向。
基於實體的情感傾向性判定(ATSA): 一般稱作 Aspect-Term Sentiment Analysis。對於給定的情感實體,進行情感傾向性判定。在一句話中不同實體的情感傾向性也是不同的,需要區別對待。
核心目標和價值
輿情系統的最核心需求,是能夠精準及時的為客戶甄別和推送負面,負面識別的准確性直接影響信息推送和客戶體驗,其中基於文本的情感分析在輿情分析中的重要性不言而喻,下圖簡要展示了文本分析以及情感分析在輿情體系中的作用。
輿情數據通過底層的大數據採集系統,流入中間層的 ETL 數據處理平台,經過初級的數據處理轉化之後,向上進入數據挖掘核心處理環節;此階段進行數據標准化、文本深度分析,如地域識別、智能分詞、情感判定、垃圾過濾等,經過文本處理的結果,即脫離了原始數據的狀態,具備了客戶屬性,基於客戶定製的監測和預警規則,信息將在下一階段實時的推送給終端客戶,負面判定的准確度、召回率,直接影響客戶的服務體驗和服務認可度。
難點與挑戰
輿情業務中的情感分析難點,主要體現在以下幾個方面:
1.輿情的客戶群體是復雜多樣的,涉及行業多達24個(如下圖所示),不同行業數據特點或敏感判定方案不盡相同,靠一個模型難以解決所有問題;
2.輿情監測的數據類型繁多, 既有常規的新聞、微信公眾號等媒體文章數據,又有偏口語化的微博、貼吧、問答數據,情感模型往往需要針對不同渠道類型單獨訓練優化,而渠道粒度的模型在不同客戶上效果表現也差別巨大;
3.客戶對情感的訴求是有差異的,有些客戶會有自己專屬的判定條件。通用的情感模型難以適應所有客戶的情感需求。
4.隨著時間推移,客戶積累和修正的情感數據難以發揮價值。無法實現模型增量訓練和性能的迭代提高。
5.對於關注品牌、主體監測客戶,需要進行特定目標(實體)情感傾向性(ATSA)判定。那麼信息抽取就是一個難題。
6.對於新聞類數據,通常存在標題和正文兩個文本域。如何提取有價值的文本信息作為模型輸入也是面臨的困難。
二、
情感分析在百分點輿情的發展歷程
從2015年開始,百分點輿情便開始將機器學習模型應用在早期的負面判定中;到2020年,我們已經將深度遷移學習場景化和規模化,也取得了不錯的成果;
2015年:抓取百萬級別的口碑電商評論數據,使用邏輯回歸進行建模,做為情感分析的BaseLine;
2016年:主要側重於技術上的遞進,進入深度學習領域。引入word2vec在大規模語料集上進行訓練,獲得具有更好語義信息的詞向量表示,替代基於Tfidf等傳統的統計特徵。隨後在TextCnn、TextRnn等深度學習演算法進行更新迭代,盡管得到數字指標的提高,但是對於實際業務的幫助還是不足。
2017年:結合輿情全業務特點,需要能做到針對品牌、主體的情感監測。提出 Syntax and Ruler-based Doc sentiment analysis的方式,依據可擴充的句法規則以及敏感詞庫進行特定的分析。該方式在敏感精準度指標上是有提升的,但是卻有較低的召回。同時在進行規則擴充時,也比較繁瑣。
2019年上半年:以Bert為代表的遷移學習誕生,並且可以在下游進行fine-tune,使用較小的訓練數據集,便能取得不錯的成績。進行以輿情業務數據為基礎,構建一個簡易的文本平台標注平台,在其上進行訓練數據的標注,構建了一個通用的情感模型分類器。評測指標 F1值為 0.87,後續對 ERNIE1.0 進行嘗試,有兩個百分點的提升。
2019年下半年:主要從輿情的業務問題入手,通過優化提取更加精準、貼近業務的情感摘要作為模型輸入,使用定製化模型以及多模型融合方案,聯合對數據進行情感打標。並提出基於情感實體(主體)的負面信息監測,下述統稱ATSA(aspect-term sentiment analysis),使用 Bert-Sentence Pair 的訓練方式, 將 摘要文本、實體聯合輸入,進行實體的情感傾向性判定。在定點客戶上取得不錯的成績,最後的F1值能達到 0.95。
2020年:將細化領域做到客戶級別,定製私有化情感模型。同時將加大對特定實體的細粒度情感分析(ATSA)的優化;同時,通過內部 AI訓練平台的規模化應用,做到模型的全生命周期管理,簡化操作流程,加強對底層算力平台的資源管控。
三、
預訓練語言模型與技術解析
下圖大致概括了語言模型的發展狀況(未完全統計):
在2019年度情感分析實踐中,率先使用預訓練語言模型 Bert,提高了情感分析的准確率。後來具有更小參數量的ALBERT的提出,使生產環境定製化情感模型成為可能。這里就主要介紹BERT以及ALBERT。
BERT
BERT(Bidirectional Encoder Representations from Transformerss)的全稱是基於 Transformer 的雙向編碼器表徵,其中「雙向」表示模型在處理某一個詞時,它能同時利用前面的詞和後面的詞兩部分信息(如下圖所示)。
在BERT中, 主要是以兩種預訓練的方式來建立語言模型。
1.MLM(Masked LM)
MLM可以理解為完形填空,作者會隨機mask每一個句子中15%的詞,用其上下文來做預測,例如:my dog is hairy → my dog is [MASK]。此處將hairy進行了mask處理,然後採用非監督學習的方法預測mask位置的詞是什麼,具體處理如下:
80%是採用[mask],my dog is hairy → my dog is [MASK]
10%是隨機取一個詞來代替mask的詞,my dog is hairy -> my dog is apple
10%保持不變,my dog is hairy -> my dog is hairy
之後讓模型預測和還原被遮蓋掉或替換掉的部分。
2.NSP(Next Sentence Prediction)
首先我們拿到屬於上下文的一對句子,也就是兩個句子,之後我們要在這兩段連續的句子裡面加一些特殊 token: [cls] 上一句話,[sep] 下一句話. [sep]
也就是在句子開頭加一個 [cls],在兩句話之中和句末加 [sep],具體地就像下圖一樣:
Token Embeddings:是詞向量,第一個單詞是CLS標志,可以用於之後的分類任務。
Segment Embeddings:用來區別兩種句子,因為預訓練不光做LM還要做以兩個句子為輸入的分類任務。
Position Embeddings:讓BERT學習到輸入的順序屬性。
BERT在文本摘要、信息檢索、數據增強、閱讀理解等任務中,也有實際的應用和發展。更多關於Bert相關介紹,請參照百分點認知智能實驗室往期文章。
ALBERT
ALBERT的全稱是A Lite BERT for Self-supervised Learning of Language Representations(用於語言表徵自監督學習的輕量級BERT),相對於Bert而言,在保證參數量小的情況下,也能保持較高的性能。當然同樣的模型還有 DistilBERT、TinyBERT。
1.ALBERT 和BERT的比較
下圖是BERT和ALBERT在訓練速度和性能上的整體比較:
ALBERT-xxlarge的表現完全超過BERT-large,同時參數量只有其佔比的70%,但是Bert-large的速度要比ALBERT-xxlarge快三倍左右。
BERT-xlarge的性能相對於Bert-base是低效的,表明大參數模型相對於小參數模型更加難訓練。
2.ALBERT的目標
在基於預訓練語言模型表徵時,增加模型大小一般可以提升模型在下游任務中的性能。但是通過增加模型大小會帶來以下問題:
內存問題
訓練時間會更長
模型退化
在將Bert-large的隱層單元數增加一倍, Bert-xlarge在基準測試上准確率顯著降低。
ALBERT核心目標就是解決上述問題, 下面就來介紹ALBERT在精簡參上的優化。
3.ALBERT模型優化
明確參數的分布,對於有效可靠的減少模型參數十分有幫助。ALBERT同樣也只使用到Transformer的Encoder階段,如下圖所示:
圖中標明的藍色方框和紅色方框為主要的參數分布區域:
Attention feed-forward block(上圖中藍色實線區域):
參數大小: O(12 * L * H * H)
L:編碼器層數 eg:12
H:隱藏層大小 eg:768
參數量佔比:80%
優化方法:採用參數共享機制
Token embedding projection block(上圖中紅色實線區域):
參數大小:(V * E)
V:詞表大小 eg:30000
E:詞嵌入大小 eg:768
參數量佔比: 20%
優化方法:對Embedding進行因式分解
>E,所以ALBERT的詞向量的維度是小於encoder輸出值維度的。在NLP任務中,通常詞典都會很大,embedding matrix的大小是E×V。 ALBERT採用了一種因式分解(Factorized embedding parameterization)的方法來降低參數量。首先把one-hot向量映射到一個低維度的空間,大小為E,然後再映射到一個高維度的空間,當E<
具體參數優化如下:
Factorized embedding parameterization(對Embedding因式分解)
ALBERT認為,token embedding是沒有上下文依賴的表述,而隱藏層的輸出值不僅包括了詞本身的意思還包括一些上下文信息,因此應該讓H>>E,所以ALBERT的詞向量的維度是小於encoder輸出值維度的。在NLP任務中,通常詞典都會很大,embedding matrix的大小是E×V。
ALBERT採用了一種因式分解(Factorized embedding parameterization)的方法來降低參數量。首先把one-hot向量映射到一個低維度的空間,大小為E,然後再映射到一個高維度的空間,當E<
可以看到,經過因式分解。參數量從O(V * H) 變為O(V*E + E*H),參數量將極大減小。如下圖所示:在H=768條件下,對比E=128和E=768,參數量減少17%,而整體性能下降0.6%。
在後續的實驗環境(所有的優化匯總後),對 embedding size 的大小進行評估,得出在 E=128時,性能達到最佳。
Cross-layer parameter sharing(跨層參數共享)
下圖是對BERT-Base Attention分布的可視化。對於一個隨機選擇的句子,我們可視化來自不同Layer的Head的Attention分布。可以看到,底層的Attention分布類似於頂層的Attention分布。這一事實表明在某種程度上,它們的功能是相似的。
Transformer中共享參數有多種方案,只共享feed-forward層,只共享attention層,ALBERT結合了上述兩種方案,feed-forward層與attention層都實現參數共享,也就是說共享encoder內的所有參數。但是需要主要的是,這只是減少了參數量,推理時間並沒有減少。如下圖所示:在採用 all-shared模式下,參數量減少70%,性能下降小於3%。
在經過上述的參數優化後,整體參數量有了極大的縮減,訓練速度也極大加快。後續作者又在模型變寬和模型變深上做了幾組實驗。如下:
模型變寬
當我們增加 H 大小時,性能會逐漸提高。在H=6144時,性能明顯下降。如下圖所示:
模型變深
在以ALBERT-large為基礎參數,設置不同的layer大小,發現layer=48的性能要差於layer=24的性能,如下圖所示:
一些實驗表示NSP(BERT-style)非但沒有作用,反而會對模型帶來一些損害。作者接著提出SOP(ALBERT-style)的優化模式。具體如下:
Inter-sentence coherence loss(句子連貫性)
在ALBERT中,為了去除主題識別的影響,提出了一個新的任務 sentence-order prediction(SOP),SOP的正樣本和NSP的獲取方式是一樣的,負樣本把正樣本的順序反轉即可。SOP因為是在同一個文檔中選的,只關注句子的順序並沒有主題方面的影響。並且SOP能解決NSP的任務,但是NSP並不能解決SOP的任務,該任務的添加給最終的結果提升了一個點。
在後續的實驗中, ALBERT在訓練了100w步之後,模型依舊沒有過擬合,於是乎作者果斷移除了dropout,沒想到對下游任務的效果竟然有一定的提升。
當然作者對於增加訓練數據和訓練時長也做了詳盡的對比和測試,這里不再進行描述。
在最初的 ALBERT發布時,是只有中文的。感謝數據工程師徐亮以及所在的團隊,於 2019 年 10 月,開源了首個中文預訓練的中文版 ALBERT 模型。
項目地址:
https://github.com/brightmart/albert_zh
四、
情感分析在輿情的應用實踐
業務調研
2019上半年,輿情服務的整體情感判定框架已經遷移到以Bert訓練為基礎的情感模型上,得出的測試指標 F1 值為 0.86,相較於舊版模型提升顯著; 但是雖然數據指標提升明顯,業務端實際感受卻並不明顯。因此我們對代表性客戶進行采樣調查,輔助我們找出生產指標和實驗室指標差異所在。同時針對上文提到的關於輿情業務中情感分析的痛點和難點,進行一次深度業務調研:
1.客戶情感滿意度調查
2.文本作用域(模型輸入文本選擇)調研
這里將文本作用域分為以下幾個層次,分布情況如下圖所示:
標題:正常文章的標題
全文: 標題和正文的統稱
情感摘要:依據客戶的輸入特徵詞,從文章中抽取一段摘要;長度在256字元內。
關鍵詞周邊:只關注所配置關鍵詞周邊的文本作用域,一般是一句話。
主體(實體)詞周邊:依據客戶所配置的品牌詞、主體詞,選取對應的文本作用域。
3.情感判定因素
這里對判定因素做以下介紹:
自然語義:是指符合人們的情感判定標准,像 色情、暴力、違禁、邪教、反動等言論都是敏感信息的范疇。比如:"#28天斷食減肥[超話]#美柚說我還有4天就來姨媽了,所以是快要來姨媽了體重就掉的慢甚至不掉了嗎,心塞。" 屬於敏感。
主體(實體)情感:一般涉及到的是 人名、地名、機構名、團體名、產品名、品牌名、」我「、」作者「等; 如果監測主體為美柚,那麼上述文本的情感傾向性就是非敏感。再舉例如下:」墨跡天氣又忘記簽到了,這個記性越來越差「,墨跡天氣是監測主體,那麼屬於非敏感。
業務規則: 是指以一種可表示、可量化、可總結、可表達的形式總結知識和規則,已經不符合自然語義的理解范疇。
業務規則&自然語義:客戶的負面信息判定是結合業務規則,並且是符合自然語義判定標準的。
我們針對上述調研結果進行詳盡分析,最終確定走情感細粒度模型的道路。
情感分析的落地實踐
精簡版本的情感架構概覽如下:
接下來會基於此進行講述,大致分為如下幾個層次:
1.輸入層
這里主要是獲取相應文本輸入,以及客戶的文本作用域規則和檢索詞、主體詞,供下游的文本作用域生成提供對應的條件。
2.文本作用域
依據文本作用域規則,生成對應的模型輸入,請參照上文對文本作用域的闡述。這里實驗內容針對的是情感摘要。首先將文本進行分句,然後依據對每一個句子和檢索詞進行匹配,通過BM25計算相關性。這里限制的文本長度在256內。在文本域優化後, 對線上的10家客戶進行對比分析,實驗條件如下:
客戶數目:10
數據分布:從輿情系統中按照自然日,為每個客戶選取100條測試數據
對比條件:情感摘要、標題
進行對比分析(客戶名稱已脫敏),每個客戶的情感摘要和文本標題效果依次展示。如下圖所示:
可以發現整體效果是有極大提升的。但是也可以看到部分客戶的敏感精準率是偏低的,這個和客戶的敏感分布有關,大部分的敏感佔比只有總數據量的 10% ~20%,有些甚至更加低。所以面臨一個新的問題,如何提升非均勻分布的敏感精準度。這個會在下文進行陳述。
3.情感判定因素
由上文的情感因素分布得知, 情感對象(實體)的因素佔54%,基於實體的情感傾向性判定(ATSA)是一個普適需求。如果這里直接使用通用情感分析判定(SA),在輿情的使用場景中會存在高召回,低精準的的情況。接下來會對此進行相關解決方案的的論述。
4.模型層
通用情感模型
在19年初, 使用Bert-Base(12L,768H)進行fine-tune,得到如下指標:情感准確性:0.866, 敏感精準率: 0.88,敏感召回:0.84,F1: 0.867;後來在ERNIE1.0上進行嘗試,情感准確性能提升2個百分點。不過因為PaddlePaddle的生態問題,沒有選擇ERNIE。這是一個符合自然語義的情感模型, 但是對於輿情客戶來說,這還遠遠不夠。
相關度模型
對生產環境的埋點日誌分析,發現客戶存在大量的屏蔽操作。選取近一個月屏蔽最多的10個話題進行分析,如下圖所示:
通過調研和分析發現,這些數據雖然命中關鍵詞,但是數據相關度比較低。在情感判定之前引入相關度判定, 對於非相關的數據,一律判定為非敏感。對於精準數據再次進行情感分析判定,大大提升敏感精準率。在工程上選取ALBERT進行模型訓練可以達到部署多個模型的目的。觀測到,單個模型在推理階段,在Gpu(RTX 2080)上佔用的顯存大約在600MiB,極大節省資源。
部分客戶相關度模型效果如下:
客戶名稱
准確率
正樣本數量
負樣本數量
數據來源
C1
0.95
619
1141
收藏、屏蔽數據
C2
0.97
5085
5244
收藏、屏蔽數據
C3
0.93
450
450
收藏、屏蔽數據
C4
0.94
136
487
收藏、屏蔽數據
部分客戶實施相關度判定,由於數據特徵比較明顯,可以很容易達到比較精準的數據效果,但是並不適用於所有客戶。相關度模型的引入,即達到篩選相關數據的目的,也能減少情感判定噪音數據的干擾,提升敏感精準度。
5.ATSA-面向情感實體的情感傾向性分析
ATSA(aspect-term sentiment analysis) 要解決就是在特定情感實體下的情感傾向性判定問題。這里主要借鑒《Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence》文中的思想。這個工作做得非常聰明,它把本來情感計算的常規的單句分類問題,通過加入輔助句子,改造成了句子對匹配任務。很多實驗證明了:BERT是特別適合做句子對匹配類的工作的,所以這種轉換無疑能更充分地發揮BERT的應用優勢。
輿情中要解決的問題如下:
A公司和B公司的情感傾向性是非敏感的, 而C公司卻是敏感的。要解決這個問題,要面臨兩個問題:
實體識別和信息抽取問題
實體級別的情感傾向性判定
在輿情的業務場景中,可以簡化問題,由於情感實體是提前給定的, 所以不需要做實體識別和信息抽取, 只需要對特定實體的情感傾向性進行判定。整體流程如下:
主要是利用 Bert Sentence-Pair,文本與實體聯合訓練,得到輸出標簽。目前實驗證明,經過這種問題轉換,在保證召回率提升的情況下,准確率和精準率都得到了提高。選取一個客戶進行對比測試,如下所示:
實驗條件
實驗方式
准確率
精準率
召回率
F1
按照自然日采樣,測試樣本為912條,其中敏感數據108條
ATSA
0.95
0.8
0.85
0.82
情感摘要
0.84
0.4
0.7
0.51
上述是一個正負樣本及其不均勻的情況,增加敏感精準率將提高客戶的滿意度。目前的實現的機制還略顯簡單,未來還將持續投入。
6.情感規則引擎
在部分客戶場景中, 他們的業務規則是明確的或者是可窮舉的。這里會做一些長尾詞挖掘、情感新詞發現等工作來進行輔助, 同時要支持實時的干預機制,快速響應。比如某些客戶的官方微博經常會發很多微博,他們會要求都判定成非敏感。這里不再做過多介紹。
五、
長期規劃
AI 訓練平台的構建
軟體開發領域和模型開發領域的流程是不同的,如下所示:
可以看到,構建模型是困難的。在輿情架構發展中,線上多模型是必然的趨勢,也就意味著需要一個平台能夠快速支持和構建一個定製化模型,來滿足真實的應用場景。這就需要從底層的算力資源進行管控、輿情數據的標准化制定和積累、模型的生命周期管理等多方面進行衡量。關於 AI 訓練平台的構建以及在輿情領域的應用實踐,我們將在後續文章做進一步闡述。
持續學習,增量迭代
隨著輿情客戶對系統的深度使用,一般會有情感標簽的人工糾正。所以需要保證模型可以進行增量迭代,減少客戶的負反饋。
多實體的情感傾向分析
對包含有多個實體信息的文本,針對每一個系統識別到的實體,做自動情感傾向性判斷(敏感、非敏感),並給出相應的置信度,包括實體庫的構建。
提升垂直類情感情感分析效果
在垂類上(App、餐飲、酒店等)情感傾向性分析准確率上加大優化力度。
隨著輿情業務的發展,各領域客戶都沉澱了大量與業務貼近的優質數據,如何有效使用這些數據,形成情感效果聯動反饋機制,為業務賦能,是情感分析領域面臨的新的挑戰。在2019年的實踐中,通過場景化的情感分析框架落地應用,對情感效果做到了模型定製化干預,真正提高了客戶滿意度。這種機制具有整體精度高、定製能力強、業務感知明顯的特點。在後續工作中,將以 模型訓練自動化與人工反饋相結合的方式,將模型定製能力規模化、平台化,實現情感分析在輿情場景下千人千面的效果。
百分點輿情洞察系統
百分點輿情洞察系統(MediaForce)是一款沉澱多年的互聯網公開輿情 SAAS 分析系統,覆蓋全網主流資訊站點及社交媒體的公開數據,幫助企業迅速發現輿情熱點,掌握負面和輿論動向,為上萬客戶提供精準的輿情分析服務。
Refer:
Chi Sun, Luyao Huang, Xipeng Qiu: Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence. NAACL-HLT (1) 2019: 380-385
Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL-HLT (1) 2019: 4171-4186
Yifan Qiao, Chenyan Xiong, Zheng-Hao Liu, Zhiyuan Liu: Understanding the Behaviors of BERT in Ranking. arXiv preprint arXiv:1904.07531 (2019).
Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Ra Soricut:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations.arXiv:1909.11942 [cs.CL]
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin:Attention Is All You Need.arXiv:1706.03762 [cs.CL]
Linyuan Gong, Di He, Zhuohan Li, Tao Qin, Liwei Wang, Tieyan Liu ; Proceedings of the 36th International Conference on Machine Learning, PMLR 97:2337-2346, 2019:Efficient Training of BERT by Progressively Stacking
https://github.com/thunlp/PLMpapers
http://jalammar.github.io/illustrated-bert/
https://www.bilibili.com/video/BV1C7411c7Ag?p=4
② 如何用python做輿情時間序列可視化
如何批量處理評論信息情感分析,並且在時間軸上可視化呈現?輿情分析並不難,讓我們用Python來實現它吧。
痛點
你是一家連鎖火鍋店的區域經理,很注重顧客對餐廳的評價。從前,你苦惱的是顧客不愛寫評價。最近因為餐廳火了,分店越來越多,寫評論的顧客也多了起來,於是你新的痛苦來了——評論太多了,讀不過來。
從我這兒,你了解到了情感分析這個好用的自動化工具,一下子覺得見到了曙光。
你從某知名點評網站上,找到了自己一家分店的頁面,讓助手把上面的評論和發布時間數據弄下來。因為助手不會用爬蟲,所以只能把評論從網頁上一條條復制粘貼到Excel里。下班的時候,才弄下來27條。(注意這里我們使用的是真實評論數據。為了避免對被評論商家造成困擾,統一將該餐廳的名稱替換為「A餐廳」。特此說明。)
好在你只是想做個試驗而已,將就了吧。你用我之前介紹的中文信息情感分析工具,依次得出了每一條評論的情感數值。剛開始做出結果的時候,你很興奮,覺得自己找到了輿情分析的終極利器。
可是美好的時光總是短暫的。很快你就發現,如果每一條評論都分別運行一次程序,用機器來做分析,還真是不如自己挨條去讀省事兒。
怎麼辦呢?
序列
辦法自然是有的。我們可以利用《貸還是不貸:如何用Python和機器學習幫你決策?》一文介紹過的數據框,一次性處理多個數據,提升效率。
但是這還不夠,我們還可以把情感分析的結果在時間序列上可視化出來。這樣你一眼就可以看見趨勢——近一段時間里,大家是對餐廳究竟是更滿意了,還是越來越不滿意呢?
我們人類最擅長處理的,就是圖像。因為漫長的進化史逼迫我們不斷提升對圖像快速准確的處理能力,否則就會被環境淘汰掉。因此才會有「一幅圖勝過千言萬語」的說法。
准備
首先,你需要安裝Anaconda套裝。詳細的流程步驟請參考《 如何用Python做詞雲 》一文。
助手好不容易做好的Excel文件restaurant-comments.xlsx,請從這里下載。
用Excel打開,如果一切正常,請將該文件移動到咱們的工作目錄demo下。
因為本例中我們需要對中文評論作分析,因此使用的軟體包為SnowNLP。情感分析的基本應用方法,請參考《如何用Python做情感分析?》。
到你的系統「終端」(macOS, Linux)或者「命令提示符」(Windows)下,進入我們的工作目錄demo,執行以下命令。
pip install snownlp
pip install ggplot
運行環境配置完畢。
在終端或者命令提示符下鍵入:
jupyter notebook
如果Jupyter Notebook正確運行,下面我們就可以開始編寫代碼了。
代碼
我們在Jupyter Notebook中新建一個Python 2筆記本,起名為time-series。
首先我們引入數據框分析工具Pandas,簡寫成pd以方便調用。
import pandas as pd
接著,讀入Excel數據文件:
df = pd.read_excel("restaurant-comments.xlsx")
我們看看讀入內容是否完整:
df.head()
結果如下:
注意這里的時間列。如果你的Excel文件里的時間格式跟此處一樣,包含了日期和時間,那麼Pandas會非常智能地幫你把它識別為時間格式,接著往下做就可以了。
反之,如果你獲取到的時間只精確到日期,例如"2017-04-20"這樣,那麼Pandas只會把它當做字元串,後面的時間序列分析無法使用字元串數據。解決辦法是在這里加入以下兩行代碼:
from dateutil import parser
df["date"] = df.date.apply(parser.parse)
這樣,你就獲得了正確的時間數據了。
確認數據完整無誤後,我們要進行情感分析了。先用第一行的評論內容做個小實驗。
text = df.comments.iloc[0]
然後我們調用SnowNLP情感分析工具。
from snownlp import SnowNLP
s = SnowNLP(text)
顯示一下SnowNLP的分析結果:
s.sentiments
結果為:
0.6331975099099649
情感分析數值可以正確計算。在此基礎上,我們需要定義函數,以便批量處理所有的評論信息。
def get_sentiment_cn(text):
s = SnowNLP(text) return s.sentiments
然後,我們利用Python裡面強大的apply語句,來一次性處理所有評論,並且將生成的情感數值在數據框裡面單獨存為一列,稱為sentiment。
df["sentiment"] = df.comments.apply(get_sentiment_cn)
我們看看情感分析結果:
df.head()
新的列sentiment已經生成。我們之前介紹過,SnowNLP的結果取值范圍在0到1之間,代表了情感分析結果為正面的可能性。通過觀察前幾條數據,我們發現點評網站上,顧客對這家分店評價總體上還是正面的,而且有的評論是非常積極的。
但是少量數據的觀察,可能造成我們結論的偏頗。我們來把所有的情感分析結果數值做一下平均。使用mean()函數即可。
df.sentiment.mean()
結果為:
0.7114015318571119
結果數值超過0.7,整體上顧客對這家店的態度是正面的。
我們再來看看中位數值,使用的函數為median()。
df.sentiment.median()
結果為:
0.9563139038622388
我們發現了有趣的現象——中位數值不僅比平均值高,而且幾乎接近1(完全正面)。
這就意味著,大部分的評價一邊倒表示非常滿意。但是存在著少部分異常點,顯著拉低了平均值。
下面我們用情感的時間序列可視化功能,直觀查看這些異常點出現在什麼時間,以及它們的數值究竟有多低。
我們需要使用ggplot繪圖工具包。這個工具包原本只在R語言中提供,讓其他數據分析工具的用戶羨慕得流口水。幸好,後來它很快被移植到了Python平台。
我們從ggplot中引入繪圖函數,並且讓Jupyter Notebook可以直接顯示圖像。
%pylab inlinefrom ggplot import *
這里可能會報一些警告信息。沒有關系,不理會就是了。
下面我們繪制圖形。這里你可以輸入下面這一行語句。
ggplot(aes(x="date", y="sentiment"), data=df) + geom_point() + geom_line(color = 'blue') + scale_x_date(labels = date_format("%Y-%m-%d"))
你可以看到ggplot的繪圖語法是多麼簡潔和人性化。只需要告訴Python自己打算用哪個數據框,從中選擇哪列作為橫軸,哪列作為縱軸,先畫點,後連線,並且可以指定連線的顏色。然後,你需要讓X軸上的日期以何種格式顯示出來。所有的參數設定跟自然語言很相似,直觀而且易於理解。
執行後,就可以看到結果圖形了。
在圖中,我們發現許多正面評價情感分析數值極端的高。同時,我們也清晰地發現了那幾個數值極低的點。對應評論的情感分析數值接近於0。這幾條評論,被Python判定為基本上沒有正面情感了。
從時間上看,最近一段時間,幾乎每隔幾天就會出現一次比較嚴重的負面評價。
作為經理,你可能如坐針氈。希望盡快了解發生了什麼事兒。你不用在數據框或者Excel文件裡面一條條翻找情感數值最低的評論。Python數據框Pandas為你提供了非常好的排序功能。假設你希望找到所有評論里情感分析數值最低的那條,可以這樣執行:
df.sort(['sentiment'])[:1]
結果為:
情感分析結果數值幾乎就是0啊!不過這里數據框顯示評論信息不完全。我們需要將評論整體列印出來。
print(df.sort(['sentiment']).iloc[0].comments)
評論完整信息如下:
這次是在情人節當天過去的,以前從來沒在情人節正日子出來過,不是因為沒有男朋友,而是感覺哪哪人都多,所以特意錯開,這次實在是饞A餐廳了,所以趕在正日子也出來了,從下午四點多的時候我看排號就排到一百多了,我從家開車過去得堵的話一個小時,我一看提前兩個小時就在網上先排著號了,差不多我們是六點半到的,到那的時候我看號碼前面還有才三十多號,我想著肯定沒問題了,等一會就能吃上的,沒想到悲劇了,就從我們到那坐到等位區開始,大約是十分二十分一叫號,中途多次我都想走了,哈哈,哎,等到最後早上九點才吃上的,服務員感覺也沒以前清閑時周到了,不過這肯定的,一人負責好幾桌,今天節日這么多人,肯定是很累的,所以大多也都是我自己跑腿,沒讓服務員給弄太多,就蝦滑讓服務員下的,然後環境來說感覺衛生方面是不錯,就是有些太吵了,味道還是一如既往的那個味道,不過A餐廳最人性化的就是看我們等了兩個多小時,上來送了我們一張打折卡,而且當次就可以使用,這點感覺還是挺好的,不愧是A餐廳,就是比一般的要人性化,不過這次就是選錯日子了,以後還是得提前預約,要不就別趕節日去,太火爆了!
通過閱讀,你可以發現這位顧客確實有了一次比較糟糕的體驗——等候的時間太長了,以至於使用了「悲劇」一詞;另外還提及服務不夠周到,以及環境吵鬧等因素。正是這些詞彙的出現,使得分析結果數值非常低。
好在顧客很通情達理,而且對該分店的人性化做法給予了正面的評價。
從這個例子,你可以看出,雖然情感分析可以幫你自動化處理很多內容,然而你不能完全依賴它。
自然語言的分析,不僅要看錶達強烈情感的關鍵詞,也需要考慮到表述方式和上下文等諸多因素。這些內容,是現在自然語言處理領域的研究前沿。我們期待著早日應用到科學家們的研究成果,提升情感分析的准確度。
不過,即便目前的情感分析自動化處理不能達到非常准確,卻依然可以幫助你快速定位到那些可能有問題的異常點(anomalies)。從效率上,比人工處理要高出許多。
你讀完這條評論,長出了一口氣。總結了經驗教訓後,你決定將人性化的服務貫徹到底。你又想到,可以收集用戶等候時長數據,用數據分析為等待就餐的顧客提供更為合理的等待時長預期。這樣就可以避免顧客一直等到很晚了。
祝賀你,經理!在數據智能時代,你已經走在了正確的方向上。
下面,你該認真閱讀下一條負面評論了……
討論
除了情感分析和時間序列可視化,你覺得還可以如何挖掘中文評論信息?除了點評網站之外,你還知道哪些輿情分析的數據來源?歡迎留言分享給大家,我們一起交流討論。
如果你對我的文章感興趣,歡迎點贊,並且微信關注和置頂我的公眾號「玉樹芝蘭」(nkwangshuyi)。
如果你身邊有好友正在做輿情分析的研究工作,也歡迎你把這篇文章轉發給他們,共同學習和提高。
③ 大數據專業都需要學習哪些軟體啊
大數據處理分析能力在21世紀至關重要。使用正確的大數據工具是企業提高自身優勢、戰勝競爭對手的必要條件。下面讓我們來了解一下最常用的30種大數據工具,緊跟大數據發展腳步。
第一部分、數據提取工具
Octoparse是一種簡單直觀的網路爬蟲,可以從網站上直接提取數據,不需要編寫代碼。無論你是初學者、大數據專家、還是企業管理層,都能通過其企業級的服務滿足需求。為了方便操作,Octoparse還添加了涵蓋30多個網站的「任務模板 (Task Templates)」,操作簡單易上手。用戶無需任務配置即可提取數據。隨著你對Octoparse的操作更加熟悉,你還可以使用其「向導模式 (Wizard Mode)」來構建爬蟲。除此之外,大數據專家們可以使用「高級模式 (Advanced Mode)」在數分鍾內提取企業批量數據。你還可以設置「自動雲提取 (Scheled Cloud Extraction)」,以便實時獲取動態數據,保持跟蹤記錄。
02
Content Graber
Content Graber是比較進階的網路爬網軟體,具有可用於開發、測試和生產伺服器的編程操作環境。用戶可以使用C#或VB.NET調試或編寫腳本來構建爬蟲。Content Graber還允許你在爬蟲的基礎上添加第三方擴展軟體。憑借全面的功能,Content Grabber對於具有基本技術知識的用戶來說功能極其強大。
Import.io是基於網頁的數據提取工具。Import.io於2016年首次啟動,現已將其業務模式從B2C轉變為B2B。2019年,Import.io並購了Connotate,成為了一個網路數據集成平台 (Web Data Integration Platform)。憑借廣泛的網路數據服務,Import.io成為了商業分析的絕佳選擇。
Parsehub是基於網頁的數據爬蟲。它可以使用AJax,javaScript等等從網站上提取動態的的數據。Parsehub提供為期一周的免費試用,供用戶體驗其功能。
Mozenda是網路數據抓取軟體,提供企業級數據抓取服務。它既可以從雲端也可以從內部軟體中提取可伸縮的數據。
第二部分、開源數據工具
01Knime
KNIME是一個分析平台,可以幫助你分析企業數據,發現潛在的趨勢價值,在市場中發揮更大潛能。KNIME提供Eclipse平台以及其他用於數據挖掘和機器學習的外部擴展。KNIME為數據分析師提供了2,000多個模塊。
02OpenRefine(過去的Google Refine)是處理雜亂數據的強有力工具,可用於清理、轉換、鏈接數據集。藉助其分組功能,用戶可以輕松地對數據進行規范化。
03R-Programming
R大家都不陌生,是用於統計計算和繪制圖形的免費軟體編程語言和軟體環境。R語言在數據挖掘中很流行,常用於開發統計軟體和數據分析。近年來,由於其使用方便、功能強大,得到了很大普及。
04RapidMiner
與KNIME相似,RapidMiner通過可視化程序進行操作,能夠進行分析、建模等等操作。它通過開源平台、機器學習和模型部署來提高數據分析效率。統一的數據科學平台可加快從數據准備到實施的數據分析流程,極大地提高了效率。
第三部分、數據可視化工具
01
Datawrapper
Microsoft PowerBI既提供本地服務又提供雲服務。它最初是作為Excel附加組件引入的,後來因其強大的功能而廣受歡迎。截至目前,它已被視為數據分析領域的領頭羊,並且可以提供數據可視化和商業智能功能,使用戶能夠以較低的成本輕松創建美觀的報告或BI儀錶板。
02
Solver
Solver專用於企業績效管理 (CPM) 數據可視化。其BI360軟體既可用於雲端又可用於本地部署,該軟體側重於財務報告、預算、儀錶板和數據倉庫的四個關鍵分析領域。
03
Qlik
Qlik是一種自助式數據分析和可視化工具。可視化的儀錶板可幫助公司有效地「理解」其業務績效。
04
Tableau Public
Tableau是一種互動式數據可視化工具。與大多數需要腳本的可視化工具不同,Tableau可幫助新手克服最初的困難並動手實踐。拖放功能使數據分析變得簡單。除此之外,Tableau還提供了入門工具包和豐富的培訓資源來幫助用戶創建報告。
05
Google Fusion Tables
Fusion Table是Google提供的數據管理平台。你可以使用它來收集,可視化和共享數據。Fusion Table與電子表格類似,但功能更強大、更專業。你可以通過添加CSV,KML和電子表格中的數據集與同事進行協作。你還可以發布數據作品並將其嵌入到其他網路媒體資源中。
06
Infogram
Infogram提供了超過35種互動式圖表和500多種地圖,幫助你進行數據可視化。多種多樣的圖表(包括柱形圖,條形圖,餅形圖和文字雲等等)一定會使你的聽眾印象深刻。
第四部分、情感分析工具
01
HubSpot』s ServiceHub
HubSpot具有客戶反饋工具,可以收集客戶反饋和評論,然後使用自然語言處理 (NLP) 分析數據以確定積極意圖或消極意圖,最終通過儀錶板上的圖形和圖表將結果可視化。你還可以將HubSpot』s ServiceHub連接到CRM系統,將調查結果與特定聯系人聯系起來。這樣,你可以識別不滿意的客戶,改善服務,以增加客戶保留率。
02
Semantria
Semantria是一款從各種社交媒體收集帖子、推文和評論的工具。Semantria使用自然語言處理來解析文本並分析客戶的態度。通過Semantria,公司可以了解客戶對於產品或服務的感受,並提出更好的方案來改善產品或服務。
03
Trackur
Trackur的社交媒體監控工具可跟蹤提到某一用戶的不同來源。它會瀏覽大量網頁,包括視頻、博客、論壇和圖像,以搜索相關消息。用戶可以利用這一功能維護公司聲譽,或是了解客戶對品牌和產品的評價。
04
SAS Sentiment Analysis
SAS Sentiment Analysis是一款功能全面的軟體。網頁文本分析中最具挑戰性的部分是拼寫錯誤。SAS可以輕松校對並進行聚類分析。通過基於規則的自然語言處理,SAS可以有效地對消息進行分級和分類。
05
Hootsuit Insight
Hootsuit Insight可以分析評論、帖子、論壇、新聞站點以及超過50種語言的上千萬種其他來源。除此之外,它還可以按性別和位置對數據進行分類,使用戶可以制定針對特定群體的戰略營銷計劃。你還可以訪問實時數據並檢查在線對話。
第五部分、資料庫
01
Oracle
毫無疑問,Oracle是開源資料庫中的佼佼者,功能豐富,支持不同平台的集成,是企業的最佳選擇。並且,Oracle可以在AWS中輕松設置,是關系型資料庫的可靠選擇。除此之外,Oracle集成信用卡等私人數據的高安全性是其他軟體難以匹敵的。
02
PostgreSQL
PostgreSQL超越了Oracle、MySQL和Microsoft SQL Server,成為第四大最受歡迎的資料庫。憑借其堅如磐石的穩定性,它可以處理大量數據。
03
Airtable
Airtable是基於雲端的資料庫軟體,善於捕獲和顯示數據表中的信息。Airtable提供一系列入門模板,例如:潛在客戶管理、錯誤跟蹤和申請人跟蹤等,使用戶可以輕松進行操作。
04
MariaDB
MariaDB是一個免費的開源資料庫,用於數據存儲、插入、修改和檢索。此外,Maria提供強大的社區支持,用戶可以在這里分享信息和知識。
05
Improvado
Improvado是一種供營銷人員使用自動化儀錶板和報告將所有數據實時地顯示在一個地方的工具。作為營銷和分析領導者,如果你希望在一個地方查看所有營銷平台收集的數據,那麼Inprovado對你再合適不過了。你可以選擇在Improvado儀錶板中查看數據,也可以將其通過管道傳輸到你選擇的數據倉庫或可視化工具中,例如Tableau、Looker、Excel等。品牌,代理商和大學往往都喜歡使用Improvado,以大大節省人工報告時間和營銷花費。
④ 求一份計算機本科的畢業設計,題目只要計算機類的就可以
計算機畢業設計
基於Python的SIFT和KCF的運動目標匹配與跟蹤 畢業論文+項目源碼
基於Python決策樹演算法的學生學習行為數據分析 設計報告+代碼及數據
基於Sring+bootstrap+MySQL的住房公積金管理系統 課程報告+項目源碼及資料庫文件
基於C++的即時通信軟體設計 畢業論文+項目源碼
基於JavaWeb+MySQL的圖書管理系統 課程報告+項目源碼及資料庫文件
基於Android Studio+Android SDK的手機通訊錄管理軟體設計 課程報告+項目源碼
基於jsP+MySQL的校園網上訂餐系統 畢業論文+項目源碼及資料庫文件
基於AndroidStudio的花藝分享平台APP設計 報告+源碼及APK文件
基於Python的酒店評論情感分析 課程報告+答辯PPT+項目源碼
基於QT的教務選課管理系統設計與實現 畢業論文+項目源碼
基於Android+Springboot+Mybatis+Mysql的個人生活APP設計 說明書+項目源碼
基於Vue.js+Go的Web3D宇宙空間數據可視化系統 設計報告+前後端源碼及數據
基於java+android+SQLite的保健型果飲在線銷售APP設計 畢業論文+源碼資料庫及APK文件
基於Vue.js+SpringBoot+MyBatis+MySQL的高校綜合資源發布分享社交二手平台 畢業論文+項目源碼及資料庫文件+演示視頻
基於Delphi+MySQL的大學生競賽發布及組隊系統 設計報告+源碼資料庫及可執行文件+使用說明書
基於Android的名片信息管理系統設計與實現 畢業論文+任務書+外文翻譯及原文+演示視頻+項目源碼
基於Python的電影數據可視化分析系統 設計報告+答辯PPT+項目源碼
基於JavaWeb的企業公司管理系統設計與實現 畢業論文+答辯PPT+演示視頻+項目源碼
高校成績管理資料庫系統的設計與實現 畢業論文+項目源碼
基於JavaWeb的家庭食譜管理系統設計與實現 畢業論文+項目源碼及資料庫文件
基於Python+SQLSERVER的快遞業務管理系統的設計與實現 畢業論文+項目源碼及資料庫文件
基於Python的語音詞頻提取雲平台 設計報告+設計源碼
在推薦系統中引入 Serendipity 的演算法研究 畢業論文+參考文獻+項目源碼
基於Html+Python+Django+Sqlite的機票預訂系統 畢業論文+項目源碼及資料庫文件
基於Python的卷積神經網路的貓狗圖像識別系統 課程報告+項目源碼
基於C++的雲安全主動防禦系統客戶端服務端設計 畢業論文+項目源碼
基於JavaSSM的學生成績管理APP系統設計與實現 畢業論文+答辯PPT+前後台源碼及APK文件
基於JavaSwing+MySQL的清朝古代名人數據管理系統設計 畢業論文+任務書+項目源碼及資料庫文件
基於Python_Django的社會實踐活動管理系統設計與實現 畢業論文
基於Servlet WebSocket MySQL實現的網路在線考試系統 畢業論文+項目源碼
基於JavaWEB+MySQL的學生成績綜合管理系統 畢業論文+項目源碼及資料庫文件
基於SpringBoot+Vue和MySQL+Redis的網路課程平台設計與實現 畢業論文+任務書+開題報告+中期報告+初稿+前後台項目源碼
基於Java的畢業設計題目收集系統 課程報告+項目源碼
基於Java+Python+html的生產者與消費者演算法模擬 畢業論文+任務書+項目源碼
基於JavaWeb+MySQL的學院黨費繳費系統 畢業論文+項目源碼及資料庫文件
基於Java+MySQL的學生成績管理系統 畢業論文+任務書+答辯PPT+項目源碼及資料庫文件
基於Java+MySQL的學生和客戶信息管理系統 課程報告+項目源碼及資料庫文件
基於Java的長整數加減法演算法設計 畢業論文+項目源碼
基於vue+MySQL的畢業設計網上選題系統 畢業論文+項目源碼
基於背景建模和FasterR-CNN的視頻前景和目標檢測 畢業論文+答辯PPT+項目源碼
基於Python的智能視頻分析之人數統計的多種實現 畢業論文+答辯PPT+項目源碼
基於C#+SQL server的校園卡消費信息管理系統 畢業論文+項目源碼及資料庫文件
⑤ 學python用什麼書
這本書非常的適合零基礎或者只有一點編程經驗的朋友,它從Python程序的安裝,互動式解釋器的使用,基礎數據類型,各種條件語句等方方面面的基礎知識都講到了,而且在書的最後幾個章節,還有10個練習的實戰項目,非常適合新手入門來學習。
這本書算是從事Python編程工作人員人手一本的必備書籍,這本書需要在看完前面的Python基礎教程,掌握基本的Python知識。
該書不是循序漸進的在講Python編程語言的書,而是針對某些特定python問題和任務,提出一些特別的方法和技巧。小編認為無論你目前是處在哪個階段的Python愛好者,這本書都會讓人獲得非常多有價值的編程知識。
美亞暢銷Python 3編程圖書,幫助你通過編程快速實現工作自動化 。在本書中,你將學習利用Python 編程,在幾分鍾內完成手工需要幾小時的工作,而事先卻無需具備編程經驗。一旦掌握了編程的基礎知識,你就可以毫不費力地創建Python 程序,完成高效的自動化工作。
本書涵蓋了成為一名技術全面的Python開發人員所需的一切內容。本書講解了應用開發相關的多個領域,而且書中的內容可以立即應用到項目開發中。此外,本書還包含了一些使用Python 2和Python 3編寫的代碼案例,以及一些代碼移植技巧。有些代碼片段甚至無須修改就可以運行在Python 2.x或Python 3.x上。本書適合具有一定經驗的Python開發人員閱讀。
讀書破萬卷,下筆如有神。這句古話說來是有道理的。學python推薦這些書籍,大家也可以先多去看看,這樣對自己接下來的深入學習是十分有幫助的。
⑥ 用networkx和python編程可視化分析共現詞關系圖
1 介紹
在之前的Jupyter notebook《共詞分析中的共詞關系是怎麼得到的?》中,我們學習了如何將GooSeeker分詞和情感分析軟體生成的選詞矩陣和共詞矩陣Excel表導入到NumPy array數據結構中,並展示了以詞為研究對羨信象時,選詞矩陣和共詞矩陣之間的關系。
GooSeeker分詞和情感分析軟體具備展示共現詞關系圖的能力,但當前軟體版本存在以下局限性,需要使用Jupyter Notebook來彌補:
這些問題將在接下來的多個notebook中逐一探討。首先,本notebook將演示如何使用networkx繪制社會網路分析圖。然後在接下來的notebook中,我們將演示如何對圖進行化簡,包括根據邊權重化簡和利用MST演算法化簡。
2 使用方法
操作順序如下:
注意:GooSeeker發布的每個notebook項目目錄都預先規劃好了,具體參看Jupyter Notebook項目目錄規劃參考。如果要新做一個分析項目,需要將整個模板目錄復制一份給新項目,然後編寫notebook目錄下的ipynb文件。
3 修改歷史
2022-08-18:第一版發布
4 版權說明
本notebook由GooSeeker大數據分析團隊開發,所分析的源數據是GooSeeker分詞和文本分析軟體生成的。本notebook中的代碼可自由共享使用,包括轉發、復制、修改、用於其他項目中。
5 准備運行環境
5.1 引入需要用到的庫
5.2 設置中文字體
因為含有中文,pyplot畫圖可能會顯示以下錯誤信息:
C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py:238: RuntimeWarning: Glyph 32993 missing from current font. font.set_text(s, 0.0, flags=flags)
這是因為找不到中文字體,所以圖上的中文顯示不出來。為了解決pyplot顯示找不到字體的問題,可以參考glyph-23130-missing-from-current-font,先進行如下設置。
5.3 常量和配置
在我們發布的一系列Jupyter Notebook中,處理GooSeeker分詞軟體導出的結果文件的,都給各種導出文件起了固定的名字。為了方便大家使用,只要把導出文件放在data/raw文件夾,notebook就會找到導出文件,並賦值給對應的文件名變數。下面列出了可能用到的文件名變數:
5.4 檢測data\raw目錄下是否有GooSeeker分詞結果表
在本notebook中,我們只使用共詞矩陣表。下面的代碼將檢查data/raw中是否有這個表,如果沒有會報錯,後面的程序就無法執行了。
輸出結果如下:
6 讀取共詞矩陣表並存入矩陣
讀入桐此過程不展開講解,具體參看《共詞分析中的共詞關系是怎麼得到的?》
6.1 用pandas dataframe讀入共詞矩陣
6.2 提取欄位名
將用於給graph的node命名
輸出結果:
6.3 生成矩陣數據結構
輸出結果:
看看有多少個詞:
輸出結果:133
7 生成圖並進行探索
7.1 從NumPy數組生成networkx圖
參看networkx文檔,有專門的函數可以從其他數據結構直接生成graph
輸出結果:
7.2 給node加上label
如果不加label,畫出來的圖上的每個節點只是一個編號,加上label可以看到節點對應的詞。
根據get_node_attributes,查看現在的note labels
輸出結果:
{}
根據How-do-I-label-a-node-using-networkx-in-python,重新命名labels
7.3 畫圖
figure函數的使用方法參看pyplot官網。其他參考資料:
8 點度中心性分析
上面畫的圖糊成了一片,改進方向有這些
本notebook嘗試第三點,而Gephi的使用方法將在另一個系列的文章中講解。
8.1 定義一個公共畫圖函數
下局派迅面的代碼來自NetworkX的中心性分析案例:plot_degree.html。將用來從多個角度觀察點度中心性。
8.2 對點度中心性排序
觀察哪些詞是中心詞。可以看到,由於數據集中的每個文檔都比較長,共現的機會很高,所以,點度中心性很近似,前面的這些基本上都是全連接。
8.3 綜合展示點度中心性
因為圖的密度很高,用這個新定義的畫圖函數依然顯示一片黑,但是還有兩個圖值得注意,實際上這兩個圖展示了相同內容,只是展示的角度不同,從這兩個圖可以看到具有某個點度的節點數量。
9 總結
下面是GooSeeker分詞和情感分析軟體自帶的社會網路圖展示,可以看到,軟體自帶的展示效果要遠比上面的好。那麼,我們需要怎樣的處理才能從社會網路圖上發現更多有價值的信息呢?在接下來的notebook中,我們將講解兩種簡化圖的方法:
除了簡化社會網路圖,我們在《共詞分析中的共詞關系是怎麼得到的?》提到,度量詞與詞之間關系的方法不只是共詞關系,或者說共詞關系不只是用共現次數表示,還可以有更細致的方法,比如,度量同步變化規律和幅度的協方差分析,經過標准化後的皮爾森相關系數分析等等,後面的notebook將逐步講解。
⑦ 求Deep learning 【Yann LeCun 1,2 , Yoshua Bengio 3 & Geoffrey Hinton 4,5】全文中文翻譯
ご清栄のこととお喜び申し上げます。
株式會社山田商事、営業部の山田太郎でございます。
このたび、業界のコンサルタントとしてご活躍の真田先生をお迎えして、講演會を開催いたします。
お得意様には、一般參加の方々より一足先にご案內メールをお送りしております。
出席を希望される場合、添付のご案內狀をご覧いただき、
返信メールにてお知らせくださいますようお願いいたします。