? ? ? ?摘要:情感文本電商情感標(biāo)注分析研究是當(dāng)前電商數(shù)據(jù)情感挖掘?qū)W術(shù)研究的重要熱點(diǎn),具有極高的國(guó)際應(yīng)用價(jià)值。對(duì)當(dāng)前電商手機(jī)在線商品評(píng)論詞典進(jìn)行情感文本電商情感標(biāo)注分析與詞典數(shù)據(jù)情感挖掘研究具有很高的國(guó)際學(xué)術(shù)研究?jī)r(jià)值和重大社會(huì)意義經(jīng)濟(jì)效益。針對(duì)當(dāng)前電商手機(jī)在線商品評(píng)論的基本特點(diǎn),采用通過(guò)urllib.request等從庫(kù)存中爬取京東商品編號(hào)分別為10037616578008的多個(gè)手機(jī)電商評(píng)論詞典數(shù)據(jù),采用jiaba等細(xì)分詞,進(jìn)行電商情感文本標(biāo)注以及文本關(guān)鍵詞分析云圖表的生成。通過(guò)python基于文本情感標(biāo)注詞典數(shù)據(jù)進(jìn)行文本情感標(biāo)注傾向性數(shù)據(jù)分析,對(duì)評(píng)論情感詞進(jìn)行遍歷,計(jì)算一個(gè)評(píng)論文章語(yǔ)句的文本情感分?jǐn)?shù)值,并通過(guò)使用snownlp類(lèi)庫(kù)對(duì)評(píng)論文本語(yǔ)句情感分?jǐn)?shù)值中的得分?jǐn)?shù)據(jù)進(jìn)行長(zhǎng)度可視化分析展示,以長(zhǎng)度折射曲線圖直觀形式展示評(píng)論語(yǔ)句文本情感值得分?jǐn)?shù)值的分布變化情況,很好的也驗(yàn)證了這個(gè)實(shí)驗(yàn)室的結(jié)論。這些電商情感互動(dòng)數(shù)據(jù)的分析獲取及應(yīng)用分析,有利于幫助電商企業(yè)改進(jìn)產(chǎn)品營(yíng)銷(xiāo)管理策略和不斷提升銷(xiāo)售服務(wù)質(zhì)量,促進(jìn)對(duì)應(yīng)產(chǎn)品提高銷(xiāo)量,也就更有利于實(shí)現(xiàn)對(duì)應(yīng)采購(gòu)商品的品牌生產(chǎn)廠家以及產(chǎn)品質(zhì)量的不斷提升,也就更有利于電商消費(fèi)者充分了解對(duì)應(yīng)商品的質(zhì)量好壞,是否商品值得放心購(gòu)買(mǎi)。
? ? ? ?關(guān)鍵詞:文本情感分析;詞云圖;SnowNLP 類(lèi)庫(kù)
目錄
1 引言
1.1研究的背景
1.2 研究的意義
2 相關(guān)技術(shù)介紹
?2.1 python簡(jiǎn)介
2.2 詞云圖
2.2.1詞云圖介紹
2.2.2 wordcloud庫(kù)繪制詞云
3 爬蟲(chóng)模塊
3.1 抓取模塊
3.1.1爬取商品評(píng)論網(wǎng)頁(yè)
3.1.3商品評(píng)論存儲(chǔ)模塊設(shè)計(jì)
4 繪制詞云圖
4.1 讀取文本內(nèi)容及進(jìn)行分詞
4.2 按指定長(zhǎng)度提取分詞后的詞
4.3 統(tǒng)計(jì)高頻詞匯
4.4 用wordcloud庫(kù)繪制詞云圖
5 snownlp文本情感分析
5.1 snownlp 介紹
5.2 準(zhǔn)備數(shù)據(jù)
5.3進(jìn)行驗(yàn)證好評(píng)率
5.4 圖形分析
6 小結(jié)
7總結(jié)與展望
7.1 總結(jié)
7.2 展望
8附錄
1 引言
1.1研究的背景
? ? ? ?隨著我國(guó)電子商務(wù)的不斷普及與快速發(fā)展,海量產(chǎn)品評(píng)論分析數(shù)據(jù)呈現(xiàn)爆炸式快速增長(zhǎng),對(duì)在線電商產(chǎn)品評(píng)論分析大數(shù)據(jù)產(chǎn)品做海量情感信息分析分類(lèi)研究,不僅可以有助于引導(dǎo)消費(fèi)者及時(shí)準(zhǔn)確掌握在線產(chǎn)品品牌口碑以及時(shí)決定自己購(gòu)買(mǎi)產(chǎn)品意向,對(duì)于幫助商家根據(jù)在線產(chǎn)品口碑營(yíng)銷(xiāo)用戶反饋分析結(jié)果及時(shí)自動(dòng)調(diào)整在線產(chǎn)品銷(xiāo)售服務(wù)器的質(zhì)量也同樣至關(guān)重要。如何從針對(duì)具有評(píng)論數(shù)據(jù)量大、非數(shù)據(jù)結(jié)構(gòu)化、含有特定意義網(wǎng)絡(luò)營(yíng)銷(xiāo)用語(yǔ)等不同特點(diǎn)的針對(duì)電商用戶在線產(chǎn)品評(píng)論數(shù)據(jù)進(jìn)行海量情感剖析分類(lèi)、挖掘有意義的情感信息,已經(jīng)逐漸成為電商大數(shù)據(jù)、人工智能、機(jī)器人工學(xué)習(xí)等技術(shù)交叉應(yīng)用領(lǐng)域?qū)W術(shù)研究的一個(gè)熱點(diǎn)。
? ? ? ?文本主觀情感活動(dòng)分析也可以叫文本情感活動(dòng)傾向性推理分析,是對(duì)一個(gè)帶有一定情感活動(dòng)傾向的文本主觀性人對(duì)文本內(nèi)容進(jìn)行情感分析、處理、歸納、推理的技術(shù)過(guò)程[1]。情感分析的方法一般有兩種,一種是通過(guò)機(jī)器學(xué)習(xí)的方法,把情感分析當(dāng)成分類(lèi)問(wèn)題來(lái)解決,要求有分好類(lèi)的訓(xùn)練數(shù)據(jù)集,一般是有監(jiān)督學(xué)習(xí);另一種是基于情感詞典的方法,計(jì)算句子的情感得分,推測(cè)出情感狀態(tài),多用于無(wú)監(jiān)督學(xué)習(xí)的問(wèn)題?;谇楦性~典的標(biāo)注方法一般需要大量文本標(biāo)注,基于詞典機(jī)器視覺(jué)學(xué)習(xí)的標(biāo)注方法在如何選擇那些帶有不同特點(diǎn)的多語(yǔ)義文本信息的情感分類(lèi)文本問(wèn)題上實(shí)際表現(xiàn)將會(huì)更好,但由于機(jī)器視覺(jué)學(xué)習(xí)在情感特征文本研究分析方面情感泛化分析能力相對(duì)較差,數(shù)據(jù)分析訓(xùn)練能力不足也有可能直接導(dǎo)致情感分類(lèi)器理的失衡[2]。從目前已有多項(xiàng)研究成果看,通過(guò)三星電商產(chǎn)品評(píng)論的情感文本相關(guān)情感泛化分析已經(jīng)取得了一定實(shí)際成效。例例如ashu等[3]通過(guò)相關(guān)情感文本分析可以挖掘出中國(guó)用戶對(duì)三星產(chǎn)品的文本情感需求傾向;dasgupta等[4]在2016年通過(guò)對(duì)中國(guó)三星在線手機(jī)用戶電商評(píng)論的相關(guān)情感文本分析,得到中國(guó)消費(fèi)者對(duì)三星手機(jī)產(chǎn)品信息情感特征的客觀反饋;李琴等[5]在2018年基于文本情感分析詞典對(duì)中國(guó)在線旅游景區(qū)電商評(píng)論內(nèi)容進(jìn)行相關(guān)情感文本分析后可得到文本情感分析類(lèi)別中的傾向性與景區(qū)門(mén)票價(jià)格波動(dòng)之間是否客觀存在的直接聯(lián)系。
1.2 研究的意義
? ? ? ?基于目前現(xiàn)有科學(xué)研究成果,在此文中采用基于手機(jī)情感智能詞典的分析方法對(duì)目前京東手機(jī)商品編號(hào)編碼為10037616578008的京東手機(jī)競(jìng)價(jià)評(píng)論需求信息文本進(jìn)行手機(jī)情感詞典分析,對(duì)相關(guān)數(shù)據(jù)內(nèi)容進(jìn)行深度挖掘,客觀化地反映京東消費(fèi)者的手機(jī)評(píng)價(jià)需求信息和商品關(guān)注點(diǎn),并通過(guò)手機(jī)采用數(shù)據(jù)庫(kù)和庫(kù)的snownlp庫(kù)對(duì)京東電商手機(jī)評(píng)論信息文本中的數(shù)據(jù)分別對(duì)其進(jìn)行分析相關(guān)性的情感性部分和對(duì)數(shù)值的分析可視性進(jìn)行優(yōu)化。本文將京東的多個(gè)華為相關(guān)手機(jī)電商評(píng)論文本信息數(shù)據(jù)作為主要研究調(diào)查對(duì)象一并進(jìn)行華為相關(guān)電商文本情感分析獲取研究,從中可以得到有用的電商文本相關(guān)情感分析數(shù)據(jù),這些情感數(shù)據(jù)充分反映了華為用戶對(duì)電商產(chǎn)品的各種整體使用意見(jiàn)和評(píng)價(jià)態(tài)度,具有很高的可應(yīng)用研究?jī)r(jià)值。這些商品相關(guān)質(zhì)量情感分析文本通過(guò)數(shù)據(jù)的收集分析綜合獲取,有利于及時(shí)幫助其他電商運(yùn)營(yíng)企業(yè)不斷改進(jìn)電商產(chǎn)品質(zhì)量營(yíng)銷(xiāo)管理模式銷(xiāo)售策略和不斷優(yōu)化提升產(chǎn)品銷(xiāo)售質(zhì)量服務(wù)產(chǎn)品質(zhì)量,促進(jìn)其他電商企業(yè)產(chǎn)品進(jìn)入市場(chǎng)整體銷(xiāo)量,也就將會(huì)更好的有利于直接與相對(duì)應(yīng)同時(shí)采購(gòu)?fù)?lèi)商品的其他相關(guān)質(zhì)量生產(chǎn)廠家及時(shí)進(jìn)行電商產(chǎn)品質(zhì)量的不斷優(yōu)化提升,也就將會(huì)更好的有利于幫助電商企業(yè)消費(fèi)者及時(shí)深入了解直接對(duì)應(yīng)采購(gòu)商品的相關(guān)質(zhì)量服務(wù)好壞,是否有該商品質(zhì)量值得他們放心進(jìn)行購(gòu)買(mǎi)。
2 相關(guān)技術(shù)介紹
?2.1 python簡(jiǎn)介
? ? ? ?如今,python已經(jīng)逐漸發(fā)展早熟成為一種再主流不過(guò)的高級(jí)企業(yè)應(yīng)用編程設(shè)計(jì)應(yīng)用語(yǔ)言了。它天生麗質(zhì),易于譯者翻譯或由讀者編寫(xiě),非常實(shí)用,從而甚至可以為它贏得廣泛的中國(guó)人民幣和群眾廣泛使用和打基礎(chǔ),被譽(yù)為"宇宙最好的編程語(yǔ)言"。python這個(gè)語(yǔ)言本身是一種基于一個(gè)跨不同行業(yè)的多平臺(tái)、開(kāi)源、免費(fèi)的企業(yè)軟件的可解釋型高級(jí)應(yīng)用企業(yè)動(dòng)態(tài)應(yīng)用程序企業(yè)編程設(shè)計(jì)應(yīng)用語(yǔ)言。python不僅僅它擁有大量的企業(yè)數(shù)據(jù)庫(kù),且非常簡(jiǎn)單易于企業(yè)用戶操作學(xué)習(xí),可以廣泛的應(yīng)用來(lái)高效的編程設(shè)計(jì)以及開(kāi)發(fā)各種高級(jí)企業(yè)應(yīng)用動(dòng)態(tài)程序。python企業(yè)編程設(shè)計(jì)語(yǔ)言目前廣泛應(yīng)用于高級(jí)企業(yè)網(wǎng)絡(luò)安全與防爬蟲(chóng)、計(jì)算與網(wǎng)絡(luò)應(yīng)用與大數(shù)據(jù)系統(tǒng)統(tǒng)計(jì)分析、人工智能、自動(dòng)化運(yùn)維、云計(jì)算等多個(gè)專(zhuān)業(yè)領(lǐng)域。
? ? ? ?大部分人對(duì)于 Python 語(yǔ)言的定義就是,它是一種效率極高的腳本語(yǔ)言,這其實(shí)是和使用者的個(gè)人看法有關(guān),盡管它本身就具備著周期短、便于使用等諸多優(yōu)點(diǎn),還能從容應(yīng)對(duì)所有的腳本語(yǔ)言工作,但它可不僅僅是一款功能強(qiáng)大的 shell 語(yǔ)言,甚至可以說(shuō)是超出了控制語(yǔ)言的范疇,因?yàn)樗诳焖偾异`活的開(kāi)發(fā)模式中可以有出色的表現(xiàn),所以我們常說(shuō)Python 語(yǔ)言是多面性的。相比之下,Python 語(yǔ)言的可讀性、可維護(hù)性等要比傳統(tǒng)腳本語(yǔ)言強(qiáng)大得多,這就是為什么許多人更愿意使用 Python 語(yǔ)言的根本原因。
2.2 詞云圖
2.2.1詞云圖介紹
? ? ?(1)詞云圖是一種可以用來(lái)有效展現(xiàn)高頻產(chǎn)品關(guān)鍵詞的超高可視性優(yōu)化視覺(jué)表達(dá),通過(guò)各種文字、色彩、圖形的巧妙搭配,產(chǎn)生出具有視覺(jué)沖擊力地高頻視覺(jué)效果,而且不僅能夠有效傳達(dá)有價(jià)值的產(chǎn)品信息。
? ? ?(2)詞云就是通過(guò)形成"關(guān)鍵詞云層"或"關(guān)鍵詞渲染",對(duì)當(dāng)前網(wǎng)絡(luò)語(yǔ)言文本中經(jīng)常出現(xiàn)使用頻率較高的"關(guān)鍵詞"的進(jìn)行視覺(jué)上的突出。
? ? ?(3)詞云圖過(guò)濾掉大量的網(wǎng)頁(yè)文本含義信息,使現(xiàn)在瀏覽英文網(wǎng)頁(yè)者只要一眼就能掃過(guò)網(wǎng)頁(yè)文本就已經(jīng)可以清晰領(lǐng)略網(wǎng)頁(yè)文本的重要主旨。
? ? ?(4)本文主要通過(guò)對(duì)已分析獲取的京東中的商品詞云評(píng)論數(shù)據(jù)內(nèi)容分析進(jìn)行數(shù)據(jù)預(yù)處理、文本解析分詞、詞頻質(zhì)量統(tǒng)計(jì)、詞云效果展示,熟悉分析制作商品詞云的基本操作方法。
2.2.2 wordcloud庫(kù)繪制詞云
? ? ? ?wordcloudd這是優(yōu)秀的關(guān)鍵詞云信息展示第三方軟件庫(kù),可以在多個(gè)命令行通過(guò)命令pip進(jìn)行安裝
? ? ?wordcloud文本庫(kù)把一個(gè)常用詞云中的對(duì)象可以當(dāng)作一個(gè)常用文本詞wordcloud文本庫(kù)的詞云對(duì)象,wordcloud.wordcloud()詞云代表一個(gè)不同常用文本中所云對(duì)應(yīng)的多個(gè)常用詞語(yǔ)和云,可以根據(jù)同一常用文本中多個(gè)常用詞語(yǔ)同時(shí)對(duì)應(yīng)出現(xiàn)的云數(shù)量和對(duì)應(yīng)頻率等常用文本詞云參數(shù)手動(dòng)設(shè)定繪制一個(gè)常用詞語(yǔ)和云,繪制一個(gè)常用詞云的各種整體狀和形狀,尺寸和云在詞云上的顏色都可以是你自己可以自行手動(dòng)設(shè)定。wordcloud文本庫(kù)常用詞云參數(shù)下:
圖1 wordcloud庫(kù)參數(shù)
3 爬蟲(chóng)模塊
3.1 抓取模塊
3.1.1爬取商品評(píng)論網(wǎng)頁(yè)
? ? ? ? 要對(duì)各個(gè)電商商務(wù)平臺(tái)上的在線用戶評(píng)論流量數(shù)據(jù)整合進(jìn)行用戶情感數(shù)據(jù)分析與流量數(shù)據(jù)挖掘,首先需要通過(guò)爬取平臺(tái)相應(yīng)的在線評(píng)論流量數(shù)據(jù)。該課程設(shè)計(jì)只爬取一個(gè)商品的評(píng)論,爬取京東商品的評(píng)論,解析頁(yè)面信息時(shí),是獲取不到的,必須審查元素,點(diǎn)擊network后按Ctrl+R,即可看到商品評(píng)論網(wǎng)頁(yè)鏈接如下三個(gè)圖所示。把Requrst URL中的評(píng)論網(wǎng)址和user-agant信息分別提取出來(lái)。
圖2
圖3
圖4
相關(guān)代碼如下:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'Referer': 'https://item.jd.com/10037616578008.html'
}
end_page = int(input('請(qǐng)輸入爬取的評(píng)論頁(yè)碼:'))
#page=1
# 創(chuàng)建列表
#b=[]
for i in range(0,end_page+1):#end_page+1
url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10037616578008&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1 '
url = url.format(i)
3.1.3商品評(píng)論存儲(chǔ)模塊設(shè)計(jì)
? ? ? ?數(shù)據(jù)爬取后通過(guò)評(píng)論.py將爬取到的評(píng)論信息數(shù)據(jù)商品內(nèi)存、商品顏色、評(píng)論時(shí)間、id、評(píng)論內(nèi)容四個(gè)字段存儲(chǔ)到excel中,爬取結(jié)果的部分?jǐn)?shù)據(jù)如下圖5所示。
圖5
4 繪制詞云圖
4.1 讀取文本內(nèi)容及進(jìn)行分詞
下圖所示為文本文件中的商品信息評(píng)論內(nèi)容,顧客關(guān)心的是內(nèi)容中有關(guān)于商品的哪些更重要,一個(gè)簡(jiǎn)單的實(shí)現(xiàn)手段就是看各個(gè)詞出現(xiàn)的次數(shù),出現(xiàn)次數(shù)越高的詞所對(duì)應(yīng)內(nèi)容的重要程度可能就越高,要達(dá)到這一目的,需要進(jìn)行中文分詞和詞頻統(tǒng)計(jì)。
圖6 商品評(píng)論文本內(nèi)容
? ? ? ?jieba搜索分詞引擎有三種安全模式:高安全模式(fullmode)、精準(zhǔn)安全模式(defaultmode)、搜索結(jié)果引擎精準(zhǔn)模式(searchmode)。全模式層次分詞方法試圖把一個(gè)句子中所有原本可以層次組成一個(gè)詞的所有詞語(yǔ)都進(jìn)行拆分再層次組合在一起來(lái),但結(jié)果還是有可能發(fā)生重疊,不能用于解決具有歧義性的問(wèn)題;精準(zhǔn)的全模式層次分詞方法試圖將每個(gè)語(yǔ)句最精確地層次分開(kāi),結(jié)果成為無(wú)可能重疊性的詞匯,適合用來(lái)做句子文本中的情感信息分析;采用搜索結(jié)果引擎分詞模式在精準(zhǔn)分詞模式的分析基礎(chǔ)上,把長(zhǎng)度分詞切片進(jìn)行再一次分詞,適用于其他搜索結(jié)果引擎的再分詞。此處我們采用了jjieba等再分詞的精準(zhǔn)分析模式,調(diào)用了icutu的方法,,能較準(zhǔn)確地直接有效實(shí)現(xiàn)一個(gè)網(wǎng)站評(píng)論語(yǔ)句發(fā)言一個(gè)語(yǔ)句的長(zhǎng)詞切片式再分詞,首先通過(guò)導(dǎo)入jieba庫(kù),讀取原評(píng)論數(shù)據(jù)把新的評(píng)論語(yǔ)句內(nèi)容通過(guò)各種切片讀取方法依次切取顯示出來(lái),將其直接保存為其他文本格式,然后再依次進(jìn)行其他文本格式內(nèi)容的切片讀取,最后依次進(jìn)行語(yǔ)句分詞,代碼方法如下:
#導(dǎo)入jieba庫(kù)
import jieba
#讀取數(shù)據(jù)
data=pd.read_excel('商品評(píng)論.xlsx')
#通過(guò)切片把評(píng)論切取出來(lái)
data1=data.iloc[:,5]
#將數(shù)據(jù)框轉(zhuǎn)化為文本內(nèi)容
data1.to_csv('data.txt',index=False,sep=',',encoding='utf_8_sig')
#讀取文本內(nèi)容
report=open('data.txt',encoding='utf_8').read()
#jieba庫(kù)中的cut進(jìn)行分詞
words=jieba.cut(report)
4.2 按指定長(zhǎng)度提取分詞后的詞
? ? ? ?完成中文分詞步驟后,接下來(lái)進(jìn)行詞頻統(tǒng)計(jì),該設(shè)計(jì)選取的長(zhǎng)度大于等于3個(gè)字的詞進(jìn)行講解,代碼如下:
#通過(guò)for循環(huán)語(yǔ)句提取長(zhǎng)度大于等于3個(gè)字的詞
report_words=[]
for word in words:
??? if len(word)>=3:#將長(zhǎng)度大于等于3個(gè)字的詞放入列表
??????? report_words.append(word)
print(report_words)#輸出
第一行代碼創(chuàng)建一個(gè)空列表report_words,用于存儲(chǔ)提取結(jié)果;第二到第四行代碼通過(guò)for循環(huán)語(yǔ)句遍歷分詞結(jié)果中的每一個(gè)詞,如果該詞的長(zhǎng)度大于等于3個(gè)字,就把它添加到列表report_words中;第六行代碼打印輸出提取結(jié)果,如下圖所示:
圖7 分詞提取結(jié)果
4.3 統(tǒng)計(jì)高頻詞匯
? ? ? ?統(tǒng)計(jì)詞頻用collection庫(kù)中的Counter()函數(shù),且用most_common()函數(shù)來(lái)完成實(shí)現(xiàn)提取排名前100位的詞。代碼如下。
t=Counter(report_words).most_common(100)
4.4 用wordcloud庫(kù)繪制詞云圖
? ? ? ?在Python中,可利用wordcloud庫(kù)繪制詞云圖,該庫(kù)可使用命令“pip install wordcloud”來(lái)安裝。由前面的長(zhǎng)度篩選的結(jié)果repor_words,首先用代碼content=','.join(report_words)將列表轉(zhuǎn)換為字符串,以空格作為連接符,以滿足詞云圖生成函數(shù)對(duì)數(shù)據(jù)格式的要求。其次用WordCloud()函數(shù)設(shè)置詞云圖參數(shù),然后用generate()函數(shù)將指定的字符串繪制成詞云圖。代碼如下:
w=WordCloud(font_path='華文彩云.TTF',#字體文件路徑
??????????? background_color=None,#背景顏色
??????????? width=100,#寬度
??????????? height=88#高度
??????????? ).generate(content)#繪制詞云圖
最后,用w.to_file('詞云圖.png')函數(shù)導(dǎo)出圖片,結(jié)果如下圖所示。
圖8 詞云圖
由詞云圖可以看出,顧客評(píng)論最多的是很漂亮、玩游戲、充電器等。同時(shí)通過(guò)分析可以得出顧客對(duì)該商品是比較滿意的。
5 snownlp文本情感分析
5.1 snownlp 介紹
? ? ? ?snownlp主要研究功能是你可以自己動(dòng)手設(shè)計(jì)進(jìn)行一個(gè)文本中文搜索摘要分詞(兩個(gè)文本算法分別也就是是acharacter-basedgenerativemodel)、詞性分析原理文本標(biāo)注(兩個(gè)文本原理分別也就是2-tnt、3-gramodel隱馬)、情感分析原理文本分析(雖然我在官網(wǎng)上的木板上已經(jīng)有詳細(xì)說(shuō)明介紹兩個(gè)中文文本原理,但是沒(méi)有詳細(xì)指明專(zhuān)門(mén)用于商品購(gòu)物相關(guān)評(píng)論和分類(lèi)的其他商品相關(guān)評(píng)論的兩個(gè)中文原理準(zhǔn)確率可能會(huì)比較高,其實(shí)主要功能是因?yàn)樗膬蓚€(gè)中文評(píng)論語(yǔ)料庫(kù)主要研究?jī)?nèi)容也都是專(zhuān)門(mén)用于商品購(gòu)物相關(guān)評(píng)論技術(shù)方面的,可以自己一人動(dòng)手設(shè)計(jì)構(gòu)建一個(gè)用于相關(guān)評(píng)論專(zhuān)業(yè)技術(shù)領(lǐng)域內(nèi)的中文語(yǔ)料庫(kù),替換原來(lái)的,準(zhǔn)確率也挺不錯(cuò)的)、文本原理搜索摘要分類(lèi)(兩個(gè)文本原理分別也就是樸素貝葉斯)、轉(zhuǎn)換一個(gè)漢語(yǔ)拼音、繁體轉(zhuǎn)換成中文簡(jiǎn)體、提取一個(gè)漢語(yǔ)文本原理搜索摘要關(guān)鍵詞(兩個(gè)文本原理分別也就是直接提取文本textrank)、提取一個(gè)文本搜索摘要(兩個(gè)文本原理分別也就是直接提取文本textrank)、分割兩個(gè)漢語(yǔ)句子、文本相似(兩個(gè)原理分別是aabm25)。
5.2 準(zhǔn)備數(shù)據(jù)
? ? ? ?讀取爬取獲得的原商品評(píng)論數(shù)據(jù)把評(píng)論內(nèi)容通過(guò)切片方法切取出來(lái),代碼如下:
df=pd.read_excel('商品評(píng)論.xlsx')
#提取所有數(shù)據(jù)
df1=df.iloc[:,5]
print('將提取的數(shù)據(jù)打印出來(lái):\n',df1)
5.3進(jìn)行驗(yàn)證好評(píng)率
? ? ? ?預(yù)測(cè)影響概率分析結(jié)果為基于一個(gè)評(píng)論對(duì)其整體情感態(tài)度的直接預(yù)測(cè)影響概率,評(píng)論對(duì)于整體情感態(tài)度的直接預(yù)測(cè)影響概率大部分為平均大于或者幾乎等于0.5,可以將其直接判斷為是否正面影響評(píng)論整體情感,小于0.5的可以判斷可能為負(fù)面評(píng)論情感。所以以下將概率預(yù)測(cè)中的概率閾值分為兩類(lèi)大于或者幾乎等于0.5的實(shí)際使用則將評(píng)論文章主題首頁(yè)標(biāo)簽對(duì)其賦予閾值后的值設(shè)定為"正面",小于0.5的實(shí)際使用則將評(píng)論文章主題首頁(yè)標(biāo)簽對(duì)其賦予閾值后的值設(shè)定為"負(fù)面",方便后面與其他實(shí)際使用評(píng)論主題標(biāo)簽中的讀者及時(shí)進(jìn)行綜合分析或者比較。代碼如下:
#myval保存預(yù)測(cè)值
myval=[]
#存放正面
good=0
#存放負(fù)面
bad=0
for i in values:
?? if (i>=0.5):#正面評(píng)價(jià)
?????? myval.append("正面")
?????? good=good+1
?? else:#負(fù)面評(píng)價(jià)
?????? myval.append("負(fù)面")
?????? bad=bad+1
df['預(yù)測(cè)值']=values
df['評(píng)價(jià)類(lèi)別']=myval
#將結(jié)果輸出到Excel
df.to_excel('評(píng)論分析.xlsx')
部分運(yùn)行結(jié)果為:
圖9 評(píng)論態(tài)度預(yù)測(cè)結(jié)果
通過(guò)統(tǒng)計(jì)實(shí)際數(shù)據(jù),得到分類(lèi)效果的評(píng)價(jià),把從網(wǎng)絡(luò)上爬取到200條評(píng)論進(jìn)行人工情感極性標(biāo)注,作為情感分析測(cè)試集,代碼如下:
rate=good/(good+bad)
print('好評(píng)率','%.f%%' % (rate * 100)) #格式化為百分比
代碼運(yùn)行結(jié)果為:
圖10 好評(píng)率
從測(cè)試結(jié)果知道,經(jīng)過(guò)訓(xùn)練的SnowNLP情感分析模型的好評(píng)率達(dá)到88%,好評(píng)率較高。
5.4 圖形分析
? ? ? ?使用Python庫(kù)調(diào)用針對(duì)sentiment下的文本情感數(shù)據(jù)分類(lèi)分析方法,可以對(duì)一個(gè)文本中的情感數(shù)據(jù)進(jìn)行歸類(lèi)評(píng)分,得到的文本情感歸類(lèi)分值在0到1之間,分值接近大于0.5情感較為積極,當(dāng)情感分值接近小于0.5,情感較為消極;越分值接近0,情感越消極。snownlp庫(kù)中已經(jīng)訓(xùn)練好的情感模型主要是基于當(dāng)前電商營(yíng)銷(xiāo)產(chǎn)品用戶評(píng)論的海量數(shù)據(jù),本次課題研究主要調(diào)用針對(duì)snownlp庫(kù)數(shù)據(jù)進(jìn)行的的情感歸類(lèi)分析并沒(méi)有重新調(diào)用訓(xùn)練好的模型。snownlp庫(kù)的情感歸類(lèi)分析部分主要代碼結(jié)構(gòu)如下:
#作圖
y=values
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w',label=u'評(píng)價(jià)分值')
plt.xlabel('用戶')#x軸
plt.ylabel('評(píng)價(jià)分值')#y軸
# 讓圖例生效
plt.legend()
#添加標(biāo)題
plt.title('評(píng)論情感分析',family='SimHei',size=14,color='black')文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-443710.html
plt.show()文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-443710.html
用matplotlib方法生成一個(gè)情感總量分值學(xué)生分布分?jǐn)?shù)折射曲線圖,實(shí)現(xiàn)學(xué)生情感總值分?jǐn)?shù)分布可視化,實(shí)驗(yàn)分析結(jié)果顯示如下圖圖11所示。
圖11 評(píng)論情感分析
6 小結(jié)
? ? ? 本文通過(guò)使用我的urllib.request這個(gè)爬蟲(chóng)獲取了一個(gè)京東華為商品編號(hào)編碼為10037616578008的京東華為品牌手機(jī)商品評(píng)論用戶數(shù)據(jù)。在自動(dòng)繪制京東詞匯量云圖分析方面,通過(guò)c和python三個(gè)語(yǔ)言分別完成了京東分詞、統(tǒng)計(jì)以及詞頻等三個(gè)數(shù)據(jù)庫(kù)的預(yù)處理分析工作,最后分別利用matplotlib和wordcloud語(yǔ)言完成了京東詞匯量云圖的詞頻展示,從這張圖片中可以明顯看到京東用戶對(duì)該華為手機(jī)評(píng)論整體上還是比較滿意。在用snownlp進(jìn)行文本情感分析方面,通過(guò)好評(píng)率為88%,該方法也表現(xiàn)了顧客對(duì)該手機(jī)是比較滿意的。
7總結(jié)與展望
7.1 總結(jié)
? ? ? ?采用urllib.request庫(kù)爬取數(shù)據(jù),采取基于pythonp的語(yǔ)言對(duì)食品評(píng)論中的數(shù)據(jù)內(nèi)容進(jìn)行高頻分析,其中高頻采用了基于高頻情感學(xué)的詞典和高頻運(yùn)用基于snownlp的分析方法對(duì)一個(gè)京東品牌食品手機(jī)評(píng)論中的數(shù)據(jù)內(nèi)容進(jìn)行了高頻情感詞典分析,獲取銷(xiāo)量排前100位的高頻關(guān)鍵詞匯,并把高頻關(guān)鍵字和詞語(yǔ)內(nèi)容進(jìn)行高頻可視化分析展示。通過(guò)高頻關(guān)鍵詞語(yǔ)進(jìn)行分析可以發(fā)現(xiàn),消費(fèi)者對(duì)該品牌手機(jī)的食品評(píng)論還是比較滿意的,最值得關(guān)注的一點(diǎn)是充電器、P50、P30等,都用戶給出了非常滿意的用戶情感反饋評(píng)價(jià)。針對(duì)用戶反饋的這些問(wèn)題,該商家表示可以考慮繼續(xù)在這款手機(jī)的前置攝像頭、手機(jī)的外包裝以及質(zhì)量、價(jià)格的用戶滿意度上繼續(xù)保持領(lǐng)先優(yōu)勢(shì)。
7.2 展望
研究通過(guò)隨機(jī)匹配程度情感客體詞典,對(duì)程度情感形容詞、程度情感副詞、否定詞典等進(jìn)行遍歷,計(jì)算人類(lèi)評(píng)論發(fā)言語(yǔ)句的文本情感分?jǐn)?shù)值,用snsnownlp庫(kù)算法進(jìn)行文本情感歸類(lèi)分析,以矩形柱狀曲線圖直觀化地展示評(píng)論語(yǔ)句中的情感值和分?jǐn)?shù)值的分布變化情況,并對(duì)相關(guān)實(shí)驗(yàn)結(jié)果進(jìn)行了初步分析驗(yàn)證。由于人類(lèi)文本情感客體是一個(gè)微妙又復(fù)雜的而且?guī)в兄饔^情感意愿的文本客體,目前使用計(jì)算機(jī)機(jī)器進(jìn)行的人類(lèi)文本客體情感歸類(lèi)分析,只是從結(jié)合數(shù)學(xué)學(xué)和統(tǒng)計(jì)學(xué)的一個(gè)角度上在融合了與機(jī)器學(xué)習(xí)等自然語(yǔ)言互相匹配的數(shù)學(xué)規(guī)則下來(lái)進(jìn)行的文本情感解析分類(lèi)。目前機(jī)器通過(guò)數(shù)學(xué)算法用各種量化情感標(biāo)準(zhǔn)方法去準(zhǔn)確區(qū)分人類(lèi)情感極性,很難準(zhǔn)確區(qū)分把握和抓住其中隱含的復(fù)雜情感。通過(guò)運(yùn)用大數(shù)據(jù)以及機(jī)器深度學(xué)習(xí)等技術(shù)方法我們能夠不斷逐步提高語(yǔ)音識(shí)別情感分析的技術(shù)準(zhǔn)確度,但是如何通過(guò)訓(xùn)練才能讓一個(gè)機(jī)器人智能能夠像一個(gè)人類(lèi)一樣獨(dú)立思維,能很好區(qū)分并準(zhǔn)確把握和抓住屬于人類(lèi)細(xì)膩多變的隱含情感,任重而道遠(yuǎn)。
參考文獻(xiàn):
[1] 劉建波, 楊峰. 面向輿情分析的短文本頻繁模式聚類(lèi)算法[J]. 北京電子科技學(xué)院學(xué)報(bào), 2010, 18(4):6-11.
[2] 章蓬偉, 賈鈺峰, 劉強(qiáng), 等. 基于數(shù)據(jù)挖掘技術(shù)的文本情感分析技術(shù)研究[J]. 信息通信, 2020(1):77-78.
[3] HU Minqing, LIU Bing. Mining and summarizing customerreviews[C]//KDD '04:Proceedings of the tenth ACM SIGKDDinternational conference on Knowledge discovery and datamining, August 22-25, 2004, Seattle, WA, USA. New York:ACM, 2004:168-177.
[4] DASGUPTA S, SENGUPTA K. Analyzing consumer reviewswith text mining approach:A case study on Samsung GalaxyS3[J]. Paradigm, 2016, 20(1):1-13.
[5] 李琴, 李少波, 王安虹, 等. 基于在線評(píng)論數(shù)據(jù)的景區(qū)門(mén)票浮動(dòng)制測(cè)評(píng)分析方法[J]. 科學(xué)技術(shù)與工程, 2018, 18(1):273-279
[6]方芳,Scrapy框架京東網(wǎng)站筆記本電腦評(píng)論數(shù)據(jù)爬取和分析[J]. 2020.06.18
[7]王宇韜、吳子湛,零基礎(chǔ)學(xué)Python網(wǎng)絡(luò)爬蟲(chóng)案例實(shí)戰(zhàn)全流程詳解:入門(mén)與提高篇[M].-北京:機(jī)械工業(yè)出版社,2021.06
[8]陳諾祎,單菁,王佳英,石璐璐.基于文本挖掘的鴻蒙系統(tǒng)用戶評(píng)論情感分析與研究[J].科技資訊,2021,19(16):26-29.DOI:10.16661/j.cnki.1672-3791.2107-5042-8090.
[9]章蓬偉,賈鈺峰,邵小青,拜爾娜·木沙,趙裕峰.基于文本情感分析的電商產(chǎn)品評(píng)論數(shù)據(jù)研究[J].微處理機(jī),2020,41(06):58-62.
[10]楊鑫, 楊云帆, 焦維, 等. 基于領(lǐng)域情感詞典的民宿評(píng)論情感分析[J]. 科學(xué)技術(shù)與工程, 2020, 20(7):2794-2800.
[11]陳興蜀, 常天祐, 王海舟, 等. 基于微博數(shù)據(jù)的“新冠肺炎疫情”輿情演化時(shí)空分析[J]. 四川大學(xué)學(xué)報(bào)(自然科學(xué)版),2020, 57(2):409-416.
8附錄
(1)商品信息評(píng)論爬取
#導(dǎo)入urllib.request
import urllib.request
#導(dǎo)入json
import json
#導(dǎo)入pandas
import pandas as pd
b = []
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'Referer': 'https://item.jd.com/10037616578008.html'
}
end_page = int(input('請(qǐng)輸入爬取的評(píng)論頁(yè)碼:'))
#page=1
# 創(chuàng)建列表
#b=[]
for i in range(0,end_page+1):#end_page+1
#獲取評(píng)論鏈接
??? url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10037616578008&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1 '
??? url = url.format(i)
??? request = urllib.request.Request(url=url,headers=headers)
??? request = urllib.request.Request(url=url,headers=headers)
??? content = urllib.request.urlopen(request).read().decode('gbk')
??? content = content.strip("fetchJSON_comment98();")
??? obj = json.loads(content)
??? #獲取評(píng)論信息
??? comments = obj['comments']
??? data = []
??? # 獲取商品評(píng)論信息
??? for j in range(len(comments)):
??????? #fp = open('京東.txt','a',encoding='utf8')
??????? data = []
??????? # 獲取商品評(píng)論時(shí)間
??????? productSize = comments[j]['productSize']
??????? data.append(productSize)
??????? Color = comments[j]['productColor']
??????? data.append(Color)
??????? creationTime = comments[j]['creationTime']#productSize
??????? data.append(creationTime)
??????? # 獲取評(píng)論者id
??????? id = comments[j]['id']
??????? data.append(id)
??????? # 獲取評(píng)論內(nèi)容
??????? contents = comments[j]['content']
??????? data.append(contents)
??????? b.append(data)
??????? #file.save(datalist)
??????? #轉(zhuǎn)換為數(shù)據(jù)框
??????? df = pd.DataFrame(b)
??????? df.columns = ['商品內(nèi)存','商品顏色','評(píng)論時(shí)間','id','評(píng)論內(nèi)容']
??????? #到處excel
??????? df.to_excel('商品評(píng)論.xlsx')#50
- 繪制詞云圖
#導(dǎo)入pandas包
import pandas as pd
#導(dǎo)入jieba庫(kù)
import jieba
#導(dǎo)入collections包
from collections import Counter
#讀取數(shù)據(jù)
data=pd.read_excel('商品評(píng)論.xlsx')
#通過(guò)切片把評(píng)論切取出來(lái)
data1=data.iloc[:,5]
#將數(shù)據(jù)框轉(zhuǎn)化為文本內(nèi)容
data1.to_csv('data.txt',index=False,sep=',',encoding='utf_8_sig')
#讀取文本內(nèi)容
report=open('data.txt',encoding='utf_8').read()
#jieba庫(kù)中的cut進(jìn)行分詞
words=jieba.cut(report)
#通過(guò)for循環(huán)語(yǔ)句提取長(zhǎng)度大于等于3個(gè)字的詞
report_words=[]
for word in words:
??? if len(word)>=3:#將長(zhǎng)度大于等于3個(gè)字的詞放入列表
??????? report_words.append(word)
print(report_words)#輸出
#詞頻統(tǒng)計(jì)
#獲取詞頻最高的100個(gè)詞
t=Counter(report_words).most_common(100)#取最多的100組
print(t)#刪除詞頻
#導(dǎo)入相關(guān)庫(kù)
from wordcloud import WordCloud
#import matplotlib.pyplot as plt
#列表轉(zhuǎn)換成字符串
content=','.join(report_words)
w=WordCloud(font_path='華文彩云.TTF',#字體文件路徑
??????????? background_color=None,#背景顏色
??????????? width=100,#寬度
??????????? height=88#高度
??????????? ).generate(content)#繪制詞云圖
w.to_file('詞云圖.png')#到處png格式圖片
(3)基于snownlp的商品評(píng)論文本情感分析
#加載情感分析模塊
from snownlp import SnowNLP
#導(dǎo)入pandas包
import pandas as pd
#導(dǎo)入plt函數(shù)
import matplotlib.pyplot as plt
#導(dǎo)入樣例數(shù)據(jù)
data='商品評(píng)論.xlsx'
#讀取文本數(shù)據(jù)
df=pd.read_excel(data)
#提取所有數(shù)據(jù)
df1=df.iloc[:,5]
print('將提取的數(shù)據(jù)打印出來(lái):\n',df1)
#遍歷每條評(píng)論進(jìn)行預(yù)測(cè)
values=[SnowNLP(i).sentiments for i in df1]
#輸出積極的概率,大于0.5積極的,小于0.5消極的
#myval保存預(yù)測(cè)值
myval=[]
#存放正面
good=0
#存放負(fù)面
bad=0
for i in values:
?? if (i>=0.5):#正面評(píng)價(jià)
?????? myval.append("正面")
?????? good=good+1
?? else:#負(fù)面評(píng)價(jià)
?????? myval.append("負(fù)面")
?????? bad=bad+1
df['預(yù)測(cè)值']=values
df['評(píng)價(jià)類(lèi)別']=myval
#將結(jié)果輸出到Excel
df.to_excel('評(píng)論態(tài)度預(yù)測(cè).xlsx')
rate=good/(good+bad)
print('好評(píng)率','%.f%%' % (rate * 100)) #格式化為百分比
#作圖
y=values
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w',label=u'評(píng)價(jià)分值')
plt.xlabel('用戶')#x軸
plt.ylabel('評(píng)價(jià)分值')#y軸
# 讓圖例生效
plt.legend()
#添加標(biāo)題
plt.title('評(píng)論情感分析',family='SimHei',size=14,color='black')
plt.show()
到了這里,關(guān)于基于SnowNLP的商品評(píng)論文本情感分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!