2008年11月21日星期五

来农大的学生


Shanxi
Agricultural University, Taigu, China












Jacob
Teter

graduated from Oberlin in the Fall of 2002 with majors in Biology and
German Literature. He was teaching English in Taigu at Shanxi
Agricultural University under an individual arrangement between
himself and the Foreign Affairs Office last year. Jacob was a
Fulbright assistant teacher from September 2003 to June 2004 in
Wiesbaden Germany. He was a volunteer English teacher through the
Oberlin ESL program that provides English language lessons for groups
of Latinos in Lorain County. While at Oberlin he was a member of the
Bike Co-op, the Outing Club, and played first violin in the College
Community Orchestra. He is extremely interested in the study of
Mandarin and in agricultural research and farming in Taigu. At the
end of his three years in Taigu Jacob hopes to enroll in a graduate
program in Agroecology or International Agricultural Economics. Click
to read
Jacob's
narrative.










Morgan
Ramsey-Elliot

graduated with majors in Politics and East Asian Studies (Chinese)
last May. He was a Shansi in-Asia study grant recipient and spent
January 2005 in Kunming investigating relationships among
social/sustainability non-governmental organizations and government
agencies. He also completed an intensive summer language program at
the Harvard Beijing Academy. His senior honors thesis analyzed the
politics of migrant workers, laid-off state employees and pensioners
in urban China. He was a member of the Oberlin Student Cooperative
Association and has worked on the Oberlin Alumni Fund. He hopes to
have a career in international relations and feels that his
fellowship to Taigu will provide an invaluable foundation upon which
to build.



Megan
Lowery

(2004-2006), Click to read
Megan's
narrative.






来农大的学生


Shanxi
Agricultural University, Taigu, China












Jacob
Teter

graduated from Oberlin in the Fall of 2002 with majors in Biology and
German Literature. He was teaching English in Taigu at Shanxi
Agricultural University under an individual arrangement between
himself and the Foreign Affairs Office last year. Jacob was a
Fulbright assistant teacher from September 2003 to June 2004 in
Wiesbaden Germany. He was a volunteer English teacher through the
Oberlin ESL program that provides English language lessons for groups
of Latinos in Lorain County. While at Oberlin he was a member of the
Bike Co-op, the Outing Club, and played first violin in the College
Community Orchestra. He is extremely interested in the study of
Mandarin and in agricultural research and farming in Taigu. At the
end of his three years in Taigu Jacob hopes to enroll in a graduate
program in Agroecology or International Agricultural Economics. Click
to read
Jacob's
narrative.










Morgan
Ramsey-Elliot

graduated with majors in Politics and East Asian Studies (Chinese)
last May. He was a Shansi in-Asia study grant recipient and spent
January 2005 in Kunming investigating relationships among
social/sustainability non-governmental organizations and government
agencies. He also completed an intensive summer language program at
the Harvard Beijing Academy. His senior honors thesis analyzed the
politics of migrant workers, laid-off state employees and pensioners
in urban China. He was a member of the Oberlin Student Cooperative
Association and has worked on the Oberlin Alumni Fund. He hopes to
have a career in international relations and feels that his
fellowship to Taigu will provide an invaluable foundation upon which
to build.



Megan
Lowery

(2004-2006), Click to read
Megan's
narrative.






铭贤基金始末谈



铭贤基金始末谈



武士彬



山西铭贤学校曾是一所拥有小学、中学、大学和工农实验基地的文教事业团体。提起铭贤,人们都说那是由美国人出钱,孔祥熙出名所办的学校。其实不少人为铭贤的办学经费做过很大的贡献,这要从铭贤基金谈起。


最初,于1907年在太谷南关成立的铭贤是一所小学;随后,以东关杨家庄的孟家花园为校址,先扩充为4年制中学,后发展为设有工、农、商选科的完全中学。三十年代时期,高中同学每周须在工厂实习翻砂、农具制造、改良织布,或到农场实验作物改良、畜牧、园艺等劳动课两个下午:选商科的要学会计、商业知识和珠算各门。时至抗战前1年,停办了商科,改设了一个乡村服务部。学平教会的做法,搞过乡村建设运动。此外,还一度办过大学预科,曾与太原艺术专门学校合并,打算办成能象美国欧柏林大学那样的大学校。在此期间,所有铭贤这些事业的经费,全靠来自美国欧柏林大学同学会的捐款和他们所募基金75万美圆的利息,常年可以提供美金4万元,约合法币12万元以上。当时,如此一笔经费在山西使用,可以说是相当充裕的。


