您的位置:首页 > 其它

中文搜索中的两项关键技术

2008-04-20 13:23 155 查看
 

 中文搜索中的两项关键技术:

做一个spider对于一个稍微入点行道的人来说并不是一件很难的事情,但是垃圾信息的过滤,正文内容的提取,以及对内容的分词并不是一件很简单的事情。

1. 内容自动提取技术:

这是搜索引擎中的一项关键的技术,内容提取的质量直接影响系统的性能,正文内容提取的算法关键是如何建立一个网页的模型,这种算法在网上并不好找,开源的搜索引擎对这个的支持也不是很好,大家可以通过这个链接看看演示:

http://somyso.com/labs.php   这个算法并不是很好,很多不是很标准的网页并不能解析,所以我也没有资格在这里谈论我的自动识别理论。

2. 分词技术:

对这个问题,处理的技术已经比较的成熟,我们可以用一个简单的统计模型来解决这个问题。

如果 S 表示一连串特定顺序排列的词 w1, w2,…, wn ,换句话说,S 可以表示某一个由一连串特定顺序排练的词而组成的一个有意义的句子。现在,机器对语言的识别从某种角度来说,就是想知道S在文本中出现的可能性,也就是数学上所说的S 的概率用 P(S) 来表示。利用条件概率的公式,S 这个序列出现的概率等于每一个词出现的概率相乘,于是P(S) 可展开为:

P(S) = P(w1)P(w2 ¦w1)P(w3 ¦ w1 w2)…P(wn ¦w1 w2…wn-1)

其中 P (w1) 表示第一个词w1 出现的概率;P (w2 ¦w1) 是在已知第一个词的前提下,第二个词出现的概率;以次类推。不难看出,到了词wn,它的出现概率取决于它前面所有词。从计算上来看,各种可能性太多,无法实现。因此我们假定任意一个词wi的出现概率只同它前面的词 wi-1 有关(即马尔可夫假设),于是问题就变得很简单了。现在,S 出现的概率就变为:

P(S) = P(w1)P(w2 ¦w1)P(w3 ¦w2)…P(wi ¦wi-1)…

(当然,也可以假设一个词又前面N-1个词决定,模型稍微复杂些。)

接下来的问题就是如何估计 P (wi ¦wi-1)。现在有了大量机读文本后,这个问题变得很简单,只要数一数这对词(wi-1,wi) 在统计的文本中出现了多少次,以及 wi-1 本身在同样的文本中前后相邻出现了多少次,然后用两个数一除就可以了,P(wi ¦wi-1) = P(wi-1,wi)/ P (wi-1)。怎么样把它应用到分词理论上呢?其实很简单。

我们假定一个句子S可以有几种分词方法,为了简单起见我们假定有以下三种:

A1, A2, A3, ..., Ak,

B1, B2, B3, ..., Bm

C1, C2, C3, ..., Cn

其中,A1, A2, B1, B2, C1, C2 等等都是汉语的词。那么最好的一种分词方法应该保证分完词后这个句子出现的概率最大。也就是说如果 A1,A2,..., Ak 是最好的分法,那么 (P 表示概率):

P (A1, A2, A3, ..., Ak) 〉 P (B1, B2, B3, ..., Bm), 并且

P (A1, A2, A3, ..., Ak) 〉 P(C1, C2, C3, ..., Cn)

因此,只要我们利用上回提到的统计语言模型计算出每种分词后句子出现的概率,并找出其中概率最大的,我们就能够找到最好的分词方法。

当然,这里面有一个实现的技巧。如果我们穷举所有可能的分词方法并计算出每种可能性下句子的概率,那么计算量是相当大的。因此,我们可以把它看成是一个动态规划(Dynamic Programming) 的问题,并利用 维特比 算法快速地找到最佳分词。

分词演示地址:http://somyso.com/labs.php  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 搜索引擎 语言 c