看看你喜欢哪个:
是
sin(α+β)=sinαcosβ+cosαsinβ
sin(α-β)=sinαcosβ-cosαsinβ
cos(α+β)=cosαcosβ-sinαsinβ
cos(α-β)=cosαcosβ+sinαsinβ
还是 复数?
是
玻尔的氢原子模型,还是
量子矩阵?
是
直线,还是

Image is from: http://www.elements-of-design.net
总有些想法,不写下来就忘了
看看你喜欢哪个:
是
sin(α+β)=sinαcosβ+cosαsinβ
sin(α-β)=sinαcosβ-cosαsinβ
cos(α+β)=cosαcosβ-sinαsinβ
cos(α-β)=cosαcosβ+sinαsinβ
还是 复数?
是
玻尔的氢原子模型,还是
量子矩阵?
是
直线,还是

Image is from: http://www.elements-of-design.net
这里是最近几天的一些比较杂乱的思考,我自己也没想清楚,不过好象是彼此有联系的,先写(log)下来.如果有人看不懂,我只有说:对不起观众了.
编译器其实是我的本行,机器翻译是我的兴趣.要说机器翻译能用编译器的方法来实现,我第一个不同意.
首先,编译器处理的是严格的文法,有限的规则.机器翻译处理的是大量没有严格定义的内容,需要有方法来提取大量的规则,而规则彼此之间一定会有冲突,这些冲突的解决,延伸出更多彼此冲突的规则.
其次,编译是没有语义的,所有的语义都是通过语法规则来体现的.机器不懂语义,只知道根据规则来进行结构的变换,编译里面,语法先于语义.机器翻译所面对的自然语言,语义是很重要的因素.语法只是表达语义的形式,很多时候根据上下文,可以抛开语法,不合语法的句子甚至一串词就可以表达意义.语法是第二位的.
如果说今天的话题要有一个主题,那看来就是语义,计算机和语义.
这里举一个例子:在”数学之美 系列 12 - 余弦定理和新闻的分类“里提到,对新闻的分类算法,首先是文章对齐:是把词的TF/IDF计算出来,然后按照词的编号(一般是字典序)排成向量.然后把对齐的向量计算余弦投影.在对齐的过程中,其实已经把语义信息丢失了(这里语法信息也丢失了,后面详述).那么,这样两篇一句话新闻:
贼偷KESO 和
KESO偷贼
就是完全一样的两篇新闻,因为它们的向量是一样的.不过,这可是完全不同语义的两句话.
那么,语义的理解是谁做的呢?是读者.对前面一句话,大家的反应会是:老调重弹.对后面一句,估计很多人会有兴趣,毕竟一个知名blogger去偷一个贼,肯定是和”疯狂的石头”一样,很好玩的事情.
同样的,如果你看过”数学之美 系列十三 信息指纹及其应用“,请跟我一起想:既然文字在计算机里也是二进制表示,和那个指纹一样都是数字,那么,很长的文字也可以看做一个比指纹更长的数字.都是数字,那为什么把长数字(文字)映射到短数字(指纹),居然不会有很多重复?这就好象把一个500人大礼堂里所有的人赶到20人的小房间,居然没有很多人坐在别人身上一样不可思议.
我能想出来的答案是:因为那个大礼堂,本来就很空.我们不是把所有可能的长数字(文字)都来进行映射,毕竟,不是所有的长数字的组合,都是有语义的.有语义的,只是很少的一部分组合而已,就象500人的大礼堂,里面其实只有二十几个人.
语义,饶了一大圈,我们又回到语义了.
计算机只能了解规则,为了让计算机”懂得”语义,我们做编译的人的办法是制定规则(语法),让规则的变化来达到传递语义的目的.C语言里面:
a = b + c;
被转换成汇编:
mov eax [0xadd0fb]
add eax [0xadd0fc]
mov [0xadd0fa] eax
是通过规则来转换的,而并非编译器懂得a=b+c的意思是”让a存储b和c的和”.
在机器翻译里,我们定义自然语言的语法:
1.”偷”是动词,做谓语
2.keso和贼都是名词(抱歉把keso和贼相提并论),可以做主语和宾语
3.在谓语前面的就是主语,后面的是宾语.
这样对语言的处理,保持了语法,比词向量的方法多了更多的信息,可是语义,依然没有被提取出来.
如果源语言和目标语言有相似的结构,或者目标语言足够复杂,可以描述任何一种源语言的结构要描述的语义,那么翻译还是可以用编译的方法(规则映射)做到的,如果两者语言结构差别太大,看来问题就复杂了.
一直想讲一个故事,一个关于夏天的故事。本故事是真事,不是我编的。
三月份的时候回了趟国,当时的上海,已经很热了,热到什么程度呢?有天我在一个商厦里面逛,饿了去吃碗面,自己吃着无聊,对面两个人的对话吸引了我。
A:你说我们做个网站好不好?
B:好啊,现在WEB二点零那么热,肯定好。一定能吸引到投资。
A:那我们要订个计划,都要做什么。
B:好,一定要有论坛。
A:还要有博客,让大家来写。要有贴图。
B:还要有QQ那样的,不过,现在好象免费的即时通讯软件都没有好的,论坛和博客倒是都有免费的。
A:不要紧,我认识叉叉叉叉大学的叉叉教授,让他帮我们开发,有两个月够了。
我实在忍不住了,问:“你们知道GAIM吗?”
这俩弟兄倒也不介意我偷听,马上问:“什么是GAIM?”
然后我们聊了聊,我问A认识的教授手下有几个人,然后告诉他,估计俩月不够。
两人问我能不能把email留下,我很没礼貌的拒绝了。
现在,不知道他们的投资拿到了没有。如果拿到了,我是否要后悔一下呢?
故事讲完了。今天思考的问题是:
英语和汉语的句式的区别。
比如说,It is required that you create a boot disk.
就是一个典型的英文句式,如何能转换成让人舒服的读懂的中文句式:你需要做一张启动盘。
看来,用规则是最简单的办法,不过,要多少规则,才能覆盖所有的英文句式->汉语句式呢?
在大家和google搜索的帮助下,终于弄清楚了这么几点:
1.雅虎的翻译是使用SYSTRAN的服务,目前谷歌语言工具同样是使用SYSTRAN服务,所以,两家出一样的错误,把booting翻译成”孕惠”,就不奇怪了.我原来以为两家买的是同一个词库,原来连规则库都是一家的.
2.谷歌的那个宣传了很久,得分很高的,基于统计的机器翻译工具并没有公开让我使用.我看到的结果是SYSTRAN的翻译结果,是基于规则而非统计的.
3.雅虎和谷歌显然都对SYSTRAN提供的缺省服务进行了改进,很大的可能是增加了规则(这里是我的推测,因为SYSTRAN是基于规则的,而非统计,所以应该不是训练,而是增加了规则).导致了两家对不同的东西翻译结果各有特色,当然这里包括好的特色和比较搞的特色.
4.拥有世界比较大的语料库和计算资源的google,所做的基于统计的机器翻译得分依然很低,蛮力计算几乎也帮不了太大的忙.
所以,比较雅虎宝贝鱼和谷歌语言工具的讨论,就跟讨论一个蛋是大头好吃还是小头好吃一样了.
这个基于统计的翻译工具,和基于统计的有限词典语音识别还是不太一样.后者比较象做选项不多的选择题,用HMM把前端进来的phone串算一算,看和哪个选项最接近,就是它了.可是这个翻译,选项实在是太多了,而且有的两个选项差之毫哩,谬以千里,难怪会看到翻译出完全意思相反的句子了.
有的时候看着翻译出来的错误结果,我都能听见那个匹配器在说:”不就是少了一个’不’字嘛,匹配的还是很不错地…”
今天用雅虎信箱,才知道有了雅虎翻译.于是去试试,看看怎么样.
从url看,是专门为中文做的: http://fanyi.cn.yahoo.com/ 不过还是可以选其他语言互译.
我试着输入 china ,被翻译成”瓷”,而China,被翻译成”中国”.这点来说,词库比谷歌的要丰富一点点.细节很重要.输入google,没有翻译成”谷歌”,依然是google,我比较喜欢这点,至少在有争议的地方,没有使用大家普遍还没有接受的翻译.
接下来就比较好玩了,两家都有网页翻译功能,于是,我让两家都翻译红帽Linux的安装文档:
http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/install-guide/s1-steps-install-cdrom.html
这里是他们的一些结果:
原文:1.4. Can You Install Using the CD-ROM?
人工:1.4.你能使用光盘安装吗?
雅虎:1.4 。您可以安装使用CD-ROM 吗?// 倒,硬件安装?不过,挺客气的,用”您”
谷歌:140. 你可以用安装光盘吗? // 更接近原意
原文:There are several methods that can be used to install Red Hat Linux.
人工:红帽linux可以用几种不同的方法安装
雅虎:有可能使用安装Red Hat Linux 的几个方法。
谷歌:有几种方法可以用来安装红帽Linux. //短句的表现都不错
原文:Installing from a CD-ROM requires that you have purchased a Red Hat Linux 9 product, or you have a Red Hat Linux CD-ROM, and you have a CD-ROM drive. Most new computers will allow booting from the CD-ROM. If your system will support booting from the CD-ROM, it is an easy way to begin a local CD-ROM installation.
人工:要从光盘安装,你必须购买了红帽linux9,或者你有红帽linux光盘,你还必须有一个光盘驱动器.大多数新计算机允许从光盘启动.如果你的系统支持从光盘启动,从本地光盘安装会比较容易.
雅虎:安装从CD-ROM 要求, 您购买了Red Hat Linux 9 产品, 或您有Red Hat Linux CD-ROM, 并且您有一个光盘驱动器。多数新计算机将允许孕穗从CD-ROM 。如果您的系统将支持孕穗从CD-ROM, 这是一个容易的方式开始地方CD-ROM 设施。
谷歌:从安装光盘要求你买了刘涌Linux9产品,或者你红帽Linux光盘,你的光盘驱动. 多数新计算机会允许从孕穗CD-ROM. 如果你系统支持的孕穗CD-ROM,这是一个简单的方法,开始了本地CD-ROM安装.
评论:长句一来,两家的模式匹配就都出了问题,从英到中的翻译,句式的变化我并不抱太大的希望,机器翻译的语料库太少.不过单看多义词的识别,两家都没有做好.比如说,后来的driver disk都被翻译成了”司机磁盘”或者”驾驶员磁盘”.多义词比较容易闹笑话.
那个啥,好象有个东西,叫做”Mutual Information“的?就是说一个有好多意思的词儿放在一堆词儿里才知道是什么意思?
最后两个发现:
1.好象两家用的词库都是从一个地方来的?booting都翻译成”孕穗”
2.谷歌的翻译里,”刘涌”是哪位大虾呢?
更新:
guest发现,谷歌把dd命令翻译成”肠道疾病”.人民的眼睛,是雪亮雪亮地…
匿名用户指出: Babel Fish 的翻译服务其实早就存在: http://babelfish.altavista.com/。现在,AltaVista, an Overture Company,显然是雅虎的一部分了。其实,真正的翻译技术是由SYSTRAN提供的。它同时power了Google的翻译。见http://en.wikipedia.org/wiki/SYSTRAN
谢谢.那就不奇怪了,两家连错的都差不多.
附:
雅虎的翻译url:
谷歌的翻译url:
火炬同学,你才发表了”一份关于搜索引擎机器人的研究报告“没几天,googlechinablog就出现了这个东西:
“数学之美系列六 — 图论和网络爬虫 (Web Crawlers)”
相对这一系列前几个章节的深入程度,这篇明显的比较浅出.不能不怀疑是在时间紧迫的情况下写出来的.看到BFS/DFS那段了吧,联系到在http://drunkmenworkhere.org/219里面,googlebot在node 1073872896,忽然长出了一朵菜花的行为,以及googlebot喜欢”The rightmost branch”的行为,都说明它把BFS和DFS结合起来的了,我猜测类似A*.不象yahoo! slurp那么硬来.googlebot和MSNbot的行为说明,两家后来者都企图以巧取胜.
回到原来的话题,为什么能够深入探讨到信息熵和HMM的吴军研究员,忽然把离散数学,特别是图论,这么半生不熟的给写出来了呢?我看,是你的blog引发的.
从回国前开始,就一直在考虑一个问题:web是否是可计算的?如果是,那么是否有商业价值?
我的回答是:web是可计算的.这里的计算是一个广义的概念,更接近”自动化”.或者说,是使用计算机来使用web.
这里列举一些例子:
yahoo directories,是把我们的favorites放在网络上,可以随时存取.提供的是web的存取功能.提供一个树型结构.
google search,是根据输入的关键词,计算了一个网页的相关关系列表.这里,提供了部分计算功能.goog所一直宣扬的算法,无非是要提供一个list.而它的广告,是另外一个list.
那么,顺着这个思路想下去,还有什么计算功能,可以提供呢?
把一个blog或者新闻,提炼成几个关键词的功能.那些每天要做很多阅读的人会喜欢吧?
找到trackback spam的功能,BSP会喜欢吧?
通过路口的web cam来推测堵塞情况的服务呢?
通过换季的时候的天气变化来订制打折促销活动的软件呢?
“blog的自修正“里提到了测不准原理,想不到火炬同学也喜欢物理.不过,我这里要谈的,是更新的物理-当然也有几十年了:系统演化,还有和blog的关系,当然后者就不是物理,是生意了.知道了规律,再赚钱就容易了.
系统演化的涵盖很多,我最喜欢的一点,是它试图解释为什么用简单特性的成分,能够形成复杂有序的系统.这个理论的相关:”蝴蝶效应“,更著名一些.火炬同学一定更喜欢这个,因为它说,我们对世界的把握是如此的无力,不仅对原子级别的东西不能同时测准速度和位置,甚至对和我们差不多大小的东西,一旦东西多了,即使知道了系统初态,几个回合下来,终态也不可计算.
不过我不太关心乱的部分,我更关心的,是在混沌中产生的有序,即在一个耗散结构中的系统自组织,还有blog是否有类似的现象.毕竟,我们能利用的,是有序的部分.这个理论给了我们希望:在一个如此混沌的世界里,给了合适的简单外力,那些没头没脑乱撞的小东西,居然自己组织成了复杂的结构.
系统演化的条件,一是耗散结构.系统和外部环境有能量交换.二是稳定,除了小幅度的能量的交换,没有其他的过强的外力来干扰.有了这两条,系统就有可能发生自组织,形成有序的结构.
那么,问题来了:在blog界,是否有类似的现象?blogger们对名望,金钱和影响力的追求,能否可以建成简单的特性模型?多大的现金和关注,才能构成合适的”能量”交换?人的因素怎么起作用?谁是奇怪吸引子?keso?木子美?木木?爱搞搞?把针对keso文章的回复按照意见的不同画成点,能否看到洛沦兹的蝴碟的影子?
这里是一个混沌和有序的图:
http://www-chaos.umd.edu/images/chaospics/ikeda2.gif

