999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的商品評論文本情感分析

2020-05-13 14:15:23曾小芹余宏
電腦知識與技術(shù) 2020年8期
關(guān)鍵詞:文本情感分析

曾小芹 余宏

摘要:文本情感分析是自然語言處理的重要過程。研究首先運(yùn)用Selenium爬蟲抓取評論文本,通過Jieba分詞工具對文本進(jìn)行分詞、詞性標(biāo)注及關(guān)鍵詞詞云的生成,再選用適用于中文文本處理的snowNLP庫對評論文本進(jìn)行情感計(jì)算和結(jié)果可視化,并通過準(zhǔn)確率和召回率驗(yàn)證了研究結(jié)果,將對結(jié)果進(jìn)行了詳細(xì)分析。最后,給出了進(jìn)一步研究方向。

關(guān)鍵詞:中文文本情感分析;SnowNLP;Python;NLP

中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A

文章編號:1009-3044(2020)08-0181-03

文本情感研究是計(jì)算機(jī)語言學(xué)、人工智能、機(jī)器學(xué)習(xí)、信息檢索、數(shù)據(jù)挖掘等交叉領(lǐng)域的研究熱點(diǎn),具有高度綜合性和實(shí)用性。文本情感分析就是對文本的顯性主觀性或隱性關(guān)聯(lián)性信息進(jìn)行分析,讓機(jī)器感受人類的感情從而更深入地理解人類語言,為自然語言處理(NLP)的研究提供有效幫助。而NLP在諸多實(shí)際應(yīng)用如個(gè)性化推薦系統(tǒng)、信息安全過濾系統(tǒng)、網(wǎng)絡(luò)用戶興趣挖掘、網(wǎng)線預(yù)警系統(tǒng)等的決策制定中都有產(chǎn)生帶來巨大的經(jīng)濟(jì)、社會效益。為此,對文本情感識別具有重要的學(xué)術(shù)研究意義及社會經(jīng)濟(jì)價(jià)值。

1 主要相關(guān)技術(shù)簡介

1.1 SnowNLP庫

Python有多個(gè)工具庫用于自然語言處理,但絕大多數(shù)是針對英文的處理。由于中英文的諸多差異,很多庫不能直接拿來使用,要擴(kuò)展也不簡單。SnowNLP庫是一個(gè)用Python語言編寫的專門處理中文文本的類庫,與其他類庫不同的是它的實(shí)現(xiàn)沒有依靠NLTK,所有算法均是自主實(shí)現(xiàn),且自帶語料庫和情感字典。SnowNLP支持多種中文文本處理操作包括:中文分詞、詞性標(biāo)注、情感分析、文本分類、轉(zhuǎn)換成拼音、繁體轉(zhuǎn)簡體、提取文本關(guān)鍵詞、提取文本摘要及計(jì)算文本相似度等[1],功能十分全面。

1.2 Selenium爬蟲

傳統(tǒng)的爬蟲通過直接模擬HTTP請求來爬取站點(diǎn)信息,但當(dāng)網(wǎng)絡(luò)爬蟲被濫用后,互聯(lián)網(wǎng)上就出現(xiàn)太多同質(zhì)的東西,原創(chuàng)版權(quán)得不到保護(hù),且傳統(tǒng)的方式和瀏覽器訪問差異比較明顯,當(dāng)前很多網(wǎng)站網(wǎng)頁都有反爬蟲機(jī)制,要想獲取網(wǎng)頁內(nèi)容就沒有那么輕松了。Selenium是自動(dòng)化瀏覽器技術(shù),通過驅(qū)動(dòng)瀏覽器來模擬真實(shí)瀏覽器完成網(wǎng)絡(luò)行為,最終拿到網(wǎng)頁渲染后的信息。整個(gè)過程就如真正的用戶在操作,為此,它用于爬蟲躲避反爬機(jī)制再合適不過。Selenium爬蟲支持多種語言及多種瀏覽器.不用去分析每個(gè)請求的具體參數(shù),比起傳統(tǒng)的爬蟲開發(fā)起來更容易,它唯一的不足是速度慢,如果對爬蟲的速度沒有要求,那使用Selenium是個(gè)非常不錯(cuò)的選擇。當(dāng)然,在實(shí)際的操作過程中,還會遇到很多意外,比如,雖然Selenium完全模擬了人工操作,給反爬增加了困難,但如果網(wǎng)站對請求頻率做限制的話,Selenium同樣會被封殺,所以通常還得給瀏覽器設(shè)置代理技術(shù)等。

