手把手教你完成一個數(shù)據(jù)科學小項目(9):情感分析與詞云

前言

請先閱讀“中國年輕人正帶領(lǐng)國家走向危機”,這鍋背是不背? 一文,以對“手把手教你完成一個數(shù)據(jù)科學小項目”系列有個全局性的了解。

本系列代碼統(tǒng)一開源在GitHub:DesertsX/gulius-projects ,感興趣的朋友可以先行 star 哈。

截至目前我們已經(jīng)完成了數(shù)據(jù)爬取、數(shù)據(jù)提取與IP查詢、數(shù)據(jù)異常與清洗、評論數(shù)變化情況分析省份提取與可視化城市提取與可視化、經(jīng)緯度獲取與BDP可視化Emoji提取與分布圖譜。本文將用snownlp對評論進行情感打分,并提取高頻詞繪制詞云。

SnowNLP 情感打分

讀取數(shù)據(jù),并提前安裝好這個NLP的庫:pip install snownlp 。其他用法參見:snownlp - github ,本文只對每條評論數(shù)據(jù)進行情感打分。

import pandas as pd
from snownlp import SnowNLP
df = pd.read_csv('Sina_Finance_Comments_All_20180811_Cleaned.csv',encoding='utf-8')

def sentiment(content):
    s = SnowNLP(content)
    return s.sentiments

df['sentiment'] = df.content.apply(sentiment)

df_sent = df[['content', 'sentiment']]
df_sent.sort_values(by=['sentiment'],ascending=False)

注意,snownlp 是基于電商評價的語料語料,所以對其他語料進行情感打分可能效果不是很好,可自行嘗試其他庫pyltp/thunlp/pyhanlp/bosonnlp進行比較,“擇其善者而從之”...

如果評論數(shù)據(jù)量大的話,這一步會耗些時間,可以喝杯枸杞酒壓壓驚。

先來看看正面的評價,評分處于0-1之間,越接近1越正面:


再來看看負面的評論

df_sent.sort_values(by=['sentiment'])

本次就不進行更細致的挖掘了,大家可自行進行探索,相信經(jīng)過這一個系列的洗禮,諸位pandas操作起來已經(jīng)滾瓜切菜,不在話下了吧。

基于 TF-IDF 算法的關(guān)鍵詞抽取

接下來看看評論里出現(xiàn)的關(guān)鍵詞都有哪些,直接用jieba提取就行,allowPOS參數(shù)可設(shè)置輸出對應(yīng)詞性的詞語。

import jieba.analyse
all_content = df.content.values.tolist()
extract_tags = "  ".join(jieba.analyse.extract_tags(' '.join(all_content), topK=200, withWeight=False, allowPOS=('ns', 'n')))
print(extract_tags)

自行感受一下......大家反應(yīng)強烈,并不愿背鍋。

年輕人  買房  攤手  借貸  房子  貸款  國家  韭菜  危機  文章  孩子  債務(wù)  房價  中國  標題  手機  買手機  評論  背鍋  不語  拜拜  信用卡  大牌  衣服  父母  咖啡  買房子  銀行  經(jīng)濟  篇文章  感覺  問題  智能手機  大家 
全款  意思  時候  媒體  內(nèi)需  社會  俄羅斯  黑鍋  一代人  東西  大鍋  原文  臥槽  家庭  美國  杠桿  套房  有點  財經(jīng)  租房  年輕一代  校園  新聞  邏輯  腦子  負債  花錢  磚家  消費觀念  白條  地方  蘋果  惡心  干嘛  人家   
能力  道理  智商  屌絲  毛病  信貸  水平  城市  老年人  習慣  奢侈品  數(shù)據(jù)  錢包  生娃  小編  廣州  作者  祖國  節(jié)奏  英國  老一輩  中年人  關(guān)鍵  無力  言論  內(nèi)容  車貸  壓力  學區(qū)  生小孩  陰險  人生  物價  時代  歷史 
買點  垃圾  窮人  老師  存款  利息  問問  屁事  消費觀  消費主義  世界  北京  責任  后背  大學生  代表  結(jié)果  神經(jīng)病  國際金融  氣死  租金  合格  降級  長大  編輯  買車  故事  眼球  企業(yè)  貢獻  車子  黑線  風險  單身   
高利貸  褲腰帶  同齡人  兄弟  爺爺奶奶  奶茶  月薪  專家  壞事  狗屁  過日子  要點  事情  縣城  白眼  獨生子女  基本  爸爸  課本上  博主  沙雕  辣雞  背鍋俠  次貸  玩玩  負債率  重點  人民  報章  過度   
拖后腿  帽子  醫(yī)療  政府  價格  小鳥  老人  外國  玩樂  價值觀  螞蟻  代人  回家   通篇  創(chuàng)業(yè)  經(jīng)濟學  交稅  公積金  結(jié)論  領(lǐng)路人  時間  丈母娘  小時候  啥意思  樣子  馬車  咖啡館  身體  房奴  全部  天將  思想