人择原则是很有意思的一个东西.在物理学和生物学上经常有人不小心掉到宗教的路上:对自然的了解越深,就越敬畏.为什么世界如此的巧妙?为什么生物如此的精致?为什么在众多可能的宇宙中,我们所在的这个拥有如此美丽的结构?为什么宇宙的膨胀和引力之间是如此的平衡,而没有塌缩或者膨胀到过于稀薄?为什么生物个体和环境是如此的和谐?想多了没有答案,最后只好承认存在造物主.
人择原则很干脆的说:观察的时候不要忘记观察者本身.之所以有如此精巧的世界,是因为它碰巧如此精巧,以至于精巧到演化出了星系和行星,还有高级生命,可以站在这里赞美这个世界,同时还胡思乱想.
人择原则的一个最简单的例子:你的父亲是男的,你的父亲的父亲也是男的,你的父亲的父亲… 你的母亲是女的,你的母亲的母亲也是女的…如此精巧吗?不,如果错一步,就没有你了.
知道了人择原则,再回头看看”植物的欲望”一类的东西,就很简单了.生物的演化和公司的生存类似,当你站在成功的终点,回头看那些来时的岔路口,自然不容易体会当时的彷徨.毕竟,这是一个NP问题,而你,没有一台非确定性的图灵机.
不过真正写这篇东西的起因,是看到王建硕字里行间的不确定了.当一个人从人堆里站到聚光灯下,放弃的不仅仅是可以犯错误的奢侈.
我在一个关于传播的思维实验里边描述了实验的空间规则.高烧评论说,”信任是关键”.好,这里就谈谈信息传递和信任关系.
信息传递:
在实验的世界描述里,信任是点对点的和分散的.基于信任关系的信息传递是不可靠的.
点对点: 信任关系只存在于两个结点之间,既不是对称的.例如:A信任B,并不代表B一定信任A.也不传递:冬宝信任冯巩,冯巩信任戈玲.那么冬宝信任戈玲吗?戈玲是谁啊?
分散的: 每个结点上的边都是有限的,除了结点自己处理能力的限制,还有捕食者P在做限制.
信息传递不可靠: 在世界定义里,信任是信息传递的通路.存在信任关系,才有信息传递的可能.但是信息传递会有噪声.另外,信任关系存在,只保证信息传递可能发生,并不保证信息传递一定会随时发生.
在这样一个不完美的世界里,想要信息在两个没有信任关系的结点之间流动,只有通过其他结点传递.用图论的说法,只要两点之间存在通路,信息传递就可能.但是因为信息传递的不可靠,信息要被切割成信息包来传递.Internet的数据包就是这样.不过这里的讨论不是重复Internet,是讨论一个overlay network.
好,下面说信任关系
A收到它信任的B穿来的一条消息,据说这条信息是F生成的.那么,这条不知道第几手的消息,究竟是不是F写的呢?我怎么才能信任信息的内容呢?比如说,今天接到一条据说是keso@donews.com的消息,声称”洪波从此挂键盘”,那么我信吗?
有几种做法,例如:集中的身份确认,基于内容的确认和数字签名.
集中的身份确认是把身份确认和信息发布绑定:我从blog.donews.com/keso看到这条消息,我信任DNS把blog.donews.com这个URL映射到61.135.128.148,我信任61.135.128.148这个server把/keso映射到我以前读的洪波blog上,我信任我的browser没有弄错,于是我信任我看到的,的确是keso@donews.com这个id后面的人说的话.当然,洪波这么说,是否是逗乐,就要看今天是不是4月1号了,这是另外一个问题,在此不讨论.
集中的身份确认是目前用的最多的,所有的网站都用这个.缺点也明显:站被攻击,或者被封,就没的用了.连内容都没有了.
基于内容的确认是当内容无法被简单伪造的情况:比如说我去买周星星的D碟,只要看到里边是周星星在动,我就买.好处是分布的,没有中心点,不受攻击影响;缺点是对于容易伪造的内容,比如说文本,就不那么容易做到了.碰上认真的主,比如说高鄂(怎么取个名字叫搞恶?莫非也是当年的笔名?),仔仔细细伪造了半本红楼.你还真没办法.没有最变态,只有更变态.
数字签名来分布式的确认身份.每次发出一个消息,都是一个明文的头+一个用作者private key加密的内容.明文的头是作者的public key,用户可以自己去确认,这个是作者的真实签名.确认的地方是一个集中的站点,这个站点可以被攻击,因为用户用它一次以后,记得作者的public key,以后就不用了.利用email也能确认.读内容的时候,软件自动用作者的public key来解密内容.
假设一个攻击者制造了假新闻,企图冒充keso造谣.那么他的明文必须是用keso的public key,否则一眼就看穿了.但是密文不是用keso的private key来加密的,软件解密以后是乱码,就达不到造谣的目的了.
这里顺便说一下版权的事情.我对中国的版权没信心,所以这里也不写什么CC或者版权所有之类的话.请随意转载,能注明出处最好,这里先谢过.另外要说明的是,这里是blog,不是写论文.尽管我自己相信考虑的周全,但是没有把所有的重要细节都写上去.我这里写的,只有整个构想的七分之一左右.就象我一个同学说的,你看了google file system的文章,但是如果你照着做一个,肯定不行.如果转载,请一定把上面这句黑体的也加上,再谢过.
在此感谢keso收录思维实验一文.
最后希望blogbus和donews之间的TB已经好了,如果没好也没办法,裸的技术,能指望的不多.