Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)

中文汉字排序的实用技巧与最佳实践 本文深入探讨了中文汉字排序的底层逻辑与实用解决方案。针对数据库、应用层及前端等不同场景,详细介绍了GBK转换、特定排序规则、拼音辅助字段以及Java、Python、Go、JavaScript中的具体实现方法,帮助开发者彻底解决中文排序乱序问题,提升数据处理效率。 阅读详情

这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母.

支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下

com.ibm.icu_3.8.jar

 

传统的 : 

        List<String> list = new ArrayList<String>();
        list.add("一鸣惊人 -Y");
        list.add("人山人海 -R");
        list.add("海阔天空 -H");
        list.add("空前绝后 -K");
        list.add("后来居上 -H");

        Comparator<Object> cmp = java.text.Collator.getInstance(java.util.Locale.CHINA);
        Collections.sort(list, cmp);
        for (String str : list) {
            System.out.println(str);
        }

输出结果:

海阔天空 -H
后来居上 -H
空前绝后 -K
人山人海 -R
一鸣惊人 -Y

这种看上去没有什么问题 , 但是换上生僻字之后 , 就会出现错误.

比如这样子:

        List<String> list1 = new ArrayList<String>();
        list1.add("网易汽车 - W");
        list1.add("新民汽车网 - X");
        list1.add("钛媒体 - T");
        list1.add("瘾科技 - Y");
        list1.add("昕薇网 - X");
        list1.add("安倍 - A");
        list1.add("中国 - Z");
        list1.add("中心 - Z");
        Comparator<Object> cmp = java.text.Collator.getInstance(java.util.Locale.CHINA);
        Collections.sort(list1, cmp);
        for (String str : list1) {
            System.out.println(str);
        }

输出结果:

安倍 - A
网易汽车 - W
新民汽车网 - X
中国 - Z
中心 - Z
昕薇网 - X
钛媒体 - T
瘾科技 - Y

这个结果就是错误的 , "钛媒体 - T" 应该在第二位...

解决方案 : 

使用 "com.ibm.icu.text.Collator" 替换 "java.text.Collator"

使用 "com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE" 替换 "java.util.Locale.CHINA"

比如这样子:

        List<String> list2 = new ArrayList<String>();
        list2.add("网易汽车 - W");
        list2.add("新民汽车网 - X");
        list2.add("钛媒体 - T");
        list2.add("瘾科技 - Y");
        list2.add("昕薇网 - X");
        list2.add("安倍 - A");
        list2.add("中国 - Z");
        list2.add("中心 - Z");
        Comparator<Object> cmp2 = com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE);
        Collections.sort(list2, cmp2);
        for (String str : list2) {
            System.out.println(str);
        }

输出结果:

安倍 - A
钛媒体 - T
网易汽车 - W
昕薇网 - X
新民汽车网 - X
瘾科技 - Y
中国 - Z
中心 - Z

这下子 , 生僻汉字的输出也正确了

数组汉字排序

String[] names = {"王林", "杨宝", "李镇", "刘迪", "刘波"};
        Arrays.sort(names, com.ibm.icu.text.Collator.getInstance(ULocale.SIMPLIFIED_CHINESE));
        System.out.println(Arrays.toString(names));

输出 : [李镇, 刘波, 刘迪, 王林, 杨宝]

 

=====更新于2018-08-22====

最近有个需求,需要 中英数字 混合排序,不是单纯的List<String>,而是根据List集合中对象的某个属性。

直接上代码:


/**
 * @author CYX
 */
public class AppMainTest {

    public final static Comparator comparator = com.ibm.icu.text.Collator.getInstance(com.ibm.icu.util.ULocale.SIMPLIFIED_CHINESE);

    public static void main(String[] args) {

        List<TestObject> testObjects = new ArrayList<TestObject>();
        testObjects.add(new TestObject("A"));
        testObjects.add(new TestObject("网易汽车w - W"));
        testObjects.add(new TestObject("中国 - Z"));
        testObjects.add(new TestObject("B"));
        testObjects.add(new TestObject("新民汽车网 - X"));
        testObjects.add(new TestObject("中心 - Z"));
        testObjects.add(new TestObject("C"));
        testObjects.add(new TestObject("钛媒体 - T"));
        testObjects.add(new TestObject("2-使命召唤"));
        testObjects.add(new TestObject("D"));
        testObjects.add(new TestObject("瘾科技 - Y"));
        testObjects.add(new TestObject("昕薇网 - X"));
        testObjects.add(new TestObject("1"));
        testObjects.add(new TestObject("安倍 - A"));
        testObjects.add(new TestObject("999"));
        testObjects.add(new TestObject("4"));
        testObjects.add(new TestObject("1-英雄联盟"));
        testObjects.add(new TestObject("8"));

        Collections.sort(testObjects, new Comparator<TestObject>() {
            @Override
            public int compare(TestObject o1, TestObject o2) {
                int result = comparator.compare(o1.getName(), o2.getName());
                return result;
            }
        });

        for (TestObject str : testObjects) {
            System.out.println(str);
        }

    }

}

