欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)購(gòu)物評(píng)論文本情感分析操作【基于中文文本挖掘庫(kù)snownlp】

 更新時(shí)間:2018年08月07日 15:46:04   作者:yyxyyx10  
這篇文章主要介紹了Python實(shí)現(xiàn)購(gòu)物評(píng)論文本情感分析操作,結(jié)合實(shí)例形式分析了Python使用中文文本挖掘庫(kù)snownlp操作中文文本進(jìn)行感情分析的相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python實(shí)現(xiàn)購(gòu)物評(píng)論文本情感分析操作。分享給大家供大家參考,具體如下:

昨晚上發(fā)現(xiàn)了snownlp這個(gè)庫(kù),很開(kāi)心。先說(shuō)說(shuō)我開(kāi)心的原因。我本科畢業(yè)設(shè)計(jì)做的是文本挖掘,用R語(yǔ)言做的,發(fā)現(xiàn)R語(yǔ)言對(duì)文本處理特別不友好,沒(méi)有很多強(qiáng)大的庫(kù),特別是針對(duì)中文文本的,加上那時(shí)候還沒(méi)有學(xué)機(jī)器學(xué)習(xí)算法。所以很頭疼,后來(lái)不得已用了一個(gè)可視化的軟件RostCM,但是一般可視化軟件最大的缺點(diǎn)是無(wú)法調(diào)參,很死板,準(zhǔn)確率并不高。現(xiàn)在研一,機(jī)器學(xué)習(xí)算法學(xué)完以后,又想起來(lái)要繼續(xù)學(xué)習(xí)文本挖掘了。所以前半個(gè)月開(kāi)始了用python進(jìn)行文本挖掘的學(xué)習(xí),很多人都推薦我從《python自然語(yǔ)言處理》這本書(shū)入門,學(xué)習(xí)了半個(gè)月以后,可能本科畢業(yè)設(shè)計(jì)的時(shí)候有些基礎(chǔ)了,再看這個(gè)感覺(jué)沒(méi)太多進(jìn)步,并且這里通篇將nltk庫(kù)進(jìn)行英文文本挖掘的,英文文本挖掘跟中文是有很大差別的,或者說(shuō)學(xué)完英文文本挖掘,再做中文的,也是完全懵逼的。所以我停了下來(lái),覺(jué)得太沒(méi)效率了。然后我在網(wǎng)上查找關(guān)于python如何進(jìn)行中文文本挖掘的文章,最后找到了snownlp這個(gè)庫(kù),這個(gè)庫(kù)是國(guó)人自己開(kāi)發(fā)的python類庫(kù),專門針對(duì)中文文本進(jìn)行挖掘,里面已經(jīng)有了算法,需要自己調(diào)用函數(shù),根據(jù)不同的文本構(gòu)建語(yǔ)料庫(kù)就可以,真的太方便了。我只介紹一下這個(gè)庫(kù)具體應(yīng)用,不介紹其中的有關(guān)算法原理,因?yàn)樗惴ㄔ砜梢宰约喝W(xué)習(xí)。因?yàn)槲以趯W(xué)習(xí)這個(gè)庫(kù)的時(shí)候,我查了很多資料發(fā)現(xiàn)很少或者基本沒(méi)有寫這個(gè)庫(kù)的實(shí)例應(yīng)用,很多都是轉(zhuǎn)載官網(wǎng)對(duì)這個(gè)庫(kù)的簡(jiǎn)介,所以我記錄一下我今天的學(xué)習(xí)。

首先簡(jiǎn)單介紹一下這個(gè)庫(kù)可以進(jìn)行哪些文本挖掘。snownlp主要可以進(jìn)行中文分詞(算法是Character-Based Generative Model)、詞性標(biāo)注(原理是TnT、3-gram 隱馬)、情感分析(官網(wǎng)木有介紹原理,但是指明購(gòu)物類的評(píng)論的準(zhǔn)確率較高,其實(shí)是因?yàn)樗恼Z(yǔ)料庫(kù)主要是購(gòu)物方面的,可以自己構(gòu)建相關(guān)領(lǐng)域語(yǔ)料庫(kù),替換原來(lái)的,準(zhǔn)確率也挺不錯(cuò)的)、文本分類(原理是樸素貝葉斯)、轉(zhuǎn)換拼音、繁體轉(zhuǎn)簡(jiǎn)體、提取文本關(guān)鍵詞(原理是TextRank)、提取摘要(原理是TextRank)、分割句子、文本相似(原理是BM25)。官網(wǎng)還有更多關(guān)于該庫(kù)的介紹,在看我這個(gè)文章之前,建議先看一下官網(wǎng),里面有最基礎(chǔ)的一些命令的介紹。官網(wǎng)鏈接:https://pypi.python.org/pypi/snownlp/0.11.1。