2 SnowNLP庫情感分析

文本情感分析又稱為文本傾向性分析和意見挖掘,是對帶有情感色彩的主觀性文本進(jìn)行分析、處理、歸納和推理預(yù)測的過程,其中情感分析還可以細(xì)分為情感極性(傾向)、情感程度及主客觀分析等。一般來說,情感可以從多層次、多角度進(jìn)行分類,中國傳統(tǒng)文化中就有“七情”——好、惡、樂、怒、哀、懼和欲。在實(shí)際的語言應(yīng)用場景中,不能對一個(gè)文本進(jìn)行一分為兩的劃分,且情感傾向存在極性和強(qiáng)度,不能單純地將情感詞歸為某一類等問題。為此,為了精準(zhǔn)計(jì)算文本情感值,文本情感分析行為應(yīng)該建立在當(dāng)前基準(zhǔn)情感詞典基礎(chǔ)上,關(guān)注文本詞語在不同情感類別中的強(qiáng)度值,計(jì)算出不同語境下詞語情感,進(jìn)而得到文本情感值。當(dāng)然,本文為簡化處理,暫時(shí)將文本情感劃為兩類,關(guān)于情感極性與強(qiáng)度的衡量問題將作為下一研究階段的重點(diǎn)。

利用SnowNLP庫的文本情感分析的基本流程如下:

(1)自定義爬蟲抓取信息保存至文件。根據(jù)研究需要可抓取不同字段信息保存到不同類型的文件。Selenium爬蟲首先要?jiǎng)?chuàng)建瀏覽器句柄即加載瀏覽器驅(qū)動(dòng),再定位頁面元素來獲取信息文本。

(2)中文分詞、詞性標(biāo)注及可視化顯示關(guān)鍵詞。中文分詞工具也有很多,snowNLP本身能完成,但其準(zhǔn)確率不如Jieba分詞,為此,本次研究采用Jieba完成分詞等工作。為了直觀表現(xiàn)、對比文本關(guān)鍵詞的重要性,采用WordCloud生成詞云的形式來完成結(jié)果的可視化步驟。

(3)情感計(jì)算,結(jié)果可視化。snowNLP中情感計(jì)算實(shí)現(xiàn)過程很簡單,只要文本調(diào)用sentiments方法即可,具體使用見實(shí)例。但其實(shí)在sentlments方法中調(diào)用了sentIment下的分類方法,Sentiment對象首先調(diào)用load方法加載訓(xùn)練好的數(shù)據(jù)字典,然后再調(diào)用classify方法,在classify方法中實(shí)際調(diào)用的是Bayes對象中的classify方法,具體可查看SnowNLP庫中的sentIment文件夾下的一init_文件等。再運(yùn)用Matplotlib生成情感分?jǐn)?shù)分布柱狀圖和情感波動(dòng)曲線圖來實(shí)現(xiàn)結(jié)果可視化。

(4)結(jié)果評估。結(jié)果可以使用準(zhǔn)確率、召回率來衡量。召回率用來度量完整性或靈敏度。較高的召回意味著更少的假負(fù),而較低的召回意味著更多的假負(fù)。提高召回率往往就會降低精確度,兩者往往難以同時(shí)達(dá)到最理想的狀態(tài)。

3 SnowNLP庫情感分析實(shí)例

本研究目的是用SnowNLP庫來分析下豆瓣上書籍的短語文本情感,詳細(xì)過程如下:

(1)獲取評論文本。其實(shí)無論使用什么方式抓取文本,都要仔細(xì)分析所需信息存在于頁面的哪些標(biāo)簽以及在標(biāo)簽的哪些屬性里。本研究使用Selenium來爬取所需實(shí)驗(yàn)文本,主要抓取的是豆瓣上的關(guān)于《Python編程快速上手》這本書的所有短評評論,將所有評論存儲在txt文本中,同時(shí)也將其他與評論相關(guān)的字段如評論用戶名、用戶鏈接、評論時(shí)間、推薦星數(shù)、評論等信息一同存儲在csv文件,以備后續(xù)研究所用。部分代碼口1如下所示:

c= open(”book-douban. csv”,”w”,encoding= 'utf-8)#寫文件

writer= csv.writer(c,dialect=(”excel”))#寫入對象

writer.writerow([”序號”,”用戶名”,”評分”,”評分標(biāo)題”,”有用數(shù)”,”日期”,”評論”])

driver= webdriver.Firefox0

i=l

while i<20:

url="https://book. douban. com/subject/26836700/comments/hot?p="+ str(i)

driver.get(url)

eleml=driver. find_elements_by_xpath("http://div[@class= 'ava_tar'ya")

elem2= driver.find_elements_by_xpath ("http://span[@class=7 com-ment-info'yspan[ll")

elem3= driver.find_elements_by_xpath ("http://span[@class=7com-ment-vote 7]/span[1n

elem4= driver.find_elements_by_xpath ("http://span[@class=7 com-ment-inf0 7]/span[2]”)

elem5 = driver. find_elements_by_xpath("http://span[@class=7shortT)

tlist=[]

k=( )

while k<20:

num= ia:20+k+1#序號

name= eleml[k].get_attribute("title")#用戶姓名

score= elem2[k].get_attribute("class")#用戶評分及內(nèi)容

content= elem2[k].get_attribute("title")

useful= elem3[kl.text#有用數(shù)

date= elem4[k].text#日期

shortcon= elem5[k].text#評論

templist=[ ]

templist.append(num).append(name).append(score)

templist. append(content). append (useful). append(date). append(shortcon)

writer.writerow(templist)

k=k+l

i=i+1

c.close()

當(dāng)然,在爬取文本信息過程中遇到的相關(guān)問題有:(1)網(wǎng)頁上的用戶名及評論中出了特殊字符即中文文字以外的一些符號,簡單解決方案:對出現(xiàn)特殊字符字段,使用代碼shortcon=shortcon. translate(non_bmp_map)來去掉特殊字符;(2)爬取過程中雖然暫未出現(xiàn)被封殺情況,但豆瓣頁面內(nèi)容本身有折疊隱藏的部分信息,即使代碼正確也無法完全抓取,此時(shí)需要加入異常處理代碼,折疊部分文本需要手動(dòng)收集;(3)評論文本并不每頁都是同樣的數(shù)量,為此,不能固定每頁爬取的數(shù)量,應(yīng)該靈活計(jì)算。

(2)中文分詞。本研究是采用結(jié)巴分詞方法對上述評論文本進(jìn)行分詞,具體代碼在作者的其他論文中可查看。再運(yùn)用WordCloud生成文本分詞后的詞云,核心代碼及詞云圖如下所示:

with open(path+ 'cut_word.txt 7, encoding= 'utf_8) as f.

comment text= f.read( )

color_mask= irnageio.imread(path+"book.jpg")#讀取背景圖片

Stopwords =stopwordslist(" stopword. txt")#添加自定義停用詞表

cloud = WordCloud(font_path= "FZYTK. TTF", back-ground_color= 'white 7,

max words=200, max_font_size=200, min_font_size=4, mask=color_mask,sto pwords=Stopwords)

word_cloud = cloud.generate(comment_text) #產(chǎn)生詞云

irnage_colors = ImageColorGenerator(color_mask)

plt.imshow(cloud.recolor(colorL且mnc=image_c olors》

plt.figure( )

plt.imshow(color_mask, cmap=plt.cm.gray)

plt.axis("off")

plt.show( )

在詞云中,顯示越大的詞越能體現(xiàn)評論文本的核心思想,可以看到關(guān)于本書的主要講解的是python的基礎(chǔ)知識,適于入門使用,并且也注重編程的訓(xùn)練。

(3)情感分析。基本過程:按行讀取評論文本,利用循環(huán)每行文本調(diào)用sentiments方法計(jì)算得到每行(條)評論的情感分?jǐn)?shù)(0-1的一個(gè)值),將其他存入文件。核心代碼[3]如下:

source= open(”comment.txt”,”r”,encoding=”UTF-8”)

line= source.readlines0

scorel=[]#情感分?jǐn)?shù)數(shù)組

i=( )

fori in line:

s=SnowNLP(i)

r=s.sentiments

scorel.append(r)

mpl.rcParams[font.sans-serif']_[SimHei']#顯示中文

matplotlib.rcParams[axes.umcode__ mlnus] =False#顯示負(fù)號

ph.hist(scorel,np.arange(0,1, 0.01), facecolor=b)

plt.xlabel(”情感分?jǐn)?shù)”)

plt.ylabel(”用戶評論”)

plt.title(”用戶評論情感分析柱狀圖”)

plt.show( )

source.close( )

在情感分析的時(shí)候,為了更清晰的判斷情感的極性分類,通常可以將情感區(qū)間從[0,1.0]轉(zhuǎn)換為-0.5,0.5],位于0以上的是積極評論,反之消極評論。從上圖可知,柱狀圖直觀展示所有評論的分?jǐn)?shù)分布情況,曲線圖說明評論的情感波動(dòng)情況。評論情感波動(dòng)性較小,大部分評論情感比較集中、接近。

