ansj分詞


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

最近的項目需要使用到分詞技術。本着不重復造輪子的原則,使用了ansj_seg來進行分詞。本文結合博主使用經過,教大家用最快的速度上手使用ansj分詞。

1.給ansj來個硬廣

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

2.配置maven

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

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

3.使用實例

先不說那么多的理論,直接上可以run起來的代碼。畢竟在工作過程中,解決問題是第一位的。只有解決完問題以后,我們才有功夫來慢慢研究其中的門道。 
對於分詞來說,最重要的任務無非就是拿到切分以后的結果(詞)。直接看代碼:

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

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

4.詞性

在作者的文檔中,詳細標明了相關詞性:

# 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 單位符號,全角:¥ $ £ ° ℃ 半角:$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM