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