`
totoxian
  • 浏览: 1082877 次
  • 性别: 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

    在 `Matlab` 中,我们用方括号 `[ ]` 来创建矩阵,而 `Mathematica` 使用 `{ }`。 5. **输出格式化**: - 在 `Mathematica` 中,你可以使用 `ToString` 将表达式转换为字符串,然后使用 `StringReplace` 替换特定...

    mathematica 使用教程(中文版)

    表达式是Mathematica中最重要的概念之一,它包括算术运算符、逻辑运算符以及表达式的各种操作。 Mathematica还提供了很多常用数值函数,包括伪随机函数、整数和组合函数等,它们用于生成特定类型的数值或执行复杂的...

    Mathematica 中文版教程pdf版

    ### Mathematica 中文版教程知识点概述 #### 一、绪论 ##### 0.1 符号计算系统简介 **数值计算与符号计算** - **数值计算**: 是指利用计算机进行数学运算的一种方法,主要针对具体的数值进行计算,如求解特定函数值...

    Mathematica公式转换为MATLAB的格式

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

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

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

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

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

    Mathematica完美教程-从入门到精通.zip_mathematica_mathematica 教程

    8. **应用领域**:Mathematica在物理学、化学、生物学、经济学等多学科都有广泛应用,教程会给出实际案例,展示如何用Mathematica解决具体问题。 9. **高级特性**:随着对Mathematica理解的深入,学习者将接触到更...

    Mathematica 8 中文 英文 注册机

    在尝试使用Mathematica 8中文注册机时,有时会遇到“缺少mfc100u.dll”这样的错误提示。mfc100u.dll是Microsoft Foundation Classes (MFC) 库的一个组件,是Visual C++的一部分。当系统缺少这个文件时,意味着系统...

    mathematica实用教程.pdf

    Mathematica 实用教程 mathematica 是一个功能强大且多功能的计算机代数系统(CAS),能够...《mathematica 实用教程》涵盖了 mathematica 的多种应用场景和使用方法,为初学者和专业人士提供了详细的指导和参考。

    Mathematica中文版下载包--内附教程.zip

    《Mathematica中文版下载与使用指南》 Mathematica是一款强大的数学计算软件,由Wolfram Research公司开发,广泛应用于科研、教育、工程等多个领域。它的中文版为国内用户提供了更加友好的操作界面和丰富的中文文档...

    Mathematica8.0_中文教程

    为了在实际中使用Mathematica求解方程,我们需要熟练掌握Solve和Reduce的使用,理解它们在不同情景下的应用和输出结果的意义。同时,我们也需要了解Mathematica能够处理哪些类型的方程,哪些情况下可能得不到精确解...

    Mathematica For Theoretical Physics

    4. **分形**:探讨分形几何的概念及其在自然界中的应用,例如用Mathematica生成Mandelbrot集或Julia集。 #### 五、Mathematica的特点及其在理论物理学中的优势 - **强大的符号计算能力**:Mathematica能够处理复杂...

    Mathematica基本使用手册

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

    mathematica

    mathematica

    mathematica 6.0 学习资料

    Mathematica 6.0 是一款强大的数学软件,广泛应用于数值计算、符号运算、数据分析等多个领域。本章主要介绍了Mathematica中关于数的基本概念和操作。 首先,Mathematica中的数分为两类:基本常数和内部常数。基本...

    全美经典mathematica 教程中文版

    书中的750多个精心设计的例题和习题,旨在以最直接和最简洁的方式演示Mathematica的软件功能,帮助读者深入理解数学概念并能够利用Mathematica软件解决实际数学难题。每道例题都针对特定的数学问题提供了解决方案,...

    用Mathematica绘制几何图形

    通过设置不同的参数r和s,可以使用Mathematica中的Sum函数对Weierstrass函数进行近似,进而使用Plot命令绘制出其图像。这一点说明了Mathematica在处理复杂函数图像时的能力。 对于空间曲线和曲面的绘制,...

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

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

    Mathematica

    在本篇文章中,我们将详细探讨如何使用Mathematica进行二维函数、数据集合以及二维参数图形的绘制,并介绍一些基本的图形元素和图形样式。 1. 二维函数作图: Mathematica提供了一个内置命令`Plot`来绘制一元和多元...

    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...

Global site tag (gtag.js) - Google Analytics