Ansj中文分詞使用教程
Ansj中文分詞使用教程:https://blog.csdn.net/a822631129/article/details/52331202
ansj分詞史上最詳細教程:https://blog.csdn.net/bitcarmanlee/article/details/53607776
摘要:
ansj是一個基於n-Gram+CRF+HMM的中文分詞的java實現.
ansj分詞速度達到每秒鐘大約200萬字左右(mac air下測試),準確率能達到96%以上
Ansj目前實現了.中文分詞.詞性識別. 中文姓名識別 . 用戶自定義詞典,關鍵字提取,自動摘要,關鍵字標記等功能
能夠應用到天然語言處理等方面,適用於對分詞效果要求高的各類項目.java
下載jar:
訪問 http://maven.nlpcn.org/org/ansj/ 最好下載最新版 ansj_seg/
若是你用的是1.x版本須要下載tree_split.jar。
若是你用的是2.x版本須要下載nlp-lang.jar。
若是你用的是3.x以上版本只須要下載 ansj_seg-[version]-all-in-one.jar 一個jar包就能浪了。
本人使用的是ansj5.0.1版本,使用的scala調用的,調用方式與java基本同樣git
源碼:https://github.com/NLPchina/ansj_seggithub
使用:
分詞方式:
基本分詞:最基本的分詞.詞語顆粒度最很是小的
用戶自定義詞典Χ 數字識別√人名識別Χ機構名識別Χ新詞發現Χ
val parse = BaseAnalysis.parse("孫楊在里約奧運會男子200米自由泳決賽中,以1分44秒65奪得冠軍");
System.out.println(parse);
result:[孫/nr,楊/nr,在/p,裏/f,約/d,奧運會/j,男子/n,200/m,米/q,自由泳/n,決賽/vn,中/f,,/w,以/p,1/m,分/q,44/m,秒/q,65/m,奪得/v,冠軍/n]maven
精準分詞:在易用性,穩定性.準確性.以及分詞效率上.都取得了一個不錯的平衡.
用戶自定義詞典√ 數字識別√人名識別√機構名識別Χ新詞發現Χ
val parse = ToAnalysis.parse("孫楊在里約奧運會男子200米自由泳決賽中,以1分44秒65奪得冠軍");
System.out.println(parse);
result:[孫楊/nr,在/p,裏/f,約/d,奧運會/j,男子/n,200米/m,自由泳/n,決賽/vn,中/f,,/w,以/p,1分/m,44秒/m,65/m,奪得/v,冠軍/n]測試
nlp分詞:語法實體名抽取.未登陸詞整理.只要是對文本進行發現分析等工做
用戶自定義詞典√ 數字識別 √人名識別√機構名識別√新詞發現√
val parse = NlpAnalysis.parse("孫楊在里約奧運會男子200米自由泳決賽中,以1分44秒65奪得冠軍");
System.out.println(parse);
result:[孫楊/nr,在/p,里約,奧運會/j,男子/n,200米/m,自由泳/n,決賽/vn,中/f,,/w,以/p,1分/m,44秒/m,65/m,奪得/v,冠軍/n]spa
面向索引分詞:故名思議就是適合在lucene等文本檢索中用到的分詞。
用戶自定義詞典√ 數字識別√人名識別√機構名識別Χ新詞發現Χ
var parse = IndexAnalysis.parse("主副食品")
result:[主副食品/n]
在該版本中分詞效果貌似有點問題,切換成3.7.6的結果也跟上方同樣,不過看資料說是能有result:[主副食品/n, 主副食, 副食, 副食品, 食品]這種效果,有須要能夠切換更舊的版本試試。.net
加載自定義詞典:
val forest0 = Library.makeForest("E:/base.dic")
System.out.println(DicAnalysis.parse("孫楊在里約奧運會男子200米自由泳決賽中,以1分44秒65奪得冠軍", forest0));
result:[孫楊/nr,在/p,里約/ns,奧運會男子200米自由泳/comb,決賽/vn,中/f,,/w,以/p,1分/m,44秒/m,65/m,奪得/v,冠軍/n]
「奧運會男子200米自由泳」是加到詞典中的scala
去停用詞:
var stopWord: Seq[String] = Seq("決賽")
var filter = new FilterRecognition()
filter.insertStopNatures("ns")
filter.insertStopWords(stopWord)
var word = "孫楊在里約奧運會男子200米自由泳決賽中,以1分44秒65奪得冠軍"
var result = DicAnalysis.parse(word).recognition(filter)
result:[孫楊/nr,在/p,裏/f,約/d,奧運會/j,200米/m,中/f,,/w,以/p,1分/m,44秒/m,65/m,奪得/v]
去除了n詞性「自由泳」,和停用詞「決賽」,停用詞能夠是一個String,也能夠是一個java List對象rest
動態添加詞典:
UserDefineLibrary.insertWord("ansj中文分詞", "userDefine", 1000);
var terms = ToAnalysis.parse("我以爲Ansj中文分詞是一個不錯的系統!我是王婆!");
System.out.println("增長新詞例子:" + terms);
// 刪除詞語,只能刪除.用戶自定義的詞典.
UserDefineLibrary.removeWord("ansj中文分詞");
terms = ToAnalysis.parse("我以爲ansj中文分詞是一個不錯的系統!我是王婆!");
System.out.println("刪除用戶自定義詞典例子:" + terms);
result:
增長新詞例子:我/r,覺/v,得/ud,ansj中文分詞/userDefine,是/v,一/m,個/q,不/d,錯/n,的/uj,系/v,統/v,!,我/r,是/v,王婆/nr,!
刪除用戶自定義詞典例子:我/r,覺/v,得/ud,ansj/en,中文/nz,分/q,詞/n,是/v,一/m,個/q,不/d,錯/n,的/uj,系/v,統/v,!,我/r,是/v,王婆/nr,!對象
詞性說明漢語文本詞性標註標記集# 1. 名詞 (1個一類,7個二類,5個三類)名詞分爲如下子類:n 名詞nr 人名nr1 漢語姓氏nr2 漢語名字nrj 日語人名nrf 音譯人名ns 地名nsf 音譯地名nt 機構團體名nz 其它專名nl 名詞性慣用語ng 名詞性語素nw 新詞# 2. 時間詞(1個一類,1個二類)t 時間詞tg 時間詞性語素# 3. 處所詞(1個一類)s 處所詞# 4. 方位詞(1個一類)f 方位詞# 5. 動詞(1個一類,9個二類)v 動詞vd 副動詞vn 名動詞vshi 動詞「是」vyou 動詞「有」vf 趨向動詞vx 形式動詞vi 不及物動詞(內動詞)vl 動詞性慣用語vg 動詞性語素# 6. 形容詞(1個一類,4個二類)a 形容詞ad 副形詞an 名形詞ag 形容詞性語素al 形容詞性慣用語# 7. 區別詞(1個一類,2個二類)b 區別詞bl 區別詞性慣用語# 8. 狀態詞(1個一類)z 狀態詞# 9. 代詞(1個一類,4個二類,6個三類)r 代詞rr 人稱代詞rz 指示代詞rzt 時間指示代詞rzs 處所指示代詞rzv 謂詞性指示代詞ry 疑問代詞ryt 時間疑問代詞rys 處所疑問代詞ryv 謂詞性疑問代詞rg 代詞性語素# 10. 數詞(1個一類,1個二類)m 數詞mq 數量詞# 11. 量詞(1個一類,2個二類)q 量詞qv 動量詞qt 時量詞# 12. 副詞(1個一類)d 副詞# 13. 介詞(1個一類,2個二類)p 介詞pba 介詞「把」pbei 介詞「被」# 14. 連詞(1個一類,1個二類)c 連詞 cc 並列連詞# 15. 助詞(1個一類,15個二類)u 助詞uzhe 着ule 了 嘍uguo 過ude1 的 底ude2 地ude3 得usuo 所udeng 等 等等 云云uyy 同樣 通常 似的 般udh 的話uls 來說 來講 而言 說來uzhi 之ulian 連 (「連小學生都會」)# 16. 嘆詞(1個一類)e 嘆詞# 17. 語氣詞(1個一類)y 語氣詞(delete yg)# 18. 擬聲詞(1個一類)o 擬聲詞# 19. 前綴(1個一類)h 前綴# 20. 後綴(1個一類)k 後綴# 21. 字符串(1個一類,2個二類)x 字符串 xx 非語素字 xu 網址URL# 22. 標點符號(1個一類,16個二類)w 標點符號wkz 左括號,全角:( 〔 [ { 《 【 〖〈 半角:( [ { <wky 右括號,全角:) 〕 ] } 》 】 〗 〉 半角: ) ] { >wyz 左引號,全角:「 ‘ 『 wyy 右引號,全角:」 ’ 』wj 句號,全角:。ww 問號,全角:? 半角:?wt 歎號,全角:! 半角:!wd 逗號,全角:, 半角:,wf 分號,全角:; 半角: ;wn 頓號,全角:、wm 冒號,全角:: 半角: :ws 省略號,全角:…… …wp 破折號,全角:—— -- ——- 半角:--- ----wb 百分號千分號,全角:% ‰ 半角:%wh 單位符號,全角:¥ $ £ ° ℃ 半角:$