
摘要
我在《爬取簡書百萬頁面 分析簡書用戶畫像》 中分析了簡書用戶的書籍喜好,這里繼續(xù)嘗試通過簡書影評文章的抓取、內(nèi)容清洗、影評句子提取,建立機(jī)器學(xué)習(xí)情緒預(yù)測模型,挖掘分析簡書用戶對流行電影的喜好。
涉及的技術(shù)點/知識點
涉及的NLP(自然語言處理)知識點:
- 中文分詞
- 關(guān)鍵詞提取
- 文本相似度
- 中心句提取
- 情緒識別
涉及的ML(機(jī)器學(xué)習(xí))知識點:
- 有監(jiān)督分類
- 數(shù)據(jù)不平衡問題
大綱
- 序
- 數(shù)據(jù)源
- 難點問題
- 難點1:電影名稱識別
- 難點2:評論句提取
- 難點3:文本的情緒識別
- 難點4:如何評估預(yù)測結(jié)果的準(zhǔn)確性
- 總結(jié)
序
意欲何為 - 沒有評分機(jī)制時,如何判定用戶對電影的喜惡?
電影的拍攝成本高、票價也不低,消費(fèi)者投入的關(guān)注度和觀看成本高(最終的投入成本是包括注意力投入、金錢投入、時間投入和感情投入)。
簡單算下觀看一部電影的成本(步驟):先看下預(yù)告內(nèi)容,做下同期上映電影的比較,覺得導(dǎo)演、演員陣容都不錯,下定決心要看了,跟男/女友/老婆 /老公/基友/閨密做推薦,推薦成功后去選座買票,觀影當(dāng)天說不定還得先吃個飯,飯后乖乖的在影院呆上90分鐘(關(guān)鍵時刻還得憋尿),觀影結(jié)束后指不定還得來個夜宵、開個房間探討下人生什么的。。。
讀一本書的成本(步驟):1.打開書/電子閱讀器/手機(jī);2. 讀!
這樣對比看一部電影比讀一本書的投入成本高多了!
因此觀眾給出的反饋自然也比書籍會強(qiáng)烈一些,特別是滿懷期待看完卻發(fā)現(xiàn)是一部爛片,有種上當(dāng)受騙的感覺。
因此對電影光是通過詞頻作為喜好度是不夠的,用戶可能反復(fù)的在罵呢。
所以需要引入多一個分析的因子:情緒。用戶提及某個電影時的情緒是怎么樣的,是積極愉悅、還是負(fù)面憤怒,加上這個才能有效判定用戶對電影或者某個事物的喜好。
如何得之 - 如何得到用戶的情緒?
在豆瓣上,用戶的評分就是最直接的情緒數(shù)值:5力薦,4推薦,3還行,2較差,1很差。
但在簡書這類寫作平臺上,發(fā)布文章時是沒有一個選項來填寫分?jǐn)?shù),也沒提供選擇心情的選項。
“所言即其所思”,這是普遍人性。每個用戶寫下的文字表達(dá)想法,在字里行間都會不經(jīng)意的使用一些情緒用詞來表達(dá),這些便是我可以獲取的“原始數(shù)據(jù)”。
得之何用 - 情緒分析用途?
精準(zhǔn)推薦!用戶談?wù)摰枚嗟臇|西未必是TA所喜愛的,也許是TA痛恨的(比如說前任)。如果用戶在自己大力差評某部電影的文章底部看到另一部相似爛片的推薦,推薦文案還寫著“親,我猜你還喜歡看這些”,估計這用戶會有種吃了蒼蠅剛吐出來發(fā)現(xiàn)迎面又飛來幾只的感覺。
通過用戶在討論某事物時上下文的情緒分析,來判斷對該事物的喜惡,將預(yù)測結(jié)果加入對事物的打分計算中,最后得出一個可量化、可計算的分?jǐn)?shù)值,便是一個精準(zhǔn)推薦系統(tǒng)的需要解決的問題。
如何為之 - 怎么做?
理論上只需要一句話:要識別出文章中提及的電影,以及作者對該電影的評論,是好評還是差評,作為文章作者對該電影的喜惡,并根據(jù)評論的情緒強(qiáng)烈程度轉(zhuǎn)化為喜惡程度即可。
那實際上,就要解決以下問題:
- 難點1:電影名稱識別
- 難點2:評論句提取
- 難點3:文本的情緒識別
- 難點4:如何評估預(yù)測結(jié)果的準(zhǔn)確率
下面逐一細(xì)說。
數(shù)據(jù)來源
我采集了簡書上幾個比較受歡迎的電影專題以及一個大V帳號文章(數(shù)據(jù)截止至采集數(shù)據(jù)時):
-
收錄了 38549 篇文章,601170 人關(guān)注
-
收錄了 37193 篇文章,50321 人關(guān)注
-
41783 粉絲; 1424 文章
但由于簡書對專題頁面加了訪問限制,每個專題只能訪問到最新的200個列表頁面,因而每個專題可獲取2~3000篇文章,以此作為抽樣數(shù)據(jù)樣本。

難點問題
難點1:電影名稱識別
要分析對電影的評價,首先就要獲取到文章中提到電影名稱有哪些,最簡單的匹配規(guī)則便是提取書名號《》內(nèi)的內(nèi)容。
而實際獲取到的電影名稱真可謂“臟亂差”,有電影名、書籍名、文章名等,有些電影名稱會用縮寫引用(如《變1》、《復(fù)聯(lián)》、《生化危機(jī)4/5/6》),或者中英文混合在一起(如《機(jī)器人總動員(wall-e)》),甚至還有錯漏別字(如《那些年,我們一起追過的女孩》,多了個“過”字),以及包含中英文特殊標(biāo)點空白符號等,例如:

因此需要進(jìn)行一輪“數(shù)據(jù)大清洗”,我使用如下清洗策略:
- 提取文章中所有書名號
《》中包含的文本 - 去掉其中為鏈接、文章標(biāo)題(句子中包含“文章|寫過”等字眼的)、書名(句子中包含“本書|書中|那本...”等字眼的)
- 構(gòu)建
電影專用詞典,并使用文本相似性算法查找出與電影詞典最相似的一個名稱 - 構(gòu)建
電影停用詞典,去掉停用詞典里包含的內(nèi)容 - 使用匹配規(guī)則,統(tǒng)一標(biāo)點符號、去掉空白字符、中英文名稱分離、系列名分離
- 去重
構(gòu)建電影專用詞典
其中“電影專用詞典”,是通過采集了「貓眼 影片總票房排行榜」2000~2017年間上榜的所有電影,約有3000+部,如圖:

再根據(jù)文章中所收集到的電影名稱的候選文本,抓取「豆瓣網(wǎng)」的官方電影名字(遭遇了豆瓣業(yè)內(nèi)聞名的反爬策略就不多說了),合并去重后約有8400多部??匆谎鄄虐l(fā)現(xiàn)好多電影連聽都沒聽過,有些電影名稱還挺有趣,以后有時間還可以做下電影名稱的分析。

電影名稱糾錯
為了解決錯別字,我通過文本相似性算法,在電影專用詞典里找出與之最相似名稱。
知名的相似算法有不少,如:
- jaro_distance
- ngram_distance
- levenshtein_distance
- damerau_levenshtein_distance
經(jīng)過簡單比較,我選擇了其中表現(xiàn)最好的jaro_winkler_distance
# e.g.: str_edit_distance("加勒比海盜五:死無對證") # => ["加勒比海盜5:死無對證", 0.9754]
jaro_winkler_distance(str1, str2).round(4) # 0.9754, best
jaro_distance(str1, str2).round(4) # 0.9589
ngram_distance(str1, str2).round(4) # => 0.9091
normalized_levenshtein_distance(str1, str2).round(4) # => 0.7273
normalized_damerau_levenshtein_distance(str1, str2).round(4) # => 0.7273

運(yùn)用到文章內(nèi)容上,可得到相似電影名稱,感覺效果還可以:

構(gòu)建Pipeline
構(gòu)建一個Pipeline用于提取頁面中電影名稱,對單個頁面測試效果如下:

運(yùn)用到所有頁面上:

至此完成了電影名稱的提取、清洗,得出每篇文章提及的電影名稱,如圖:

