belikemike23 / mmseg4j

Automatically exported from code.google.com/p/mmseg4j
Apache License 2.0
0 stars 0 forks source link

Licensed to the Apache Software Foundation (ASF) under one or more

contributor license agreements. See the NOTICE file distributed with

this work for additional information regarding copyright ownership.

The ASF licenses this file to You under the Apache License, Version 2.0

(the "License"); you may not use this file except in compliance with

the License. You may obtain a copy of the License at

#

http://www.apache.org/licenses/LICENSE-2.0

#

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

1、mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法(http://technology.chtsai.org/mmseg/ )实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。

2、MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。

mmseg4j实现的功能详情请看:http://mmseg4j.googlecode.com/svn/trunk/CHANGES.txt

3、在 com.chenlb.mmseg4j.example包里的类示例了三种分词效果。

4、在 com.chenlb.mmseg4j.analysis包里扩展lucene analyzer。MMSegAnalyzer默认使用max-word方式分词。

5、在 com.chenlb.mmseg4j.solr包里扩展solr tokenizerFactory。 在 solr的 schema.xml 中定义 field type如:

<fieldType name="textMaxWord" class="solr.TextField" >
  <analyzer>
    <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>
  </analyzer>
</fieldType>
<fieldType name="textSimple" class="solr.TextField" >
  <analyzer>
    <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="n:/OpenSource/apache-solr-1.3.0/example/solr/my_dic"/>
  </analyzer>
</fieldType>

dicPath 指定词库位置(每个MMSegTokenizerFactory可以指定不同的目录,当是相对目录时,是相对 solr.home 的目录),mode 指定分词模式(simple|complex|max-word,默认是max-word)。

6、运行,词典用mmseg.dic.path属性指定、在classpath 目录下或在当前目录下的data目录,默认是 classpath/data 目录。如果使用 mmseg4j-*-with-dic.jar 包可以不指定词库目录(如果指定也可以,它们也可以被加载)。

java -jar mmseg4j-core-1.9.0.jar 这里是字符串。

java -cp .;mmseg4j-core-1.9.0.jar -Dmmseg.dic.path=./other-dic com.chenlb.mmseg4j.example.Simple 这里是字符串。

java -cp .;mmseg4j-core-1.9.0.jar com.chenlb.mmseg4j.example.MaxWord 这里是字符串

7、一些字符的处理 英文、俄文、希腊、数字(包括①㈠⒈)的分出一连串的。目前版本没有处理小数字问题, 如ⅠⅡⅢ是单字分,字库(chars.dic)中没找到也单字分。

8、词库:

9、MMseg4jHandler: 添加 MMseg4jHandler 类,可以在solr中用url的方式来控制加载检测词库。参数:

solrconfig.xml:

<requestHandler name="/mmseg4j" class="com.chenlb.mmseg4j.solr.MMseg4jHandler" >
    <lst name="defaults">
        <str name="dicPath">dic</str>
    </lst>
</requestHandler>

此功能可以让外置程序做相关的控制,如:尝试加载词库,然后外置程序决定是否重做索引。

在 solr 1.3/1.4 与 lucene 2.3/2.4/2.9 测试过,官方博客 http://blog.chenlb.com/category/mmseg4j , 如果发现问题或bug与我联系 chenlb2008#gmail.com 。

1.7.2 与 1.6.2 开始核心的程序与 lucene 和 solr 扩展分开打包,方便兼容低版本的 lucene,同时给出低版本(<= lucene 2.2)的 lucene 扩展请仿照 MMSegTokenizer.java。

1.9.0 支持 solr/lucene 4.0.0 正式版。 1.9.1 支持 solr/lucene 4.3.1

可以在 http://code.google.com/p/mmseg4j/issues/list 提出希望 mmseg4j 有的功能。

历史版本: