zoukankan      html  css  js  c++  java
  • 基于逆向最大化词表中文分词法zz

    前做知识管理系统的时候,由于需要建立全文检索和统计词频,需要对中文文本进行分词。对于中文分词,

    国内做到好的应该是中科院自然研究所,但是相对比较复杂,我看了几次没有看明白. :)  ,由于平常我们的知识系统

    对分词的要求没有这么高,所以 就选择了最大化的词表分词法.  词表选择的是人民日报97版的词表.

    实际效果可以达到90%以上,基本可以满足需要。支持 Lucene.net分词,词表是启动时一次性载入;

       具体代码如下:

      public sealed class LtWordTokenizer : Tokenizer
     {
      private String bufferText;
      private ArrayList wordArray; 
      private int  intIndex=0;  
      public static Hashtable hsDic=new Hashtable();  

      public LtWordTokenizer(TextReader _in)
      {
       input = _in;
       bufferText=input.ReadToEnd().ToLower();   
       wordArray=new ArrayList();   
       wordSegment(bufferText);  
       
      }  

      public void wordSegment(String Sentence)
      {
       int senLen = Sentence.Length;
       int i=0, j=0;
       int M=12;
       string word;    
       while(i < senLen)
       {
        int N= i+M<senLen ? i+M : senLen+1;
        bool bFind=false;
        for(j=N-1; j>i; j--)
        {
         word = Sentence.Substring(i, j-i).Trim();     
         if(hsDic.ContainsKey(word.Trim()))
         {
          wordArray.Add(new Token(word,i,i+word.Length));      
          bFind=true;
          i=j;
          break;
         }     
        }
        if(!bFind)
        {
         word = Sentence.Substring(i, 1).Trim();
         i=j+1;
         if(word.Trim()!="")
         {
          wordArray.Add(new Token(word,i,i+word.Length));     
         }     
        }
       } 
      }


     
      public override Token Next()
      { 
       
       if(intIndex<wordArray.Count)
       { 
        intIndex++;
        return (Token)(wordArray[intIndex-1]);           
       }
       else
        return null;   
      }
      
     }
    }

    下次可以在分词的时候更改一下,不必先分好保存到arraylist,动态速度更好。

  • 相关阅读:
    接口的使用
    web service 实现无刷新返回一个表
    webservice 实现动态刷新
    js 实现子树选中时父目录全被选中
    相册的简单实现
    基于角色的身份验证3
    一个购物车的简单实现(多层开发)
    asp2.0 中实现 msdn 左边导航栏
    xsl 中 xsl:copy 的使用
    企业库中使用transaction(企业库中的列子)
  • 原文地址:https://www.cnblogs.com/dayouluo/p/240767.html
Copyright © 2011-2022 走看看