難點2:評論句提取
判斷一篇文章的情緒,最簡單的做法是通過提取所有情緒詞來統(tǒng)計下詞頻及其權(quán)重可得到一個粗糙的結(jié)果,但這樣的結(jié)果對“影評”類文章不是很準(zhǔn)確。
根據(jù)觀察,一篇電影評論文章中,往往會有大段的電影情節(jié)描述,然后夾雜一兩句評論。而有些電影本身劇情就是比較負(fù)面、陰暗的(如災(zāi)難片類的),但影片本身質(zhì)量很高(如《釜山行》,豆瓣評分8.2),如果文章內(nèi)容包含大量的劇情描述,那么得到關(guān)鍵詞會偏向于負(fù)面情緒,并不能用于表達(dá)出作者對電影的喜好情緒。
因此我使用了這樣的提取策略:
- 跳過電影名稱多于一個的文章(不確定因素太多)
- 直接相關(guān)語句子:包含電影名的句子
- 間接相關(guān)句子:包含點評詞語的句子,如:“這部電影|豆瓣評分|總的來說|看完之后|電影結(jié)束|個人感受...”等等
- 總結(jié)性段落:文章標(biāo)題和文章最后段落
評論句子提取的結(jié)果示例如下:


這樣的策略對有些內(nèi)容不是很適用,例如這樣的標(biāo)題:《同樣是豆瓣9.2分,它或許比《摔跤吧!爸爸》更深》,這是典型的“借勢營銷”型文案,文章內(nèi)容中推介的是另外一部韓國電影《熔爐》,而時下《摔跤吧!爸爸》正熱,標(biāo)題中帶上這個會更吸引用戶點擊。
另外一個思路是對文章進(jìn)行摘要提取,然后對摘要進(jìn)行情緒識別。而對于文章的主題提取,可以使用在ML算法中的用于解決主題模型問題的算法(如LDA),但不確定是否適合影評這種混合了大量劇情描述的文章內(nèi)容。
難點3:文本的情緒識別
得到相關(guān)評論文本后,便可對文本進(jìn)行分詞及情緒識別,這里有兩種做法,一是使用帶有情緒情感度的專業(yè)詞典,配合專有算法;另外一種是使用機(jī)器學(xué)習(xí)算法。
使用專業(yè)詞典
一開始我使用了大連理工大學(xué)的《大連理工情感詞匯本體庫》,是目前最權(quán)威的中文情緒詞典,共含有情感詞共計27466個,包含了詞語的詞性種類、情感類別、情感強(qiáng)度及極性等信息,例如:
| 詞語 | 詞性種類 | 詞義數(shù) | 詞義序號 | 情感分類 | 強(qiáng)度 | 極性 | 輔助情感分類 | 強(qiáng)度 | 極性 |
|---|---|---|---|---|---|---|---|---|---|
| 無所畏懼 | idiom | 1 | 1 | PH | 7 | 1 | |||
| 手頭緊 | idiom | 1 | 1 | NE | 7 | 0 | |||
| 周到 | adj | 1 | 1 | PH | 5 | 1 | |||
| 言過其實 | idiom | 1 | 1 | NN | 5 | 2 |
中文情感詞匯本體的情感分類體系是在國外比較有影響的Ekman的6大類情感分類體系的基礎(chǔ)上構(gòu)建的。在Ekman的基礎(chǔ)上,詞匯本體加入情感類別“好”對褒義情感進(jìn)行了更細(xì)致的劃分。最終詞匯本體中的情感共分為7大類21小類,如圖:

把情感詞典加入分詞詞典,對候選每個句子進(jìn)行分詞,得出情感詞組,并累加每個情感詞的強(qiáng)度值作為句子的情感值。
但經(jīng)過測試后,發(fā)現(xiàn)預(yù)測效果并不理想,究其原因發(fā)現(xiàn)是情感詞典中命中的詞語太少,在句子中得不到相關(guān)詞語,也就無法判斷情感極性和強(qiáng)度。
使用情感詞典的測試結(jié)果:

而專業(yè)詞典的擴(kuò)展需要專業(yè)領(lǐng)域知識,擴(kuò)展起來很困難,我目前沒找到更新的專業(yè)詞典,國內(nèi)這塊的資料相當(dāng)匱乏,而國外有個知名的SentiWordNet庫,中文NLP研究的難度系數(shù)可想而知。
使用機(jī)器學(xué)習(xí)
鑒于情感詞典的資源限制,決定嘗試使用機(jī)器學(xué)習(xí)來對文本做正、負(fù)面情緒預(yù)測。
1). 構(gòu)建分詞詞典:
分詞需要構(gòu)建專用領(lǐng)域的詞典,這樣得到的分詞結(jié)果才會更精確。
因為只需要有正負(fù)情感類別、不需要有情感強(qiáng)度及極性等信息,我使用了網(wǎng)絡(luò)上公開的一些情感詞典,:
- 《大連理工情感詞匯本體庫》:這里只利用了情感類別
- 《臺灣大學(xué)簡體中文情感極性詞典NTUSD》:2810正極性詞語 + 8276負(fù)極性詞語
- 《知網(wǎng)情感分析用詞語集》:由知網(wǎng)發(fā)布的詞典,包括中文情感詞典和英文情感詞典
- 《BosonNLP情感詞典》(加上后發(fā)現(xiàn)預(yù)測效果并不好,原因是這個詞典其實是預(yù)測文本的分詞結(jié)果,不是整理過的專業(yè)情感詞匯,并沒使用上)
- 國外的 《SentiWordNet》 (只有英文單詞,這次沒有使用)
“正面情感”詞語,如:愛,贊賞,快樂,感同身受,好奇,喝彩,魂牽夢縈,嘉許 ...
“負(fù)面情感”詞語,如:哀傷,半信半疑,鄙視,不滿意,不是滋味兒,后悔,大失所望 ...
“正面評價”詞語,如:不可或缺,部優(yōu),才高八斗,沉魚落雁,催人奮進(jìn),動聽,對勁兒 ...
“負(fù)面評價”詞語,如:丑,苦,超標(biāo),華而不實,荒涼,混濁,畸輕畸重,價高,空洞無物 ...
合并、清洗和去重后,最終構(gòu)建出了14000+個詞的積極情緒詞典,18000+個詞的消極情緒詞典。
積極詞典:

消極詞典:

2). 準(zhǔn)備訓(xùn)練語料
從網(wǎng)上搜集到幾個帶有積極、消極的標(biāo)注的評論語料數(shù)據(jù)集,分別包含了書籍、DVD、音樂、購物領(lǐng)域的各有4000條評論,如下圖:

可惜沒找到中文影評相關(guān)的語料,但找到國外英文的影評語料 ,對,英文資料很豐富。。。
3). 訓(xùn)練模型
由于是文本型特征,分類算法上選擇了樸素貝葉斯,把數(shù)據(jù)分為2份,一半訓(xùn)練,另一半做測試。
使用jieba分詞工具,對文本進(jìn)行分詞得到候選詞組,把得到的詞組作為特征輸入來訓(xùn)練情緒預(yù)測模型。
訓(xùn)練后的模型測試結(jié)果如下:
Classifier stats:
{:categories=>["positive", "negative"],
:category_stats=>
"For category positive, 20731 examples (47.94% of the total) and 144306 total_tokens\n" +
"For category negative, 22512 examples (52.06% of the total) and 91796 total_tokens",
:total_examples=>43243,
:train_times=>43243}
Run measure task for data_type=book
Loading test data for book
Test with 2000(2000~4000) comments for book
Progress(Time: 00:00:14)[2000/2000](100%):|========================================================================================================================|Time: 00:00:14
Measure scores:
{:tp=>796,
:tn=>832,
:fp=>181,
:fn=>191,
:precision=>0.815,
:recall=>0.806,
:f1_score=>0.81}
Accuracy:
Predict 1628 success of 2000, accuracy is 81.4% (?? Good)
Show details?(y/n):n
save correct_words?(y/n): n
Run measure task for data_type=music
Loading test data for music
Test with 2000(2000~4000) comments for music
Progress(Time: 00:00:12)[2000/2000](100%):|========================================================================================================================|Time: 00:00:12
Measure scores:
{:tp=>716,
:tn=>910,
:fp=>237,
:fn=>137,
:precision=>0.751,
:recall=>0.839,
:f1_score=>0.793}
Accuracy:
Predict 1626 success of 2000, accuracy is 81.3% (?? Good)
Show details?(y/n):n
save correct_words?(y/n): n
Run measure task for data_type=dvd
Loading test data for dvd
Test with 2000(2000~4000) comments for dvd
Progress(Time: 00:00:12)[2000/2000](100%):|========================================================================================================================|Time: 00:00:12
Measure scores:
{:tp=>791,
:tn=>851,
:fp=>229,
:fn=>129,
:precision=>0.775,
:recall=>0.86,
:f1_score=>0.815}
Accuracy:
Predict 1642 success of 2000, accuracy is 82.1% (?? Good)
Show details?(y/n):n
save correct_words?(y/n): n
Run measure task for data_type=shopping
Loading test data for shopping
Test with 2000(2000~4000) comments for shopping
Progress(Time: 00:00:11)[2000/2000](100%):|========================================================================================================================|Time: 00:00:11
Measure scores:
{:tp=>970,
:tn=>751,
:fp=>30,
:fn=>249,
:precision=>0.97,
:recall=>0.796,
:f1_score=>0.874}
Accuracy:
Predict 1721 success of 2000, accuracy is 86.1% (?? Good)
Show details?(y/n):n
save correct_words?(y/n): n
訓(xùn)練后的模型在書籍、音樂、影碟及購物評論的語料上都有不錯的效果。
在提取出的影評短句上測試:

又是“無聊”、“又俗又傻”而一個“但”字就反轉(zhuǎn)了情緒,真是難為分類器了:

經(jīng)過反復(fù)對比實驗,發(fā)現(xiàn)語料的質(zhì)量決定了模型的精度,而語料的擴(kuò)展對比擴(kuò)展專業(yè)詞典卻容易多了。例如幾年前都沒有“因吹斯汀”這些網(wǎng)絡(luò)流行詞,更不知道它代表是正面情緒,以后只要不斷更新相關(guān)領(lǐng)域的語料庫來重新訓(xùn)練則可得到更精確的模型。
難點4:如何評估預(yù)測結(jié)果的準(zhǔn)確性
俗話說“是騾子是馬拉出來遛遛”。
得到一個預(yù)測情緒的模型后,便可對影評文章進(jìn)行預(yù)測,但預(yù)測的結(jié)果是否準(zhǔn)確?準(zhǔn)確率又有多高?這又是個問題。
每當(dāng)事情陷入停滯,我就會想起日本漫畫大師安達(dá)充說過“當(dāng)故事情節(jié)發(fā)展不下去的時候,加入一個新角色,是最簡單的做法”。

這時需要祭出一個“旁證”了。這所謂的“旁證”,也就是目前大家比較認(rèn)可的電影評分網(wǎng)站——豆瓣網(wǎng)。
引入“旁證”
大家都知道豆瓣網(wǎng)上的電影用戶通過打星(5力薦,4推薦,3還行,2較差,1很差),轉(zhuǎn)換得出的10分制的評分,我們可簡單把14.9分視作負(fù)面評價、510分視作正面評價,沒有分?jǐn)?shù)的視作中性評價。再把豆瓣的評價結(jié)果視作大部分人認(rèn)同的結(jié)果,當(dāng)然這樣肯定是有偏差的。
大膽假設(shè),小心求證,先試試看吧。
根據(jù)電影名詞典再次去抓取豆瓣網(wǎng)上的電影信息,這次包含了電影分?jǐn)?shù)::

使用獲取到的電影專題『簡書電影院』文章內(nèi)容測試,結(jié)果如下:

1048篇中,豆瓣評分結(jié)果與模型預(yù)測符合的有974篇,準(zhǔn)確率是92.9%,WOW!真的這么準(zhǔn)嗎?
看下詳細(xì)結(jié)果,豆瓣評分是正面的有1022條,預(yù)測對了973篇,例如:

而豆瓣評分是負(fù)面的有28條記錄,而模型只預(yù)測出1篇是負(fù)面的:

真的是模型預(yù)測錯了嗎?
從負(fù)面例子中抽樣看看模型分解的結(jié)果:
評論《麻煩家族》(豆瓣評分4.8)的:

從自動摘要出來的句子來看,實際上文章作者表現(xiàn)出正面情緒,模型預(yù)測為正面,預(yù)測正確 ??。
再看評論同一部電影的另外一個文章的評論:

作者顯然是給了個差評,但模型給了出的預(yù)測是正面,預(yù)測錯誤 ??。
校驗“旁證”
負(fù)例的預(yù)測準(zhǔn)確率低,有兩個原因,一個是豆瓣評分正負(fù)標(biāo)準(zhǔn)的閥值設(shè)定不夠精準(zhǔn),二是訓(xùn)練數(shù)據(jù)不平衡。
之前使用的閥值策略是:“簡單把14分視作負(fù)面評價、510分視作正面評價,沒有分?jǐn)?shù)的視作中性評價”。
我猜測在4~5分這個區(qū)間應(yīng)該是灰度地帶,正負(fù)面評論都會有。為了驗證這個猜想,使用獲取到的所有豆瓣電影分?jǐn)?shù),導(dǎo)入數(shù)據(jù)分析工具中,排除掉沒有分?jǐn)?shù)的條目后得到6500+條電影數(shù)據(jù),其中最低是2.1,最高是9.7。
查看評分分布的直方圖與比例餅圖:

調(diào)整區(qū)間閥值,把2.1-4.9 劃分為一個區(qū)間,系統(tǒng)自動分成了3組分值:

發(fā)現(xiàn)5分以下電影僅占12%。
從評分分布結(jié)果看,在簡書上大部分人寫文章是針對高分(好評)電影為主,低分(差評)電影的文章數(shù)量很少,從提取出來的數(shù)據(jù)量看,兩者比率約為100:3。
解決數(shù)據(jù)不平衡問題
訓(xùn)練數(shù)據(jù)不平衡導(dǎo)致正例過擬合,而負(fù)例欠擬合。
要解決數(shù)據(jù)不平衡問題,可以重新采樣訓(xùn)練集。有兩種方法使不平衡的數(shù)據(jù)集來建立一個平衡的數(shù)據(jù)集——欠采樣和過采樣,解釋如下:
欠采樣:
欠采樣是通過減少豐富類的大小來平衡數(shù)據(jù)集,當(dāng)數(shù)據(jù)量足夠時就該使用此方法。通過保存所有稀有類樣本,并在豐富類別中隨機(jī)選擇與稀有類別樣本相等數(shù)量的樣本,可以檢索平衡的新數(shù)據(jù)集以進(jìn)一步建模。
過采樣:
相反,當(dāng)數(shù)據(jù)量不足時就應(yīng)該使用過采樣,它嘗試通過增加稀有樣本的數(shù)量來平衡數(shù)據(jù)集,而不是去除豐富類別的樣本的數(shù)量。通過使用重復(fù)、自舉或合成少數(shù)類過采樣等方法(SMOTE)來生成新的稀有樣品。
由于訓(xùn)練數(shù)據(jù)不多,我使用了過采樣中的自舉方案。我將另外一個簡書的電影專題『影視天堂』中模型預(yù)測結(jié)果與豆瓣評分結(jié)果一致的內(nèi)容作為訓(xùn)練數(shù)據(jù)集來強(qiáng)化訓(xùn)練模型:

然后再對電影專題『簡書電影院』測試一次:

負(fù)例的準(zhǔn)確率改善了一些些,這說明效果是有的,以后只需繼續(xù)獲取到新的數(shù)據(jù)再“喂”給模型,模型預(yù)測結(jié)果會越來越精準(zhǔn)。
總結(jié)
至此,得到一個不算成熟的電影情緒預(yù)測模型,可以用來做一些有趣的統(tǒng)計分析了。
專題分析
將『影視天堂』專題的分析結(jié)果在數(shù)據(jù)分析工具上進(jìn)行數(shù)據(jù)可視化展示,得到一個「長尾圖」:

從報表中可得到這些信息:
- 最多人關(guān)注的影視作品前5是《歡樂頌》、《歡樂頌2》、《神奇女俠》、《白鹿原》和《深夜食堂》
- 最多人喜歡的是《歡樂頌》(豆瓣評分7.3)
- 最多差評的卻是《歡樂頌2》(豆瓣評分5.3),看來觀眾的期望值被第一部放大了很多
注1:嚴(yán)格來說《歡樂頌》不是電影而是電視劇作品,在用豆瓣網(wǎng)的數(shù)據(jù)構(gòu)建電影詞典時我沒有做嚴(yán)格區(qū)分
注2:專題的數(shù)據(jù)獲取是在5月份完成的,以及簡書專題的最新收錄文章有訪問限制,無法獲取到舊的文章,因此得到的當(dāng)時熱門影視作品的影評,從而呈現(xiàn)出信息跟當(dāng)時熱播作品比較相關(guān)
整體用戶分析
再對先前獲取到的1萬個簡書用戶的近60萬篇文章內(nèi)容,運(yùn)行相應(yīng)的Pipeline進(jìn)行電影情緒數(shù)據(jù)的提取。

可視化數(shù)據(jù)后得到圖表:

現(xiàn)在可以看看,簡書上用戶給予好評的電影有哪些,使用「詞云圖」展示如下:

簡書用戶給予差評的電影有哪些:

個體用戶分析
現(xiàn)在也可以精準(zhǔn)了解每一個簡書用戶的電影口味了,以『毒舌電影 - 簡書』 為例子:

注3:本文發(fā)表時簡書上“毒舌電影”經(jīng)歷過被封事件后已改名為“Sir電影”;簡書專題“影視天堂”已改名為“簡書電影”
以后做電影個性化推薦可就不要推薦錯了 ??。