中文分词在中文的自然语言处理里非常重要,比如在中文的搜索引擎(动手做一个简单的本地搜索引擎)或者语义分析中,词语粒度的分析效果是非常好的。
本篇介绍基于词典匹配的中文分词算法。
1. 使用效果
1.1 输入
输入待分词的句子或文章,如:
黑夜给了我黑色的眼睛,我却用它寻找光明。
1.2 输出
返回分词结果:
黑夜/给/了/我/黑色/的/眼睛/,/我/却/用/它/寻找/光明/。
2. 使用过程
2.1 模型训练
- 根据已经分好词的训练语料,统计词频,得到词典。
Done。
基于词典匹配的中文分词就是这么简单。
当然,其它的效果更好的模型,训练过程就复杂得多了,后续会不断分享。
2.2 模型测试
加载词典。
对输入语句进行分词。
2.3 模型评估
2.3.1 测试数据
自然语言是一个不好量化的领域,中文分词的结果没有事实上的标准,语言学家标注的分词结果有的时候也存在争议。
在对比不同的中文分词模型的效果与性能时,选择同样的标注数据进行评估,可以在一定程度上对比下模型之间的优劣。
本篇选用第二届国际汉语分词评测比赛(http://sighan.cs.uchicago.edu/bakeoff2005/)提供的数据中的msr数据,包括:
训练数据:training/msr_training.utf8
测试数据:testing/msr_test.utf8
测试数据基准数据:gold/msr_test_gold.utf8
2.3.2 评价指标
标准的中文分词评测的维度很多,包括词典内外的分词效果等,本篇只关注3个指标:
精准率: Precision
召回率: Recall
Precision与Recall的调和均值: F1_score
分词结果对比示例,
测试结果: [中国/人/真/伟大], 一共4个词语。
基准结果: [中国人/真/伟大],一共3个词语。
正确分出的词语是2个:[真,伟大]
Precision = 2 / 4
Recall = 2 / 3
2.3.3 测试过程
使用分词算法对待测试文件testing/msr_test.utf8分词。
将分词结果与测试数据基准数据gold/msr_test_gold.utf8进行比对。