NLP自然語言處理中的hanlp分詞例項
本篇分享的依然是關於 hanlp的分詞使用,文章內容分享自 gladosAI 的部落格,本篇文章中提出了一個問題,hanlp分詞影響了實驗判斷結果。為何會如此,不妨一起學習一下 gladosAI 的這篇文章。
學習內容
在之前的實驗中得到了不在詞向量裡的詞與分詞結果,結果有 500多個詞不在詞向量裡,解決方案就是重新分詞,或再追加訓練這些詞到詞向量裡。但後者相對麻煩且目前樣本量不大。我跟據詞向量的作者[6]所使用的分詞工具來分詞,會比不同工具(jieba)的效果要好,因為都是同一模式的分詞,分出來的詞應該都會存在於大型語料庫中。實驗證明思路是對的,最後結果是隻有60幾個詞不在詞向量裡,其中大部分為名詞,還有些為因語音翻譯問題所造成的出錯連詞,所有這些詞也只出現一次,這部分可以考慮最後刪去也不會影響結果。改善未出現詞是個關鍵步驟,因為此後模型會用到詞向量,如果未出現詞過多,會影響詞向量效果。
問題:不過最後 HANLP分詞影響了實驗判斷結果,準確率從93%(jieba分詞,同模型同引數)下降到90%。
實驗:使用 HanLP分詞
1,前期準備,(環境ubuntu,python3)安裝JAVA-10[3](hanlp是JAVA開發的,即使使用python呼叫pyhanlp需要藉助java), jpype(python中虛擬java環境),hanlp(開源中文處理工具,不只是分詞還有各種工具),hanlp的root路徑配置及data資料包放置[4]
2,主要程式[5]
w2v_model = KeyedVectors.load_word2vec_format(w2vpath, binary=False, unicode_errors='ignore') # 載入詞向量
hanlppath=\"-Djava.class.path=/media/glados/Learning/project/NLP/hanlp/hanlp-1.6.4.jar:/media/glados/Learning/project/NLP/hanlp/"
jp.startJVM(jp.getDefaultJVMPath(), hanlppath) # , "-Xms1g", "-Xmx1g") # 啟動JVM, Xmx1g分配1g記憶體
jp.JClass('com.hankcs.hanlp.HanLP$Config').ShowTermNature = False # 關閉分詞屬性顯示
HanLP = jp.JClass('com.hankcs.hanlp.HanLP') #普通分詞模式
words = str(HanLP.segment(sentence)) #分詞將結果轉為str
words = re.sub('[反斜槓[反斜槓],\n]', ' ', words) # 這裡注意實際程式是單\,在blog裡會出問題,所以用反斜槓替代
words = words.split()
words = del_stopword(words)
...
jp.shutdownJVM() # 最後關閉java虛擬環境
使用的是 HANLP的普通分詞功能,另外需注意,hanlp.segment()不能直接輸出或賦值給python,因為其是java環境中資料,所以只有轉為str()後,再進行處理,否則會報錯#A fatal error。(另外還有其他java與python資料對應問題,在這裡沒遇到,請參考其他)
詞向量選用的是 “Mixed-large綜合”[6],其包括百度wiki百科、人民日報等,總共1293214個詞。
Hanlp的中部份功能沒法使用,例如精確分詞CRF。另外,要先載入詞向量再載入java虛擬環境。#A fatal error has been detected by the Java Runtime Environment
3,實驗結果
(模型使用的是特徵為 tfidf的lsi模型, 引數:num_topics=3, 判斷是否相似閥值為0.45,即大於0.45為true相似 )
同模型同引數下, jieba分詞結果
jieba分詞未出現在詞向量的約500多,有些詞出現了好幾次,而hanlp分詞只有60幾個未出現,且多數為名詞,只出現過一次。
4,分析
在樣本中,所有樣本分詞結果 jieba比hanlp要多分出100個詞左右。所以推測因hanlp分詞細粒度大,分出詞少,導致較少的共現詞出現(也可能是hanlp分詞精度更高,分出很多虛詞被停止詞表過濾造成),也就是說,lsi+tfidf模型對詞細粒度大、分詞少的分詞器不友好,所以最後hanlp出錯率更大。
jieba與hanlp都是很不錯的分詞器,結巴使用更方便。hanlp準確度要高一些(感覺),而且與文中提到的詞向量相匹配。
(我免貴姓 AI,jieba:我免/貴姓/AI,hanlp:我/免/貴姓/AI,實際:我/免貴/姓AI)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2636214/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hanlp自然語言處理中的詞典格式說明HanLP自然語言處理
- 自然語言處理NLP(6)——詞法分析自然語言處理詞法分析
- 自然語言處理:分詞方法自然語言處理分詞
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- 自然語言處理之jieba分詞自然語言處理Jieba分詞
- 自然語言處理NLP(四)自然語言處理
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理中的分詞問題總結自然語言處理分詞
- 自然語言處理工具HanLP-N最短路徑分詞自然語言處理HanLP分詞
- 配置Hanlp自然語言處理進階HanLP自然語言處理
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- hanlp自然語言處理包的基本使用--pythonHanLP自然語言處理Python
- 自然語言處理(NLP)簡介 | NLP課程自然語言處理
- 自然語言處理NLP快速入門自然語言處理
- Pytorch系列:(六)自然語言處理NLPPyTorch自然語言處理
- Pyhanlp自然語言處理中的新詞識別HanLP自然語言處理
- NLP自然語言處理中英文分詞工具集錦與基本使用介紹自然語言處理分詞
- 開源自然語言處理工具包hanlp中CRF分詞實現詳解自然語言處理HanLPCRF分詞
- 2023nlp影片教程大全 NLP自然語言處理教程 自然語言處理NLP從入門到專案實戰自然語言處理
- 自然語言處理(NLP)路線圖 - kdnuggets自然語言處理
- Hanlp自然語言處理工具之詞法分析器HanLP自然語言處理詞法分析
- Python 自然語言處理(基於jieba分詞和NLTK)Python自然語言處理Jieba分詞
- 如何編譯執行HanLP自然語言處理包編譯HanLP自然語言處理
- 自然語言處理工具hanlp自定義詞彙新增圖解自然語言處理HanLP圖解
- 自然語言處理工具hanlp定製使用者詞條自然語言處理HanLP
- Python自然語言處理實戰(3):中文分詞技術Python自然語言處理中文分詞
- 自然語言處理工具中的中文分詞器介紹自然語言處理中文分詞
- Python自然語言處理實戰(1):NLP基礎Python自然語言處理
- 自然語言處理之:搭建基於HanLP的開發環境自然語言處理HanLP開發環境
- NLP神經語言學的12條假設(不是自然語言處理哪個NLP哈)自然語言處理
- hanlp自然語言處理包的人名識別程式碼解析HanLP自然語言處理
- Hanlp自然語言處理工具的使用演練HanLP自然語言處理
- 中文和英文NLP自然語言處理異同點分析自然語言處理
- 詞!自然語言處理之詞全解和Python實戰!自然語言處理Python
- 自然語言處理工具pyhanlp分詞與詞性標註自然語言處理HanLP分詞詞性標註
- 《NLP漢語自然語言處理原理與實踐》學習四自然語言處理
- NPL---自然語言處理單詞界定問題自然語言處理
- 入門自然語言處理必看:圖解詞向量自然語言處理圖解