詞云

這一步繁瑣了,大家有簡潔的代碼可替換掉。

import jieba
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

all_content = df.content.values.tolist()
print(len(all_content), '\n', all_content[-1])

segment = []
for line in all_content:
    try:
        segs = jieba.lcut(line)
        for seg in segs:
            if len(seg)>1 and seg != '\r\n':
                segment.append(seg)
    except:
        print(line)
        continue
# 去停用詞
words_df = pd.DataFrame({"segment": segment})

words_stat = words_df.groupby(by=['segment'])['segment'].agg({"計數(shù)": np.size})
words_stat = words_stat.reset_index().sort_values(by=["計數(shù)"], ascending=False)
words_stat.head(20)

高頻詞如下所示,和上面提取的關(guān)鍵詞很多重合:


老朋友pyecharts輕松繪制顏值不俗的詞云:

from pyecharts import WordCloud
wordcloud = WordCloud(width=800, height=520)
wordcloud.add("評論詞云", words_stat['segment'], words_stat['計數(shù)'], word_size_range=[20, 100])
wordcloud

輿論情況如下:


評論內(nèi)容詳情

最后再提下,用pandas讀取的數(shù)據(jù),無法看到每條評論的全部內(nèi)容,不太清楚有沒有參數(shù)可以設(shè)置查看全部文本。

這里自行查看長度在50-100區(qū)間內(nèi)的全部評論數(shù)據(jù):

import pandas as pd
df = pd.read_csv('Sina_Finance_Comments_All_20180811_toBDP.csv',encoding='utf-8')
df_wa = df[['No','nick','content','length','area','pro','city','emojis_list','time','stamp']]
cont_50_100 = df_wa_len[(df_wa_len['length']<100) & (df_wa_len['length']>=50)]['content'].values.tolist()
for c in cont_50_100:
    print(c,'\n')

完結(jié)撒花

以上算是更新完了本項目的全部內(nèi)容,不算長也不算短的旅程里,耳聞目睹了不少小伙伴去DesertsX/gulius-projects - GitHub下載了代碼,并跟著跑程序,古柳也很好奇大家的感受如何,歡迎留言評論進行反饋和分享哈。

此外,古柳也相信大家已經(jīng)能夠應(yīng)用到自己感興趣的數(shù)據(jù)集上并進行好玩的分析、挖掘和可視化了,期待大家分享自己的作品哈。

這里先劇透下古柳想玩的一些玩意,以之前熱播的于正的清宮劇《延禧攻略》為例,可以用MIT的深度學習訓練后的接口進行城市街景識別,看看下圖“大豬蹄子”皇上的場景是什么?



誠不我欺,給出的結(jié)果還是挺可靠的:

Type of environment: outdoor
Scene categories: temple/asia (0.778)
Scene attributes: man-made, open area, natural light, sunny, touring, clouds, shingles, far-away horizon, semi-enclosed area

再用偶然接觸到的某知識圖譜API看看與實體“延禧攻略”相關(guān)的內(nèi)容:



由于原本數(shù)據(jù)來源就是豆瓣等平臺,所以還是蠻準確的,能深挖的內(nèi)容也很多,比如古柳腦洞清奇的把這個知識圖譜API用來當獲取豆瓣數(shù)據(jù)的“爬蟲”接口了。逃......以上,這里先賣個關(guān)子,后續(xù)揭秘這兩個好玩的網(wǎng)站哈。

相關(guān)文章

本系列及后續(xù)其他項目的代碼統(tǒng)一開源在GitHub:DesertsX/gulius-projects ,感興趣的朋友可以先行 star 哈。

本系列文章:
“中國年輕人正帶領(lǐng)國家走向危機”,這鍋背是不背?
手把手教你完成一個數(shù)據(jù)科學小項目(1):數(shù)據(jù)爬取
手把手教你完成一個數(shù)據(jù)科學小項目(2):數(shù)據(jù)提取、IP 查詢
手把手教你完成一個數(shù)據(jù)科學小項目(3):數(shù)據(jù)異常與清洗
手把手教你完成一個數(shù)據(jù)科學小項目(4):評論數(shù)變化情況
手把手教你完成一個數(shù)據(jù)科學小項目(5):省份提取與可視化
手把手教你完成一個數(shù)據(jù)科學小項目(6):城市提取與可視化
手把手教你完成一個數(shù)據(jù)科學小項目(7):經(jīng)緯度獲取與BDP可視化
手把手教你完成一個數(shù)據(jù)科學小項目(8):Emoji提取與分布圖譜

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容