2024年1月5日 星期五

Python 學習筆記 : 自然語言處理套件 snownlp 測試

今天參加 NLP 實作內訓課程時得知一個很棒的開源 NLP 套件, 它與 Jieba 一樣也是左岸的 NLP 專家開發的 (但繁體字也能處理), 主要功能是可以做中文情緒分析, 除此之外還能做斷詞, 詞性標註, 關鍵字擷取, 文本分類等任務, 參考 : 



一. 安裝 snownlp : 

可直接使用 pip install 安裝 :

pip install snownlp  

或在 Thonny 編輯器的 "工具/套件管理" 選單搜尋 snownlp 後按 "安裝" : 




二. 斷詞與情緒分析 : 

安裝好後即可從 snownlp 套件匯入 SnowNLP 類別 (注意大小寫) :

>>> from snownlp import SnowNLP    

呼叫其建構子 SnowNLP() 並傳入要分析的句子 (中文為 unicode 編碼, 字串前面要加 u), 它會傳回一個 SnowNLP 物件 :

>>> s=SnowNLP(u'前面就是中正紀念堂了')    
>>> type(s)  
<class 'snownlp.SnowNLP'>   

用 dir() 檢視物件成員 :

>>> dir(s)   
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bm25', 'doc', 'han', 'idf', 'keywords', 'pinyin', 'sentences', 'sentiments', 'sim', 'summary', 'tags', 'tf', 'words']

其中 words 屬性為斷詞結果 (串列), 而 sentiments 為情緒分析. 

>>> s.words   
['前面', '就', '是', '中', '正', '紀念堂', '了']
>>> s.sentiments   
0.7730989930380656

此句被預測為正評或積極 (較接近 1). 

>>> s=SnowNLP(u'看來是沒希望了')    
>>> s.words     
['看', '來', '是', '沒', '希望', '了']
>>> s.sentiments   
0.5395438335580692

此句被預測為中立, 我還以為是分數會很低哩.

>>> s=SnowNLP(u'你是豬嗎?')    
>>> s.words  
['你', '是', '豬', '嗎', '?']
>>> s.sentiments   
0.2727933174049615

這句明顯是負評 (接近 0). 

>>> s=SnowNLP(u'你真的棒呆了!')    
>>> s.words   
['你', '真的', '棒', '呆', '了', '!']
>>> s.sentiments   
0.9706627527752877

此句非常接近 1, 當然是正評.

沒有留言 :