ansj分詞

本文轉載至:https://blog.csdn.net/bitcarmanlee/article/details/53607776java

最近的項目須要使用到分詞技術。本着不重複造輪子的原則,使用了ansj_seg來進行分詞。本文結合博主使用通過,教你們用最快的速度上手使用ansj分詞。git

1.給ansj來個硬廣

項目的github地址:https://github.com/NLPchina/ansj_seg 
項目的文檔地址:http://nlpchina.github.io/ansj_seg/ 
首先必須感謝做者給咱們提供這麼好用的開源工具。github

2.配置maven

在maven項目的pom中配置ansj的dependency:dom

<dependency> <groupId>org.ansj</groupId> <artifactId>ansj_seg</artifactId> <version>3.7.3-SNAPSHOT</version> </dependency>

3.使用實例

先不說那麼多的理論,直接上能夠run起來的代碼。畢竟在工做過程當中,解決問題是第一位的。只有解決完問題之後,咱們纔有功夫來慢慢研究其中的門道。 
對於分詞來講,最重要的任務無非就是拿到切分之後的結果(詞)。直接看代碼:maven

import org.ansj.domain.Result; import org.ansj.domain.Term; import org.ansj.splitWord.analysis.ToAnalysis; import java.util.*; /** * Created by WangLei on 16-12-9. */ public class AnsjTest { public static void test() { //只關注這些詞性的詞 Set<String> expectedNature = new HashSet<String>() {{ add("n");add("v");add("vd");add("vn");add("vf"); add("vx");add("vi");add("vl");add("vg"); add("nt");add("nz");add("nw");add("nl"); add("ng");add("userDefine");add("wh"); }}; String str = "歡迎使用ansj_seg,(ansj中文分詞)在這裏若是你遇到什麼問題均可以聯繫我.我必定盡我所能.幫助你們.ansj_seg更快,更準,更自由!" ; Result result = ToAnalysis.parse(str); //分詞結果的一個封裝,主要是一個List<Term>的terms System.out.println(result.getTerms()); List<Term> terms = result.getTerms(); //拿到terms System.out.println(terms.size()); for(int i=0; i<terms.size(); i++) { String word = terms.get(i).getName(); //拿到詞 String natureStr = terms.get(i).getNatureStr(); //拿到詞性 if(expectedNature.contains(natureStr)) { System.out.println(word + ":" + natureStr); } } } public static void main(String[] args) { test(); } }

將代碼run起來:工具

歡迎/v, 使用/v, ansj/en, _, seg/en, ,, (, ansj/en, 中文/nz, 分詞/n, ), 在/p, 這裏/r, 若是/c, 你/r, 遇到/v, 什麼/r, 問題/n, 都/d, 能夠/v, 聯繫/v, 我/r, ./m, 我/r, 必定/d, 盡/v, 我/r, 所/u, 能/v, ./m, 幫助/v, 你們/r, ./m, ansj/en, _, seg/en, 更/d, 快/a, ,, 更/d, 準/a, ,, 更/d, 自由/a, !] 45 歡迎:v 使用:v 中文:nz 分詞:n 遇到:v 問題:n 能夠:v 聯繫:v 盡:v 能:v 幫助:v

上面的代碼就拿到了咱們想要的分詞結果!spa

4.詞性

在做者的文檔中,詳細標明瞭相關詞性:.net

# 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 單位符號,全角:¥ $ £ ° ℃ 半角:$
相關文章
相關標籤/搜索