最贵的汉字

“你说,当代中国最贵的汉字是什么?”,有一天同事忽然问我。

“【诺】,因为一诺千金”,我脱口而出。

“不对。”

“【字】,一字千金?”

同事摇头。

“爱?”

“这个是无价的,不算。”

“人才。不是说 21 世纪最贵的是人才吗?”

“一个字,你这不算。你咋不说家书抵万金呢?”

“算了,不猜了。”,我脑海里为数不多的几个字转了一圈,没有一个符合的。

我有些疑惑地看着他,表示放弃。

疑惑

“答案是拆。”

“拆?”

“对。拆,拆迁的拆。”

说完,同事笑了笑。笑中带着三分世俗,六分狡黠,还有一分凄凉。

“拆,财。一拆,财就有了。”

不过,我却糊涂起来,“那么这个拆,是和你有关系呢?还是和我有关系呢?”

“都有关系”,同事顿了顿,“也都没有。”

“和我俩有啥关系,我们把房东的房子拆了周游世界?”

“No,我们今天来拆点别的。不拆房子。”

“不拆房子,那拆什么?”

“拆字。”

“字?”

“对。字,汉字的字。”

拆字

“汉字,知道吧?”,同事继续说着。

“废话。小学生都知道的问题。”

“汉字的三要素知道吗?”

“音形义。”

“你知道如何用程序实现两个形近字的判断吗?”

“你是没关注老马吧,他前两天刚写了一篇 NLP 形近字的实现算法。”

“那篇算法我看了,一般般吧。有些场景不适应。”

“比如?”

“比如【明】与【冐】,结构不同,偏旁不同。但是他俩像不像?”

竟能如此相像

真实文化限制了我的想象力,在震惊了 0.9 秒之后,我立刻反驳。

“说的轻巧,说的你能解决这个问题一样?”

同事笑了笑,“难也不难。这就涉及到今天的主角,拆字。”

“哦。愿闻其详。”

“我们可以把汉字拆开最基本的组成部分,比如【明】可以拆成【日】【月】,【冐】也是类似的。然后去比较每一个部分是否相同,用来计算相似度。”

“这倒是挺不错”,我不禁点头称赞,“那么问题来了,这种拆字程序要多久才能实现呢?”

同事笑了笑,“在下不才,这两天下班期间写好了一个拆字程序。”

“秀啊,你给拆一个秦时明月汉时关我瞅瞅。”

同事小手一敲,结果输出 手乀禾日寸日月冂一一水又日寸丷天

“可以可以。除了 NLP 形近字,你这程序还有啥用?”

“用处挺多的,不过最主要的是帅。比如这张我用拆字结合云图自动生成的图片。”

拆分与云图

技术总会过时,但是帅,却是一辈子的事情。

“你知道这个图,是由哪一句话拆分得到的吗?给你个提示,出自一首词。”

合字

想到同事给出的难题,最近日夜难寐,到底要怎么解呢?

正所谓,天下大势,合久必分,分久必合。

既然汉字能拆分,那么,能不能合并呢?

于是花了两天时间,写了一个汉字的合并程序。

可以把 手乀禾日寸日月冂一一水又日寸丷天 合并为 秦时明月汉时关

同事看了后,觉得挺有趣。

“你这个怎么实现的,有点意思。”

“不难,和汉字的拆分逻辑反过来就行。”

“比如日月合并的时候,你如何判断是明还是冐呢?”

“我做了一个字频统计,单个汉字字频高的优先。当然有时候这并不合适,最好还是结合 n-gram 的方式,提高上下文正确率。”

“不错。匹配算法呢?”

“FAST-Forward 算法,和以前开源的敏感词类似。”

“可以可以。那么,我一开始给你的谜面你解开了吗?”

话里画外

不拆不合

“运气好,解开了。”

“怎么做到的?”

“我在晚上找到了全宋词,不过想到你出的题目肯定是常用的诗词,所以第一步缩小了范围。”

“然后呢?”

“我把你图片里的部首合并,汉字穷举。然后做检索。找到之后,把内容正向拆分对比,运气不错找到了。”

“思路不错。是不是发现拆分用来做验证码也挺不错的。”

“是的,比起传统验证码会被机器学习的风险,这个识别的成本相对较高。”

“字拆分用来融入到解密游戏也不错,类似《文字游戏》之类的,招你做技术研发也不亏。”

同事笑了笑,叹息道:“我最近在想,有时候不是什么事情都要有用吧。技术总会过时,文化却源远流长。拆也好,财也好,有了固然好,没有也无妨。”

我一时不知道说什么,看着昨晚程序解开的谜底,那里有一行字。

怒发冲冠,凭栏处、潇潇雨歇。抬望眼,仰天长啸,壮怀激烈。三十功名尘与土,八千里路云和月。

让子弹飞