huaban / jieba-analysis

结巴分词(java版)
https://github.com/huaban/jieba-analysis
Apache License 2.0
2.55k stars 835 forks source link

jieba怎么在本地词库动态添加新词 #108

Open zhaochuanzhen opened 4 years ago

zhaochuanzhen commented 4 years ago

背景:我引入本地词库,项目启动成功,通过接口可以正常调用并获取分词结果

新需求:通过接口或者手动修改本地词库的方式,添加一些新词,并且项目不重启、新词生效。

我看了python的代码,有一个add_word的方法可以调用,java也有一个addWord,但是addWord是private修饰的,不能直接调用,各位大神有方法能动态刷新本地词库吗

附addWord方法

    private String addWord(String word) {
        if (null != word && !"".equals(word.trim())) {
            String key = word.trim().toLowerCase(Locale.getDefault());
            _dict.fillSegment(key.toCharArray());
            return key;
        }
        else
            return null;
    }
zhaochuanzhen commented 4 years ago

求关注、求解答

zhaochuanzhen commented 4 years ago

有人看到这个问题吗

donglianghan commented 4 years ago

这作者没有考虑的运行环境,我也遇到这个问题,load函数不能正确加载文件 loadUserDict(path); 想要 自己add 但是接口却是 private。 考虑this.getClass().getResourceAsStream(MAIN_DICT) 这个可以正常加载到文件。开放一个接口 而且作者自己不会异常也不应该,这样用的人并不知道自定义词典没有加载成功,不能做响应处理

caofanqi commented 3 years ago

这个很好解决,只需要在自己的项目中创建一个全限定名相同的类com.huaban.analysis.jieba.WordDictionary,就可以随意修改他的代码了