中文分词算法

中文分词一向是搜索引擎中的难点,总结了一个简单的算法,由此可以推出逆向最大匹配,当然还有最大概率匹配
import java.lang.*;
import java.io.*;
import java.util.*;
public class FMMSegment
{
Dictionary dic;

public FMMSegment()
{
}

public FMMSegment(Dictionary newDic)
{
  dic = newDic;
}
public int wordSegment(String Sentence)
{
  int senLen = Sentence.length();
  int i=0, j=0;
  int M=12;
  String word;
  boolean bFind = false;
  
  while(i < senLen)
  {
   int N= i+M<senLen ? i+M : senLen+1;
   bFind=false;
   for(j=N-1; j>i; j--)
   {
    word = Sentence.substring(i, j);
    if(dic.Find(word))
    {
     System.out.print(word + " ");
     bFind=true;
     i=j;
     break;
    }
   }
   if(bFind == false)
   {
    word = Sentence.substring(i, i+1);
    System.out.print(word + " ");
    i=j+1;
   }
  }
  System.out.println();
  return 1;
}
public void fileSegment(String fileName)
{
  try
  {
   BufferedReader in = new BufferedReader(
    new FileReader(fileName) );
   String s;
   while((s = in.readLine()) != null)
   {
    wordSegment(s);
   }
  }
  catch (IOException e)
  {
   System.out.println(e);
  }
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值