及至抗战发生,学校南迁,于1940年在四川金堂正式增设了3年制的农工专科,后来又改为4年制的学院。但是由于在办学知道思想上发生的矛盾,美方提供的经费,仍仅限以前给中学的那点美金;再加战争年代,后方物价上涨,维持一个包括小学、中学、学院的摊子,庞大的开支,经费大感拮据。影响所及,不仅有的员工不能安心工作,连学校高级负责人校长贾炎生和教务长吴克明也先后离校,到重庆中央银行和财政部盐务局任职会去了。董事长孔祥熙改命校友杨蔚博士接任校长职务,杨校长提出经费来源需要有保证的条件。孔因创办铭贤博得美名,人称“中国财神”,但一向并未为铭贤直接花过钱,美国人早已对此心怀不满,他们不赞成把铭贤办成“实业型”的大学,在经费上与孔采取了不合作的态度。现在既要保证经费来源,就势必另劈蹊径,乃有倡导铭贤基金募捐之议。孔祥熙授意曾任铭贤司库,时任校董和山西裕华银行总经理的校友武渭清,通过当时社会名流杜月笙、王正延、钱新之、刘鸿生、肖振瀛、潘昌猷、傅汝霖等人发起为铭贤学校展开大规模募捐基金的活动。结果不仅孔属财政部系统和中央银行系统的捐助成绩可观,其它各界的募集款项也不少。抗战后期,四川物价飞涨,公教人员生活清苦,以铭贤一所新办的学院,居然罗致到像前宝钧教授(解放后的华东纺织学院院长)、吴友三教授(解放后的沈阳农学院院长)、朱宝教授(解放后的无锡轻工业学院院长)和史少华教授(现天津大学校长)等知名学者、专家到校任教,这是与当时铭贤的教学设备良好,研究实验条件优越,和生活环境安定分不开的。归根到底,也是由于办学经费来源多有了一层保证的关系。


那次,在重庆的铭贤募捐活动,究竟得到多少捐款的数字未得其详,但山西裕华银行有“铭贤基金”和“铭贤学院”专户的设立。校友侯同生专责司帐,经营保管上有一套办法。今虽事过境迁,但非湮没无存,蛛丝马迹还是有余绪可寻的。当时,为了保存基金币值,据说曾以1000万元投资与川江盐船业合作,办了一家叫做裕国保险公司的企业,经营盐运保险业务。孔祥熙派他的老部下,做过盐务总办的张绣文任总经理,以校友李耀功任协理(后离职),由代表铭贤基金的武渭清任常务董事,并以吴克明、贾炎生分任董事长和监察人。胜利后,因该公司经营不善,铭贤基金的股份宣告退出。同时,又另以500万元与中国实业银行、山西裕华银行盒子1000万元,办了一家经营川盐运销业务的大有盐号。孔祥熙派段祺瑞的女婿,当时任中国实业银行总经理的奚伦为董事长。以他的老部下,做过盐务会办的马泰钧任总经理。以代表铭贤基金的武渭清任常务董事,并以校方杨蔚、武星三、刘复之分任董事和监察人。我那时候,这在重庆交通银行总管理处工作,分工主办盐业、投资、调研,写过“四川的盐业”报告;之前,有过在上海银行系统大业盐号的工作经历,孔认为我对盐业内行,给我一个经理名义,要我到大有盐号来工作。


盐在国民党时期属国家专卖物资。为了保证税收,规定运商须按承运额向国民党预先垫缴税金,到岸照本计息,核给相当利润,是稳赚没赔的生意。“大有”单凭1000万元资本是领不到多少盐的。所以铭贤基金又以股东垫款方式,按定期计息垫入数千万元。抗战胜利后,“大有”总号迁到上海,除以重庆为分号继续营运川盐外,又在武汉、长沙、天津、连云港等处设立飞机场,加办长芦和淮盐。记得一次预缴盐税高达72亿余元,不仅铭贤基金抵垫不起,连山西裕华银行也无能无力。结果是和中国银行合作,直到解放之后清理为止。大有盐号与铭贤学校之间,除有铭贤基金投资的东伙关系外,还有1948年在成都设立“韵初奖学金”的经过(韵初是马泰钧的别字,他在大有以字行名)。解放以后,大有盐号以官僚资本关系清理结束。占大有股份半数的铭贤基金也都归还了人民。


