前言
請(qǐng)先閱讀“中國年輕人正帶領(lǐng)國家走向危機(jī)”,這鍋背是不背卡乾? 一文酣胀,以對(duì)“手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目”系列有個(gè)全局性的了解。
本系列代碼統(tǒng)一開源在GitHub:DesertsX/gulius-projects 全度,感興趣的朋友可以先行 star 哈煮剧。
截至目前我們已經(jīng)完成了數(shù)據(jù)爬取、數(shù)據(jù)提取與IP查詢将鸵、數(shù)據(jù)異常與清洗勉盅、評(píng)論數(shù)變化情況分析、省份提取與可視化顶掉、城市提取與可視化草娜、經(jīng)緯度獲取與BDP可視化、Emoji提取與分布圖譜痒筒。本文將用snownlp對(duì)評(píng)論進(jìn)行情感打分宰闰,并提取高頻詞繪制詞云。
SnowNLP 情感打分
讀取數(shù)據(jù)簿透,并提前安裝好這個(gè)NLP的庫:pip install snownlp
移袍。其他用法參見:snownlp - github ,本文只對(duì)每條評(píng)論數(shù)據(jù)進(jìn)行情感打分老充。
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 是基于電商評(píng)價(jià)的語料語料,所以對(duì)其他語料進(jìn)行情感打分可能效果不是很好啡浊,可自行嘗試其他庫pyltp/thunlp/pyhanlp/bosonnlp
進(jìn)行比較觅够,“擇其善者而從之”...
如果評(píng)論數(shù)據(jù)量大的話,這一步會(huì)耗些時(shí)間巷嚣,可以喝杯枸杞酒壓壓驚蔚约。
先來看看正面的評(píng)價(jià),評(píng)分處于0-1之間涂籽,越接近1越正面:
再來看看負(fù)面的評(píng)論
df_sent.sort_values(by=['sentiment'])
本次就不進(jìn)行更細(xì)致的挖掘了苹祟,大家可自行進(jìn)行探索,相信經(jīng)過這一個(gè)系列的洗禮评雌,諸位pandas操作起來已經(jīng)滾瓜切菜树枫,不在話下了吧。
基于 TF-IDF 算法的關(guān)鍵詞抽取
接下來看看評(píng)論里出現(xiàn)的關(guān)鍵詞都有哪些景东,直接用jieba提取就行砂轻,allowPOS
參數(shù)可設(shè)置輸出對(duì)應(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)強(qiáng)烈斤吐,并不愿背鍋搔涝。
年輕人 買房 攤手 借貸 房子 貸款 國家 韭菜 危機(jī) 文章 孩子 債務(wù) 房價(jià) 中國 標(biāo)題 手機(jī) 買手機(jī) 評(píng)論 背鍋 不語 拜拜 信用卡 大牌 衣服 父母 咖啡 買房子 銀行 經(jīng)濟(jì) 篇文章 感覺 問題 智能手機(jī) 大家
全款 意思 時(shí)候 媒體 內(nèi)需 社會(huì) 俄羅斯 黑鍋 一代人 東西 大鍋 原文 臥槽 家庭 美國 杠桿 套房 有點(diǎn) 財(cái)經(jīng) 租房 年輕一代 校園 新聞 邏輯 腦子 負(fù)債 花錢 磚家 消費(fèi)觀念 白條 地方 蘋果 惡心 干嘛 人家
能力 道理 智商 屌絲 毛病 信貸 水平 城市 老年人 習(xí)慣 奢侈品 數(shù)據(jù) 錢包 生娃 小編 廣州 作者 祖國 節(jié)奏 英國 老一輩 中年人 關(guān)鍵 無力 言論 內(nèi)容 車貸 壓力 學(xué)區(qū) 生小孩 陰險(xiǎn) 人生 物價(jià) 時(shí)代 歷史
買點(diǎn) 垃圾 窮人 老師 存款 利息 問問 屁事 消費(fèi)觀 消費(fèi)主義 世界 北京 責(zé)任 后背 大學(xué)生 代表 結(jié)果 神經(jīng)病 國際金融 氣死 租金 合格 降級(jí) 長大 編輯 買車 故事 眼球 企業(yè) 貢獻(xiàn) 車子 黑線 風(fēng)險(xiǎn) 單身
高利貸 褲腰帶 同齡人 兄弟 爺爺奶奶 奶茶 月薪 專家 壞事 狗屁 過日子 要點(diǎn) 事情 縣城 白眼 獨(dú)生子女 基本 爸爸 課本上 博主 沙雕 辣雞 背鍋俠 次貸 玩玩 負(fù)債率 重點(diǎn) 人民 報(bào)章 過度
拖后腿 帽子 醫(yī)療 政府 價(jià)格 小鳥 老人 外國 玩樂 價(jià)值觀 螞蟻 代人 回家 通篇 創(chuàng)業(yè) 經(jīng)濟(jì)學(xué) 交稅 公積金 結(jié)論 領(lǐng)路人 時(shí)間 丈母娘 小時(shí)候 啥意思 樣子 馬車 咖啡館 身體 房奴 全部 天將 思想
詞云
這一步繁瑣了厨喂,大家有簡潔的代碼可替換掉。
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({"計(jì)數(shù)": np.size})
words_stat = words_stat.reset_index().sort_values(by=["計(jì)數(shù)"], ascending=False)
words_stat.head(20)
高頻詞如下所示庄呈,和上面提取的關(guān)鍵詞很多重合:
老朋友
pyecharts
輕松繪制顏值不俗的詞云:
from pyecharts import WordCloud
wordcloud = WordCloud(width=800, height=520)
wordcloud.add("評(píng)論詞云", words_stat['segment'], words_stat['計(jì)數(shù)'], word_size_range=[20, 100])
wordcloud
輿論情況如下:
評(píng)論內(nèi)容詳情
最后再提下蜕煌,用pandas讀取的數(shù)據(jù),無法看到每條評(píng)論的全部內(nèi)容诬留,不太清楚有沒有參數(shù)可以設(shè)置查看全部文本斜纪。
這里自行查看長度在50-100區(qū)間內(nèi)的全部評(píng)論數(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é)撒花
以上算是更新完了本項(xiàng)目的全部內(nèi)容,不算長也不算短的旅程里文兑,耳聞目睹了不少小伙伴去DesertsX/gulius-projects - GitHub下載了代碼盒刚,并跟著跑程序,古柳也很好奇大家的感受如何绿贞,歡迎留言評(píng)論進(jìn)行反饋和分享哈因块。
此外,古柳也相信大家已經(jīng)能夠應(yīng)用到自己感興趣的數(shù)據(jù)集上并進(jìn)行好玩的分析籍铁、挖掘和可視化了贮聂,期待大家分享自己的作品哈。
這里先劇透下古柳想玩的一些玩意寨辩,以之前熱播的于正的清宮劇《延禧攻略》為例,可以用MIT的深度學(xué)習(xí)訓(xùn)練后的接口進(jìn)行城市街景識(shí)別歼冰,看看下圖“大豬蹄子”皇上的場景是什么靡狞?
誠不我欺,給出的結(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
再用偶然接觸到的某知識(shí)圖譜API看看與實(shí)體“延禧攻略”相關(guān)的內(nèi)容:
由于原本數(shù)據(jù)來源就是豆瓣等平臺(tái)隔嫡,所以還是蠻準(zhǔn)確的甸怕,能深挖的內(nèi)容也很多,比如古柳腦洞清奇的把這個(gè)知識(shí)圖譜API用來當(dāng)獲取豆瓣數(shù)據(jù)的“爬蟲”接口了腮恩。逃......以上梢杭,這里先賣個(gè)關(guān)子,后續(xù)揭秘這兩個(gè)好玩的網(wǎng)站哈秸滴。
相關(guān)文章
本系列及后續(xù)其他項(xiàng)目的代碼統(tǒng)一開源在GitHub:DesertsX/gulius-projects 武契,感興趣的朋友可以先行 star 哈。
本系列文章:
“中國年輕人正帶領(lǐng)國家走向危機(jī)”荡含,這鍋背是不背咒唆?
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(1):數(shù)據(jù)爬取
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(2):數(shù)據(jù)提取、IP 查詢
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(3):數(shù)據(jù)異常與清洗
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(4):評(píng)論數(shù)變化情況
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(5):省份提取與可視化
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(6):城市提取與可視化
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(7):經(jīng)緯度獲取與BDP可視化
手把手教你完成一個(gè)數(shù)據(jù)科學(xué)小項(xiàng)目(8):Emoji提取與分布圖譜