PS:可以直接使用pip install snownlp 命令進(jìn)行snownlp模塊的快速安裝(注:這里要求pip版本至少為18.0)。

下面正式介紹實(shí)例應(yīng)用。主要是中文文本的情感分析,我今天從京東網(wǎng)站采集了249條關(guān)于筆記本的評(píng)論文本作為練習(xí)數(shù)據(jù),由于我只是想練習(xí)一下,沒(méi)采集更多。然后人工標(biāo)注每條評(píng)論的情感正負(fù)性,情感正負(fù)性就是指該條評(píng)論代表了評(píng)論者的何種態(tài)度,是褒義還是貶義。以下是樣例

其中-1表示貶義,1表示褒義。由于snownlp全部是unicode編碼,所以要注意數(shù)據(jù)是否為unicode編碼。因?yàn)槭莡nicode編碼,所以不需要去除中文文本里面含有的英文,因?yàn)槎紩?huì)被轉(zhuǎn)碼成統(tǒng)一的編碼(補(bǔ)充一下,關(guān)于編碼問(wèn)題,我還是不特別清楚,所以這里不多講,還請(qǐng)對(duì)這方面比較熟悉的伙伴多多指教)。軟件本身默認(rèn)的是Ascii編碼,所以第一步先設(shè)置軟件的默認(rèn)編碼為utf-8,代碼如下:

1、改變軟件默認(rèn)編碼

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

2、然后準(zhǔn)備數(shù)據(jù)

import pandas as pd #加載pandas
text=pd.read_excel(u'F:/自然語(yǔ)言處理/評(píng)論文本.xlsx',header=0) #讀取文本數(shù)據(jù)
text0=text.iloc[:,0] #提取所有數(shù)據(jù)
text1=[i.decode('utf-8') for i in text0] #上一步提取數(shù)據(jù)不是字符而是object,所以在這一步進(jìn)行轉(zhuǎn)碼為字符

3、訓(xùn)練語(yǔ)料庫(kù)

from snownlp import sentiment #加載情感分析模塊
sentiment.train('E:/Anaconda2/Lib/site-packages/snownlp/sentiment/neg.txt', 'E:/Anaconda2/Lib/site-packages/snownlp/sentiment/pos.txt') #對(duì)語(yǔ)料庫(kù)進(jìn)行訓(xùn)練,把路徑改成相應(yīng)的位置。我這次練習(xí)并沒(méi)有構(gòu)建語(yǔ)料庫(kù),用了默認(rèn)的,所以把路徑寫到了sentiment模塊下。
sentiment.save('D:/pyscript/sentiment.marshal')#這一步是對(duì)上一步的訓(xùn)練結(jié)果進(jìn)行保存,如果以后語(yǔ)料庫(kù)沒(méi)有改變,下次不用再進(jìn)行訓(xùn)練,直接使用就可以了,所以一定要保存,保存位置可以自己決定,但是要把`snownlp/seg/__init__.py`里的`data_path`也改成你保存的位置,不然下次使用還是默認(rèn)的。

4、進(jìn)行預(yù)測(cè)

from snownlp import SnowNLP
senti=[SnowNLP(i).sentiments for i in text1] #遍歷每條評(píng)論進(jìn)行預(yù)測(cè)

5、進(jìn)行驗(yàn)證準(zhǔn)確率

預(yù)測(cè)結(jié)果為positive的概率,positive的概率大于等于0.6,我認(rèn)為可以判斷為積極情感,小于0.6的判斷為消極情感。所以以下將概率大于等于0.6的評(píng)論標(biāo)簽賦為1,小于0.6的評(píng)論標(biāo)簽賦為-1,方便后面與實(shí)際標(biāo)簽進(jìn)行比較。

newsenti=[]
for i in senti:
 if (i>=0.6):
   newsenti.append(1)
 else:
   newsenti.append(-1)
text['predict']=newsenti #將新的預(yù)測(cè)標(biāo)簽增加為text的某一列,所以現(xiàn)在text的第0列為評(píng)論文本,第1列為實(shí)際標(biāo)簽,第2列為預(yù)測(cè)標(biāo)簽
counts=0
for j in range(len(text.iloc[:,0])): #遍歷所有標(biāo)簽,將預(yù)測(cè)標(biāo)簽和實(shí)際標(biāo)簽進(jìn)行比較,相同則判斷正確。
  if text.iloc[j,2]==text.iloc[j,1]:
    counts+=1
print u"準(zhǔn)確率為:%f"%(float(counts)/float(len(text)))#輸出本次預(yù)測(cè)的準(zhǔn)確率

運(yùn)行結(jié)果為:

準(zhǔn)確率還可以,但還不算高,原因是我考慮時(shí)間原因,并且我只是練習(xí)一下,所以沒(méi)有自己構(gòu)建該領(lǐng)域的語(yǔ)料庫(kù),如果構(gòu)建了相關(guān)語(yǔ)料庫(kù),替換默認(rèn)語(yǔ)料庫(kù),準(zhǔn)確率會(huì)高很多。所以語(yǔ)料庫(kù)是非常關(guān)鍵的,如果要正式進(jìn)行文本挖掘,建議要構(gòu)建自己的語(yǔ)料庫(kù)。在沒(méi)有構(gòu)建新的語(yǔ)料庫(kù)的情況下,這個(gè)83.9357%的準(zhǔn)確率還是不錯(cuò)了。

以上是我這次的學(xué)習(xí)筆記,和大家分享一下,有不足之處請(qǐng)大家批評(píng)指正。我還是一個(gè)剛涉世數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、文本挖掘領(lǐng)域不久的小白,有許多知識(shí)還是比較模糊,但對(duì)這數(shù)據(jù)挖掘很感興趣。希望能多結(jié)識(shí)這方面的朋友,共同學(xué)習(xí)、共同進(jìn)步。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python+jinja2實(shí)現(xiàn)接口數(shù)據(jù)批量生成工具

    python+jinja2實(shí)現(xiàn)接口數(shù)據(jù)批量生成工具

    這篇文章主要介紹了python+jinja2實(shí)現(xiàn)接口數(shù)據(jù)批量生成工具的操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python使用樹(shù)狀圖實(shí)現(xiàn)可視化聚類詳解

    Python使用樹(shù)狀圖實(shí)現(xiàn)可視化聚類詳解

    一般情況下,我們都是使用散點(diǎn)圖進(jìn)行聚類可視化,但是某些的聚類算法可視化時(shí)散點(diǎn)圖并不理想,所以在這篇文章中,我們介紹如何使用樹(shù)狀圖(Dendrograms)對(duì)我們的聚類結(jié)果進(jìn)行可視化
    2023-03-03
  • Python實(shí)現(xiàn)歸一化算法詳情

    Python實(shí)現(xiàn)歸一化算法詳情

    這篇文章主要介紹了Python實(shí)現(xiàn)歸一化算法,歸一化算法Normalization將數(shù)據(jù)處理成量綱一直的數(shù)據(jù),一般在進(jìn)行建模的時(shí)候需要進(jìn)行數(shù)據(jù)歸一化處理,下文詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • 什么是Python變量作用域

    什么是Python變量作用域

    在本篇文章里小編給大家整理的是關(guān)于Python變量作用域的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 用Python PIL實(shí)現(xiàn)幾個(gè)簡(jiǎn)單的圖片特效

    用Python PIL實(shí)現(xiàn)幾個(gè)簡(jiǎn)單的圖片特效

    這篇文章主要介紹了用Python PIL實(shí)現(xiàn)幾個(gè)簡(jiǎn)單的圖片特效,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼

    利用Python進(jìn)行數(shù)據(jù)可視化的實(shí)例代碼

    數(shù)據(jù)可視化和數(shù)據(jù)挖掘都是探索數(shù)據(jù)和分析數(shù)據(jù)的一種手段,下面這篇文章主要給大家介紹了關(guān)于如何利用Python進(jìn)行數(shù)據(jù)可視化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • Python如何將控制臺(tái)輸出另存為日志文件

    Python如何將控制臺(tái)輸出另存為日志文件

    這篇文章主要介紹了Python如何將控制臺(tái)輸出另存為日志文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟

    anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟

    在Anaconda中,可以使用conda命令來(lái)創(chuàng)建和管理虛擬環(huán)境,本文主要介紹了anaconda中Conda創(chuàng)建虛擬環(huán)境的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 教你怎么用Python實(shí)現(xiàn)GIF動(dòng)圖的提取及合成

    教你怎么用Python實(shí)現(xiàn)GIF動(dòng)圖的提取及合成

    今天教大家一個(gè)Python有趣好玩的小功能:將多張圖片轉(zhuǎn)為GIF,同時(shí)也可以將一個(gè)GIF動(dòng)圖提取出里面的圖片,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • PyCharm安裝庫(kù)numpy失敗問(wèn)題的詳細(xì)解決方法

    PyCharm安裝庫(kù)numpy失敗問(wèn)題的詳細(xì)解決方法

    今天使用pycharm編譯python程序時(shí),由于要調(diào)用numpy包,但又未曾安裝numpy,于是就根據(jù)pycharm的提示進(jìn)行安裝,最后竟然提示出錯(cuò),下面這篇文章主要給大家介紹了關(guān)于PyCharm安裝庫(kù)numpy失敗問(wèn)題的詳細(xì)解決方法,需要的朋友可以參考下
    2022-06-06

最新評(píng)論