在铭贤募集基金过程中,孔祥熙曾在美国人面前夸口说要捐资美金150万元,意思是指中国的铭贤基金要比美国的多一倍。结果他分文未掏,只将一笔数目可观的美金公债顶数。听说以后他又要回去了。山西裕华银行还有一个叫做“远东学院”的帐户,是孔祥熙为美国欧柏林大学捐款设立的专户。传闻欧柏林方面在孔死后,曾多次向孔令侃提出落实捐款的事,小孔环顾左右,只说可为该校捐建一座亭子。美国人认为这等于是说了一句笑话。时令事隔40余年,回首铭贤基金的这番经历来,不也是场喧嚣一时的笑话吗?!






2008年10月25日星期六

iGoogle

iGoogle: "Current:Cloudy
Wind: NW at 3 km/h
Humidity: 46%"

2008年5月27日星期二

Lucene的算法原理

python对于的是pyLucene


Lucene的算法原理:

  Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下:

 0)设有两篇文章1和2
   文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too.
   文章2的内容为:He once lived in Shanghai.

 1)全文分析:由于lucene是基于关键词索引和查询的,首先我们要取得这两篇文 章的关键词,通常我们需要如下处理措施
  a.我们现在有的是文章内容,即一个字符串,我们先要找出字符串中的所有单词,即分词。英文单词由于用空格分隔,比较好处理。中文单词间是连在一起的 需要特殊的分词处理。
  b.文章中的"in", "once" "too"等词没有什么实际意义,中文中的"的""是"等字通常也无具体含义,这些不代表概念的词可以过滤掉
  c.用户通常希望查"He"时能把含"he","HE"的文章也找出来,所以所有单词需要统一大小写。
  d.用户通常希望查"live"时能把含"lives","lived"的文章也找出来,所以需要把"lives","lived"还原成 "live"
  e.文章中的标点符号通常不表示某种概念,也可以过滤掉
 在lucene中以上措施由Analyzer类完成

 经过上面处理后
  文章1的所有关键词为:[tom] [live] [guangzhou] [i] [live] [guangzhou]
  文章2的所有关键词为:[he] [live] [shanghai]

 2) 倒排索引:有了关键词后,我们就可以建立倒排索引了。上面的对应关系是: "文章号"对"文章中所有关键词"。倒排索引把这个关系倒过来,变成:"关键词"对"拥有该关键词的所有文 章号"。文章1,2经过倒排后变成
关键词 文章号
  guangzhou 1
  he 2
  i 1
  live 1,2
  shanghai 2
  tom 1

   通常仅知道关键词在哪些文章中出现还不够,我们还需要知道关键词在文章中出现次数和出现的位置,通常有两种位置:a)字符位置,即记录该词是文章中第几 个字符(优点是关键词亮显时定位快);b)关键词位置,即记录该词是文章中第几个关键词(优点是节约索引空间、词组(phase)查询快),lucene 中记录的就是这种位置。

