wordpress centos nginx shell Python google Windows linux命令 HTML5 php 开源 java Android Ubuntu mysql Firefox 微软 程序员 apache linux

关于Ubuntu 12.04的HUD技术揭秘

老实说,Ubuntu 12.04的HUD技术最核心的问题就是字符串的“模糊匹配”(“Fuzzy Matching”),这就要涉及人工智能(AI)的研究领域。

我是学代数(Algebra)的,对字符串极为“敏感”,对其也有研究的兴趣。大约在1965年,苏联学者Vladimir Levenshtein引入一种所谓的“编辑距离”(“Edit distance”),用来衡量两个字符串之间的“距离”。初看起来,这种“想法”很是荒唐,怎么能够用一个数字来度量两个字符串之间的“距离”?这种“距离”满足“三角形”准则吗?(即:“两边之和大于第三边“)。......这是代数学家研究的事情。

两个字符串之间的“编辑距离”如何定义?我们设想,插入、删除、替换一个字符是被允许的合理“编辑操作”,使用这三种合理的操作动作将一个字符串“编辑”为另一个字符串所需要的最小“操作次数”就叫做这两个字符串之间的“编辑距离”。实际上,给定两个字符串,如何使用软件程序计算出它们之间的距离却不是一件很简单的事情。不信,你试一试就知道了。

从技术原理上来讲,HUD就是上述”编辑距离“的灵巧应用。从操作层面来讲,只要你按下键盘的”ALT“键,屏幕上就会弹出一个半透明的HUD对话框,只要在其中输入你的”意图“(字符串),计算机就会自动地迅速在应用程序选单的“Menu数据库”里面进行查询(比对),寻找出那些最佳匹配的Menu,从而给出一个“Menu列表“,让用户自己去选择。时间长了,计算机就会从用户的“选择习惯”中“得知”(所谓“自动学习”)究竟选择哪个Menu对用户而言才是“最佳”,从而投其所好,给出最佳“答案”。

其实,HUD的原理并不算复杂,但是,第一个想出这个“怪主意”的人,算是很了不起的一个“发明家”。结合我们汉语实际,问题就复杂了,两个汉字之间的“编辑距离”如何定义?偏、旁、部、首,......麻烦大的去了,我们必须另想办法。

今天使我特别高兴的是,在50年前一项很不起眼的代数学“发明”,直到今天才派上“大用场”。

说明:今天上午,我要去一个很远的地方(仍然在北京地区),看望我少年时代的“好朋友”,准备与他聊聊HUD。

文章来源:袁萌博客

延伸阅读

评论