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种接口的推导过程类似于此,不再赘述。

相关文章
|
8月前
|
存储 缓存 人工智能
解码 LangChain | LangChain + GPTCache =兼具低成本与高性能的 LLM
GPTCache 是一个用于存储 LLM 响应的语义缓存层。它可以为 LLM 相关应用构建相似语义缓存,当相似的问题请求多次出现时,可以直接从缓存中获取,在减少请求响应时间的同时也降低了 LLM 的使用成本。
348 0
|
机器学习/深度学习 人工智能 自然语言处理
简单易用高性能!一文了解开源迁移学习框架EasyTransfer
近日,阿里云正式开源了深度迁移学习框架EasyTransfer,这是业界首个面向NLP场景的深度迁移学习框架。该框架由阿里云机器学习PAI团队研发,让自然语言处理场景的模型预训练和迁移学习开发与部署更加简单和高效。本文将对EasyTransfer进行深度解读。开源地址:https://github.com/alibaba/EasyTransfer
4402 0
简单易用高性能!一文了解开源迁移学习框架EasyTransfer
|
7月前
|
自然语言处理 搜索推荐 算法
中文分词利器-jieba
中文分词利器-jieba
|
8月前
|
JSON 人工智能 自然语言处理
HarmonyOS学习路之开发篇—AI功能开发(分词)
分词概述 随着信息技术的发展,网络中的信息量成几何级增长逐步成为当今社会的主要特征。准确提取文本关键信息,是搜索引擎等领域的技术基础,而分词作为文本信息提取的第一步则尤为重要。
|
8月前
|
数据可视化 数据挖掘 大数据
数据处理神器tidyverse!教你如何秒速搞定数据处理!
本文将介绍R语言tidyverse包(包括ggplot2、dplyr和tidyr等),详细讲解这些包的使用方法。我们还将介绍什么是数据可视化、数据整理以及数据转换,这些知识都是数据分析过程中非常重要的基础。在本文中,您将学习到使用R语言进行数据分析的关键技能,例如使用ggplot2绘制令人惊叹的图表,使用dplyr和tidyr包进行数据整理和转换,以及实用技巧,例如如何优雅地操作数据。通过本文的指导,您可以更加高效地进行数据分析,并将这些分析结果以更清晰、优美的图表呈现出来。
124 0
|
9月前
|
数据采集 自然语言处理 搜索推荐
【编程课堂】jieba-中文分词利器
在之前的文章【编程课堂】词云 wordcloud 中,我们曾使用过 jieba 库,当时并没有深入讲解,所以本次将其单独列出来详细讲解。
|
机器学习/深度学习 消息中间件 缓存
weidl x DeepRec:热门微博推荐框架性能提升实战
主要介绍热门微博推荐的整体架构与DeepRec.框架性能上的提升,并详细剖析的weidl平台中使用的DeepRec
|
存储 人工智能 自然语言处理
中文分词模型体验
中文分词任务就是把连续的汉字分隔成具有语言语义学意义的词汇。中文的书写习惯不像英文等日耳曼语系语言词与词之前显式的用空格分隔。为了让计算机理解中文文本,通常来说中文信息处理的第一步就是进行文本分词。
994 32
中文分词模型体验
|
存储 自然语言处理 搜索推荐
快速上手搜索引擎的秘密武器——Lucene
这篇文章介绍下这个 Lucene,下篇写写 ElasticSearch , 然后再继续填 Spring 的坑 🕳 内容的话就很基础啦🐖,希望能帮你快速入门,了解下它
118 0
|
自然语言处理
IKAnalyzer - 轻量级的中文分词工具
采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
1141 0