加上"出现频率"和"出现位置"信息后,我们的索引结构变为: 

 

 关键词  文章号  [出现频率]  出现位置
 guangzhou  1  [2]  3,6
 he  2  [1]  1
 i  1  [1]  4
 live  1  [2]  2,5
   2  [1]  2
 shanghai  2  [1]  3
 tom  1  [1]  1

   以live 这行为例我们说明一下该结构:live在文章1中出现了2次,文章2中出现了一次,它的出现位置为"2,5,2"这表示什么呢?我们需要结合文章号和出现 频率来分析,文章1中出现了2次,那么"2,5"就表示live在文章1中出现的两个位置,文章2中出现了一次,剩下的"2"就表示live是文章2中第 2个关键字。
  以上就是lucene索引结构中最核心的部分。我们注意到关键字是按字符顺序排列的(lucene没有 使用B树结构),因此lucene可以用二元搜索算法快速定位关键词。
  实现时 lucene将上面三列分别作为词典文件(Term Dictionary)、频率文件(frequencies)、位置文件 (positions)保存。其中词典文件不仅保存有每个关键词,还保留了指向频率文件和位置文件的指针,通 过指针可以找到该关键字的频率信息和位置信息。

  Lucene中使用了field的概念,用于表达信息所在位置(如标题中,文章中,url中),在建索引中,该field信息也记录在词典文件中,每个关键词都有一个field信息(因为每个关键字一定属于一个或 多个field)。
  为了减小索引文件的大小,Lucene对索引还使用了压缩技术。 首先,对词典文件中的关键词进行了压缩,关键词压缩为<前缀长度,后缀>,例如:当前词为"阿拉伯语",上一个词为"阿拉伯",那么"阿拉伯 语"压缩为<3,语>。其次大量用到的是对数字的压缩,数字只保存与上一个值的差值(这样可以减小数字的长度,进而减少保存该数字需要的字节 数)。例如当前文章号是16389(不压缩要用3个字节保存),上一文章号是16382,压缩后保存7(只用一个字节)。 注意是"上一个词"。由于词典是按顺序排列的,这种压缩方法的效果会非常显著。

  下面我们可以通过对该索引的查询来解释一下为什么要建立索引。
假设要查询单词 "live",lucene先对词典二元查找、找到该词,通过指向频率文件的指针读出所有文章号,然后返回结果。词典通常非常小,因而,整个过程的时间是 毫秒级的。
而用普通的顺序匹配算法,不建索引,而是对所有文章的内容进行字符串匹配,这个过程将会相当缓慢,当文章数目很大时,时间往往是无法忍受的。

全文检索框架的实现机制:

   Lucene的API接口设计的比较通用,输入输出结构都很像数据库的表==>记录==>字段,所以很多传统的应用的文件、数据库等都可以 比较方便的映射到Lucene的存储结构/接口中。总体上看:可以先把Lucene当成一个支持全文索引的数据库系统。

比较一下Lucene和数据库:

 Lucene  数据库

 索引数据源:doc(field1,field2...) doc(field1,field2...) 

            \  indexer /
        _____________
        | Lucene Index |
            --------------
           / searcher \

结果输出:Hits(doc(field1,field2) doc(field1...))

 索引数据源:record(field1,field2...) record(field1..)  

            \  SQL: insert/ 
          _____________
           |   DB  Index   |
               ------------- 
            / SQL: select \

结果输出:results(record(field1,field2..) record(field1...))

 Document:一个需要进行索引的"单元,一个Document由多个字段组成

 Record:记录,包含多个字段

Field:字段

Field:字段

Hits:查询结果集,由匹配的Document组成

 RecordSet:查询结果集,由多个Record组成

全文检索 ≠ like "%keyword%"

   由于数据库索引不是为全文索引设计的,因此,使用like "%keyword%"时,数据库索引是不起作用的,在使用like查询时,搜索过程又变成类似于一页页翻书的遍历过程了,所以对于含有模糊查询的数据库 服务来说,LIKE对性能的危害是极大的。如果是需要对多个关键词进行模糊匹配:like"%keyword1%" and like "%keyword2%" ...其效率也就可想而知了。

  通常比较厚的书籍后面常常附关键词索引表(比如:北京:12, 34页,上海:3,77页……),它能够帮助读者比较快地找到相关内容的页码。而数据库索引能够大大提高查询的速度原理也是一样,想像一下通过书后面的索 引查找的速度要比一页一页地翻内容高多少倍……而索引之所以效率高,另外一个原因是它是排好序的。对于检索系统来说核心是一个排序问题。

   所以建立一个高效检索系统的关键是建立一个类似于科技索引一样的反向索引机制,将数据源(比如多篇文章)排序顺序存储的同时,有另外一个排好序的关键词 列表,用于存储关键词==>文章映射关系,利用这样的映射关系索引:[关键词==>出现关键词的文章编号,出现次数(甚至包括位置:起始偏移 量,结束偏移量),出现频率],检索过程就是把模糊查询变成多个可以利用索引的精确查询的逻辑组合的过程。从而大大提高了多关键词查询的效率,所以,全文 检索问题归结到最后是一个排序问题。

  由此可以看出模糊查询相对数据库的精确查询是一个非常不确定的问题,这也是大部分数据库对全文检索支持有限的原因。Lucene最核心的特征是 通过特殊的索引结构实现了传统数据库不擅长的全文索引机制,并提供了扩展接口,以方便针对不同应用的定制。

  可以通过一下表格对比一下数据库的模糊查询:

   Lucene全文索引引擎  数据库
 索引  将数据源中的数据都通过全文索引一一建立反向索引  对于LIKE查询来说,数据传统的索引是根本用不上的。数据需要逐个便利记录进行GREP式的模糊匹配,比有索引的搜索速度要有多 个数量级的下降。
 匹配效果  通过词元(term)进行匹配,通过语言分析接口的实现,可以实现对中文等非英语的支持。  使用:like "%net%" 会把netherlands也匹配出来,
