柬文分词的效果评估
目前本公司项目上使用的柬文分词为NIPTICT机构调用CRF++算法工具进行的分词,由于目前的分词效果一般,故对多种柬文分词算法进行了研究评估。
一、柬文分词算法介绍
下面为各种算法的标识做简要介绍。
网上已有的模型:
NIPTICT:
https://niptict.edu.kh/khmer-word-segmentation-tool/
柬文常用分词,本项目使用的分词,使用算法CRF++,训练语料97340个句子。
Crf_java:
github上项目
https://github.com/zhaoshiyu/SEANLP
ES ICU、polyglot:
各语言通用分词,ES中分词器或python中的polyglot包分词,最终发现两者算法一致
Kheng、ondra:
柬文常用分词网站
http://blog.khmerocr.com/2018/04/segmentation-zwsp-tool-ondra-danhhong.html
NIPTICT_ner:
NIPTICT分词,并设置过滤人工收集的473个人名、地名
外部接口:
其他公司的柬文分词接口
line_breaking:柬文分词软件
http://www.panl10n.net/cambodia-phase-ii/
使用以下算法,自己训练的模型(语料均较少,未人工标注收集)
语料一:语料分词型,来自经柬文语料分好词的73207个单词(柬文kcc切分)片段(网上收集)
语料二:字典型(柬文词语、词频),共从网上收集到86363个不同的柬文词语、词频和人工收集的473个人名、地名
CRF++:NIPTICT机构使用的CRF++算法,训练集为语料一
Jieba:改写中文分词常用的jieba分词用于柬文分词,训练集为为语料二
BiLstm+CRF:BiLstm+CRF算法,训练集为语料一
二、柬文分词效果评估
1.人工评估
表结果为句子准确率:从100个柬文标题中,由柬文编辑人工标注的不同算法正确分词的句子数(数据选取mysql数据库中100个柬文标题)
2.已知分词语料评估
表结果为词和句子准确率:评估语料为语料一的部分语料(占比1/8,词数8840,行数349)
注明:1、后三种算法为自己训练,由于评估语料为语料一,故评估结果可能更偏好于CRF++和BiLstm+CRF(因为训练语料来自同语料一的剩下占比7/8)
2、kheng、ondra为网站分词,爬取需分词句子较多时被封
3、Line_braking软件可能分词较慢,一直运行未出结果
3.性能评估
已有模型:
NIPTICT、Crf_java、ES ICU/polyglot:
性能评估:这3种中除了Crf_java的评估结果不太稳定(目前都不能确定网上已有模型的训练集是否用到了语料一),故综合评估1.和2.,这3种中NIPTICT结果最好。
自己训练模型:
CRF++、jieba、BiLstm+CRF:
性能评估:
由于评估数据来源于语料一,评估结果可能更偏好于CRF++和BiLstm+CRF,故综合来看CRF++、jieba效果应该差不多。
CRF++:需要数据集相对较少
Jieba:需要数据集相对较大,但是人工后期添加未登录词加入识别字典较方便;柬文相对于中文用的缺陷是柬文的一个句子所包含的单词较多(多达四五十个),求最短路径时容易受影响
BiLstm+CRF: 网络预测模型,需要大量数据集,因此在此效果不佳
4.结论
目前多种算法仅运用少量的网上数据集进行训练均能达到70%以上的正确率,但是运用到实际中(数据库中的分词)时效果很差,很大可能是因为语料的原因,比如分错的情况在字典中大部分是未登录词,如果运用相同的语料进行训练结果应该会得到改进。
后续:结合数据库中的语料进行分词(收集语料) or 在NIPTICT方法上分词好的结果上进行组合优化(因为大部分情况都是分词过细)。