最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)購物評論文本情感分析操作【基于中文文本挖掘庫snownlp】

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

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

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

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

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

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

其中-1表示貶義,1表示褒義。由于snownlp全部是unicode編碼,所以要注意數(shù)據(jù)是否為unicode編碼。因為是unicode編碼,所以不需要去除中文文本里面含有的英文,因為都會被轉碼成統(tǒng)一的編碼(補充一下,關于編碼問題,我還是不特別清楚,所以這里不多講,還請對這方面比較熟悉的伙伴多多指教)。軟件本身默認的是Ascii編碼,所以第一步先設置軟件的默認編碼為utf-8,代碼如下:

1、改變軟件默認編碼

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

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

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

3、訓練語料庫

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

4、進行預測

from snownlp import SnowNLP
senti=[SnowNLP(i).sentiments for i in text1] #遍歷每條評論進行預測

5、進行驗證準確率

預測結果為positive的概率,positive的概率大于等于0.6,我認為可以判斷為積極情感,小于0.6的判斷為消極情感。所以以下將概率大于等于0.6的評論標簽賦為1,小于0.6的評論標簽賦為-1,方便后面與實際標簽進行比較。

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

運行結果為:

準確率還可以,但還不算高,原因是我考慮時間原因,并且我只是練習一下,所以沒有自己構建該領域的語料庫,如果構建了相關語料庫,替換默認語料庫,準確率會高很多。所以語料庫是非常關鍵的,如果要正式進行文本挖掘,建議要構建自己的語料庫。在沒有構建新的語料庫的情況下,這個83.9357%的準確率還是不錯了。

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

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

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python切割圖片成九宮格的示例代碼

    Python切割圖片成九宮格的示例代碼

    這篇文章主要介紹了Python切割圖片成九宮格的相關知識,本文通過截圖實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python中schedule擴展的具體使用

    Python中schedule擴展的具體使用

    Python的schedule模塊是一個輕量級的Python庫,用于在指定時間執(zhí)行某些操作,本文就來介紹一下Python中schedule擴展的具體使用,感興趣的可以了解一下
    2024-12-12
  • 使用Pandas將inf, nan轉化成特定的值

    使用Pandas將inf, nan轉化成特定的值

    今天小編就為大家分享一篇使用Pandas將inf, nan轉化成特定的值,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python NumPy教程之遍歷數(shù)組詳解

    Python NumPy教程之遍歷數(shù)組詳解

    這篇文章主要為大家詳細介紹了Python?NumPy中遍歷數(shù)組的方法,文中的示例代碼講解詳細,對我們學習Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Python基于tkinter canvas實現(xiàn)圖片裁剪功能

    Python基于tkinter canvas實現(xiàn)圖片裁剪功能

    這篇文章主要介紹了Python基于tkinter canvas實現(xiàn)圖片裁剪功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • 詳解Python循環(huán)作用域與閉包

    詳解Python循環(huán)作用域與閉包

    這篇文章主要介紹了Python循環(huán)作用域與閉包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • python可視化分析繪制帶趨勢線的散點圖和邊緣直方圖

    python可視化分析繪制帶趨勢線的散點圖和邊緣直方圖

    這篇文章主要介紹了python可視化分析繪制帶趨勢線的散點圖和邊緣直方圖,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • python中exe文件解包方法詳解

    python中exe文件解包方法詳解

    這篇文章主要給大家介紹了關于python中exe文件解包方法的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友可以參考下
    2023-06-06
  • Python中的rjust()方法使用詳解

    Python中的rjust()方法使用詳解

    這篇文章主要介紹了Python中的rjust()方法使用詳解,是Python學習入門中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • python logging.info在終端沒輸出的解決

    python logging.info在終端沒輸出的解決

    這篇文章主要介紹了python logging.info在終端沒輸出的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論

随州市| 胶南市| 双辽市| 天峨县| 隆化县| 宜兰市| 财经| 合水县| 锦州市| 武功县| 宾阳县| 民县| 宁强县| 张家界市| 隆化县| 铁力市| 沙坪坝区| 呼玛县| 和田县| 观塘区| 万安县| 綦江县| 九江市| 精河县| 英吉沙县| 汤原县| 黄浦区| 林州市| 温州市| 武鸣县| 泌阳县| 漳州市| 漾濞| 德江县| 万宁市| 方城县| 庆云县| 兴安盟| 敦煌市| 新余市| 微博|