DANCE WITH JAVA

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

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          好友之家

          最新評(píng)論

          lucene的中文分詞器

          lucene的中文分詞器到現(xiàn)在還沒有好的解決辦法。下邊介紹了兩個(gè)lucene自己提供的分詞器和一個(gè)javaeye上的網(wǎng)友實(shí)現(xiàn)的分詞器。關(guān)于各個(gè)分詞器的不同見代碼中的print信息。直接運(yùn)行得到console的輸出結(jié)果更容易對(duì)比不同。
          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) 評(píng)論(4)  編輯  收藏 所屬分類: 搜索引擎lucence

          評(píng)論

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

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

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

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

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

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

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

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

          主站蜘蛛池模板: 永定县| 东乡族自治县| 余江县| 肥东县| 阿瓦提县| 东城区| 浮梁县| 江油市| 闻喜县| 清丰县| 武定县| 共和县| 阿克| 辽阳市| 晋城| 乌审旗| 岢岚县| 西贡区| 阳原县| 汪清县| 乌海市| 雅安市| 九江市| 西贡区| 项城市| 平山县| 黄龙县| 肥西县| 江安县| 阜宁县| 普宁市| 溧阳市| 平江县| 吉木乃县| 鹰潭市| 南乐县| 濮阳市| 宣威市| 平山县| 新绛县| 苗栗县|