中文分词和二元分词综合对比
为了测试中文分词和二元分词的差异,现将初步的测试数据做了对比。关于二元分词可以参考车东先生的相关文章。
采用中文分词每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) | * coord(q,d) * queryNorm(q) |
---|---|---|---|
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出现的次数 | |
作者:lhelper 我要去桂林