在实验室的时候就学习了很多分词的技术,直到工作,自己写了几个不同算法实现的分词代码。分词很简单,但做好很难!
决定在这里利用一点时间,回想一下我对分词的认识过程和算法实现,有兴趣的同志欢迎一起讨论
      英文是以词为单位的,词和词之间是靠空格隔开。而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不能很容易明白“学”、“生”两个字合起来 才表示一个词。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。我是一个学生,分词的结果是:我 是 一个 学生。
    分词是中文信息处理的起始步骤,如果不做好,后面词性标注、短语切分、句法分析、机器翻译等等都无法进行。而且分词也是搜索引擎的关键步骤。你在搜索引擎里面输入一句话,搜索引擎会先将其分词,然后用这些词的集合去搜索。
1、机械切分
  1)正向最大匹配法(由左到右的方向);
  2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
2、基于理解的分词方法(这个我还没有用心去理解过,呵呵)
3、基于统计的分词方法(这个是目前研究的重点啦,最大熵、hmm、crf(条件随机场))
去年的时候用java写过一个条件随机场的,crf是目前效果最好的,但是有个问题,对新出现的词识别不好,
但是我想了个办法,搞了个错误检测法,效果好了一点,但如果新词过多,最好还是重新训练!
中文分词