zz秦佑国:回首扬中

Nov 15, 2007

Comments

[我极少转载文章. 今天看到这篇文章, 读到里面的文字, 又想起以前扬中校园里春天喧闹的鸟儿, 夏天蔽日的梧桐, 秋天树人堂到品子楼前夹道的菊花和冬天轻压在松针上的小雪. 离别母校都5年多了, 真想回去看看校园, 看看老师同学.]

    前不久接受某杂志的人物专访,被问到“你人生的关键点(之一)是否是考上了清华?”我的回答是:“考上清华 固然重要,但关键还是初中毕业被免试保送到扬州中学。”我是1958年初中毕业,当年,扬州中学给了我上学的江都县大桥中学一个保送生名额,我得到了这个 名额,免试进入扬州中学读高中。

  当时扬州中学被称为“省扬中”,表示是江苏省的中学,和扬州市是“平起平坐”的,所以学生不仅仅是扬州的。我们班上一半以上的同学是住校生,家不在扬州,但四分之三的人初中是扬中的,我是初来扬中,有一个适应和融入的过程。

刚入校,正逢58年“大炼钢铁”,停课劳动。先到城南运河码头抬砖,后到湾头去挑焦炭,八月十五月亮又圆又大,通宵未眠,却是在小高炉旁加班。

扬州中学,教学条件比大桥中学好多了。且不说那当时扬州最高的建筑五层楼的树人堂以及在楼内的物理化学实验室,还有体育馆等,为大桥中学所不能与之相比,就是晚上上自习,点日光灯,也比在大桥点汽油灯好。

不过,高一时的教室倒也是旧平房,比较差。到高二高三就好了,搬到品字楼,木地板,大窗子朝南,很明亮,窗外有树,室外是校园的绿地和 花园,显出名校好读书的环境氛围。尤其是图书馆前长长的紫藤(廊)架,春日,紫藤花开,紫色的花序,一簇簇垂挂下来,弥漫着沁人的香气,从花和叶的缝隙中 透过的阳光也染上了淡淡的紫色,成群的蜜蜂在花间飞舞。

图书馆前的花园,虽然不大,倒也繁茂,园中有一个花房,里面养了什么花,没有关注过。但每年仲秋,花房一定会把几盆即将开放的昙花摆 在办公楼(品字楼三座楼的中楼)的通道上,晚自习上到一半,就会听到有人喊“昙花开了!”,于是许多人赶去看,等到下了晚自习,回宿舍,经过那里,昙花已 经谢了,真是“昙花一现”!

我小学时就爱读书,但找到的只是乡间农家的《三国演义》、《七侠五义》等“旧书”。在大桥上初中,大桥中学刚刚开办,只有一个小小的图书室,但我还是在其中找到了读书的乐趣,不过所读的书已不是“旧书”了。

我从大桥中学来到扬中,扬中有一个很好的图书馆,使我眼界大开,“有这么多书!”。这时,兴趣转移了,开始阅读科普的、地理历史的、现 代文学的、外国(苏联)文学的书。图书馆朝西山墙上开了一个门,进去是报刊阅览室,门一天到晚开着,随时可以进,也无人值守,当时我最喜欢看的杂志是“知 识就是力量”。高二时,有一周的劳动,我被分到图书馆,有机会进到两层楼的书库里,看到了图书馆的藏书,印象深的是解放前扬中自己的出版物。在图书馆劳 动,和管理图书的老师熟悉了,后来,我一张借书证可以借好多本书,晚自习时就看。一次,教三角的<st1 :personname w:st=”on” productid=”王树槐”>王树槐</st1>老师巡视晚自习,看见了,敲敲我的课桌:“晚自习,不要看闲书!”