多个关键词的模糊匹配:使用like "%com%net%":就不能匹配词序颠倒的xxx.net..xxx.com
 匹配度  有匹配度算法,将匹配程度(相似度)比较高的结果排在前面。  没有匹配程度的控制:比如有记录中net出现5词和出现1次的,结果是一样的
 结果输出  通过特别的算法,将最匹配度最高的头100条结果输出,结果集是缓冲式的小批量读取的。  返回所有的结果集,在匹配条目非常多的时候(比如上万条)需要大量的内存存放这些临时结果集。
 可定制性  通过不同的语言分析接口实现,可以方便的定制出符合应用需要的索引规则(包括对中文的支持)  没有接口或接口复杂,无法定制
 结论  高负载的模糊查询应用,需要负责的模糊查询的规则,索引的资料量比较大  使用率低,模糊匹配规则简单或者需要模糊查询的资料量少

全文检索和数据库应用最大的不同在于:让最相关的 头100 条结果满足98%以上用户的需求。
Lucene的创新之处:

   大部分的搜索(数据库)引擎都是用B树结构来维护索引,索引的更新会导致大量的IO操作,Lucene在实现中,对此稍微有所改进:不是维护一个索引文 件,而是在扩展索引的时候不断创建新的索引文件,然后定期的把这些新的小索引文件合并到原先的大索引中(针对不同的更新策略,批次的大小可以调整),这样 在不影响检索的效率的前提下,提高了索引的效率。

Lucene和其他一些全文检索系统/应用的比较:

   Lucene  其他开源全文检索系统
 增量索引和批量索引  可以进行增量的索引(Append),可以对于大量数据进行批量索引,并且接口设计用于优化批量索引和小批量的增量索引。  很多系统只支持批量的索引,有时数据源有一点增加也需要重建索引。
 数据源  Lucene没有定义具体的数据源,而是一个文档的结构,因此可以非常灵活的适应各种应用(只要前端有合适的转换器把数据源转换成 相应结构)。  很多系统只针对网页,缺乏其他格式文档的灵活性。
 索引内容抓取  Lucene的文档是由多个字段组成的,甚至可以控制那些字段需要进行索引,那些字段不需要索引,近一步索引的字段也分为需要分词 和不需要分词的类型:
   需要进行分词的索引,比如:标题,文章内容字段
   不需要进行分词的索引,比如:作者/日期字段
 缺乏通用性,往往将文档整个索引了
 语言分析  通过语言分析器的不同扩展实现:
可以过滤掉不需要的词:an the of 等,
西文语法分析:将jumps jumped jumper都归结成jump进行索引/检索
非英文支持:对亚洲语言,阿拉伯语言的索引支持
 缺乏通用接口实现
 查询分析  通过查询分析接口的实现,可以定制自己的查询语法规则:
比如: 多个关键词之间的 + - and or关系等
 功能较强大
 并发访问  能够支持多用户的使用  功能较强大

关于亚洲语言的的切分词问题(Word Segment)
  对于中文来说,全文索引首先还要解决一个语言分析的问题,对于英文来说,语句中单词之间是天然通过空格分开的,但亚洲语言的中日韩文语句中的字是一个 字挨一个,所有,首先要把语句中按"词"进行索引的话,这个词如何切分出来就是一个很大的问题。
  首先,肯定不能用单个字符作(si-gram)为索引单元,否则查"上海"时,不能让含有"海上"也匹配。
