• 一款简单好用的开源简繁转换类库


    今天给大家介绍一个非常有意思类库,基于java实现的简繁体转换,适用于后端、android等开发领域

    源码地址:* liuyueyi/quick-chinese-transfer: 简繁转换,支持香港繁体,台湾繁体与简体互转

    1. 实例体验

    以maven做项目管理,可以直接从中央仓库下载,再pom文件中添加以下依赖即可

    
    <dependency>
        <groupId>com.github.liuyueyigroupId>
        <artifactId>quick-transfer-coreartifactId>
        <version>0.2.6version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    说明:0.2.6版本于2022-08-11上传,若在mvn仓库搜索不到,不要慌,可以先使用0.2.5

    如果是gradle做项目管理,依赖同样很简单

    // https://mvnrepository.com/artifact/com.github.liuyueyi/quick-transfer-core
    implementation 'com.github.liuyueyi:quick-transfer-core:0.2.6'
    
    • 1
    • 2

    此外,针对网络不好的小伙伴,也可以通过jitpack的方式导入依赖,具体姿势如下

    maven依赖

    <repositories>
        <repository>
            <id>jitpack.ioid>
            <url>https://jitpack.iourl>
        repository>
    repositories>
    
    <dependency>
        <groupId>com.github.liuyueyi.quick-chinese-transfergroupId>
        <artifactId>quick-transfer-coreartifactId>
        <version>0.2.6version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    gradle依赖

    allprojects {
    	repositories {
    		...
    		maven { url 'https://jitpack.io' }
    	}
    }
    
    dependencies {
        implementation 'com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.6'
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    环境准备完毕之后,可以直接进行使用了,使用姿势非常非常非常的简单

    public void testTrans() {
        String text = "这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;纔=才";
        // 简体转繁体
        String out = ChineseUtils.s2t(text);
        System.out.println("s2t -->" + out);
        // 简体转香港繁体
        String hkOut = ChineseUtils.s2hk(text);
        System.out.println("s2hk -->" + hkOut);
        // 简体转台湾繁体
        String twOut = ChineseUtils.s2tw(text);
        System.out.println("s2tw --> " + twOut);
    
        // 繁体转简体
        String origin = ChineseUtils.t2s(out);
        System.out.println("t2s -->" + origin);
        // 香港繁体转简体
        System.out.println("hk2s -->" + ChineseUtils.hk2s(hkOut));
        // 台湾繁体转简体
        System.out.println("tw2s -->" + ChineseUtils.tw2s(twOut));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    入口类 ChineseUtils 支持简繁互转,这里区分了香港繁体 + 台湾繁体,两者的主要区别在于某些字、词的叫法不一样

    通常来讲,使用最简单的简繁互即可

    上面的case输出结果如下:

    s2t -->這斜月三星洞…… 長壽麪,孫悟空,豬八戒,唐僧,沙和尚,白龍馬,李靖,托塔天王, 戲說西遊,許多人都這樣說,收拾一下,拾金不昧;纔=才
    s2hk -->這斜月三星洞…… 長壽麪,孫悟空,豬八戒,唐僧,沙和尚,白龍馬,李靖,托塔天王, 戲説西遊,許多人都這樣説,收拾一下,拾金不昧;才=才
    s2tw --> 這斜月三星洞…… 長壽麵,孫悟空,豬八戒,唐僧,沙和尚,白龍馬,李靖,托塔天王, 戲說西遊,許多人都這樣說,收拾一下,拾金不昧;才=才
    t2s -->这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;才=才
    hk2s -->这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;才=才
    tw2s -->这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;才=才
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2. 进阶使用

    简繁转换,核心在于词典的管理,改类库在首次实现转换的时候,会加载词典,并解析为内部的数据结构Dict;因此第一次调用时,会出现冷启动的耗时高问题

    2.1 预热

    基于此,可以再合适的地方先预热加载词典;官方提供了同步预热/异步预热两种方式,如

    // 预热加载所有的词典
    ChineseUtils.preLoad(true, TransType.values());
    
    // 预加载简体转繁体词典
    ChineseUtils.preLoad(true, TransType.SIMPLE_TO_TRADITIONAL);
    
    // 预加载简繁互转词典
    ChineseUtils.preLoad(true, TransType.SIMPLE_TO_TRADITIONAL, TransType.TRADITIONAL_TO_SIMPLE);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    preLoad方法的第一个参数,就是用来控制同步还是异步的情况

    后面的参数则为希望加载的词典

    2.2 卸载

    同样有了预热就有卸载,对于客户端的小伙伴来说可能更关注这一点的内存占用;对于不需要的词典,可以指定卸载

    // 卸载所有词典
    ChineseUtils.unLoad(TransType.values());
    
    // 卸载简繁互转词典
    ChineseUtils.unLoad(TransType.SIMPLE_TO_TRADITIONAL, TransType.TRADITIONAL_TO_SIMPLE);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3 通用方法

    在第一节的使用实例中,提供了各种特有的方法来实现转换;同样也提供一个统一的方法,根据传参的词典类型来进行转换;适用于统一api接口的设计,根据传参来返回对应的结果场景

    ChineseUtils.transfer("一灰灰blog", TransType.SIMPLE_TO_TRADITIONAL);
    
    • 1

    3. 小结

    最后简单介绍下这个项目,没错这个项目目前是我再维护,核心实现主要来自 chinese-utils,那么为啥要独立搞一个呢? 原因如下

    1. 这个项目不再维护了,最后一次提交在15年
    2. 词典旧且,有问题的数据较多,所以我完全替换了它的默认词典,改用 HanLP 词典文件
    3. 新特性增加(如港台繁体的区分支持,如预热加载)
    4. 性能优化等(词典解析规则、匹配算法的改进等)

    更多详情推荐点击右边查看详情:* quick-chinese-transfer | 一灰灰Learning

    欢迎有兴趣的小伙伴前往查看尝鲜, 期待你的评论、点赞、收藏

    我是一灰灰,微信公众号: “一灰灰blog”,欢迎来撩

  • 相关阅读:
    OpenCV4(C++)—— 仿射变换、透射变换和极坐标变换
    PHP安装dbase扩展,2024最新安装日志,注意PHP版本、扩展目录路径、文件权限3个大坑
    服务熔断 Hystrix
    上海市培育“元宇宙”新赛道行动方案——虹膜识别技术为其助力
    量子计算机-初级入门
    【LeetCode每日一题合集】2023.9.11-2023.9.17(⭐反悔贪心&拓扑排序&Floyd)
    微服务实战|微服务网关Zuul入门与实战
    【分享课】11月16日晚19:30PostgreSQL分享课:PG缓存管理器主题
    Go入门教程
    机器学习第十一课--K-Means聚类
  • 原文地址:https://blog.csdn.net/liuyueyi25/article/details/126292175