依旧是 沿用上面那个Jar包,输出结果:

 

Java利用Hutool实现汉字转拼音的高效实践 本文详细介绍了如何利用Java工具包Hutool高效实现汉字转拼音功能。通过Hutool的PinyinUtil工具类,开发者可以轻松处理中文转拼音需求,包括基础转换、带音调输出、多音字处理等高级功能。文章还分享了性能优化技巧和实际应用案例,帮助开发者在电商搜索、文件命名等场景中提升开发效率。 阅读详情

相关推荐

Oracle汉字转拼音PL/SQL包实战:从排序翻车到多音字处理

字符集与编码转换是数据库处理多语言数据的基础,其核心在于通过码表映射实现字符到目标编码的转换。在Oracle中,汉字转拼音常借助PL/SQL package封装转换逻辑,利用关联数组存储码表并支持UTF8字符集,从而解决排序、检索等场景下的转换需求。这种技术方案的价值在于零依赖部署、会话级缓存提升性能,并可通过词组优先匹配优化多音字转换准确率。典型应用场景包括姓名拼音检索、拼音首字母索引构建以及数据清洗中的标准化处理。本文围绕一个Oracle汉字转拼音package包,详细拆解其包结构设计、码表初始化、多音

weixin_32576389的博客 290

Java处理生僻字的问题

前几天遇到了生僻字的问题。很有意思。在不同的平台上显示的字符不一样,有些是方块有些是?有些干脆就是一个表情图标。 检查了编码没有问题,是UTF-8。研究了一下最终发现了原因。 出错的字符,落到了UNICODE的私人造字区里面,参考如下。 http://jicheng.tw/hanzi/unicode.html 不同的系统/字体,不能保证私人造字区的一致性。 自己写了段测试代码,发现目前Un

^_^ 2万+

Java实现汉字首字母提取的完整技术方案

你有没有遇到过这样的场景?——在手机通讯录里滑动“A、B、C…”快速跳转时,系统居然能精准地把“张三”归到“Z”组,“李四”放进“L”区。或者,在电商平台搜“HW”就能瞬间匹配出“华为”、“海尔”甚至“惠普”。这些看似简单的功能背后,其实藏着一个非常关键的技术环节:汉字首字母提取。是的,中文没有像英文那样的天然字母索引,但现代软件偏偏需要它来构建高效的排序、搜索和交互体系。于是我们得想办法让每个汉字“说出它的名字”,然后只留下第一个音节的第一个字母。听起来简单?

weixin_32661831的博客 1230

解决Java读取生僻字问题

解决Java读取生僻字问题 将编码格式“GB2312”修改为“GB18030”

lacey920的博客 3775

Oracle汉字转拼音Package包:基于UTF8的完整实现方案

在数据库开发中,字符集与编码处理是绕不开的基础问题,尤其是当业务需要将中文数据转换为拼音时,兼容不同字符集成为关键挑战。Oracle数据库虽功能强大,但原生并不直接提供汉字转拼音的能力,常见的NLSSORT函数仅支持排序,无法输出拼音文本。本文从字符集与编码原理出发,介绍一种基于码表驱动的设计模式,通过构建独立的拼音码表以及PL/SQL Package函数,实现全拼与首字母提取,并天然兼容AL32UTF8与ZHS16GBK等多种字符集环境。该方案无需外部依赖,可应用于SQL模糊搜索、报表排序、拼音缩写字段生

weixin_33404102的博客 272

com.ibm.icu-4.4.2.jar.zip

com.ibm.icu-4.4.2.jar

Java对中文进行排序

Java对中文进行排序

Charge8的博客 8516

com.ibm.icu_3.4.4.1.jar

jar包,官方版本,自测可用

Java对List中的中文汉字进行排序以及多音字的处理

