java 結巴分詞使用自定義詞庫


1.首先在pom文件中加載maven依賴

1 <dependency>
2   <groupId>com.huaban</groupId>
3   <artifactId>jieba-analysis</artifactId>
4   <version>1.0.2</version>
5 </dependency>

2.創建自定義詞典的文件結構以及文件名稱: resources/dicts/jieba.dict

自定義詞典的格式:一個詞占一行;每一行分三部分,一部分為詞語,另一部分為詞頻,

最后為詞性(可省略),用空格隔開

例如:

 1 定王台 3 ns
 2 青年路 3 ns
 3 狀元路 3 ns
 4 股份有限公司 20 nt
 5 國家金庫 4 nt
 6 曾都 3 ns
 7 襄陽市 3 ns
 8 后海 3 ns
 9 海月 3 nt
10 交通路 3 ns

其中詞頻的作用是提高成詞的概率,頻率越高,成詞的概率就越大

更細的解釋可以參考:https://github.com/fxsjy/jieba/issues/14

 

詞性類別:

Ag

形語素

形容詞性語素。形容詞代碼為 a,語素代碼g前面置以A。

a

形容詞

取英語形容詞 adjective的第1個字母。

ad

副形詞

直接作狀語的形容詞。形容詞代碼 a和副詞代碼d並在一起。

an

名形詞

具有名詞功能的形容詞。形容詞代碼 a和名詞代碼n並在一起。

b

區別詞

取漢字“別”的聲母。

c

連詞

取英語連詞 conjunction的第1個字母。
dg

副語素

副詞性語素。副詞代碼為 d,語素代碼g前面置以D。

d

副詞

取 adverb的第2個字母,因其第1個字母已用於形容詞。

e

嘆詞

取英語嘆詞 exclamation的第1個字母。

f

方位詞

取漢字“方”

g

語素

絕大多數語素都能作為合成詞的“詞根”,取漢字“根”的聲母。

h

前接成分

取英語 head的第1個字母。

i

成語

取英語成語 idiom的第1個字母。

j

簡稱略語

取漢字“簡”的聲母。

k

后接成分

 

l

習用語

習用語尚未成為成語,有點“臨時性”,取“臨”的聲母。

m

數詞

取英語 numeral的第3個字母,n,u已有他用。

Ng

名語素

名詞性語素。名詞代碼為 n,語素代碼g前面置以N。

n

名詞

取英語名詞 noun的第1個字母。

nr

人名

名詞代碼 n和“人(ren)”的聲母並在一起。

ns

地名

名詞代碼 n和處所詞代碼s並在一起。

nt

機構團體

“團”的聲母為 t,名詞代碼n和t並在一起。

nz

其他專名

“專”的聲母的第 1個字母為z,名詞代碼n和z並在一起。

o

擬聲詞

取英語擬聲詞 onomatopoeia的第1個字母。

p

介詞

取英語介詞 prepositional的第1個字母。

q

量詞

取英語 quantity的第1個字母。

r

代詞

取英語代詞 pronoun的第2個字母,因p已用於介詞。

s

處所詞

取英語 space的第1個字母。

tg

時語素

時間詞性語素。時間詞代碼為 t,在語素的代碼g前面置以T。

t

時間詞

取英語 time的第1個字母。

u

助詞

取英語助詞 auxiliary

vg

動語素

動詞性語素。動詞代碼為 v。在語素的代碼g前面置以V。

v

動詞

取英語動詞 verb的第一個字母。

vd

副動詞

直接作狀語的動詞。動詞和副詞的代碼並在一起。

vn

名動詞

指具有名詞功能的動詞。動詞和名詞的代碼並在一起。

w

標點符號

 

x

非語素字

非語素字只是一個符號,字母 x通常用於代表未知數、符號。

y

語氣詞

取漢字“語”的聲母。

z

狀態詞

取漢字“狀”的聲母的前一個字母。

un

未知詞

不可識別詞及用戶自定義詞組。取英文Unkonwn首兩個字母。(非北大標准,CSW分詞中定義)

 

3.調用

 1     public String testDemo( String sentence) {
 2         JiebaSegmenter segmenter = new JiebaSegmenter();
 3         String resultStr = segmenter.process(sentence, JiebaSegmenter.SegMode.INDEX).toString();
 4 
 5         System.out.println("-------------------切到的詞:"+resultStr);
 6 
 7         // 詞典路徑為Resource/dicts/jieba.dict
 8         Path path = Paths.get(new File( getClass().getClassLoader().getResource("dicts/jieba.dict").getPath() ).getAbsolutePath() ) ;
 9         //加載自定義的詞典進詞庫
10         WordDictionary.getInstance().loadUserDict( path ) ;
11         //重新分詞
12         segmenter = new JiebaSegmenter();
13 
14         System.out.println(segmenter.process( sentence , JiebaSegmenter.SegMode.INDEX).toString());
15 
16         return resultStr;
17     }

參考文檔地址:https://blog.csdn.net/yexiaomodemo/article/details/86571177

https://blog.csdn.net/suibianshen2012/article/details/53487157

 


免責聲明!

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



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