“……他不回答,对柜里说,“温两碗酒,要一碟茴香豆。”便排出九文大钱。他们又故意的高声嚷道,“你一定又偷了人家的东西了!”孔乙己睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你偷了何家的书,吊着打。”孔乙己便涨红了脸,额上的青筋条条绽出,争辩道,“窃书不能算偷……窃书!……读书人的事,能算偷么?”接连便是难懂的话,什么“君子固穷”,什么“者乎”之类,引得众人都哄笑起来;店内外充满了快活的空气。”
哈哈,在实际分词切词当中,庖丁解牛和MMSeg4j各有千秋,但MMSeg4j的思想更先进一些,提供两种类型的分词:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。从技术实现原理上,MMSeg4j更先进些,但是效果并不理想,究其原因,原来是词库太少,默认的带dic的jar包只有三个dic文件,太少太少。
而庖丁解牛的分词效果,我觉得跟他的词库有很关系,效果当然跟词库有关系,所以,本人就想了一个办法:MMSeg4j来借用庖丁解牛的词库,“借书算窃吗?”
从MMSeg4j官方说明,可以看出如何指定词库的位置:有关说明如下:
-----------------------------------------------------
6、运行,词典用mmseg.dic.path属性指定、在classpath 目录下或在当前目录下的data目录,默认是 classpath/data 目录。如果使用 mmseg4j-with-dic.jar 包可以不指定词库目录(如果指定也可以,它们也可以被加载)。
java -jar mmseg4j-core-1.8-with-dic.jar 这里是字符串。
java -cp .;mmseg4j-1.6.jar -Dmmseg.dic.path=./other-dic com.chenlb.mmseg4j.example.Simple 这里是字符串。
java -cp .;mmseg4j-1.6.jar com.chenlb.mmseg4j.example.MaxWord 这里是字符串
8、词库(强制使用 UTF-8):
- data/chars.dic 是单字与语料中的频率,一般不用改动,1.5版本中已经加到mmseg4j的jar里了,我们不需要关心它,当然你在词库目录放这个文件可以覆盖它。
- data/units.dic 是单字的单位,默认读jar包里的,你也可以自定义覆盖它,这功能是试行,如果不喜欢它,可以空的units.dic文件(放到你的词库目录下)覆盖它。
- data/words.dic 是词库文件,一行一词,当然你也可以使用自己的,1.5版本使用 sogou 词库,1.0的版本是用 rmmseg 带的词库。
- data/wordsxxx.dic 1.6版支持多个词库文件,data 目录(或你定义的目录)下读到"words"前缀且".dic"为后缀的文件。如:data/words-my.dic。
- 由于 utf-8 文件有带与不带 BOM 之分,建议词库第一行为空行或为无 BOM 格式的 utf-8 文件。
-----------------------------------------------------
更多的请参考官网。
开始动手了。
第一步,把庖丁解牛下载后,有一个dic的目录,把其中第二级的目录location里面的文本COPY到一级目录后。
第二步,把庖丁解牛的所有dic文件,前面加一个前缀words-xxx,最后的结果如图所示:
第三步,在程序中动态执行的加入字典目录,如下所示:
public String segStr(String text,String mode) throws IOException{
String returnStr = "";
Seg seg = null;
Properties p = System.getProperties();
p.setProperty("mmseg.dic.path", "C:\\dic");
Dictionary dic = Dictionary.getInstance();
if ("simple".equals(mode)) {
seg = new SimpleSeg(dic);
} else {
seg = new ComplexSeg(dic);
}
MMSeg mmSeg = new MMSeg(new InputStreamReader(new ByteArrayInputStream(text.getBytes())), seg);
Word word = null;
while ((word = mmSeg.next()) != null) {
//切词为单字的无实际意思,所以词组做为返回结果,仅仅为测试
if (word.getString().length()>=2){
returnStr += word.getString()+" ";
}
}
return returnStr;
}
呵呵,同样了,你也可以自己加入一些词库,比如拉登,奥巴马,还有中地沟油,中国加油贵,中国加油真贵.....
"引得众人都哄笑起来;店内外充满了快活的空气。"
- 描述: 修改后的字典
- 大小: 6 KB
分享到:
相关推荐
本人用的solr是4.10的,经过本人亲测可用,放心下载,包含以下3个jar包: mmseg4j-analysis-1.9.1.jar, mmseg4j-core-1.9.1.jar, mmseg4j-solr-2.2.0.jar
mmseg4j分词器,版本1.9,内涵词库,位于加压后的data.zip中
里面包含了mmseg4j-solr-2.0.0.jar,mmseg4j-solr-2.1.0.jar,mmseg4j-solr-2.2.0.jar,mmseg4j-solr-2.3.0.jar总共4个文件,其中: mmseg4j-solr-2.0.0.jar 要求 lucene/solr >= 4.3.0。在 lucene/solr [4.3.0, 4.7.1]...
Mmseg Analysis插件将Lucene mmseg4j-analyzer: : 集成到elasticsearch中,支持自定义词典。 该插件随附以下分析器: mmseg_maxword , mmseg_complex , mmseg_simple和令牌生成器: mmseg_maxword , mmseg_...
在 mmseg4j 1.9.0 版本中包含的词库文件,之后的版本中没有再包含词库文件了。现在官网也不再提供1.9.0版本的下载
mmseg4j
solr6.3下好用的mmseg4j分词库,测试可用。
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" /> ...
mmseg4j-core, 用于java中文分析器的mmseg4j核心 MMSEG <dependency> <groupId>com.chenlb.mmseg4j</groupId> <artifactId>mmseg4j-core</artif
该压缩包包含`mmseg4j-solr-2.3.2.jar`和`mmseg4j-core-1.10.0.jar`,其中solr-2.3.2不是官方的版本,该版本有改动,使得mmseg4j可以很好的支持Solr6,如果你的Solr低于Solr6,请使用官方的mmseg4j-solr-2.3.0.jar...
mmseg4j-solr-mmseg4j-solr-2.2.0.zip
mmseg4j-1.8.5中文分词器API
mmseg4j-solr-2.4.0.jar mmseg4j-analysis-1.9.1.jar mmseg4j-core-1.10.0.jar
mmseg4j-1.9.1 分词器 包含修复bug的mmseg4j-analysis-1.9.1.jar dist\修复bug下是修复bug后的mmseg4j-analysis-1.9.1.jar
mmseg4j-core-1.10.0,非常好用的中文分词器
solr6配置mmseg4j,里面包含mmseg4j需要jar包、dic文件、详细配置说明文档,里面有详细截图和需要文件
mmseg4j-solr-2.3.0-with-mmseg4j-core是Solr的中文分词包,该压缩包含有mmseg4j-core-1.10.0.jar和mmseg4j-solr-2.3.0.jar。
mmseg4j-1.9.1
mmseg4j 2.3 源码 Lucene 中文分词器
lucene中文分词 mmseg4j-1.8.5与lucene3.1兼容