2007-02-28

HTML DOM

DOM 是 Document Object Model 的简称。DOM将文档组织成树状模型。从而将不同的文档表示成统一格式,便于文档的解析。DOM在XML解析中应用很多,其实HTML也是可以转变为DOM的。如下图所示:



把HTML直接去除标记,转化为ASCII文档,丢失了这种层次结构,损失了部分信息。而DOM是一个无损的HTML文档表示方法。可以方便的解决HTML在内存中的表示问题。

2007-02-07

设计模式 -- 单件 Singleton

目前C++中的一个主要问题就是数据的传递。传统的 C++有3种数据传递的方式:传值,传引用,传指针。对于小的对象,不如int,double,传值是很快的。但是对于大的对象,比如字符串,含有数据的类等等,传值时要拷贝对象,但是拷贝大的对象是很慢的。

对于这个问题,可以传指针,但这是C中的方法,而且指针容易造成内存泄露。C++中的解决方案是引用。但是引用也有问题,会造成类的设计比较复杂,函数的参数过多。

于是就有单件的设计模式。单件可以实现传值的语义。他其实封装了传指针,最简单的单件实现很简单( 可见 Modern C++ Design ),他只创建一个对象,如果对象没有创建,则创建,否则就返回创建好的对象( 这就是单的意思吧,在内存中只保留一个对象 )

在设计时,凡是含有大量数据的类,都可以设计成一个单件。这样可以最大的减少拷贝的代价。

Modern C++ Design是C++设计模式中比较著名的一本书,Loki是C++设计模式的一个库。

2007-02-05

Grpah and PageRank

自从PageRank算法产生以来,它已经被用到越来越多的地方。一般来说,有Graph的地方就有PageRank。

PageRank是一个基于图的排名算法,这一算法很像选举政治,一切实体的地位由投票决定。

有了图的rank算法,现在的主要问题就是如何把我们需要rank的东西转化为Graph,现在这个是很多人研究的领域。
  1. WebPage通过url形成page之间的关系,从而构成图,最早的pagerank就是基于WebPage的排名提出的
  2. 实体Entity之间通过在一张网页或者一篇文章中co-occurence产生联系,这方面比较著名的研究是 polyphonet an advanced social network extraction system from the web 一文。
  3. 文本的图表示,我前面也说过,可以建立句子的图,或者词的图
  4. 还有语义网络...
总之,Graph-based表示比以前的向量表示前进了一步,他更多的保留了物体的信息。和向量模型一样,Graph模型也需要解决以下问题。
  1. 模型的建立,特征提取。
  2. 模型的匹配,也就是模型的相似度计算,这涉及到分类器的设计。