高中住校,星期天不回家,常到街上的书店去看书,站在那里看一上午,回去吃午饭,下午再去。但家境贫寒,从来没有买过书。2002年扬州中学百年校庆,回到扬州,甘泉路上桥头边的旧书店、国庆路上的新华书店和一家二层的旧书店,居然还在。   高中毕业,语<st1 :personname w:st=”on” productid=”文”>文</st1>老<st1 :personname w:st=”on” productid=”师吴和”>师吴和</st1>先生(同学背后叫他吴老头,苏南人,吴方言口音很重,他很喜欢我)动员我考文科,但我没有答应。我是想,文史我喜欢,成绩也不错,但不能作为我终身从事的工作,只能是业余爱好。最后是班主<st1 :personname w:st=”on” productid=”任张世观”>任张世观</st1>先生把我第一自愿从北大无线电系改为清华建筑系,定了我终身的专业领域。

说起老师,高中三年三个班主任:<st1 :personname w:st=”on” productid=”高一奚”>高一奚</st1>老师(教语文,年轻一点的女老师)、<st1 :personname w:st=”on” productid=”高二薛”>高二薛</st1>老师(教英文的老教师,还兼管总务)、<st1 :personname w:st=”on” productid=”高三张”>高三张</st1>老师(教数学,是校教导主任)三个人年龄不同,性格不同,风格也不同,但教学和班主任工作都十分敬业和认真。教物理的<st1 :personname w:st=”on” productid=”李”>李</st1>老师,刚从南京师范学院毕业不久,英俊潇洒,风流倜傥,几十年后见到他,音容笑貌还是那个样子。教三角的<st1 :personname w:st=”on” productid=”王树槐”>王树槐</st1>老师,浓重的泰兴口音往往使学生发笑,但教学和办事的认真却也让人不忘。教化学的<st1 :personname w:st=”on” productid=”蒋”>蒋</st1>先生,他的女儿蒋兴珠是我同班同学,<st1 :personname w:st=”on” productid=”蒋”>蒋</st1>先生的确是扬中老教师的代表,忠厚长者、为人师表。

1999年秋,扬中沈怡文校长来到清华,找到我,说扬中就要百年校庆了,想对校园做一下规划,还要盖几栋楼,想请我来规划设计,同时吴 良镛院士也是扬中(国立八中)的校友,也在清华大学建筑学院,还请他出出主意。我盛情难却,也就答应了,组织了我的研究生和两个教师参与进来。

随后就到扬中“看现场”。几十年过去了,扬中虽然盖了一些新房子,但校园基本格局没有太大变化,树人堂、品字楼、图书馆、绿地、花 园、操场等,也就是校园核心区没有变,这让我非常高兴,非常欣慰。但最大的遗憾是校园西边的河被填掉了,当年杨柳岸,碧波水,泛舟其上,可直达瘦西湖,原 来河西的稻田也变成了密集的住宅区,大煞风景。扬中缺了水,太遗憾!还有,校门进来南侧的女生宿舍和老体育馆被拆了,代之以是一个体量太大白瓷砖饰面的新 体育馆,和校园前区的环境不相协调,也破坏了早年校门进来“绿荫灰墙” “甬道引进”的感觉。

我们提出的校园规划理念和意见是,扬中校园规划和建设要体现百年扬中的历史和文化底蕴,要保留历史的记忆和已有的格局,同时要对校园 景观和绿化环境进行整理,改善校园基础设施条件,适当提高新建建筑的质量和标准,新建筑既要与校园风格和谐,又要有时代气息。我们的理念和意见得到了沈校 长的充分理解和大力支持。

我们着力保留树人堂,品字楼(原高二、高三教室和办公楼)、图书馆这几座老建筑,并把树人堂被改掉的门廊再恢复原样。对校园前区的绿 化与景观环境进行了整理:改建了校门和进门后的道路与绿化;在树人堂前加了水池,让扬中重新有水;原图书馆西端拆去一开间,退让出南北路的通道,依照早年 紫藤架向北延伸的布局,盖了一段围墙和小平房,与图书馆老建筑围合成一个面向花园的安静的内院,适合图书馆更改为校友接待处的新功能;校园中的冬青绿篱清 除(移栽他处),也把树人堂向北路边的布告栏拆除,使草地和园地与周边道路之间没有遮挡,“脚下干净”,视线开阔;把<st1 :personname w:st=”on” productid=”朱自清”>朱自清</st1>先 生的雕像从品字楼中间轴线位置迁移到原高三教室楼前,配合保留的那棵在路中间的大树,做一个小的纪念广场;而把扬中校园中从操场经树人堂前,穿过品字楼中 间办公楼通道,再经过原总务楼中间通道,直到三层楼学生宿舍的一条南北通道再现出来。可惜品字楼后面的三排房子都已是立面和风格不甚和谐的后盖的楼了。倒 是那座水塔还在,规划中着意保留,与新建的面西的综合楼对位。

