• mmseg4j 中文分词 1.6 版发布


    经过几天的开发与调试,mmseg4j 1.6 版可以发布了。1.6 版主要实现与下功能:

    1. 实现多分词,在complex基础上,把长的词(大于2)拆出多个词。按二元分词,且把不存在的词去了,如:“西伯利亚” -> "西|伯利|利亚","西伯" 不存在词库中;“中国人民银行”-> "中国|国人|人民|银行"
    2. 支持多个词库文件,在词库目录中放"words"前缀且".dic"后缀的文件。如:data/words-my.dic
    3. 单字的单位独立一个文件(data/units.dic, 已经放入jar包里),也可以自定义覆盖它。加单字的单位处理分词比较好点,如:“年”在units.dic文件中,“2008年中有很多事情” -> “2008|年|中有|很多|事情”,否则,就分成了“2008|年中|有|很多|事情”。这功能是试行,如果不喜欢它,可以空的units.dic文件 覆盖它。

    MMSegAnalyzer 和 MMSegTokenizerFactory 默认的分词方式改为max-word。当然你可以单独地使用SimpleAnalyzer、ComplexAnalyzer、MaxWordAnalyzer。

    多分词的效果:

    1. public void testEffect() throws IOException {  
    2.     String words = segW.segWords("共和国""|");  
    3.     assertEquals("共和|国", words);  
    4. }  
    5.   
    6. public void testEffect1() throws IOException {  
    7.     String words = segW.segWords("中国人民银行""|");  
    8.     assertEquals("中国|国人|人民|银行", words);  
    9. }  
    10.   
    11. public void testEffect2() throws IOException {  
    12.     String words = segW.segWords("西伯利亚""|");  
    13.     assertEquals("西|伯利|利亚", words);  
    14. }  
    15.   
    16. public void testEffect3() throws IOException {  
    17.     String words = segW.segWords("中华人民共和国""|");  
    18.     assertEquals("中华|华人|人民|共和|国", words);  
    19. }  
    20.   
    21. public void testEffect4() throws IOException {  
    22.     String words = segW.segWords("羽毛球拍""|");  
    23.     assertEquals("羽毛|球拍", words);  
    24. }  
    25.   
    26. public void testEffect6() throws IOException {  
    27.     String words = segW.segWords("为什么""|");  
    28.     assertEquals("为|什么", words);  
    29. }  
    30.   
    31. public void testEffect7() throws IOException {  
    32.     String words = segW.segWords("很好听""|");  
    33.     assertEquals("很好|好听", words);  
    34. }  
    35.   
    36. public void testEffect8() throws IOException {  
    37.     String words = segW.segWords("强冷空气""|");  
    38.     assertEquals("强|冷|空气", words);  
    39. }  
    40. public void testEffect10() throws IOException {  
    41.     String words = segW.segWords("清华大学""|");  
    42.     assertEquals("清华|大学", words);  
    43. }  
    44.   
    45. public void testEffect11() throws IOException {  
    46.     String words = segW.segWords("华南理工大学""|");  
    47.     assertEquals("华南|理工|工大|大学", words);  
    48. }  
    49.   
    50. public void testEffect12() throws IOException {  
    51.     String words = segW.segWords("广东工业大学""|");  
    52.     assertEquals("广东|工业|大学", words);  
    53. }  

    solr 中使用

    1. <fieldType name="textMaxWord" class="solr.TextField" >  
    2.      <analyzer>  
    3.        <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>  
    4.      </analyzer>  
    5.    </fieldType>  

    google code 已经提供下载。

  • 相关阅读:
    MySQL全面瓦解20:可编程性之流程控制语句
    MySQL全面瓦解19:游标相关
    MySQL全面瓦解18:自定义函数
    MySQL全面瓦解17:触发器相关
    MySQL全面瓦解16:存储过程相关
    MySQL全面瓦解15:视图
    MySQL全面瓦解14:事务
    MySQL全面瓦解13:系统函数相关
    MySQL全面瓦解12:连接查询的原理和应用
    MySQL全面瓦解11:子查询和组合查询
  • 原文地址:https://www.cnblogs.com/wycg1984/p/1567652.html
Copyright © 2020-2023  润新知