Open haochun opened 10 years ago
关于这个问题,我最初的回复:http://blog.chenlb.com/2009/04/chinese-segment-mmseg4j-dictionary-format.html
关于最多分词还没有什么好的想法。考虑到很多长词基本都是由 2-3 个字的词组成的。又考虑到类似"咖啡" 能找到 “咖啡厅”,所以草率地决定词长最长为2。
假设:"咖啡" 和 “咖啡厅” 在词库中,max-word 方式分为 "咖啡 | 厅","咖啡" 和 “咖啡厅” 搜索时(默认Lucene 的 QueryParser 解析出来的 “短语查询”)都可以找到 “咖啡厅”。
目前没有 api 或配置可设置 max-word 方式分出的词长超过2,这个效果是否可行,还要多讨论(找个话题在 javaeye 讨论征集建议)。目前这方式,有一些情况不顺眼的:“为什么” 分成 "为 | 什么"。
@chenlb 那我上面提的方法不可行吗?我目前这样改,做到项目里面了,感觉还可以。我只是拿您的代码做了修改,尽量找到词库中都存在的词,而不限定长度,这样,在索引的时候使用max-word,检索使用complex,效果还可以。
可行,我考虑把这种模式加进来。这种模式可以解决多分词准确性提高的场景。
好,那您有时间给加吧,我只是拿您的代码修改了,没有完整阅读您的代码,因此,不敢保证完全正确。
如题,在实际应用中可能会出现分词的时候使用max-word,而检索采用complex,但您的max-word测试后发现是最多两个字一组,这样的话是否有问题?我在使用的过程中是将其能分成更多的词,比如 计算机学院 我会分成 计算机、学院、计算 这样的,我对代码修改了一点,其中主要对MaxWordSeg.java进行了修改,如下:
如有不当之处,请见谅