扬中校园沿淮海路原是高高的围墙,规划中是否按市政府城市规划要求“拆墙透绿”换成铸铁栏杆有过讨论。当年,淮海路上,除了上学和放 学时扬中的学生外,行人和交通很少,扬中和地委招待所隔路相对,高墙里一边是高大的法桐,一边是高大的银杏,树冠从墙头高高探出,很有点宁静深远的意境。 但现在的淮海路已成了繁华的街道和交通干道,失去了往日的氛围,拆墙透绿,使得街道空间视觉上可以开阔一点,再者换成铸铁栏杆也可以顺势把墙外违章建起来 的小商店清除掉,可以改善校园周边的环境。

新建的三座建筑:综合楼、学生宿舍、食堂设计时,立面、色彩和体量都考虑了与校园环境氛围和旧有建筑和谐。综合楼体量较大,而场地面 积不大,离路边又很近,如果实体落地,会造成周边空间紧迫局促,于是考虑底层架空,南端又向花园敞开,使得底层空间和周边环境联通,解决了空间的紧迫感。 中间设玻璃中庭,既解决楼上图书馆阅览室的采光,也把光线引下到底层,玻璃倒锥,具有现代感,有科学和艺术结合的含义。遗憾的是中庭和倒锥的玻璃用了反射 玻璃而不是透明玻璃,站在下面,看不见上面室内景象,我发现时,已经安装完毕,改不了了。“建筑是遗憾的艺术”这是一句建筑界人人皆知的真言,百年校庆回 校,看到建成的校园和建筑,不尽人意的地方还是不少。综合楼前,实验楼的两个又园又方的台阶,大而无当,做规划时想把它们改了,结果没有做到,谁知道,在 新食堂的南侧,盖了一个新厕所,又是大台阶,一直伸到食堂的教师入口前,正是有点哭笑不得,幽你一默。

从扬中毕业已有46年,其间清华7年,解放军农场近2年,湖北三线工厂8年,回清华读研究生3年,研究生毕业留在清华直到现在,“扬州中学毕业”既是我可以“夸耀”的,也是我需要“自勉”的,扬中情结始终伴随著自己。

—-

秦佑国,1961届校友,清华大学建筑学院院长、教授、博士生导师,国务院学位委员会建筑学学科评议组成员,全国高等学校建筑学专业教育评估委员会主任,中国建筑学会建筑物理委员会副理事长,国家一级注册建筑师。 1958~1961年江苏省扬州中学高中毕业 1961~1967年清华大学建筑学专业本科 1978~1981年清华大学建筑技术科学专业研究生,获硕士学位 1996~1997年美国哈佛大学高访学者.


一道图论题

Nov 14, 2007

Comments

晚上和同学讨论了一个问题, 觉得很有意思, 贴出来.

假设一个带权有向图, 找 A 到 B 的最短路径显然是简单的, 如果权重没有负数的话, Dijstra’s Algorithm 瞬间就做完了. 现在问题略有变化了. 假设这个带权有向图已知, 但是边的权值不知道. 因为计算权值的代价太大, 所以如果有些边必然不在从 A 到 B 的最短路径上, 就没有必要计算这条边的权值. 那么, 问题是:

给定一个有向图和 A B 两点, 找出原来图的一个子图, 使得对于任意的边的权值赋值, 所有可能的最短路径都包含在这个子图中. (等价的说, 把所有不可能在最短路径上的边全部给移除掉)

大家想想办法, 我后天贴我们的算法 :)


语言模型与语言识别程序 -1

Nov 12, 2007

Comments