默认按照首个汉字的拼音首字母进行升序排列 public static void main(String[] args) { List<Map<String, Object>> list=new ArrayList<>(); Map<String, Object> map= new HashMap<&gt...

beiqiaofeng123的博客 5038

UE4 GamePlay框架深度解析:从蓝图到C++构建多人游戏核心

在游戏开发与实时交互应用领域,一套清晰、可扩展的底层框架是项目成功的关键。GamePlay框架作为虚幻引擎(UE4/UE5)的核心架构,定义了游戏世界中对象交互、状态管理与网络同步的基本原理。它通过职责分离的设计模式,将游戏规则(GameMode)、全局状态(GameState)、玩家状态(PlayerState)、可操控实体(Pawn/Character)及其控制器(Controller)等核心类有机组织起来,确保了逻辑的清晰性与多人游戏数据的一致性。其技术价值在于为开发者提供了一套经过验证的最佳实践,大

weixin_33924770的博客 616

某音播放量查询,播放量接口研究,最新版本抓包,修改SO文件绕过SSL

本教程适用于某音27.8,64位版本,32为版本及某音旁侧版本修改方法大同小异,部分旁侧版本修改之后模拟器可能无法抓包,真机测试均可正常抓包,此方法修改后绝大部分包可以正常抓取,但部分包无法抓取,例如验证码,内置浏览器功能,如需抓取此类包可通过 Postern + Charles 实现。

byalipus的博客 1万+

Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)

