DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計

          積分與排名

          好友之家

          最新評論

          lucene的中文分詞器

          lucene的中文分詞器到現(xiàn)在還沒有好的解決辦法。下邊介紹了兩個lucene自己提供的分詞器和一個javaeye上的網(wǎng)友實現(xiàn)的分詞器。關(guān)于各個分詞器的不同見代碼中的print信息。直接運(yùn)行得到console的輸出結(jié)果更容易對比不同。
          package analyzer;

          import java.io.Reader;
          import java.io.StringReader;

          import org.apache.lucene.analysis.Analyzer;
          import org.apache.lucene.analysis.StopFilter;
          import org.apache.lucene.analysis.Token;
          import org.apache.lucene.analysis.TokenFilter;
          import org.apache.lucene.analysis.TokenStream;
          import org.apache.lucene.analysis.cjk.CJKAnalyzer;
          import org.apache.lucene.analysis.cn.ChineseAnalyzer;
          import org.apache.lucene.analysis.standard.StandardAnalyzer;
          import org.mira.lucene.analysis.IK_CAnalyzer;
          import org.mira.lucene.analysis.MIK_CAnalyzer;

          import com.sohospace.lucene.analysis.xanalyzer.XAnalyzer;
          import com.sohospace.lucene.analysis.xanalyzer.XFactory;
          import com.sohospace.lucene.analysis.xanalyzer.XTokenizer;
          //中文分詞使用了Paoding的分詞技術(shù),特表示感謝
          public class TestCJKAnalyzer {
              
          private static String testString1 = "中華人民共和國在1949年建立,從此開始了新中國的偉大篇章";
              
          private static String testString2 = "比爾蓋茨從事餐飲業(yè)和服務(wù)業(yè)方面的工作";
              
          public static void testStandard(String testString) throws Exception{
                  Analyzer analyzer 
          = new StandardAnalyzer();      
                  Reader r 
          = new StringReader(testString);      
                  StopFilter sf 
          = (StopFilter) analyzer.tokenStream("", r);
                  System.err.println(
          "=====standard analyzer====");
                  System.err.println(
          "分析方法:默認(rèn)沒有詞只有字");
                  Token t;      
                  
          while ((t = sf.next()) != null{      
                      System.out.println(t.termText());      
                  }
               
              }

              
          public static void testCJK(String testString) throws Exception{
                  Analyzer analyzer 
          = new CJKAnalyzer();      
                  Reader r 
          = new StringReader(testString);      
                  StopFilter sf 
          = (StopFilter) analyzer.tokenStream("", r);
                  System.err.println(
          "=====cjk analyzer====");
                  System.err.println(
          "分析方法:交叉雙字分割");
                  Token t;      
                  
          while ((t = sf.next()) != null{      
                      System.out.println(t.termText());      
                  }
               
              }

              
          public static void testChiniese(String testString) throws Exception{
                  Analyzer analyzer 
          = new ChineseAnalyzer();      
                  Reader r 
          = new StringReader(testString);      
                  TokenFilter tf 
          = (TokenFilter) analyzer.tokenStream("", r);
                  System.err.println(
          "=====chinese analyzer====");
                  System.err.println(
          "分析方法:基本等同StandardAnalyzer");
                  Token t;      
                  
          while ((t = tf.next()) != null{      
                      System.out.println(t.termText());      
                  }
               
              }

              
          public static void testPaoding(String testString) throws Exception{
                  XAnalyzer analyzer 
          = XFactory.getQueryAnalyzer();   
                  Reader r 
          = new StringReader(testString);   
                  XTokenizer ts 
          = (XTokenizer) analyzer.tokenStream("", r);   
                  System.err.println(
          "=====paoding analyzer====");
                  System.err.println(
          "分析方法:字典分詞,去掉停止詞。在字典不能匹配的情況下使用CJKAnalyzer的分割發(fā)。");
                  Token t;   
                  
          while ((t = ts.next()) != null{   
                     System.out.println(t.termText());   
                  }
             
              }

              
          public static void testJe(String testString) throws Exception{
          //        Analyzer analyzer = new MIK_CAnalyzer();
                  Analyzer analyzer = new IK_CAnalyzer();
                  Reader r 
          = new StringReader(testString); 
                  TokenStream ts 
          = (TokenStream)analyzer.tokenStream("", r);
                  System.err.println(
          "=====je analyzer====");
                  System.err.println(
          "分析方法:字典分詞,正反雙向搜索,具體不明");
                  Token t;   
                  
          while ((t = ts.next()) != null{   
                     System.out.println(t.termText());   
                  }
             
              }

              
          public static void main(String[] args) throws Exception{
          //        String testString = testString1;
                  String testString = testString1;
                  System.out.println(testString);
                  
                  testStandard(testString);
                  testCJK(testString);
                  testPaoding(testString);
                  
          //        testChiniese(testString);
          //        testJe(testString);
              }


          }

          posted on 2007-06-22 09:15 dreamstone 閱讀(10360) 評論(4)  編輯  收藏 所屬分類: 搜索引擎lucence

          評論

          # re: lucene的中文分詞器 2007-08-14 11:38 linliangyi2006

          偶然看到哈,結(jié)果呢?!  回復(fù)  更多評論   

          # re: lucene的中文分詞器 2008-11-03 14:54 想研究研究

          樓主能否發(fā)一個包上來啊,java里面沒有你用到的包  回復(fù)  更多評論   

          # re: lucene的中文分詞器[未登錄] 2011-06-15 18:37 Jane

          能否發(fā)個詞典過來呢?  回復(fù)  更多評論   

          # re: lucene的中文分詞器[未登錄] 2011-06-15 18:37 Jane

          @Jane
          我的QQ郵箱是573505443@qq.com  回復(fù)  更多評論   

          主站蜘蛛池模板: 海伦市| 都江堰市| 抚顺县| 南木林县| 射阳县| 张家港市| 屏东县| 沅江市| 黄骅市| 囊谦县| 尚志市| 玉环县| 淳化县| 大同市| 广宗县| 峨山| 芦溪县| 万安县| 凤城市| 青田县| 虎林市| 瑞安市| 体育| 福贡县| 庆云县| 海安县| 雷波县| 宜都市| 奉贤区| 上饶县| 乌恰县| 屯昌县| 新民市| 临武县| 奈曼旗| 即墨市| 莲花县| 胶州市| 东阿县| 桂东县| 江永县|