用Python分析張同學dy評論數據

来源:https://www.cnblogs.com/123456feng/archive/2022/03/29/16071484.html
-Advertisement-
Play Games

首先 相信有很多小伙伴都喜歡玩抖音吧,最近抖音張同學突然火了,兩個月漲粉一千多萬。看了他的視頻,滿滿的生活氣息,讓人有一種家的感覺。這就讓我很感興趣了,必須得用Python對他分析一下。 今天這篇文章,我抓取了張同學的視頻的評論數據,想從文本分析的角度,挖掘一下大家對張同學感興趣的點。 張同學 10 ...


首先

相信有很多小伙伴都喜歡玩抖音吧,最近抖音張同學突然火了,兩個月漲粉一千多萬。看了他的視頻,滿滿的生活氣息,讓人有一種家的感覺。這就讓我很感興趣了,必須得用Python對他分析一下。
在這裡插入圖片描述

今天這篇文章,我抓取了張同學的視頻的評論數據,想從文本分析的角度,挖掘一下大家對張同學感興趣的點。

張同學 10.4號開始發視頻,視頻的點贊量一直很高,11.17 號的視頻達到了頂峰,收穫 250w 個贊,之後關註量也開啟了暴漲。

在這裡插入圖片描述

所以挖掘 11.17 號視頻的評論,更有助於我們達成目的。

1. 抓取數據

抖音出了 web 版,抓取數據方便了很多。
在這裡插入圖片描述

滑到網頁評論區,在瀏覽器網路請求里過濾包含comment的請求,不斷刷新評論就可以看到評論的介面。

有了介面,就可以寫 Python 程式模擬請求,獲取評論數據。

請求數據要設置一定間隔,避免過大請求,影響別人服務

抓取評論數據有兩點需要註意:

•有時候介面可能返回空數據,因此需要多試幾次,一般過了人工滑動驗證後的介面基本可用

•不同頁面之間的數據可能會重覆,所以需要跳頁請求

在這裡插入圖片描述

2. EDA

11.17 號的視頻有 12w 條評論,我只抓取了 1w 多條。

在這裡插入圖片描述

text列是評論。

先對數據做一些探索性的分析,之前介紹過幾個EDA工具,可以自動產出基礎的數據統計和圖表。

這次我用的是ProfileReport

#####Python學習交流Q群:906715085#####
#eda
profile = ProfileReport(df, title='張同學抖音評論數據', explorative=True)
profile

 

在這裡插入圖片描述

評論時間分佈

從評論的時間分佈來看,由於發佈的視頻的時間是17號,所有17、18號評論發佈量比較多。不過再往後甚至到了 12.9 號,仍然有不少新評論產生,說明視頻熱度確實很高。
在這裡插入圖片描述

評論的長度分佈

大多數評論的字數在 20 以內,基本不超過 40 個字,說明都是短文本。
在這裡插入圖片描述

評論者身份

參與評論的人里, 99.8% 是沒有認證身份的,說明評論用戶里基本都是普通用戶。

在這裡插入圖片描述

3. LDA

上面的統計數據還是太粗略了。

但我們要想知道大家的感興趣點在哪,又不可能細到把 1.2w 條評論全部看完。

所以需要對這些評論先做一次歸類,相當於把數據升維,抽象。因為只有將數據升維,瞭解每個維度的含義和占比,才能幫助我們從全局角度掌握數據。

這裡我用LDA演算法對文本聚類,聚合在一起的評論可以看做屬於同一個主題。

LDA演算法的核心思想有兩點:

•具有一定相似性的文本會聚合在一起,形成一個主題。每個主題包含生成該主題需要的詞,以及這些詞的概率分佈。以此可以人為推斷出主題的類別。

•每篇文章會它有在所有主題下的概率分佈,以此可以推斷出文章屬於哪個主題。

比如,經過LDA演算法聚類後,某個主題中,戰爭、軍費這類詞出現概率很高,那麼我們可以將該主題歸類為軍事。如果有一篇文章屬於軍事主題的概率很高,我們就可以將該文章分為軍事一類。

簡單介紹完LDA的理論,下麵我們來實戰一下。

在這裡插入圖片描述

3.1 分詞、去停用詞

#分詞

emoji = {'可憐', '發呆', '', '靈機一動', '擊掌', '送心', '泣不成聲', '哈欠', '舔屏', '偷笑', '愉快', '再見', '666', '熊吉', '尬笑', '吐舌', '撇嘴', '', '綠帽子', '捂臉', '呆無辜', '強壯', '震驚', '陰險', '', '給力', '打臉', '咖啡', '', '一起加油', '酷拽', '流淚', '黑臉', '愛心', '笑哭', '機智', '', '微笑袋鼠', '', '閉嘴', '來看我', '', '憨笑', '不失禮貌的微笑', '紅臉', '摳鼻', '調皮', '紫薇別走', '', '比心', '悠閑', '玫瑰', '抱拳', '小鼓掌', '握手', '姦笑', '害羞', '快哭了', '', '驚訝', '豬頭', '', '暗中觀察', '不看', '啤酒', '呲牙', '發怒', '絕望的凝視', '大笑', '吐血', '壞笑', '凝視', '可愛', '擁抱', '擦汗', '鼓掌', '勝利', '感謝', '思考', '微笑', '疑問', '我想靜靜', '靈光一閃', '白眼', '淚奔', ''}
stopwords = [line.strip() for line in open('stop_words.txt', encoding='UTF-8').readlines()]