这里举例List集合 , 对list中的中文进行排序 , 按照中文拼音首字母.支持生僻汉字的话 , 需要使用一个jar包 , 链接地址如下传统的 :List list = new ArrayList();list.add("一鸣惊人 -Y");list.add("人山人海 -R");list.add("海阔天空 -H");list.add("空前绝后 -K");list.add("后来居上 -H"...

weixin_35837926的博客 512

【学习总结】飞跨电容三电平boost拓扑发波分析与matlab仿真

正常工作时,飞跨电容的电压大约控制在输出电压的一半,降低了开关器件的耐受电压。

晞子的技术札记 1万+

中文汉字排序的实战技巧:从数据库到代码的全面解析

本文全面解析中文汉字排序的实战技巧,涵盖数据库和编程语言中的解决方案。针对MySQL、PostgreSQL等数据库的中文排序问题,提供GBK转换和本地化支持等实用方法;在Java和JavaScript中,介绍Collator和Intl.Collator的使用技巧。同时探讨高级场景如拼音排序、大规模数据优化及特殊字符处理,帮助开发者高效解决中文排序难题。

weixin_42662293的博客 371

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力,而在这一过程中,企业架构(EA)发挥着至关重要的作用。这本白皮书《世界级企业架构:建立和发展EA能力的领导者方法》提供了深入的理论指导,为企业如何通过企业架构实现有效的数字化转型提供了清晰的路径。本篇文章将从,解读该书的核心内容,揭示企业在数字化转型过程中应该如何通过EA的构建和实施,驱动组织变革与技术创新。

AZone架构院的博客 3172

Notion卡顿救星:3分钟搞定DNS优化,手机电脑全平台加速指南

本文针对Notion访问慢和卡顿问题,提供了全平台DNS优化与Hosts文件修改的详细指南。通过更换优质DNS服务器或建立静态IP映射,可有效解决因网络延迟和域名解析导致的加载缓慢,实现手机与电脑端的快速加速,提升Notion使用流畅度。

v6b7n8m9q0的博客 1306

Java中文排序实战:Collator字符排序器与拼音排序规则解析

在业务系统中,字符串排序通常依赖编码顺序,而中文用户的排序期望往往是拼音或笔画顺序,这种差异常导致通讯录、字典列表等场景出现结果错乱。字符排序器(Collator)是Java提供的语言规则比较器,它通过Locale识别语言环境,使用Collator进行比较时,中文会按拼音排列,而非Unicode码点顺序。Collator实现了Comparator接口,可直接用于集合排序和Stream sorted(),同时支持自定义排序强度与RuleBasedCollator规则配置,兼顾同音字处理和业务优先级需求。在实际

weixin_34043301的博客 362

yanshee 机器人全流程指南

2.点击yanshee app右上角根据提示操作 3.当手机显示成功连接 ,按下机器人胸前按钮说出“ip地址”4.根据机器人播报的ip地址加上:8888使用浏览器访问,你就会看到 jupyterd的界面,里面可以新建文件也可以改他存在的文件。我们使了yanshee机器人,这个是面向K12、中高职、高校学生推出的开源人形机器人教育平台,应用于课程教学、竞赛、科研活动等场景。我们接下来可以根据这些apl做许多好玩的,比如控制他运动,跳舞唱歌,it`s easy。注意电脑,手机,机器人必须连同一个网。

qq_44827929的博客 7610

java中的中文排序

汉字排序

嘎啦嘎啦 644

YoloV10改进策略:卷积篇|基于PConv的二次创新|附结构图|性能和精度得到大幅度提高(独家原创)

在PConv的基础上做了二次创新,创新后的模型不仅在精度和速度上有了质的提升,还可以支持Stride为2的降采样。改进方法简单高效,需要发论文的同学不要错过!

m0_47867638的博客 1094

xtop:multi_driven_net与incomplete_timing_cell fail reason 分析

man multi_driven_net”可以得知,这个问题是multi driven结构引起的,使用命令“get_failed_pins -reason multi_driven_net”,获取violation pin。“man incomplete_timing_cell”可以得知,这个fail reason的原因是缺少timing library cell,检查并补全后这个错误就显示了。这里选择的解决方法是修改lib文件,把inout改成input,重新lib2idb。通过这种方法解决了问题。

m0_61544122的博客 566

Java字符排序器实战:中文拼音与自然排序的配置与实现

排序是软件开发中的高频基础操作,而字符串排序的规则选择直接影响用户体验。在Java中,默认的字符串比较基于Unicode码点,这导致中文姓名按拼音排序时出现“张伟”排在“陈静”之前的不符合直觉的结果。为解决此类问题,开发者需要理解并配置字符排序器。通过Collator、Comparator以及pinyin4j等工具,可以实现中文拼音排序、自然排序等多种规则。字符排序器的技术价值在于将排序逻辑从具体业务中解耦,形成可复用、可配置的组件,广泛适用于用户列表、文件管理、数据报表等场景。掌握其原理与实现方式,有助于

weixin_34408624的博客 447

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

达梦数据库DM8:字符集与排序规则的中文支持与国际化配置深度指南

达梦数据库字符系统技术解析 达梦数据库DM8的字符处理系统采用三层架构设计:编码转换层实现高效的字符编码识别与转换(比传统方案提升40%效率);存储引擎层对中文字符进行特殊优化,可节省15-20%空间;比较运算层支持多级比较算法。系统提供GB18030、UTF-8等多种字符集,其中GB18030对中文存储最紧凑,而UTF-8适合多语言环境。排序规则系统支持二进制、拼音、笔画等比较方式,拼音排序与Oracle兼容。字符集可在数据库、表、列三级配置,变更时需注意索引重建和数据一致性。实际应用中需权衡语言支持、存

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1513

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java取字符串首字母_java 获取中文字符的首字母

原理: GB2312编码中的中文是按照拼音排序的注意: 一些生僻的字无法获得正确的首字母,原因是这些字都是后加入的。import java.io.UnsupportedEncodingException;/*** 取得给定汉字串的首字母串,即声母串** 注:只支持GB2312字符集中的汉字*/class ChineseInital {private final static int[] areaC...

weixin_28839629的博客 5607

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

对于pinyin4j的改进

jpinyin-1.0.jar目前Java汉字转拼音类库较少,比较常用的有pinyin4j,但pinyin4j缺少对生僻字的支持,无法转换525个生僻字的拼音。因汉字转拼音功能在中文搜索及中文排序领域具有重要的作用,而pinyin4j的字库不完善,基于此原因花了几天时间自己写了个汉字转拼音类库:JPinyin,并对转换算法做了一些改进。 【JPinyin主要特性】 1...

lirentingblue的博客 2256

中文转拼音Java实现:多音字处理、性能优化与踩坑实录

中文检索、通讯录排序和模糊匹配等场景往往需要将汉字转换为拼音。其核心原理基于Unicode码点与汉字区位码的映射,通过查表与上下文规则完成读音判定。正确处理多音字、生僻字及代理对字符,是保证转换准确率与系统健壮性的关键。在实际工程中,拼音转换能力广泛应用于搜索前缀匹配、姓名首字母索引、文件命名等高频业务,同时需要兼顾批量转换性能与输出格式的灵活适配。本文基于Java实现,从基础映射表设计、多音字词典消歧、缓存优化和编码边界处理等角度,完整拆解一个自研中文转拼音模块的结构思路与踩坑经验,为同类需求提供可落地的

weixin_31856057的博客 159
上一篇: Oracle _ SQL语句
下一篇: WebService(4)_标准JDK发布WebService
Simba_cheng
博客等级 码龄11年 250粉丝 203原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值