hanlp源码解读之字符正规化CharTable
蓝天白芸朵 2018-10-26 13:15:14 浏览249 评论0摘要: 概述:字符正规化是指在分词之前把繁体转成简体、大写转成小写等,在自然语言处理中这是必不可以的一个步骤!在hanlp中的实现方法是基于词典的,也就是正规则字符对照表。就是“data/dictionary/other/CharTable.txt” 这个词典,打开后是下面这个样子的!在java程序中如何实现呢,相信大部分人会想用到用HashMap缓存起来不就可以了吗!当然,这个方法是可行的,但是HashMap在数据量比较大时,时间复杂度是接近O(n)的。
概述:字符正规化是指在分词之前把繁体转成简体、大写转成小写等,在自然语言处理中这是必不可以的一个步骤!在hanlp中的实现方法是基于词典的,也就是正规则字符对照表。就是“data/dictionary/other/CharTable.txt” 这个词典,打开后是下面这个样子的!
在java程序中如何实现呢,相信大部分人会想用到用HashMap缓存起来不就可以了吗!当然,这个方法是可行的,但是HashMap在数据量比较大时,时间复杂度是接近O(n)的。这也是为什么加载词典用trie树,而不是直接用HashMap的原因了,当然内存也是一个方面,本篇文章不会讨论!下面我们来看下hanlp代码里的具体实现。
在hanlp中,是采用一维数据实现的,下面一步步来看源码的实现!源码位于com.hankcs.hanlp.HanLP包下的CharTable类中,这个类主是要加把 CharTable.txt加载到一维数组中。为了方便阅读,下面直接在代码中加入注释!
在分词之前会首化调用正规化接口(在启用正规化的情况下)
下面来看下CharTable.normalization(text);这个函数的实现:这个函数极其简单,就是对text中的每个字符查询一维数据COVERT,看到这里应该就能明白,正规化最重要的就是加载txt文件到CONVERT数组中
下面看具本的代码,敝人在代码中都加入了注释,此处不再另行讲解
文章来源于亚当-adam的博客
相关文章
- HanLP用户自定义词典源码分析详解
- HanLP用户自定义词典源码分析
- 汉语言处理包 HanLP v1.3.5,新功能、优化与维…
- pyhanlp 繁简转换,拼音转换与字符正则化
- hanlp源码解析之中文分词算法详解
- hanlp源码解析之中文分词算法
- 如何在ubuntu使用hanlp
- HanLP中的人名识别分析详解
- HanLP中人名识别分析详解
- 自然语言处理入门基础之hanlp详解