开发者社区> 大数据资讯> 正文

HanLP极致简繁转换详细讲解

简介: 谈起简繁转换,许多人以为是小意思,按字转换就行了。事实上,汉语历史悠久,地域复杂,发展至今在字符级别存在“一简对多繁”和“一繁对多简”,在词语级别上存在“简繁分歧词”,在港澳台等地则存在“字词习惯不同”的情况。
+关注继续查看

HanLP极致简繁转换详细讲解


谈起简繁转换,许多人以为是小意思,按字转换就行了。事实上,汉语历史悠久,地域复杂,发展至今在字符级别存在“一简对多繁”和“一繁对多简”,在词语级别上存在“简繁分歧词”,在港澳台等地则存在“字词习惯不同”的情况。为此,HanLP新增了“简体”“繁体”“臺灣正體”“香港繁體”间的相互转换功能,力图将简繁转换做到极致。

b7a8c62b25aaa693007a46c499a460dfc89da5f5 

关于这些汉语语言上的详情,请参考郭家寶的OpenCC项目。HanLP整合了该项目的词库,用原生的AhoCorasickDoubleArrayTrie算法实现了各语言分支的转换。对于简繁转换模块来说,算法都是类似的,最宝贵的地方在于词库,在此向OpenCC表示敬意和感谢!

 

快速上手

一个Demo

9be7355b82f5daaf29d4f0fe44b02aa557577b18 

输出

92d5e758686336bc6241d5c035079a8e7c4aa11f 

说明

注意在旧版HanLP中,简体“草莓”被转换为“士多啤梨”。后来有用户告诉我“士多啤梨”是香港的用法,不属于通俗意义上的“繁体”,所以在新版中去除了这一转换。而“臺灣”“程式碼”是台湾地区的用法,“台灣”“代碼”则是香港地区的用法,所以

 

1、System.out.println(HanLP.t2tw("hankcs在臺灣寫代碼"));

2、System.out.println(HanLP.t2hk("hankcs在臺灣寫代碼"));

 

分别输出了

 

1、hankcs在臺灣寫程式碼

2、hankcs在台灣寫代碼

 

这里面存在微妙的不同。

 

基本定义

 

简体

 

HanLP中的简体特指大陆地区的简体字。

 

繁体

 

HanLP中的繁体是通俗意义上的繁体中文,即受众最广的繁体表示。如果说OpenCC定义了自己的“OpenCC繁体标准”的话,那么这也可以算得上“HanLP繁体标准”。

 

香港繁體

 

指的是香港地区使用的繁体中文,据OpenCC的wiki介绍,属于“香港小學學習字詞表標準”。

 

臺灣正體

 

指的是台湾地区使用的繁体中文,即“臺灣正體標準”。

 

接口一览

 

HanLP支持上述四种中文任意两种之间的转换:

357f2c9ebe9c530f497fa39fa43744af804afd5e 

2f1e5fa35f527bfaa157542f8def446576fc9822

4240810d1b2fc8c538e9465f354f0bea8125baa8

fd802e0221f8922468ba75da53c5ca49fa9e3746

共计12种接口。命名规范按照X2Y的形式,X表示源语种,Y表示目标语种。

词库

 

由于我并没有OpenCC作者那样深厚的繁体中文语言知识,所以这些接口未必能完美地满足广大繁体中文用户的需求,希望大家多多包涵,提出宝贵意见。

 

所有的词库都是以文本方式维护,命名规则与接口保持一致。不过,词典的文本形式只有如下四种:

s2t.txt         t2hk.txt        t2s.txt         t2tw.txt

类似tw2hk的词典并不存在,tw2hk只存在自动推导出的bin文件,其推导规则为

 

1、逆转t2tw得到tw2t

2、利用t2hk得到tw2hk

 

推导由HanLP程序控制,用户修改推导过程中用到的四个词典后需要删除推导结果的缓存文件才能生效。其他8种接口的推导过程类似于此,不再赘述。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
狂揽两千星,速度百倍提升,高性能Python编译器Codon开源
狂揽两千星,速度百倍提升,高性能Python编译器Codon开源
16 0
Python 为了提升性能,竟运用了共享经济
Python 的有趣之处还不止于此,本文要继续分享另一种内存管理机制,在某种程度上,它实现了共享经济与供需平衡的融合,我们从中可揭开 Python 的另一重身份…
49 0
中文分词模型体验
中文分词任务就是把连续的汉字分隔成具有语言语义学意义的词汇。中文的书写习惯不像英文等日耳曼语系语言词与词之前显式的用空格分隔。为了让计算机理解中文文本,通常来说中文信息处理的第一步就是进行文本分词。
276 0
用Python解决海量数据的分类汇总~一键化办公的神器
用Python解决海量数据的分类汇总~一键化办公的神器
290 0
Python 提速大杀器之 numba 篇
你是不是曾经有这样的苦恼,python 真的太好用了,但是它真的好慢啊(哭死) ; C++ 很快,但是真的好难写啊,此生能不碰它就不碰它。老天啊,有没有什么两全其美的办法呢?俗话说的好:办法总是比困难多,大家都有这个问题,自然也就有大佬来试着解决这个问题,这就请出我们今天的主角: numba
441 0
突发!Python 登顶了。。。
即使如此,Javaer 也不要灰心吧,这并不代表什么,Python 只是一种编程语言,也只是一种完成任务的工具而已,在应用领域和企业需求对 Java 并没有什么冲击。 所以,我们该学学、该上班上班,不要受排行榜影响,Java 依然还是最香的语言之一,现在无数的 Java 就业岗位、火热的开源社区、强大且丰富的生态、一家又一家的在线培训机构拔地,这都说明了一切,Java 依然老当益壮,市场就是最好的见证。
102 0
python与c/c++相比有哪些优势?
python与c/c++相比有哪些优势?
444 0
分词工具Hanlp基于感知机的中文分词框架
结构化感知机标注框架是一套利用感知机做序列标注任务,并且应用到中文分词、词性标注与命名实体识别这三个问题的完整在线学习框架,该框架利用
1952 0
hanlp和jieba等六大中文分工具的测试对比
本篇文章测试的哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP这六大中文分词工具是由 水...琥珀 完成的。相关测试的文章之前也看到过一些,但本篇阐述的可以说是比较详细的了。这里就分享一下给各位朋友!
5587 0
+关注
大数据资讯
hadoop爱好者
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载