2009年11月22日

Think Week

刚刚结束的一周分外忙碌,一是11月18日上午顺利完成了博士答辩,二是周六一天爱人顺利完成了心理咨询师的考试。两件事情把我们俩都累坏了。今天算是好好的修整了一下。

下一步需要做的事情还得好好思索一下。我也来个Think Week吧,先好好梳理一下。

这里也感谢各位多年来的支持和帮助。谢谢!

2009年11月15日

最佳学习网站

课堂之外,仍有许多网站有益学习和提高。 图片提供:PA

 

1. 视频和播客杂志(blog.makezine.com/podcast ):有很多适合周末自己动手的项目,有的很生猛,有的很诙谐。

 

2. 奥威尔日记(orwelldiaries.wordpress.com)  :以博客形式连载乔治·奥威尔(译注:英国左翼作家,新闻记者和社会评论家。主要作品有《动物农场》、《一九八四》)日记,涉及其个人生活和政治观点。日记 距今约有70年了。

 

3. iTunes (apple.com/itunes):网站上所有的东西都是免费的,最令人惊喜的是它居然提供世界上最享有盛誉的学术机构的讲座录音(耶鲁大学, 纽约现代艺术博物馆, 牛津大学, 泰特美术馆)。

 

4. 诡秘地图(atlasobscura.com) :恐怖的非寻常之地,它也无意成为传统的旅游指南书。

 

5.科学知识问答 (howstuffworks.com): 网站创始人马歇尔‧布雷恩(Marshall Brain),旨在用通俗易懂的文章和视频解释每一个科学知识,从基因编码到汽车变速器问题。

 

6. 不管是想了解阿尔巴尼亚语,还是踏踏实实地地想学一门语言,你都不能错过BBC语言课堂(bbc.co.uk/languages)

 

7. 国家地理(nationalgeographic.com) :大量神奇的摄影图片,以及很多关于宇宙,环境,动物甚至音乐的哲理文章。

 

8. 史密森尼百科全书 (si.edu/Encyclopedia_SI):不是一本大型综合类百科全书。它主要是为艺术和动物两大门类提供详细资料。



9. 名校视频课程(academicearth.org) :来自常青藤大学联盟和西海岸名校的免费视频课程,无需支付 $75,000 (£45,000) 的学费。

 

10. 生活百科全书 (eol.org) :正在进行中的伟大工程。他们希望为每个已知物种建立一份科学档案。目前他们已经为16万多个物种成功创建了网上档案。

 

11. 论坛视频讲座 (fora.tv) :收集了大量公共活动和学术研讨会的视频讲座,从艾丽西娅·西尔维斯通(译注:好莱坞女明星)在书店讨论素食主义到诺姆·乔姆斯基(译注:麻省理工学院语言学的荣誉退休教授。其《生成语法》被认为是20世纪理论语言学研究上最伟大的贡献。)在加州联邦俱乐部发表关于语言的演讲。

 

12. 明天我看什么书呢? (whatshouldireadnext.com) :分析你最近读过的一本书,推荐你感兴趣的书,值得一试呀,权当娱乐。

 

13. 现在就兴奋吧 (gethighnow.com) :这可不是什么贩卖不良药品的网上商店。它可是一家出色的科学网站,负责解答视觉和听觉幻觉方面的问题。

 

14. 心理牙线 (mentalfloss.com):网站上充满了各种清单和琐事,深受一般知识爱好者和高新技术迷的热捧。

 

15. 奇怪的地图(strangemaps.wordpress.com) :收集各种稀奇古怪的地图,比如美国距离麦当劳餐厅最远的地方。

 

16. Issuu (issuu.com) :网上杂志出版社。你可以很方便地创建一本诸如Urb的非主流音乐杂志,Teen Piano那样的小众出版物(封面主题:老师居然也这样认为。)

2009年11月13日

折腾:批处理文件不能运行了,修改代码页编码是最终解决方案

晚上想再改改博士论文,修改几处后想看看Latex的生成效果。由于WinEdt默认的编译对于我目前的模板存在问题,只能运行批处理文件中预订好的处理流程。

一下子,问题出现了,我的BAT文件不能运行!

起初以为是个小问题,想吃完饭回来就会轻松搞定。最后采用了各种方法折腾,例如,杀毒、升级Windows、修正BAT的关联等等。但是还是一点改观都没有。这种情况的结果是任何BAT都不能运行,运行效果就是没有任何反应。但是如果将BAT中的命令在dos中单独运行却能够正确处理。

真是百思不得其解。网上看来是不能找到这个问题的解决方案了。

后来,忽然想起自己前一段时间尝试解决在Dos下显示utf-8编码的文字。好像修改过一些地方。回想当初的处理如下:

----------------------------------------------------

DOS设置UTF8

1、打开CMD.exe命令行窗口

2、通过 chcp命令改变代码页,UTF-8的代码页为65001

