My Opera is closing 3rd of March

对于Webus的重新理解

一切源于引擎

Subscribe to RSS feed

简单实用的分词方法

分词对于中文搜索引擎是相当重要的部分。对于Webus搜索引擎来说,分词组件的性能也许不要很高,但是必须十分灵活。
在介绍Webus分词组件之前,首先解释一下关于分词技术的几个与性能相关的概念:

1. 准确率(P)=切分结果中正确分词数/切分结果中所有分词数
2. 召回率(R)=切分结果中正确分词数/标准答案中所有分词数

我们的分词组件算法相当简单,仅仅使用了“逆向最大匹配分词法”这一项技巧。再配以一个精心调配的词库,基本能够应对目前阶段的分词需求。
所谓“逆向最大匹配分词法”就是根据词典对句子中的逻辑词进行逐个筛选,找出长度最大的词。如:

词典
------------
我
是
中国
中国人
……

句子
------------
“我是中国人”

那么逆向最大匹配算法的运行过程如下
------------
1.  我是中国人 -> 未匹配
2.  我是中国 -> 未匹配
3.  我是中 -> 未匹配
4.  我是 -> 未匹配
5.  我 -> 匹配"我"
6.  是中国人 -> 未匹配
7.  是中国 -> 未匹配
8.  是中 -> 未匹配
9.  是 -> 匹配"是"
10. 中国人 -> 匹配"中国人"
处理完成, 输出"我 是 中国人"


这种方法尽管简单,却非常实用。简单的算法决定了高性能,再加上逆向最大匹配分词法的准确率基本上可以达到90%左右,那么对于一般的应用要求就足够了。

说到这里,简单分词组件的轮廓就基本清晰了。但是我们前面说过:必须要灵活。那么我们还需要做一些额外的处理。
一段文本中会有很多符号,缩写等等。这个时候,根据我们的应用需求,我们可以利用正则表达式来判断这些特殊的符号,缩写,然后控制程序逻辑对其进行取舍;另外一个方面,我们还需要对分词过程做出很多统计数据,如词频、总词数等等。

最后,对于分词而言,词库是相当重要的,直接决定了分词效果。如果无力实现复杂的分词算法,那么对词库进行优化将成为最有意义的工作。

-----2006-12-13补充-------------------
十月十七日在看了中科院软件所张俊林先生对百度分词算法的分析之后,我也着手对Webus的分词算法进行了相应开发。

现在Webus分词组件具备了如下特点:
1. 双向最大匹配分词;
2. 增加对人名和版本(英文短语)的识别功能.

Webus分词一共采用了四个词典,一个主词典和3个干扰词词典(英文、中文和无意义词)。

另外,张先生后来又陆续发表了两篇关于百度分词算法的补充分析,一共三篇,引用如下:

《baidu分词算法分析之一》

《baidu分词算法分析之二》

《baidu分词算法分析之三》
March 2014
S M T W T F S
February 2014April 2014
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31