`
totoxian
  • 浏览: 1035570 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

[转]用Mathematica寻找最相似的汉字

阅读更多

from http://www.matrix67.com/blog/archives/2907

Mathematica 提供了一个看上去毫无用途的无厘头函数 Rasterize ,它可以以图片的格式输出运算结果。比如,下面这个句子可以打印出 (x+1)^n 的展开式的“倒影”:

今天我突然想到,我们可以利用这个函数很方便地分析汉字在图象上的性质。函数 Binarize 可以把图象转换为单色单通道, ImageData 则可以把图象转换成数组的形式,以便我们定量分析。因此,下面这句话就可以把一个汉字转换成 12*12 的 01 矩阵:


下面这几句话可以把 GB2312 中的最常用的 3755 个一级汉字按照宋体 12 像素点阵字的像素点多少进行排序。

可以看到,像素点最少的 10 个汉字为:

像素点最多的 10 个汉字则为:



曾经多次在网上看到诸如“三秒钟之内找到我”、“你吃过康帅博方便面吗”之类的帖子,不由得感叹汉字之强大。于是我开始思考,汉字中哪些字对长得 最像?于是,我利用上面这些函数写了一段 Mathematica 程序,跑了几个小时的时间终于得出了在 3755 个一级汉字所对应的宋体 12 像素点阵字中像素不同之处最少的字对。其中有一对字仅一个像素之差,它们是“己”和“已”字。其它的一些结果如下:

只差 2 个像素:(鸣,呜), (柬,束), (竟,竞)
只差 3 个像素:(壳,亮), (含,合)
只差 4 个像素:(上,土), (免,兔), (兵,乒), (士,土)
只差 5 个像素:(夫,失), (臣,巨), (未,朱), (宜,直)

但是,我对上面这个结果并不满意,因为有这么一个问题被忽略掉了:虽然相差相同数量的像素点,但差异发生在不同的地方,主观上的视觉差别程 度是不同的。比方说,同样只差 4 个像素,人们会觉得 (士,土) 之间的差异远远小于 (上,土) 之间的差异。我们可以用一个更简单的例子来说明这种情况:

图 A 和图 B 、图 A 和图 C 都只差一个像素,但从人眼的角度来看,图 C 要和图 A 接近一些。这是为什么呢?或许这就是人和机器的区别吧。机器能够精确地知道每个像素的位置,但人却很难做到这一点,一般只能分辨出每个像素的大致位置。为 了模拟人眼的感受,我想到把所有的汉字全部模糊化,让每个像素点都在其周边留下一些影子,这相当于从一个近视眼的角度去量化字形的差异。

对前面的三个例图进行模糊并转化为 256 灰阶后,图 A 和图 B 的各像素灰度值的差值的平方和为 33699 ,图 A 和图 C 的各像素灰度值的差值的平方和则为 29330 ,后者比前者小得多。又是几个小时的时间, Mathematica 终于找出了在这个意义下字形最接近的 50 个字:

(己,已), (竟,竞), (鸣,呜), (柬,束), (壳,亮), (含,合), (免,兔), (荚,英), (士,土), (宜,直)
(并,井), (杜,社), (夫,失), (侍,恃), (昔,音), (未,朱), (囤,围), (检,捡), (昧,味), (桶,捅)
(末,未), (懦,儒), (著,着), (上,土), (兵,乒), (素,索), (臣,巨), (迸,进), (盖,蛊), (槐,愧)
(优,忧), (官,言), (挡,档), (醇,酵), (柠,拧), (茧,苗), (儿,几), (蓬,篷), (供,洪), (幂,幕)
(扁,肩), (贵,贪), (金,全), (借,惜), (厘,屋), (析,折), (戍,戌), (大,太), (悄,俏), (失,矢)




这些字究竟相仿到什么程度呢?让我们用上面这个列表中的头 6 组字对做一张“汉字视力表”吧:




分享到:
评论

相关推荐

    Mathematica 公式转 Matlab

    Mathematica 中输入的公式可以直接转成 Matlab中点乘公式格式,方便在Matlab进行数值模拟,绘图。

    Mathematica公式转换为MATLAB的格式

    教程在https://blog.csdn.net/qq_42370406/article/details/125722526。 搭配着教程,可以将Mathematica的公式转换为MATLAB中m文件可以使用的代码。

    mathematica最全教程(使用手册).pdf

    很多功能在相应领域内处于世界领先地位,它也是使用最广泛的数学软件之一。Mathematica的发布标志着现代科技计算的开始。Mathematica是世界上通用计算系统中最强大的系统。自从1988发布以来,它已经对如何在科技和...

    全网最全mathematica学习入门资料打包下载

    数学中的许多计算是非常繁琐的,特别是函数的作图费时又费力,而且所画的图形很不规范,所以现在流行用Mathematica符号计算系统进行学习,从高中到研究生院的数以百计的课程都使用它,很多问题便迎刃而解。...

    Mathematica基本使用手册

    Mathematica基本使用手册 Mathematica基本使用入门 Mathematica 是一个庞大且复杂的系统。它内置几千个函数,能完成科学、数学、工程等学科中的各 种工作,包括数值和符号计算,编程,数据分析,知识表达,和信息...

    mathematica

    mathematica

    mathematica 使用教程(中文版)

    很难得的Mathematica教材,我是找了好久才在同学那搞到的! 对数学建模以及应用数学方面有兴趣的同学相当实用……

    Mathematica8.0_中文教程

    很多功能在相应领域内处于世界领先地位,截至2009年,它也是为止使用最广泛的数学软件之一。Mathematica的发布标志着现代科技计算的开始。Mathematica是世界上通用计算系统中最强大的系统。自从1988发布以来,它已经...

    Mathematica和Mathtype之间的相互转换.pdf

    Mathematica和Mathtype之间的相互转换.pdf

    mathematica学习教程全集

    第一章 Mathematica 基础知识 1.1 Mathematica 概述 1.1.1 Mathematica 简介 1.1.2 Mathematica 的安装和进入/退出 1.1.3 Mathematica 中的Cell 1.1.4 Mathematica操作的注意事项 1.2 Mathematica 中的数据 1.2.1...

    Mathematica高数应用

    §1 Mathematica简述与函数求值.doc §10 用Mathematica进行级数运算.doc §10 用Mathematica进行级数运算练习参考解答.doc §11 用Mathematica进行广义积分运算.doc §11 用Mathematica进行广义积分运算练习参考....

    Mathematica函数及使用方法

    Mathematica函数及使用方法Mathematica函数及使用方法

    全美经典mathematica 教程中文版

    mathematica经典教程,中文版经典教程

    mathematica 8 简体中文

    数学软件

    Mathematica

    Mathematica_基础知识

    Mathematica Symbolic Toolbox for MATLAB

    Using the MathLink communication standard supplied with Mathematica and the MEX facility of MATLAB we write a toolbox that provides MATLAB users with all of the symbolic and high-precision numeric ...

    Mathematica Tutorial.pdf

    Mathematica Tutorial

    Mathematica 中文版教程pdf版

    Mathematica 中文版 教程 pdf 版 中科大教程

    运算大师mathematica4

    mathematica mathematica mathematica

    Mathematica programming: an advanced introduction

    At the end of the day, there is nothing that can be done in Mathematica and absolutely can not be done in other programming environments. For many problems however, especially those involving symbolic...

Global site tag (gtag.js) - Google Analytics