chcp 65001

执行该操作后,代码页就被变成UTF-8了。但是,在窗口中仍旧不能正确显示UTF-8字符。

3、修改窗口属性,改变字体

在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。
----------------------------------------------------

当时配置完后我的Dos仍然不能显示UTF8编码。后来也就没有再处理这个问题。

刚才受到这个帖子(http://zhidao.baidu.com/question/29176612.html?fr=qrl&cid=89&index=3)的启发,想起来应该是我的Dos命令行窗口的编码问题。运行chcp后发现,果然我的代码页编码还是65001。运行chcp 936还原后就能在当前的命令行窗口中正确运行BAT文件了。但是关闭窗口,再打开一个命令行窗口,这个问题仍然存在,似乎Dos窗口中敲入chcp 936只对当前窗口有效。再一想,只能试试修改注册表了。结果参考下面这段文字就可以彻底解决这个问题了。

----------------------------------------------------

[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:000003a8

小说明一下:
十六进制"000003a8"或十进制"936",表示“936 (ANSI/OEM - 简体中文 GBK)”。
十六进制"000001b5"或十进制"437",表示“437 (OEM - 美国)”。

----------------------------------------------------

 

自此,我今晚折腾了三个小时终于算是彻底解决了问题。明日再继续修改我的博士论文。

从今天的问题解决过程中,得到两条启示,如果将来再遇到类似问题,解决策略如下:

1. 出现问题一定要想想可能的原因,然后逐一排查,还是不行的话就要个性化的思考一下是不是近期过什么特殊处理;

2. 如果进行某些特殊处理后未能得到理想结果,应该尽快恢复到原来的情景。

2009年11月7日

钱老和Moses

    看到这两个词语连在一起能想到一点点联系的朋友,肯定是NLP或者更具体说是MT界的朋友。是啊,我也很惊讶于自己能将伟大的钱老和Moses联系起来。只是近来钱老的话和Moses都是我思考很多的对象。

    那天看到实验室老师转发给大家"钱学森的最后一次系统谈话"的邮件后,我感触很深。对于钱老,我一直是由衷钦佩的。在这个系统谈话中,我对于以下两段的印象极其深刻:

  • 钱老还讲了一个故事,"我记得在一次学术讨论会上,我的老师冯・卡门讲了一个非常好的学术思想,美国人叫good idea,这在科学工作中是很重要的。有没有创新,首先就取决于你有没有一个good idea。所以马上就有人说:'卡门教授,你把这么好的思想都讲出来了,就不怕别人超过你?'卡门说:'我不怕,等他赶上我这个想法,我又跑到前面老远去了。'所以我到加州理工学院,一下子脑子就开了窍,以前从来没想到的事,这里全讲到了,讲的内容都是科学发展最前沿的东西,让我大开眼界。"
  • 钱老说,"你是不是真正的创新,就看是不是敢于研究别人没有研究过的科学前沿问题,而不是别人已经说过的东西我们知道,没有说过的东西,我们就不知道。所谓优秀学生就是要有创新。没有创新,死记硬背,考试成绩再好也不是优秀学生。"

    是什么在不断推动人类科学的进步?一味的重复?不是,那就应该是创新。我感觉,钱老说的这两段话道出了创新的基本机制。那就是需要快速有效的站在巨人的肩膀上继续深入探索别人没有做过的事情。

    在我读博期间,有一次听到一位国外的华人教授介绍如何做科研或者如何才能发出高质量论文。答案是,new and better。似乎和上面的创新机制雷同。但是我们忽视了两点。第一,new之前需要快速有效的达到国际最高水平。因为科研中只有世界杯,没有区域赛。只有站得更高才能看得更远,才能知道哪些是New的。特别强调这里的快速和有效。至于方式可以多种多样,例如钱老在加州理工学院的求学,或者是参加国际顶级会议以及国际合作,或者剖析最先进的成果。第二,深入探索new的事情并达到better。这种探索应该是艰苦的。如果一件事情被人很容易的做出来了,然后宣称是new and better,那一定是不可信的。只有不断的勤奋踏实的工作才可能达到真正的new and better。当然,勤奋应该分两种,一种是每天都起早贪黑,认认真真没日没夜的不动脑子忙碌;一种是在勤快做事的同时不断动脑经分析和总结并改进。我想,后者的体勤加脑勤应该是成功的必备因素。

    创新真的很难,但也绝非遥不可及。不断的体勤加脑勤的采用正确的方式就一定能成功。

    说了这么多,您一定会认为我很罗嗦。怎么说了半天,还没有提到和Moses有什么关系啊。

    事情是这样的。近段时间,我开始学习Moses--著名的基于统计的机器翻译开源系统。一直知道这个大名鼎鼎的系统很牛,而且已经成为事实上的机器翻译领域的基准系统。还听说,上个月在南京大学举行的国内机器翻译研讨会上有位老专家说,他看这届机器翻译评测里面最成功的系统应该就是Moses,因为很多家的系统都是基于Moses改进的。这些背景信息致使我认为Moses已经是一个非常稳定的系统了,至少应该算是基本停止不前了吧。不然也没法作为大家的基准啊。

    前几天了解到Moses目前实现了两种解码算法(Stack Beam Decoding,Cube Pruning),准备实现三种解码算法(Chart Parse Decoding,Depth First Decoding,Forced Decoding)。Moses在翻译模型上目前实现了两种(In Memory,On Disk),准备实现两种(Suffix-array over corpus,MaxEnt)。这些内容都是写在Moses的Roadmap里面的。原本以为也就是写在那里,应该不会让人发现在经常更新吧。前天,我加入了Moses的两个相关邮件列表:支持列表和SVN提交列表。这两天发现两个列表的邮件频率比较高,而且更然人惊讶的是Moses的代码还在不断的更新和改进。今天早上发现最新的更新居然是在实现Chart Parse Decoding解码算法。这种算法可是机器翻译领域当前最新的发展动向啊。

    另外一个让我惊讶的事情,是Moses的网站及相关文档的更新机制。经过一段时间的观察,我发现Moses的网站上下载的Manual是在更新的,而且Manual是采用Tex撰写的。我猜想网站的内容和文档都是Latex同步生成的。这样能保证内容一致,而且采用一些工具也不难实现。在前天下载的最新版Manual中,我发现了一处文字错误。而且这个文字错误同样出现在Moses的官方网站上。一时激动,我昨天给掌管Moses的老大Philipp Koehn教授发信说明了这个问题。没想到今天早上打开邮箱,居然看到了他的回信。内容是说,他很感谢我,同时他已经修改了网站上的错误,Manual的内容是每天晚上自动根据网站内容生成的。我再下载最新的Manual,发现果然更新日期已经变为Nov 6了,但是我指出的错误还在那里,我想应该是那个自动程序还没有作用到最新的修订上吧。再一看网站内容,错误果然已经修订过来了。我想既然Manual会自动每晚生成,那么明天的Manual肯定就不会有这个问题了,也就不想再发信指出了。我惊讶于Philipp Koehn的执行力,以及Moses文档的这种更新机制。而且他还在Moses的支持邮件列表里不停的回复着大家提出的各种问题。

    通过这些,我知道了Moses是在每天进步的,而且相关的维护人员也是热情高涨的在从事着相关的工作。仔细观察这两个邮件列表,我发现全世界很多国家的人在一起参与Moses的日常更新,不管是Bug的提交和发现,还是代码的SVN Checkin。

    Moses的这种共享,使得我这个从来没有碰过机器翻译的外行居然在短短的时间里实现了Moses的训练、测试、单步跟踪等工程实践上的事情,同时Moses开发时的良好架构和丰富标准注释使得我能采用Doxygen来获得完美的代码文档。我很钦佩Moses的创建者和维护者们。

    一时又想到了上面提到的钱老当年的老师卡门的那个对话:卡门教授,你把这么好的思想都讲出来了,就不怕别人超过你?'卡门说:'我不怕,等他赶上我这个想法,我又跑到前面老远去了。'

    我想创新就是Moses这样吧。特别推荐搞NLP但是不做MT的朋友都看看Mose的方方面面。肯定会有巨大收获的。

2009年11月5日

和Moses官网的Doxygen使用巧合

近段时间,开始学习Moses。首先按部就班的实现了Linux下的训练以及Windows下VS2008中的调试跟踪。感觉VS2008下看代码还是不够清晰,或者直接看代码就是不能清楚的理解大型系统。为此,在以往经验的基础上,我采用Doxygen来对Moses的源码生成代码文档。等我全部弄完后,一不小心居然在Moses官网上看到了几乎一模一样的文档,顿时晕倒。这也能巧合!!!仔细对比,发现官网的文档中的类图以及函数调用图都比我生成略微丰富一些。思考后明白官网上的文档是对所有Moses条目进行处理的,我的选项是只对有文档的条目进行处理。看来分析源码,还得对全部条目处理才行。将我的生成配置略微修改,得到了一模一样的文档,只是我的文档还能链接到源代码上看起来会更方便。感觉我的选项更加合理些 :)

这里推荐给需要学习大型系统源码的朋友使用Doxygen,尤其是对每个类自动生成类图以及对每个函数的调用图和被调用图的生成更是不错。当然,实现这些功能需要两个工具的配合:graphviz和mscgen。需要注意的是,Doxygen的默认配置不能生成调用图和被调用图,需要配置相关程序路径。

感兴趣的朋友可以访问我生成的Moses(2009-10-31版本)的程序文档。http://ir.hit.edu.cn/~bill_lang/mt/moses_analysis/index.html

另外还想对Moses系统的强大以及未来的发展目标还有这种开源精神表示一下敬意!