中文分词和二元分词综合对比
中文分词和二元分词综合对比
为了测试中文分词和二元分词的差异,现将初步的测试数据做了对比。
采用中文分词每1M产生1.55M的索引文件,膨胀率1.55;每1M用时大约10秒;采用二元分词每1M产生2.21M的索引文件,膨胀率2.21;每1M用时大约7秒;
从搜索结果来看,两者可以大致相同数量的搜索结果(显示结果根据相关度排列顺序不同)。
对文本进行中文分词的目的是要提高文档检索的相关性,由于相关性的算法(如下图)涉及到很多因素,所以对二元切分和中文分词切分显示结果到底谁更相关(人理解的意义相关?),还无法得出结论。
相关度算法:
score(q,d) = |
Σ |
tf(t in d) * idf(t) * getBoost(t.field in d) * lengthNorm(t.field in d) |
|
t in q |
|
但有一点可以肯定,采用中文分词多花的解析中文时间可以带来丰厚的回报:索引文件和Term数量的大大减少。
可参考本文最后表格的图片对比。图中的数据是出现频率第100至120个Term情况,二元分词产生了大量的没有意义的Term。
|
数据源大小(M) |
索引大小 |
膨胀率 |
Term个数 |
每兆Term个数 |
所用时间(秒) |
秒/M |
中文 |
14.20 |
22.50 |
1.584 |
76473.00 |
5385.42 |
105 |
7.394 |
二元 |
14.20 |
31.50 |
2.218 |
384488.00 |
27076.62 |
87 |
6.126 |
中文 |
4.73 |
7.54 |
1.594 |
84895.00 |
17948.20 |
50 |
10.570 |
二元 |
4.73 |
11.00 |
2.325 |
238064.00 |
50330.66 |
35 |
7.399 |
|
中文分词 |
二元分词 |
索引源大小 |
14.2M |
14.2M |
索引源内容 |
论坛某天全部发言 |
论坛某天全部发言 |
建立索引用时 |
105秒 |
87秒 |
索引文件大小 |
22.5M |
31.5M |
生成的Term数 |
76473 |
384488 (5.02倍) |
文档数 |
6802 |
6802 |
搜索:XX |
236 (搜索结果(条)) |
235(搜索结果(条)) |
XX |
361 |
361 |
XX |
769 |
768 |
XX |
50 |
50 |
XX |
41 |
41 |
XX |
3 |
3 |
XX |
0 |
0 |
最常出现的词: |
Rank = 查询Text出现的次数 |
|
|
|
|