def fen_ci(x):
    res = []
    for x in jieba.cut(x):
        if x in stopwords or x in emoji or x in ['[', ']']:
            continue
        res.append(x)
    return ' '.join(res)

df['text_wd'] = df['text'].apply(fen_ci)

 

由於評論中有許多 emoji 表情, 我抽取了所以 emoji 表情對應的文本,生成 emoji 數組,用於過濾表情詞。

3.2 調用LDA

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
import numpy as np

def run_lda(corpus, k):
    cntvec = CountVectorizer(min_df=2, token_pattern='\w+')
    cnttf = cntvec.fit_transform(corpus)
    
    lda = LatentDirichletAllocation(n_components=k)
    docres = lda.fit_transform(cnttf)
    
    return cntvec, cnttf, docres, lda
    
cntvec, cnttf, docres, lda = run_lda(df['text_wd'].values, 8)

 

在這裡插入圖片描述

經過多次試驗,將數據分成 8 類效果較好。

選取每個主題下出現概率 top20 的詞:
在這裡插入圖片描述

主題的詞分佈

從這些詞概率分佈,歸納各主題的類別,主題0 ~ 主題7分別是:居然看完、知道鑰匙在哪、農村生活、喂狗、拍攝手法、還用鎖門?、雞蛋放鹽多、襪子放枕頭下。

統計主題占比:
在這裡插入圖片描述

主題占比

紅色的是主題3(喂狗),占比最大,很多人評論是:以為要做給自己吃,沒想到是喂狗的。我看的時候也是這樣認為的。

其他各主題占比比較均勻。

經過主題分類後,我們可以發現,張同學不僅僅是農村生活引起了大家的關註,更多的是視頻中大量反常態的鏡頭。

最後,用樹狀圖展示各主題及對應的具體評論。
在這裡插入圖片描述

主題下的文章

圖太大,只截取了一部分。

從抓數據到分析,做得比較倉促。

核心代碼已經貼在文章里。完整代碼還在整理,需要代碼或者文章有疑問的朋友可以在評論區留言。應該很多人還是喜歡張同學的,這一篇就到這裡就莫得了。

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一個簡單的Java程式 // HelloJava.java public class HelloJava { public static void main(String[] args) { System.out.println("Hello Java!"); } } Java是區分大小寫的 關鍵字 ...
  • finally的特點 finally:被finally控制的語句體一定會執行 * 註意:如果在執行到finally之前jvm退出了,就不能執行了。 * * A:格式 * try...catch...finally... * B:用於釋放資源,在IO流操作和資料庫操作中會見到 package cn.i ...
  • 練習: 存儲學生對象並遍歷,創建TreeSet集合使用無參構造方法,並按照年齡從小到大的順序排序,若年齡相同再按照姓名的字母順序排序 分析: 1.創建學生類,成員變數name,age;無參構造,帶參構造;get\set方法; 2.創建測試類,添加數據併進行排序;直接排序會報錯 3.需要Student ...
  • 過濾器就是過濾條件,對已經定位到數組中的 DOM 對象進行過濾篩選,過濾條件不能獨立出現在 jquery 函數,如果使用只能出現在選擇器後方 ...
  • 背景 很多時候,我們項目在開發環境和生成環境的環境配置是不一樣的,例如,資料庫配置,在開發的時候,我們一般用測試資料庫,而在生產環境的時候,我們是用正式的數據,這時候,我們可以利用profile在不同的環境下配置用不同的配置文件或者不同的配置。 解決方案 spring boot允許你通過命名約定按照 ...
  • 程式的異常:Throwable * 嚴重問題:Error 我們不處理。這種問題一般都是很嚴重的,比如說記憶體溢出。 * 問題:Exception * A:編譯期問題:不是RuntimeException的異常 必須進行處理的,因為你不處理,編譯就不能通過。 * B:運行期問題:RuntimeExcep ...
  • 一、前言 掃描件一直受大眾青睞,任何紙質資料在掃描之後進行存檔,想使用時手機就能打開,省心省力。但是掃描件的優點也恰恰造成了它的一個缺點,因為是通過電子設備掃描,所以出來的是圖像,如果想要處理文件上的內容,直接操作是無法實現的。 那要是想要引用其中的內容怎麼辦呢?別擔心,Python幫你解決問題。 ...
  • 一、序言 Spring Cache是Spring體系下標準化緩存框架。Spring Cache有如下優勢: 緩存品種多 支持緩存品種多,常見緩存Redis、EhCache、Caffeine均支持。它們之間既能獨立使用,也能組合使用。 平滑遷移 Spring內部支持的緩存,可實現無縫平滑遷移,無需修改 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...