判断分词正确率的算法存在问题,导致实际结果偏高
zhangtaochn opened this issue · comments
ZHANG Tao commented
在这个文件中,/src/test/java/org/ansj/app/crf/model/CRFModelTest.java
分词结果的判断当中:(88行~98行)
offe = 0;
for (String word : paser) {
if (had_words_array[offe] == null) {
error++;
} else if (had_words_array[offe].equalsIgnoreCase(word)) {
success++;
} else {
success++;
}
offe += word.length();
}
如果
String[] result = {“**“, “**”, “红军”, "长征"};
String[] paser = {“中“, “共**”, “红军长”, "征"};
计算之后依然会有50%的正确率。
应该将第95修改为 error++;
ansj commented
之前有个记录 比如 **人民** 。分成 ** , 人民, ** 或者 **人民 , **。都算正确。但是 召回率会变低。准确率高。最终参考f值