概述:字符正规化是指在分词之前把繁体转成简体、大写转成小写等,在自然语言处理中这是必不可以的一个步骤!在hanlp中的实现方法是基于词典的,也就是正规则字符对照表。就是“data/dictionary/other/CharTable.txt” 这个词典,打开后是下面这个样子的!
«=《
「=“
」=”
『=‘
』=’
【=《
〗="
〝="
〞="
と=之
ふ=子
ル=儿
ㄖ=日
丟=丢
在java程序中如何实现呢,相信大部分人会想用到用HashMap缓存起来不就可以了吗!当然,这个方法是可行的,但是HashMap在数据量比较大时,时间复杂度是接近O(n)的。这也是为什么加载词典用trie树,而不是直接用HashMap的原因了,当然内存也是一个方面,本篇文章不会讨论!下面我们来看下hanlp代码里的具体实现。
在hanlp中,是采用一维数据实现的,下面一步步来看源码的实现!源码位于com.hankcs.hanlp.HanLP包下的CharTable类中,这个类主是要加把 CharTable.txt加载到一维数组中。为了方便阅读,下面直接在代码中加入注释!
在分词之前会首