上述代碼會從文件中逐行讀取文本進(jìn)行情感分析并輸出最終的結(jié)果。SnowNLP庫中訓(xùn)練好的模型是基于商品的評論數(shù)據(jù),此次研究就不需要重新訓(xùn)練模型。但它也可用于其他類別文本的情感分析,只不過在實(shí)際使用的過程中,需要根據(jù)自己的情況,重新訓(xùn)練模型。

(4)結(jié)果驗(yàn)證。首先人工標(biāo)記每一條評論的情感極性——1表示積極評論,一1表示消極評論。本次評論文本情感分析結(jié)果:積極評論準(zhǔn)確率及召回率分別為0.784和0.978,消極評論準(zhǔn)確率及召回率分別為0.935和0.507。從結(jié)果可看出:positive類文本被正確識別的有97.8%的召回率,說明在positive類文本中極少存在識別錯(cuò)誤的情況,但positive類卻只有78%的準(zhǔn)確率,準(zhǔn)確率有待提升。negative類準(zhǔn)確率達(dá)到93%,這意味著負(fù)類情感識別十分精準(zhǔn),但召回率卻只有50%,說明存在很多負(fù)類情感文本被錯(cuò)誤地分類。對于負(fù)類文本來說,由于中文的博大精深,通常在使用語境中用負(fù)面詞匯來表達(dá)正面評價(jià),如“不是很好”。當(dāng)然,中文也存在很多中性詞或極性強(qiáng)度根據(jù)語境決定的詞匯,但分類器卻只能將詞匯情感一分為二。

4 結(jié)論

本文完成了使用snowNLP庫進(jìn)行文本情感的分析,總結(jié)如下:第一、語料庫十分關(guān)鍵,如果構(gòu)建了精準(zhǔn)的類別語料庫來替換默認(rèn)語料庫,準(zhǔn)確率可能更高;第二、情感分析通常需要與評論的具體時(shí)間段結(jié)合起來,這樣就能在特定的場合發(fā)揮情感分析更多的應(yīng)用,比如輿情預(yù)測預(yù)警等[3];第三、情感分析經(jīng)常不應(yīng)該一分為二地劃分兩個(gè)不相干的集合,因?yàn)樵~語在不同語境會產(chǎn)生不同的情感極性或強(qiáng)度,這樣會降低情感分析的準(zhǔn)確性。相關(guān)問題將作為后續(xù)研究進(jìn)行。

參考文獻(xiàn):

[1] zhiyong_will.情感分析一深入snownlp原理和實(shí)踐[EB/OL].https://blog. csdn. net/google19890102/article/details/8009 1502.2018.6.

