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