cppjieba
cppjieba copied to clipboard
[bug] 数字+量词+名词组合处理不当
std::string s = "购买了3部手机";
std::vector<std::string> expected = {"购买", "了", "3", "部", "手机"};
jieba.Cut(s, words, true);
EXPECT_EQ(words, expected);
预期结果应该是: 购买 了 3 部 手机 你的代码切分结果: 购买 了 3 部手机
我已经改用ltp了
原因是原始词典文件里混入了 部手机 这样的脏词,https://raw.githubusercontent.com/yanyiwu/cppjieba/refs/heads/master/dict/jieba.dict.utf8 如果把词典文件里删除 部手机 这样的脏词后就ok了。 一般情况下是建议用自己维护的词典可以比较灵活。
https://github.com/yanyiwu/cppjieba/pull/200
你试一下最新版本的代码,应该就没这个问题了。
是否可以考虑一下实现这个功能: 提供接口、或者约定一个路径、或者通过参数传入自定义字典, 然后优先级是自定义词典高于系统自带词典?
自定义词典 这个功能是有的,readme里有:【自定义词典示例请看dict/user.dict.utf8】
仓库里的自定义词典已经有十几年没更新了。当初的词典源是什么,现在还有更新吗?自己维护词典还是太麻烦了