[2] Eastmount.基于SnowNLP的豆瓣評論情感分析[EB/OL].https://blog.csdn.net/E astmount/article/details/85 118 81 8.2018, 12.

[3]王樹義,廖樺濤,吳查科.基于情感分類的競爭企業(yè)新聞文本主題挖掘[J].數(shù)據(jù)分析與知識發(fā)現(xiàn),2018,2(3):70-78.

【通聯(lián)編輯:代影】

收稿日期:2019-12-11

基金項(xiàng)目:2017年度江西省教育廳科學(xué)技術(shù)研究項(xiàng)目青年項(xiàng)目:基于Python NLP庫的中文文本情感識別研究(編號:GJJ171193)

作者簡介:曾小芹(1986-),女,江西人,講師,碩士,主要研究方向?yàn)榇髷?shù)據(jù)及其處理等。

猜你喜歡
文本情感分析
隱蔽失效適航要求符合性驗(yàn)證分析
如何在情感中自我成長,保持獨(dú)立
失落的情感
北極光(2019年12期)2020-01-18 06:22:10
情感
在808DA上文本顯示的改善
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
如何在情感中自我成長,保持獨(dú)立
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢分析
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學(xué)隱喻
主站蜘蛛池模板: 日本国产在线| 国产精品内射视频| 国产黄网永久免费| 国产内射在线观看| 在线观看视频一区二区| 日本欧美视频在线观看| 亚洲精选高清无码| 精品国产网站| 色久综合在线| 亚洲an第二区国产精品| 亚洲天堂网在线播放| 乱系列中文字幕在线视频| 97se亚洲综合| 亚洲色图欧美一区| 国产一区二区三区在线观看视频 | 国产乱子伦视频在线播放| 97青草最新免费精品视频| 无码乱人伦一区二区亚洲一| 国产精品亚洲va在线观看| 国产国产人成免费视频77777| 成人va亚洲va欧美天堂| 中文字幕乱码二三区免费| 风韵丰满熟妇啪啪区老熟熟女| 欧美国产成人在线| 免费人成在线观看成人片| 亚洲人成影院在线观看| 农村乱人伦一区二区| 亚洲精品成人7777在线观看| 在线免费不卡视频| 久久综合丝袜日本网| 亚洲精品午夜天堂网页| 国产精品成| 亚洲综合18p| 国产成人AV大片大片在线播放 | 日韩成人高清无码| 香蕉久人久人青草青草| 中国国语毛片免费观看视频| 中文字幕2区| jizz在线免费播放| 九九久久精品免费观看| 欧美日韩在线第一页| 国产精品亚洲日韩AⅤ在线观看| www.亚洲一区二区三区| 青青草欧美| 国产精品视频999| 毛片网站免费在线观看| 国产在线98福利播放视频免费 | 欧美日韩激情在线| 成年看免费观看视频拍拍| 中文字幕第4页| 久久国产精品77777| 精品無碼一區在線觀看 | 无码精品福利一区二区三区| 国产精品极品美女自在线看免费一区二区 | 丰满人妻被猛烈进入无码| 国产乱视频网站| 香蕉国产精品视频| 广东一级毛片| 日韩精品亚洲人旧成在线| 伊人狠狠丁香婷婷综合色| 欧美精品H在线播放| 日韩无码白| 一级成人a做片免费| 精品国产Av电影无码久久久| 亚洲中字无码AV电影在线观看| 99精品国产电影| 国产一区在线观看无码| 欧美精品亚洲精品日韩专| 中文字幕免费播放| 亚洲 欧美 偷自乱 图片| 国产成人欧美| 丝袜国产一区| 欧美成人午夜影院| 国产激爽爽爽大片在线观看| 亚洲三级a| 国产精品高清国产三级囯产AV| 国产一级毛片网站| 亚洲天堂视频网站| 九九久久99精品| 狠狠色噜噜狠狠狠狠奇米777| 91久久偷偷做嫩草影院免费看 | 免费又黄又爽又猛大片午夜|