关于中文分词算法

最近在学习中文分词技术:
假设对帖子的标题进行切分,比如说:
<Title>我是一名学生</Title>
切词按照词库来切词,假设词库中有两个词:
<word>一名</word>
<word>学生</word>
采用正向最大匹配,请问大家:如何设计算法呢?

我的思路是:
(1) 切出"我是一名学生",然后在词库查询;
(2) 切出"我是一名学",然后再查;
...
(7) 切出"是一名学生",然后查询词典;
(8) 切出"是一名学",然后查询词典;
...
这样实现是不是效率太低;希望大家能给些建议,谢谢!

作者: terry_v   发布时间: 2011-06-15

我没学过中文分词技术,但还是有点想法,不知道能否帮你。
  
  采用正向匹配,然后用贪心策略解决。
  先查到“我”,词库中有,继续查“我是”,词库中没有。
  于是查“是”,词库中有,查“是一”,词库中没有。
  查“一”,词库中没有,查“一名”,词库中有,查“一名学”,词库中没有,查“学”,没有查“学生”,词库中有,完成。

  由于词库是排序好的,所以查找会很有效率。比如从查“一名”到查“一名学”,已经记录了“一名”在词库中的位置,所以可以继续从该位置开始查询。

作者: I_code   发布时间: 2011-06-15

赞一下楼上的。

现在的切词一般都是要有词库和词频的,遇到有歧义的词的时候根据词频来决定取舍。
词库的构造你可以考虑用trie树的形式,这样比较适合贪婪搜索。

另外现在的分词技术往往都是多种技术混合,正向最大匹配准确度不高。

作者: gogdizzy   发布时间: 2011-06-15