但一句话:"北京天安门",计算机如何按照中文的语言习惯进行切分呢?
  "北京 天安门" 还是"北 京 天安门"?让计算机能够按照语言习惯进行切分,往往需要机器有一个比较丰富的词库才能够比较准确的识别出语句中的单词。
  另外一个解决的办法是采用自动切分算法:将单词按照2元语法(bigram)方式切分出来,比如:
    "北京天安门" ==> "北京 京天 天安 安门"。
这样,在查询的时候,无论是查询"北京" 还是查询"天安门",将查询词组按同样的规则进行切分:"北京","天安安门",多个关键词之间按与"and"的关系组合,同样能够正确地映射到相应的索 引中。这种方式对于其他亚洲语言:韩文,日文都是通用的。
  基于自动切分的最大优点是没有词表维护成本,实现简单,缺点是索引效率低,但对于中小型应用来说,基于2元语法的切分还是够用的。基于2元切分后的索 引一般大小和源文件差不多,而对于英文,索引文件一般只有原文件的30%-40%不同。

   自动切分  词表切分
 实现  实现非常简单  实现复杂
 查询  增加了查询分析的复杂程度  适于实现比较复杂的查询语法规则
 存储效率  索引冗余大,索引几乎和原文一样大  索引效率高,为原文大小的30%左右
 维护成本  无词表维护成本  词表维护成本非常高:中日韩等语言需要分别维护。
还需要包括词频统计等内容
 适用领域  嵌入式系统:运行环境资源有限
分布式系统:无词表同步问题
多语言环境:无词表维护成本
 对查询和存储效率要求高的专业搜索引擎

目前比较大的搜索引擎的语言分析算法一般是基于以上2个机制的结合。关于中文的语言分析算法,可以在Google查关键词"wordsegment search"能找到更多相关的资料。

Lucene的结构框架:
  注意:Lucene中的一些比较复杂的词法分析是用JavaCC生成的(JavaCC:JavaCompilerCompiler,纯Java的词法 分析生成器),所以如果从源代码编译或需要修改其中的QueryParser、定制自己的词法分析器,还需要从https://javacc.dev.java.net/下 载 javacc。
  lucene的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口。

 org.apache.Lucene.search/  搜索入口
 org.apache.Lucene.index/  索引入口
 org.apache.Lucene.analysis/  语言分析器
 org.apache.Lucene.queryParser/ 查询分析器
 org.apache.Lucene.document/  存储结构
 org.apache.Lucene.store/   底层IO/存储结构
 org.apache.Lucene.util/  一些公用的数据结构

2008年5月11日星期日

zjw0358 wants to keep up with you on Twitter

To find out more about Twitter, visit the link below:

http://twitter.com/i/a8b1f1ceb827fd8c2120740725a6263409aa049e

Thanks,
-The Twitter Team

About Twitter

Twitter is a unique approach to communication and networking based on the simple concept of status. What are you doing? What are your friends doing—right now? With Twitter, you may answer this question over SMS, IM, or the Web and the responses are shared between contacts.

This message was sent by a Twitter user who entered your email address. If you'd prefer not to receive emails when other people invite you to Twitter, click here:
http://twitter.com/i/optout/ae3e066aeebeea3445eae2c59f4db8d4e04f5034

2008年5月10日星期六

Zhang wants to Share Favorites with you

Hi,

hello,spark invite you,my dear friend

Join StumbleUpon for Free >

- zhang

About StumbleUpon

StumbleUpon is a toolbar that let you discover website, pictures and videos recommended by your friends and like-minded people.

It's Free and Easy to download.
You have received this email because zhang (zjw0358@gmail.com) directly invited you to join his/her community on StumbleUpon.

If you prefer not to receive any StumbleUpon invitations by email: click here

We take your privacy very seriously. To read our privacy policy and see how we use the information you give us, visit our website at http://www.stumbleupon.com/privacy.html

2008年2月29日星期五

幸福

幸福是自己想出来的 ,
不是活出来的 。