hanlp源码解读之字符正规化CharTable

简介:

概述:字符正规化是指在分词之前把繁体转成简体、大写转成小写等,在自然语言处理中这是必不可以的一个步骤!在hanlp中的实现方法是基于词典的,也就是正规则字符对照表。就是“data/dictionary/other/CharTable.txt” 这个词典,打开后是下面这个样子的!
image
在java程序中如何实现呢,相信大部分人会想用到用HashMap缓存起来不就可以了吗!当然,这个方法是可行的,但是HashMap在数据量比较大时,时间复杂度是接近O(n)的。这也是为什么加载词典用trie树,而不是直接用HashMap的原因了,当然内存也是一个方面,本篇文章不会讨论!下面我们来看下hanlp代码里的具体实现。

在hanlp中,是采用一维数据实现的,下面一步步来看源码的实现!源码位于com.hankcs.hanlp.HanLP包下的CharTable类中,这个类主是要加把 CharTable.txt加载到一维数组中。为了方便阅读,下面直接在代码中加入注释!

在分词之前会首化调用正规化接口(在启用正规化的情况下)
image
下面来看下CharTable.normalization(text);这个函数的实现:这个函数极其简单,就是对text中的每个字符查询一维数据COVERT,看到这里应该就能明白,正规化最重要的就是加载txt文件到CONVERT数组中
image
下面看具本的代码,敝人在代码中都加入了注释,此处不再另行讲解
image
image
image
image
文章来源于亚当-adam的博客

相关文章
|
12月前
|
自然语言处理 Go
Golang每日一练(leetDay0074) 词典类设计、单词搜索II
Golang每日一练(leetDay0074) 词典类设计、单词搜索II
103 0
|
数据采集 自然语言处理 算法
java应用集成HanLP进行中文自然语言分词详细完整案例以及demo源码
java应用集成HanLP进行中文自然语言分词详细完整案例以及demo源码
50041 1
java应用集成HanLP进行中文自然语言分词详细完整案例以及demo源码
|
Java Android开发 数据格式
Android环境下hanlp汉字转拼音功能的使用介绍
    由于项目需要在Android手机设备上实现汉字转拼音功能(支持多音字),于是首先想到了Pinyin4j+多音字映射对照表的实现方案,并在项目中试用了一段时间,发现数据量大时,其耗时非常严重。后来寻找其他方案,在github上找到了HanLP开源库,其多音字转换速度非常快,但是没有针对Android平台进行适配,于是对代码进行了一些修改,终于可以在Android手机上运行。
1437 0
|
自然语言处理 算法 Java
Hanlp汉字转拼音使用python调用详解
1、hanlp简介 HanLP是一系列模型与算法组成的NLP工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
1853 0
|
自然语言处理 算法
中文分词算法工具hanlp源码解析
词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。
1674 0
|
自然语言处理
在Hanlp词典手动添加未登录词的方式介绍
在使用Hanlp词典进行分词的时候,会出现分词不准的情况,原因是内置词典中并没有收录当前这个词,也就是我们所说的未登录词,只要把这个词加入到内置词典中就可以解决类似问题,如何操作呢,
1114 0
|
机器学习/深度学习 自然语言处理 算法
|
人工智能 自然语言处理 算法
hanlp源码解析之中文分词算法详解
词图指的是句子中所有词可能构成的图。如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B)。一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图。
2839 0