[先说一下, 上次的语言识别程序的思路来自 Python Cookbook, 我只是略作修改, 并没有什么太大的贡献, 这个系列可能包含三到四篇文章. 底下我可能会用朴素贝页斯分类器再写一个然后比较两者效果]

以前我在翻译怎样写一个拼写检查器中, 就提到了(概率)语言模型这个东西. 什么是语言模型呢, 简单的说, 就是这个语言当中, 每个词出现的概率分布是有一定规律的, 与其他因素无关的. 如果我们要写一个汉语到英文的翻译器, 那么, 理论上说, 我们翻译器输出来的结果当中每个单词出现的概率, 应该和英文当中每个词出现的概率一样. 试想一下, the 这个单词在英文中常常出现, 而如果我们的翻译器对于任意汉语的翻译结果中, 故意调低或者错误设置 the 出现的概率, 造成翻译出来的结果几乎不出现 the, 或者出现的概率出奇的奇怪, 那么, 这段翻译出来的话, 它怎么看也不会像英语. 同样的道理, 一个拼写检查器可以把任意拼错的单词纠正过来, 在纠正过程中必须照顾到语言模型. 如果 teh 可以被改正为 the 和 tek, 那么我们应该优先考虑 the 才对, 因为 the 被使用的概率比 tek 大. (统计语言模型整体是很大的一块, 大家可以去读 Google 黑板报数学之美系列得到一个大致的感觉. 我这里只用到语言模型, 用不到条件概率)

基于这个假设, 我们自然的得到一个主意: 好呀, 假如两个文本的语言模型类似, 我们就认为他们是同种语言写成的. 对的, 怎么衡量这个类似呢, 我们可以用数学的方法: 统计任何两个语言模型之间的”距离”, 然后选取最小的. 这个地方距离随便怎么定义, 可以用向量夹角, 可以用欧式距离. 但是, 现实的问题不是这么简单. 首先, 如果每个词都对应一个词频的话, 得到的向量是高维的. 除非有一个包含各种语言单词的全集, 否则很难说这个向量一共要有多少个维度. 而且高维的随机向量还往往以很大的概率正交. 为了控制维度灾难, 一个简单的方法是使用每一个字节作为一个词统计. 这个模型虽然看上去很没道理, 而且还很”面向机器”, 但是考虑到计算机处理语言的时候本来也就是根据字节来处理, 这样做一下也未尝不可.

我并没有亲自实践比较字节频率然后计算向量距离的方法, 不过我可以想像, 这样的方法在UTF-8字符集上是有很好表现的. 有人可能会担心, 加入某个汉字编码成了两个字节, 这两个字节正好分别等于西文字母的编码的话, 汉字就可以在计算机中等价的写成一串字母了, 这样, 就很难保证一段汉字是不是和一段希腊文正好有同样的字节分布了, 因为我们可以作弊一下, 搞出一段汉字, 正好和希腊文对应分布一样. 但是, 巧妙之处在于UTF-8 字符集本身通过若干前缀区分了不同的变长编码, 不同的编码区段没有任何交集. 反过来说就是, 从UTF-8 编码的字节序列中任意取一个字节出来, 一定能够区分这个字节是某个变长编码的一部分. 任何一个多字节符号编出来的编码的一部分, 绝对不可能正好是其他单字节符号的编码. 这样, 单字节多字节变成字节编码后各自为政, 映射到的字节码的概率分布不会出现“作弊”现象. 用严格的数学语言来说就是, 一个字符对应的字节在叠加到向量中的时候, 绝对不会叠加到属于另一个字符的所有字节上, 也就是说, 他们总有独立分布的部分存在. 这个是字节模型能正确反映语言模型的一个必要要求.

[To be continued…]


My plan about the “Read The F Manual” Project

Nov 9, 2007

Comments

A little bit history

Being in the academical area for years, one of my dreaming tool is an online collaborative paper reader . You can say it’s YouTube with documents, or Digg with pdf files–name actually doesn’t matter. The ultimate goal for this system is to support collaborative document reading/organization for professors and Ph.D. students. Since we now have Ajax (more interactive than before) and Flash(as powerful as PDF), I would expect an light-wighted solution. arXiv and Citeseer do really good jobs in storing and linking all the documents, but the ultimate goal for me is to read.

