版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
目錄1引言(緒論)31.1研究背景及意義31.2全文的框架結(jié)構(gòu)32相關(guān)技術(shù)介紹33數(shù)據(jù)獲取的實(shí)現(xiàn)43.1爬蟲的設(shè)計(jì)思想43.11歌單數(shù)據(jù)53.12最優(yōu)歌單53.13歌曲評論數(shù)據(jù)53.2爬蟲的實(shí)現(xiàn)與結(jié)果展示63.21歌單數(shù)據(jù)爬蟲代碼實(shí)現(xiàn)63.22最優(yōu)歌單代碼實(shí)現(xiàn)83.23歌曲評論爬蟲代碼實(shí)現(xiàn)94數(shù)據(jù)預(yù)處理分析及可視化134.1數(shù)據(jù)預(yù)處理134.2數(shù)據(jù)分析154.21關(guān)于評論的分析154.22LDA主題分析174.23基于時(shí)間的情感趨勢分析以及熱評分析204.24情感趨勢在時(shí)間維度上得分析214.3數(shù)據(jù)可視化平臺235總結(jié)246引用文獻(xiàn)25致謝摘要:音樂評論數(shù)據(jù)作為一種重要的用戶生成內(nèi)容,反映了聽眾對音樂作品的主觀感受和評價(jià)。然而,由于音樂評論數(shù)據(jù)具有海量、非結(jié)構(gòu)化等特點(diǎn),傳統(tǒng)的數(shù)據(jù)分析方法往往難以應(yīng)對。因此,如何利用現(xiàn)代技術(shù)手段對這些數(shù)據(jù)進(jìn)行高效、準(zhǔn)確的分析,成為了音樂研究領(lǐng)域亟待解決的問題?!P(guān)鍵詞:爬蟲;機(jī)器學(xué)習(xí);數(shù)據(jù)分析;網(wǎng)易云;情感分析1引言(緒論)1.1研究背景及意義音樂作為人類文化的重要組成部分,一直以來都承載著表達(dá)情感、傳遞信息和記錄歷史的重要使命。隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,音樂產(chǎn)業(yè)也迎來了前所未有的變革。在線音樂平臺如雨后春筍般涌現(xiàn),為廣大音樂愛好者提供了海量的音樂資源以及互動(dòng)交流的場所。在這些平臺上,用戶不僅可以欣賞到各種風(fēng)格的音樂作品,還可以發(fā)表自己的評論和觀點(diǎn),形成了一個(gè)龐大的音樂評論數(shù)據(jù)集合。音樂評論數(shù)據(jù)作為一種重要的用戶生成內(nèi)容,反映了聽眾對音樂作品的主觀感受和評價(jià)。然而,由于音樂評論數(shù)據(jù)具有海量、非結(jié)構(gòu)化等特點(diǎn),傳統(tǒng)的數(shù)據(jù)分析方法往往難以應(yīng)對。因此,如何利用現(xiàn)代技術(shù)手段對這些數(shù)據(jù)進(jìn)行高效、準(zhǔn)確的分析,成為了音樂研究領(lǐng)域亟待解決的問題。近年來,隨著Python等編程語言的普及以及爬蟲、機(jī)器學(xué)習(xí)等技術(shù)的發(fā)展,為音樂評論數(shù)據(jù)的分析提供了強(qiáng)有力的支持。Python作為一種易學(xué)易用、功能強(qiáng)大的編程語言,在音樂數(shù)據(jù)處理、分析以及可視化等方面具有得天獨(dú)厚的優(yōu)勢。同時(shí),爬蟲技術(shù)可以幫助我們自動(dòng)化地收集音樂評論數(shù)據(jù),極大地提高了數(shù)據(jù)獲取的效率和準(zhǔn)確性。而機(jī)器學(xué)習(xí)技術(shù)則可以通過對大量數(shù)據(jù)的訓(xùn)練和學(xué)習(xí),發(fā)現(xiàn)數(shù)據(jù)中的隱藏規(guī)律和模式,為音樂評論數(shù)據(jù)的深度分析提供了可能。[5]基于上述背景,本文旨在利用Python編程語言是應(yīng)用爬蟲技術(shù)抓取最近時(shí)間內(nèi)的音樂相關(guān)數(shù)據(jù)引入paddlehub進(jìn)行情感分析對音樂評論數(shù)據(jù)進(jìn)行深入的分析和研究,探究聽眾對音樂作品的態(tài)度和情感傾向;同時(shí),結(jié)合機(jī)器學(xué)習(xí)算法,對評論數(shù)據(jù)進(jìn)行邏輯回歸分析,挖掘其中的潛在信息和價(jià)值。本文的研究主旨是針對于用戶的評論情感進(jìn)行著重分析,探索用戶在不同的維度下情感的變化。1.2全文的框架結(jié)構(gòu)2相關(guān)技術(shù)介紹數(shù)據(jù)爬蟲:我主要采用了Selenium和Requests這兩個(gè)強(qiáng)大的工具。Selenium是一個(gè)用于自動(dòng)化Web瀏覽器操作的工具,它模擬真實(shí)用戶的行為,能夠執(zhí)行如點(diǎn)擊、輸入、滾動(dòng)等瀏覽器操作,從而獲取網(wǎng)頁上的動(dòng)態(tài)內(nèi)容。Selenium支持多種瀏覽器和編程語言,具有高度的靈活性和可擴(kuò)展性。通過使用Selenium,我能夠輕松地爬取那些需要用戶交互或JavaScript渲染的網(wǎng)頁數(shù)據(jù),有效地克服了傳統(tǒng)爬蟲在處理這類網(wǎng)頁時(shí)遇到的困難。而Requests則是一個(gè)用于發(fā)送HTTP請求的Python庫,它簡潔易用,功能強(qiáng)大。通過Requests,我可以方便地發(fā)送GET、POST等請求,獲取網(wǎng)頁的HTML內(nèi)容,進(jìn)而進(jìn)行解析和提取所需的數(shù)據(jù)。Requests還支持自定義請求頭、cookies等參數(shù),以及處理網(wǎng)絡(luò)異常和重試機(jī)制,使得我的爬蟲程序更加穩(wěn)定和可靠。數(shù)據(jù)處理:我主要采用了pandas這一強(qiáng)大的數(shù)據(jù)分析工具。pandas是一個(gè)開源的Python數(shù)據(jù)分析庫,它提供了豐富的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,使得數(shù)據(jù)清洗、轉(zhuǎn)換、聚合和可視化等操作變得簡單而高效。通過使用pandas,我能夠方便地處理各種類型的數(shù)據(jù),包括結(jié)構(gòu)化數(shù)據(jù)、時(shí)間序列數(shù)據(jù)等。pandas的DataFrame和Series數(shù)據(jù)結(jié)構(gòu)為我提供了靈活且強(qiáng)大的數(shù)據(jù)容器,使我能夠輕松地存儲和操作數(shù)據(jù)。同時(shí),pandas還支持多種數(shù)據(jù)格式的導(dǎo)入和導(dǎo)出,如CSV、Excel、SQL等,這使得我能夠輕松地與其他數(shù)據(jù)源進(jìn)行交互。數(shù)據(jù)分析:我主要借助了sklearn和PaddleHub這兩個(gè)強(qiáng)大的工具進(jìn)行情感得分的計(jì)算和分析。首先,sklearn是一個(gè)功能強(qiáng)大的Python機(jī)器學(xué)習(xí)庫,它包含了多種經(jīng)典的機(jī)器學(xué)習(xí)算法和工具,非常適合用于數(shù)據(jù)分析和挖掘。在情感得分計(jì)算中,我主要利用了sklearn提供的分類算法,如邏輯回歸等。其次,PaddleHub是飛槳生態(tài)下的預(yù)訓(xùn)練模型應(yīng)用工具,它提供了豐富的中文預(yù)訓(xùn)練模型,以及便捷的模型遷移學(xué)習(xí)功能。在情感得分計(jì)算中,我借助了PaddleHub提供的預(yù)訓(xùn)練模型,如情感分析模型等,直接對文本進(jìn)行情感傾向的判斷,并輸出情感得分。這種方式無需從零開始訓(xùn)練模型,大大節(jié)省了時(shí)間和計(jì)算資源。數(shù)據(jù)可視化:我主要運(yùn)用了pyecharts、matplotlib和seaborn這三個(gè)強(qiáng)大的工具來呈現(xiàn)和分析數(shù)據(jù)。首先,pyecharts是一個(gè)用于生成Echarts圖表的類庫,它支持生成折線圖、柱狀圖、散點(diǎn)圖、餅圖等多種類型的圖表,且圖表樣式豐富,交互性強(qiáng)。我利用pyecharts生成了直觀易懂的圖表,展示了數(shù)據(jù)的分布、趨勢和關(guān)聯(lián)關(guān)系,使得分析結(jié)果更加清晰明了。3數(shù)據(jù)獲取的實(shí)現(xiàn)3.1爬蟲的設(shè)計(jì)思想3.11歌單數(shù)據(jù)在本文的研究中,我們采用了Selenium技術(shù)來對網(wǎng)易云音樂的全部歌單進(jìn)行爬蟲操作。我們需要爬取的主要內(nèi)容有:歌單標(biāo)題、聽眾收藏?cái)?shù)、聽眾分享數(shù)、歌單評論數(shù)、聽歌數(shù)量、歌單標(biāo)簽。網(wǎng)易云音樂作為一個(gè)深受用戶喜愛的音樂平臺,其頁面結(jié)構(gòu)復(fù)雜,數(shù)據(jù)內(nèi)容通過iframe框架嵌套展示。傳統(tǒng)的爬蟲庫在處理這類頁面時(shí),往往只能獲取到表面的非數(shù)據(jù)內(nèi)容,無法觸及到iframe內(nèi)部的關(guān)鍵信息。為了解決這個(gè)問題,我們利用了Selenium的強(qiáng)大功能來模擬瀏覽器行為。通過調(diào)用driver.switch_to.frame()方法,我們能夠準(zhǔn)確地定位并切換到包含歌單數(shù)據(jù)的iframe框架。一旦進(jìn)入正確的框架,我們就可以像操作普通頁面一樣,使用Selenium提供的各種選擇器來定位歌單元素,并提取出所需的數(shù)據(jù)。通過這種方法,我們成功地爬取了網(wǎng)易云音樂的全部歌單信息,并存儲在mongodb中,以便于后續(xù)的處理與分析。3.12最優(yōu)歌單獲得歌單數(shù)據(jù)后,考慮到時(shí)間與設(shè)備問題,不可能爬取全部歌單的全部歌曲,于是就有了最優(yōu)歌單的處理這步,但是鑒于僅依賴單一數(shù)據(jù)(如收藏量或分享次數(shù))來判定最優(yōu)歌單的方法可能顯得不夠全面和嚴(yán)謹(jǐn),所以決定采用更為科學(xué)的權(quán)重分配方式來綜合評估各項(xiàng)數(shù)據(jù)。[4]3.13歌曲評論數(shù)據(jù)在網(wǎng)易云音樂的數(shù)據(jù)抓取過程中,我面臨著由兩套框架嵌套展示所帶來的挑戰(zhàn)。最初,我們嘗試使用selenium庫進(jìn)行爬蟲操作,然而由于數(shù)據(jù)量過于龐大,獲取數(shù)據(jù)的速度顯得緩慢且效率不高。為了克服這一難題,我轉(zhuǎn)而利用抓包工具對網(wǎng)頁的XHR進(jìn)行深入分析,成功定位到了存儲評論信息的鏈接,其格式為get?csrf_token=。在對鏈接的headers信息進(jìn)行細(xì)致研究后,我發(fā)現(xiàn)服務(wù)器接收的請求中包含了名為params和encSecKey的兩個(gè)亂碼參數(shù)。這些亂碼實(shí)際上是對真實(shí)數(shù)值進(jìn)行加密后的結(jié)果,這表明網(wǎng)易云音樂采取了加密措施來保護(hù)數(shù)據(jù)的安全性和完整性。為了獲取所需的數(shù)據(jù),我首先需要找到這些參數(shù)在加密前的原始數(shù)值。這是一個(gè)復(fù)雜的過程,需要我深入分析網(wǎng)易云音樂的加密機(jī)制,并嘗試還原其加密過程。一旦我成功找到了加密前的原始數(shù)值,并理解了其加密原理,我就可以模擬網(wǎng)易云音樂的加密過程,生成正確的亂碼參數(shù)。在后續(xù)的數(shù)據(jù)抓取過程中,我將模擬生成這些加密參數(shù),并傳遞給服務(wù)器。通過這種方式,我們能夠繞過復(fù)雜的框架嵌套,直接獲取到我需要的評論數(shù)據(jù)。這種方法不僅提高了數(shù)據(jù)抓取的效率,還為我提供了一種更為靈活和可靠的數(shù)據(jù)獲取方式。綜上所述,通過對網(wǎng)易云音樂XHR的深入分析,我成功地找到了評論信息的存儲鏈接,并揭示了其加密機(jī)制。通過模擬加密過程,我能夠高效地獲取所需數(shù)據(jù),為后續(xù)的研究和分析提供了有力的支持。 在處理完問題后,我通過使用requests庫獲取到了所需數(shù)據(jù),并將其導(dǎo)出為csv文件。3.2爬蟲的實(shí)現(xiàn)與結(jié)果展示3.21歌單數(shù)據(jù)爬蟲代碼實(shí)現(xiàn)通過import調(diào)用所需工具庫selenium及其webdriver、mon.by方法,調(diào)用time的time.sleep方法,它主要作用是引入延遲,即讓爬蟲程序在連續(xù)請求之間暫停一段時(shí)間。這種延遲對于爬蟲的效率和合法性都是非常重要的,pymongo方法用來連接mongodb數(shù)據(jù)庫用來存儲爬蟲數(shù)據(jù)。圖1歌單爬蟲關(guān)鍵代碼一首先創(chuàng)建了一個(gè)ChromeOptions對象,然后添加了一個(gè)參數(shù)--headless,使得瀏覽器在運(yùn)行時(shí)不會顯示界面,這樣可以節(jié)省資源并使得爬取過程更快速。這里使用XPath定位到包含歌曲鏈接的元素,然后遍歷這些元素,獲取每個(gè)元素的href屬性值(即歌曲的URL),并添加到urls_list列表中。圖2歌單爬蟲關(guān)鍵代碼二通過循環(huán)urls_list中的歌單鏈接,爬取每個(gè)歌單的數(shù)據(jù)并以字典的方式通過pymongo的insertone方法將數(shù)據(jù)存儲到數(shù)據(jù)庫中,最終獲得的數(shù)據(jù)結(jié)構(gòu)如圖3所示。圖3歌單信息的數(shù)據(jù)結(jié)構(gòu)3.22最優(yōu)歌單代碼實(shí)現(xiàn) 我們首先對整體數(shù)據(jù)集應(yīng)用sklearn庫中的StandardScaler方法進(jìn)行了標(biāo)準(zhǔn)化處理,這一步驟有效消除了不同數(shù)據(jù)項(xiàng)之間量綱的差異,并有助于預(yù)防過擬合現(xiàn)象的發(fā)生。隨后,我們創(chuàng)建了線性回歸模型對象,并經(jīng)過人為判斷選擇了合適的x特征(自變量)和y目標(biāo)變量(因變量)。通過sklearn庫的相關(guān)功能,我們進(jìn)一步劃分了訓(xùn)練集xtrain和ytrain,確保模型訓(xùn)練的有效性。在模型訓(xùn)練完成后,我們利用model.coef_方法提取了各項(xiàng)特征的權(quán)重系數(shù)。這些權(quán)重系數(shù)反映了不同數(shù)據(jù)項(xiàng)在判定最優(yōu)歌單時(shí)的重要性程度,為我們提供了一個(gè)更為全面和科學(xué)的評估依據(jù)。最終,結(jié)合這些權(quán)重系數(shù),我們成功獲得了最優(yōu)歌單的判定結(jié)果。最優(yōu)歌單如圖5所示。圖4最優(yōu)歌單關(guān)鍵代碼圖5最優(yōu)歌單3.23歌曲評論爬蟲代碼實(shí)現(xiàn) 根據(jù)設(shè)計(jì)思路我通過XHR斷點(diǎn)調(diào)試來尋找加密的位置,標(biāo)頭中可以看到,請求URL為/weapi/comment/resource/comments/get?通過這個(gè)URL來提取斷點(diǎn),設(shè)置好斷點(diǎn)以后,可以重新開始抓包,觀察如圖6中范圍的data是否為常規(guī)數(shù)據(jù),如果不是,就通過調(diào)用堆棧來查找加密位置,因?yàn)槎褩T酵戮褪窃较葓?zhí)行的代碼。在找的u60.be6y的時(shí)候,我發(fā)現(xiàn)了疑似加密的代碼,在此我選擇重新打上斷點(diǎn)并重新抓包,最終獲得了加密方法:“window.asrsea(JSON.stringify(i0x),bsg8Y(["流淚","強(qiáng)"]),bsg8Y(TH5M.md),bsg8Y(["愛心","女孩","驚恐","大笑"]))”。這個(gè)方法大概的意思就是將“i0x”的值轉(zhuǎn)為字符串格式后與“bsg8Y(["流淚","強(qiáng)"])”的值、“bsg8Y(TH5M.md)”的值、“bsg8Y(["愛心","女孩","驚恐","大笑"]))”的值放到方法“window.asrsea()”里面運(yùn)行,并返回了需要的加密參數(shù)。圖6范圍分析第一個(gè)參數(shù)i0x。cursor是每頁評論的固定光標(biāo),在后續(xù)分頁爬取內(nèi)容的時(shí)候必須將當(dāng)頁光標(biāo)賦值給data數(shù)據(jù),否則爬取的評論內(nèi)容將與評論時(shí)間等數(shù)據(jù)不對齊,pageNo代表了每一頁,爬取每一頁內(nèi)容時(shí)用for循環(huán)賦值給pageNo即可,pageSize代表著一頁有20行評論,而rid與threadId則代表著歌曲id。圖7加密前的數(shù)據(jù)分析第二個(gè)參數(shù)“bsg8Y(["流淚","強(qiáng)"])”。在控制臺中輸入“bsg8Y(["流淚","強(qiáng)"])”,輸出的結(jié)果是“010001”。這個(gè)值是固定的,我通過多次運(yùn)行發(fā)現(xiàn)的。結(jié)果始終是“010001”,這樣子可以發(fā)現(xiàn),這個(gè)值是固定的。分析第三個(gè)參數(shù)“bsg8Y(TH5M.md)”。在控制臺中輸入“bsg8Y(TH5M.md)”,輸出的結(jié)果是一大串字符串,多次嘗試后結(jié)果也和第二個(gè)參數(shù)一樣是固定不變的。分析第四個(gè)參數(shù)“bsg8Y(["愛心","女孩","驚恐","大笑"]))”。答案也和前面的一樣是固定的。加密的方式是window.asrsea(),繼續(xù)在抓包工具中觀察,通過右鍵可以跳轉(zhuǎn)到加密方式的所在位置,點(diǎn)進(jìn)去之后定位到了方法d,如圖8所示其中,我們可以看到window.asrsea=d,并且方法d與方法a,c,d都有關(guān)系,所以我們需要對這四個(gè)函數(shù)進(jìn)行分析。 從頭開始分析,首先分析d函數(shù),如圖8中可以大概了解到函數(shù)d的執(zhí)行過程,首先從函數(shù)a中得到一個(gè)值,這個(gè)值是16位的隨機(jī)數(shù)將其賦值給i,然后再用d和g傳入函數(shù)b中進(jìn)行加密,如圖8所示,再把得到的值與“i”再進(jìn)行一次加密,然后就能得到“h.encText”也就是“params”的值了。而“h.encSecKey”的值是通過函數(shù)c,傳入“i”,“bsg8Y(["流淚","強(qiáng)"])”和“bsg8Y(TH5M.md)”進(jìn)行加密所得。圖8函數(shù)bb函數(shù)是一個(gè)加密函數(shù),首先傳入?yún)?shù)a和b,然后分別將a和b進(jìn)行utf-8編碼賦值,然后再把編碼后的參數(shù)用AES進(jìn)行加密,其中函數(shù)內(nèi)定義了一個(gè)iv,也就是偏移量,是AES加密方式中必須的一個(gè)參數(shù),mode也就是模式,CBC是加密模式。最后是c函數(shù),c函數(shù)是生成encSecKey的關(guān)鍵函數(shù)。其中,c里面的參數(shù)中“i”是一個(gè)隨機(jī)值,而參數(shù)“e”和參數(shù)“f”都是固定值,所以我們只要能確定“i”的值就能確定encSecKey的值了。圖9window.asrsea加密方式分析完以后,接下來就是根據(jù)分析內(nèi)容編寫代碼,首先獲取全部歌曲的id,如圖10所示,使用selenium庫的find_elements方法獲取全部的歌曲id并存在id1列表中,方便后續(xù)的爬蟲。圖10歌曲id爬蟲接下來就是對評論數(shù)據(jù)的爬蟲,通過for循環(huán)將id賦值給圖7的data之后就可以進(jìn)行下一步的爬蟲,如圖11所示,e,f,g,i這些是字符串形式的密鑰或參數(shù),get_encSecKey是一個(gè)函數(shù),返回一個(gè)預(yù)定義的加密密鑰字符串。通過get_params(data)這個(gè)函數(shù)接受一個(gè)數(shù)據(jù)字符串data作為參數(shù),然后使用enc_param函數(shù)兩次來加密數(shù)據(jù)。第一次使用g作為密鑰,第二次使用i作為密鑰。最終返回第二次加密后的結(jié)果。通過to_16(data)這個(gè)函數(shù)確保輸入的數(shù)據(jù)data的長度是16的倍數(shù)。如果不是,它會在數(shù)據(jù)的末尾添加填充字符,填充字符的數(shù)量是使數(shù)據(jù)長度達(dá)到16的倍數(shù)所需的最少字符數(shù)。填充字符的ASCII碼值等于填充字符的數(shù)量。這是AES加密中常見的PKCS7填充方法。最后enc_param(data,key)這個(gè)函數(shù)負(fù)責(zé)加密數(shù)據(jù)。它首先使用to_16函數(shù)確保數(shù)據(jù)長度是16的倍數(shù)。然后,它使用AES加密算法(CBC模式)和給定的密鑰key以及初始化向量iv來加密數(shù)據(jù)。加密后的結(jié)果是一個(gè)字節(jié)串,最后通過base64編碼轉(zhuǎn)換為字符串形式并返回。通過requests的post方式將獲取到最終想要的數(shù)據(jù),后續(xù)可以通過withopen的方式存儲數(shù)據(jù)導(dǎo)出為csv格式,最終導(dǎo)出的數(shù)據(jù)結(jié)構(gòu)如圖12所示。圖11歌曲評論爬蟲圖12歌曲評論數(shù)據(jù)結(jié)構(gòu)4數(shù)據(jù)預(yù)處理分析及可視化4.1數(shù)據(jù)預(yù)處理在數(shù)據(jù)預(yù)處理過程中,我們遇到了一種非傳統(tǒng)的時(shí)間字段格式,該格式并非常見的年月日表示方法,而是由十個(gè)字符組成的特定數(shù)據(jù)形式。為了將這些數(shù)據(jù)轉(zhuǎn)化為更易于理解和分析的標(biāo)準(zhǔn)時(shí)間格式,我們利用了pandas庫中的dt.strftime()方法。首先,我們對原始數(shù)據(jù)進(jìn)行了詳細(xì)觀察,識別了非標(biāo)準(zhǔn)時(shí)間字段的結(jié)構(gòu)特點(diǎn)。隨后,通過適當(dāng)?shù)霓D(zhuǎn)換和解析,將這些非標(biāo)準(zhǔn)時(shí)間數(shù)據(jù)轉(zhuǎn)換成了pandas能夠識別的日期時(shí)間對象(datetimeobjects)。這一步驟是數(shù)據(jù)預(yù)處理的關(guān)鍵一環(huán),它確保了后續(xù)分析能夠基于準(zhǔn)確且一致的時(shí)間信息。一旦數(shù)據(jù)被成功轉(zhuǎn)換為日期時(shí)間對象,我們就可以利用dt.strftime()方法,按照指定的格式(如'%Y-%m-%d%H:%M:%S')將這些對象轉(zhuǎn)化為字符串形式的標(biāo)準(zhǔn)時(shí)間字段。這種格式不僅易于閱讀和理解,而且符合大多數(shù)數(shù)據(jù)預(yù)處理和分析工具的要求,為后續(xù)的數(shù)據(jù)分析和可視化提供了便利。緊接著我采用了jieba分詞庫和pandas工具對剩余的評論數(shù)據(jù)進(jìn)行了預(yù)處理操作。首先,通過jieba分詞庫,我實(shí)現(xiàn)了對評論內(nèi)容的分詞處理,這一步驟能夠?qū)⑦B續(xù)的文本信息轉(zhuǎn)化為結(jié)構(gòu)化、離散的詞匯單元,為后續(xù)的數(shù)據(jù)分析和處理提供了便利。接著,利用pandas庫,我進(jìn)一步對數(shù)據(jù)進(jìn)行了去重處理,有效去除了重復(fù)或無意義的詞匯,保證了數(shù)據(jù)的純凈性和分析的準(zhǔn)確性。完成預(yù)處理后,我運(yùn)用了PaddleHub這一強(qiáng)大的深度學(xué)習(xí)工具對預(yù)處理后的評論數(shù)據(jù)進(jìn)行情感預(yù)測。PaddleHub為我提供了豐富的預(yù)訓(xùn)練模型和便捷的操作接口,使得情感分析任務(wù)得以高效完成。通過模型的預(yù)測,每個(gè)評論數(shù)據(jù)都被賦予了一個(gè)介于0到1之間的情感評分,這一評分直觀地反映了評論所表達(dá)的情感傾向和強(qiáng)度。為了更加清晰地界定情感傾向的類別,我設(shè)定了以下情感分類標(biāo)準(zhǔn):評分大于0.7的評論被認(rèn)定為積極評論,表示評論中充滿了正向、積極的情感表達(dá);評分小于0.4的評論則被歸為消極評論,表明評論中流露出的情感是負(fù)面的、消極的;而評分介于0.4到0.7之間的評論則被視作中性評論,其情感表達(dá)既不過于積極也不顯消極,呈現(xiàn)出一種相對中立的態(tài)度。圖13paddlehub情感得分判斷4.2數(shù)據(jù)分析4.21關(guān)于評論的分析評論次數(shù)最多的是郭頂?shù)摹端怯洝?,共?035771條評論。點(diǎn)贊數(shù)最多的則是《水星記》的評論“我再也拿不出像當(dāng)初那么熱烈的愛了我突然不懂什么是愛了”,點(diǎn)贊數(shù)為808751。這首歌的歌詞悲情憂郁,其中的悲愴的評論更能引起別人的共鳴。鑒于數(shù)據(jù)量龐大,為了更有效地進(jìn)行可視化分析,我決定采用數(shù)據(jù)聚合的策略。通過按照點(diǎn)贊數(shù)的不同區(qū)間對數(shù)據(jù)進(jìn)行分組,并計(jì)算每個(gè)區(qū)間的數(shù)據(jù)點(diǎn)數(shù)量,我成功地將海量的數(shù)據(jù)點(diǎn)轉(zhuǎn)化為了少數(shù)幾個(gè)具有代表性的區(qū)間。這種處理方式不僅簡化了數(shù)據(jù)的復(fù)雜性,更有助于我清晰地洞察數(shù)據(jù)的分布規(guī)律,從而更加精準(zhǔn)地把握歌曲評論的特點(diǎn)和趨勢。圖14點(diǎn)贊數(shù)分布情況我發(fā)現(xiàn)整體的點(diǎn)贊數(shù)分布呈現(xiàn)出明顯的右偏特征。這意味著大部分評論的點(diǎn)贊數(shù)相對較低,而能夠獲得高點(diǎn)贊數(shù)或成為熱評(即點(diǎn)贊數(shù)超過1000)的評論則相對較少。這種分布特點(diǎn)在一定程度上反映了評論數(shù)據(jù)的普遍規(guī)律,即大多數(shù)評論雖然表達(dá)了個(gè)體觀點(diǎn)和情感,但能夠引發(fā)廣泛共鳴和獲得大量點(diǎn)贊的評論則較為稀缺。由于評論數(shù)據(jù)規(guī)模龐大,我進(jìn)一步聚焦于那些點(diǎn)贊數(shù)較高的評論,特別是熱評。這些評論不僅數(shù)量有限,而且往往具有更強(qiáng)的代表性和影響力。它們可能觸及了歌曲的核心情感,或者引發(fā)了聽眾的深刻共鳴,從而在眾多評論中脫穎而出。通過歌曲評論數(shù)熱力圖可以發(fā)現(xiàn),哪怕都在同一個(gè)熱門歌單里面,歌曲的人氣還是有所差異,排行前二的歌《水星記》、《哪里都是你》占據(jù)了整體的大部分,通過對這兩首歌歌詞的觀察可以判斷出,講述情感與思念的歌曲,會更加引起聽眾的共鳴。圖15歌曲評論數(shù)熱力圖4.22LDA主題分析在論文中,我采用了WordCloud庫對經(jīng)過分詞預(yù)處理的數(shù)據(jù)進(jìn)行詞云可視化,從而揭示了大部分聽眾的評論喜好、關(guān)注的權(quán)重以及大致的情感趨勢。通過這種方法,我們能夠以一種直觀、生動(dòng)的方式呈現(xiàn)聽眾對歌曲的反饋,并深入挖掘其中的信息。具體來說,詞云可視化技術(shù)能夠根據(jù)詞語在評論中出現(xiàn)的頻率和重要性,以不同大小和顏色的字體進(jìn)行展示。頻率高、重要性大的詞語將以更大的字體和更醒目的顏色出現(xiàn)在詞云中,從而凸顯出聽眾關(guān)注的焦點(diǎn)和喜好。在可視化結(jié)果中,我們觀察到了一些有趣的現(xiàn)象。首先,某些關(guān)鍵詞如“愛”、“喜歡”、“真的”等頻繁出現(xiàn),表明聽眾對歌曲的整體評價(jià)較為積極。其次,一些與歌曲主題和情感相關(guān)的詞語也占據(jù)了顯著的位置,反映了聽眾對歌曲內(nèi)容的深度理解和共鳴。此外,詞云中的不同顏色和字體大小也揭示了不同詞匯在評論中的重要性和權(quán)重,為我們進(jìn)一步分析聽眾的情感趨勢提供了線索。[14]圖16歌曲評論詞云圖在論文中,為了深入探究歌曲評論的潛在主題和關(guān)鍵詞匯,我采用了文本特征提取和主題模型分析的方法。首先,我利用CountVectorizer方法對預(yù)處理后的文本列表processed_text_list進(jìn)行特征提取。通過設(shè)置strip_accents=’unicode’來去除文本中的重音符號,max_features=n_feature來限制特征數(shù)量,stop_words=’english’來排除常用停用詞,以及max_df和min_df來過濾掉出現(xiàn)頻率過高或過低的詞匯,我們得到了一個(gè)詞頻矩陣tf,其中每個(gè)元素代表相應(yīng)詞匯在評論中出現(xiàn)的次數(shù)。接下來,為了從詞頻矩陣中挖掘出潛在的主題信息,我采用了潛在狄利克雷分配(LatentDirichletAllocation,LDA)模型。LDA是一種非監(jiān)督式的主題模型,它能夠從大量文本數(shù)據(jù)中自動(dòng)發(fā)現(xiàn)隱藏的主題結(jié)構(gòu)。通過設(shè)置n_components=n_topics來確定要發(fā)現(xiàn)的主題數(shù)量,以及其他參數(shù)如max_iter、learning_method和random_state,我們訓(xùn)練了LDA模型并使其擬合到詞頻矩陣tf上。最后,為了直觀地展示每個(gè)主題下的關(guān)鍵詞匯,我定義了一個(gè)函數(shù)print_top_words來打印每個(gè)主題中權(quán)重最高的前n_top_words個(gè)詞匯。通過調(diào)用這個(gè)函數(shù)并傳入LDA模型、特征名稱列表和要打印的詞匯數(shù)量,我得到了一個(gè)包含每個(gè)主題關(guān)鍵詞匯的列表topic_word。表17LDA主題詞從LDA主題詞來看,大部分主題都呈現(xiàn)出一種比較積極的情感傾向。這可能是因?yàn)槁牨娫诜窒砀枨u論時(shí)更傾向于表達(dá)積極、正面的情感,或者是由于歌曲本身的內(nèi)容就具有積極向上的特質(zhì),從而引發(fā)了聽眾的積極情緒。具體來說,像“溫馨與分享”、“時(shí)光與感慨”和“積極生活”等主題,都包含了大量積極、正面的詞匯,如“喜歡”、“幸?!薄ⅰ凹佑汀?、“開心”等,這些詞匯體現(xiàn)了聽眾對生活的熱愛、對未來的期待以及對歌曲的喜愛和認(rèn)同。同時(shí),“親情與承諾”、“友情與回憶”等主題也傳遞出一種溫暖、親切的情感,這些主題中的詞匯如“媽媽”、“我會”、“朋友”、“回憶”等,都讓人聯(lián)想到親情、友情的溫馨和美好,進(jìn)一步增強(qiáng)了整體積極情感的表達(dá)。當(dāng)然,也有部分主題如“孤獨(dú)與失落”和“情感記憶”涉及了一些消極的情感,但整體來看,這些主題在數(shù)量上相對較少,且其中的消極情感也可能被其他主題的積極情感所中和或平衡。綜上所述,從LDA主題詞的分析來看,大部分主題確實(shí)呈現(xiàn)出一種比較積極的情感傾向,這反映了聽眾在歌曲評論中普遍表達(dá)出的積極態(tài)度和情感狀態(tài)。圖18LDA詞頻分布圖我對評論中在七種主題的分布情況作柱狀圖進(jìn)行分析,見圖7。“溫馨與分享”這類主題的評論在所有評論中占比最高,除此之外,評論區(qū)還是可以看到很多積極美好的事物出現(xiàn)。從分析結(jié)果可以看到,大部分中既有單純的對歌曲的喜愛贊美,也有對美好生活的追求和事業(yè)學(xué)業(yè)的奮斗,這些積極向上的內(nèi)容是網(wǎng)易云音樂評論區(qū)構(gòu)成的重要部分。4.23基于時(shí)間的情感趨勢分析以及熱評分析 在前面的研究里,我們探究了獲得點(diǎn)贊數(shù)最多得評論的一個(gè)情感情況,這一節(jié)我想了解什么樣的情感傾向才可以成為熱評,現(xiàn)假設(shè)情感得分越低,更有可能成為熱評,我通過利用情感得分這一特征,嘗試構(gòu)建邏輯回歸模型來預(yù)測評論是否會成為熱評。首先,我根據(jù)每條評論的點(diǎn)贊數(shù)(likedCount)創(chuàng)建了一個(gè)熱評標(biāo)簽(is_hot),其中點(diǎn)贊數(shù)超過1000的評論被標(biāo)記為熱評。接著,我選擇了情感得分(sentiment_score),假設(shè)它是一個(gè)負(fù)向指標(biāo),即得分越低表示情感越消極)作為唯一的特征輸入到模型中。[2]在模型訓(xùn)練階段,我使用了邏輯回歸算法,并通過劃分訓(xùn)練集和測試集來評估模型的性能。然而,從分類報(bào)告的結(jié)果來看,模型在預(yù)測熱評時(shí)的表現(xiàn)并不理想,尤其是對于熱評類別的識別能力非常有限。這可能是由于我們僅使用了單一的情感得分作為特征,而忽略了其他可能影響熱評形成的重要因素。此外,我還查看了情感得分在模型中的系數(shù)。系數(shù)值為負(fù)表明情感得分與熱評標(biāo)簽之間存在正相關(guān)關(guān)系。這意味著情感得分越高,評論成為熱評的可能性越大。這與我的假設(shè)不一致。帶著這個(gè)疑問,我通過箱線圖,做了一份關(guān)于全部歌曲的情感分布可視化。圖19各歌曲情感分布箱線圖通過繪制箱線圖,我可以清晰地觀察到大部分歌曲的情感傾向分布情況。箱線圖展示了數(shù)據(jù)的上四分位數(shù)、中位數(shù)、下四分位數(shù)以及可能的異常值,為我提供了一個(gè)直觀的數(shù)據(jù)概覽。在本研究中,我注意到歌曲情感傾向的中位數(shù)多數(shù)處于0.5以上,這意味著多數(shù)歌曲的情感傾向是偏積極的。同時(shí),箱體的位置以及須線的長度也進(jìn)一步表明了數(shù)據(jù)的集中程度和離散程度。通過研究可以發(fā)現(xiàn),即使是歌曲本身情感較為消極,可是聽眾的想法不會因此消極,反而會更加積極。由此我了解到了,聽眾會更愿意在評論中表現(xiàn)得更積極,根據(jù)對網(wǎng)易云早年得政策進(jìn)行調(diào)查,我發(fā)現(xiàn)了突破口,為扭轉(zhuǎn)網(wǎng)易云在用戶心目中的負(fù)面形象,網(wǎng)易云音樂采取了相應(yīng)舉措。2020年8月,網(wǎng)易云相繼推出了“云村評論治愈計(jì)劃”、“云村治愈行動(dòng)”。由此也就可以理解為什么大家更樂意表現(xiàn)得積極得原因了。4.24情感趨勢在時(shí)間維度上得分析在針對一天中各個(gè)小時(shí)聚合的聽歌評論情感分布進(jìn)行分析時(shí),我發(fā)現(xiàn)情感變化與人們的日常生活節(jié)奏有著密切的聯(lián)系。與公眾認(rèn)知中的“網(wǎng)抑云”印象相去甚遠(yuǎn),研究結(jié)果表明,一天中的情感波動(dòng)呈現(xiàn)出獨(dú)特的模式。首先,從早上到下午,這段時(shí)間通常是人們的工作與學(xué)習(xí)的高峰期。在這段時(shí)間內(nèi),聽眾更傾向于需要積極的情感來面對繁重的工作和學(xué)習(xí)內(nèi)容。這種積極的情感與樂觀的態(tài)度以文字的形式出現(xiàn)在了評論里面,提高了聽眾們的活躍的情感,幫助人們在忙碌的日常中保持積極的心態(tài)。然而,在下午六點(diǎn)到八點(diǎn)這一時(shí)間段,情感分布呈現(xiàn)出持續(xù)走低的趨勢。這一時(shí)段正好是下班高峰期,忙碌了一天的聽眾在經(jīng)歷了工作或?qū)W習(xí)的壓力后,情感可能會變得較為低落。此時(shí),在音樂評論中可能更多地扮演了情感宣泄的角色,聽眾通過聽歌評論來表達(dá)和釋放內(nèi)心的疲憊和壓力。值得注意的是,在九點(diǎn)以后,情感分布開始有所提升。這可能與當(dāng)代年輕人的生活方式和心理特點(diǎn)有關(guān)。當(dāng)代年輕人普遍擅長通過各種方式來進(jìn)行“自我安慰”,音樂便是其中之一。在夜晚時(shí)分,人們可能更愿意通過音樂來放松自己,尋找內(nèi)心的平靜和安慰,從而緩解一天中的壓力和疲憊。圖20情感分布情況(小時(shí)) 針對一年中各月份聚合的聽歌評論情感分布進(jìn)行分析,我發(fā)現(xiàn)了情感變化與季節(jié)性事件及學(xué)生群體的生活節(jié)奏有著密切的聯(lián)系。首先,七月份的情感分布達(dá)到了最低點(diǎn),這與畢業(yè)季的到來相吻合。畢業(yè)不僅僅意味著學(xué)生時(shí)代的結(jié)束,更伴隨著對未來不確定性的擔(dān)憂和與同窗好友分別的傷感。盡管畢業(yè)季通常伴隨著假期的到來,但大家并沒有表現(xiàn)出過多的積極情感,反而因?yàn)榧磳⒌絹淼姆謩e和人生階段的轉(zhuǎn)變而心情低落。隨后,在經(jīng)歷了暑假的八月份,情感分布有了明顯的回溫。這可能是因?yàn)閷W(xué)生們在假期中得到了充分的休息和放松,通過旅行、聚會或簡單的休閑活動(dòng),他們的情感得到了有效的調(diào)節(jié)和恢復(fù)。然而,當(dāng)九月份開學(xué)季到來時(shí),情感得分再次被拉到了底層。這一變化清晰地反映出學(xué)生群體在開學(xué)之際所面臨的種種壓力和挑戰(zhàn)。新的學(xué)期意味著新的學(xué)習(xí)任務(wù)、社交環(huán)境和適應(yīng)過程,這些都可能對學(xué)生的情感產(chǎn)生負(fù)面影響。[3]圖21情感分布情況(月份)4.3數(shù)據(jù)可視化平臺為了更直觀地呈現(xiàn)研究結(jié)果,本研究采用了pyecharts庫,構(gòu)建了一個(gè)可視化平臺。該平臺能夠生成關(guān)鍵圖形,有效地展示了相關(guān)數(shù)據(jù)的特征和趨勢,使我們能夠更便捷地觀察和分析多個(gè)圖案之間的相關(guān)性。通過這一平臺,我們不僅能夠直觀了解各項(xiàng)指標(biāo)的變動(dòng)情況,還能夠深入探究不同指標(biāo)之間的潛在聯(lián)系,從而為后續(xù)研究提供了有力的數(shù)據(jù)支持。pyecharts庫的運(yùn)用,不僅提升了研究結(jié)果的可視化水平,也大大增強(qiáng)了研究的分析深度和廣度。 通過frompyecharts.chats調(diào)用所需要的圖形例如Bar條形圖,Line折線圖。再通過例如line=(Line())的方式使用所需的圖形,通過add_xaxis()以及add_yasix()的方式將處理好的數(shù)據(jù)加入到圖形里面,通過render方法就可以展示圖形了,這里我直接使用了page方法將所有的圖形合并到一個(gè)html內(nèi)并可以自由拖動(dòng)布局,這樣子做可以大大減少代碼量以及工作周期。圖22每日情感變化分析折線圖關(guān)鍵代碼圖23pyecharts可視化(局部)5總結(jié)通過對網(wǎng)易云歌單、歌曲評論數(shù)據(jù)的可視化分析,我們得以窺見人們在音樂中所展現(xiàn)出的情感傾向。顯然,人們更傾向于在音樂中代入積極、向上的情感,這既是音樂本身所具備的治愈和鼓舞人心功能的體現(xiàn),也反映出人們在面對生活壓力與挑戰(zhàn)時(shí),內(nèi)心深處對于積極、陽光生活的渴望和追求。音樂作為一種特殊的藝術(shù)形式,有著跨越語言和文化的力量,能夠直觸人心,引發(fā)共鳴。在網(wǎng)易云這個(gè)音樂平臺上,無論是歌曲的含義還是評論的喜怒哀樂,都映射出人們內(nèi)心的情感世界。積極的情感代入不僅展示了人們樂觀向上的生活態(tài)度,也促進(jìn)了網(wǎng)絡(luò)空間的積極氛圍
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版家用電器產(chǎn)品綠色包裝合同范本3篇
- 工業(yè)用地租賃合同范本
- 專用養(yǎng)生酒供應(yīng)合同(2024年版)一
- 二零二五年度廠房租賃合同附環(huán)境保護(hù)責(zé)任追究書3篇
- 合同法居間條款
- 國外采購合同模板
- 銑刨勞務(wù)合同
- 勞務(wù)外包的合同范本年
- 繪圖員勞務(wù)合同范本個(gè)人
- 瓷磚經(jīng)銷商購銷合同
- 智能養(yǎng)老app項(xiàng)目商業(yè)計(jì)劃書
- (完整版)四年級口算題大全100道
- 急救藥品的序號及作用課件
- 中藥飲片培訓(xùn)課件
- 林區(qū)防火專用道路技術(shù)規(guī)范
- 2023社會責(zé)任報(bào)告培訓(xùn)講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對聯(lián)大全新春對聯(lián)集錦
- 表B. 0 .11工程款支付報(bào)審表
- 警務(wù)航空無人機(jī)考試題庫及答案
- 新生兒窒息復(fù)蘇正壓通氣課件
評論
0/150
提交評論