On winter 2006, I expanded my ambition to a larger project: read the f source code and read the f books (Here of course the f word means fine :). I launched my domain name rtfsc.org [now redirected to Apache.org]. Our team members thought that rtfsc was easier than rtfm because we only need to deal with text information instead of PDF file. However, we set ourselves on the wrong track. It turned out that if we let the users upload and update their codes all the time, we have to implement a Subversion or even a Sourceforge. For us, an online code-reading community without code management and code search is terrible, but we don’t have that much time to finish all these ambitions. The other obstacle comes from my lacking experiences of Ajax development. Anyway, at last, we gave up. We stopped the development after Christmas. On that week, I was the person of the year 2006.

New motivation

I have been thinking about this project for nearly one year without any action. Lots of similar projects were there during this year, for example, flashpaper, edocr and scribd. But none of these are my dreaming tool. I took a retrospect about our project again and found that nobody actually wanted to do that except us because they didn’t actually understand our requirements. Their goals are usually becoming the next DocTube thing, while my goal is to have a handy system open for academical research. Also, I found some open source tools that were really inspiring. These make me interested in the project again.

Technical aspects:

  1. PDF to SWF is not so that hard, there is an open source tool: PDF2SWF.

  2. I thought that I can’t control the converted SWF as there is no API exposed as Flashpaper, but I was wrong. Actionscript can control it directly. What I need to do is to learn Actionscript, which is not so that hard.

  3. I was thought that Flashpaper use some undocumented APIs which we could never know, but I got SWFmill today and now I can study the code of Flashpaper. [Disclaimer: I didn’t say anything about how to decompile flashpaper or violate the EULA of flashpaper]

  4. I thought Ajax + Flash development was hard and had a very steep learning curve, but again I was wrong. On hacking Google Finance these days, I found the Flash Ajax Integration Package, which is very handy to use for some newbie like me without any Ajax/Flash developing experiences.

Proof of concept

Here is a proof of concept product. I convert my PDF version CV to swf and then combined it to a controller I wrote based on the default controller provided in PDF2SWF. (This CV has two pages, you can proceed to next page by click the red arrow)

cv.swf

Final Word

What I need is an sophisticated viewer which can be as powerful as flashpaper can communicate with other Ajax components on that webpage. So for developers, if you find this idea interesting and you are good at Ajax/Flash, feel free to take this idea and do it, as I might not have time to do it or it will take me a long time to finish it. I desperately need an Ajax style flash-based document reader with inline comment support. If you can do thing and get your own startup based on the idea, my only request is letting me be your user.

BTW, if there was some lessons in this project, I would say, choose the handy tools before you get start.


识别文本用哪种语言写成

Nov 8, 2007

Comments

ASPN Python Cookbook 提到了一个使用 zlib 库识别文本用哪种语言写成的程序. 其核心代码不超过20行, 据我观察, 识别精度不低于95%. 我略做了一下修改, 把联合国联合国人权宣言作为语料库,目前从 wikipedia 上随便抓一篇爪哇文的文章下来, 都能识别得九不离十。

class Entropy:
    def __init__(self):      
		self.entro = []

    def register(self, name, corpus):
        """
        register a text as corpus for a language or author.
        <name> may also be a function or whatever you need
        to handle the result.
        """
        corpus = str(corpus)
        ziplen = len(zlib.compress(corpus))
        print name, ziplen
	self.entro.append((name, corpus, ziplen))

    def guess(self, part):
        """
        <part> is a text that will be compared with the registered
        corpora and the function will return what you defined as
        <name> in the registration process.
        """
        what = None
        diff = 
        part = str(part)

        for name, corpus, ziplen in self.entro:
		nz = len(zlib.compress(corpus+part)) - ziplen
		if diff== or nz<diff:
                	what = name
        		diff = nz
        return what

先贴代码, 有时间细讲一下语言模型和信息论的妙用. 简单而小巧的模型解决看上去不可解决的问题, 这就是人工智能的精华.

[所有文件打包下载(包含语料源文件10Mb). 代码本身其实只有50行]