搜索引擎之中文分词(Chinese Word Segmentation)简介

word-segment 在《“全文检索(full-text search)”和“搜索引擎(search engine)”的区别和联系》中我们提及到了中文分词,以及《双数组Trie(Double Array Trie)实现原理的一点剖析》中阐述了高效率中文分词的实现。接下来让我们抛开双数组Trie的那些公式,从概念上来了解一下分词技术,因为英文分词相对比较简单,这里主要来了解的是中文分词。

英文是以词为单位的,词与词之间上靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。例如,英文句子I am a student,翻译成“我是一个学生”。计算机可以很简单的通过空格知道student是一个单词,但是“学”,“生”假如分开来,计算机是无法理解的。必须把他们合在一起才变得有意义。把中文的汉字序列切分成有意义的词,就是中文分词。再比如“研究生命”,可以划分为“研究生/命”,也可以是“研究/生命”,假如是人脑可以很明显的判断出这里后者的划分更加的确切,但是计算机要做到这一点却是相当的困难。

现有的分词算法有3种:基于字符串匹配的分词算法、基于理解的分词算法和基于统计的分词算法。

Continue reading “搜索引擎之中文分词(Chinese Word Segmentation)简介”

双数组Trie(Double Array Trie)实现原理的一点剖析

曾经有人发来邮件询问《重写了Minidx的分词模块,实现了超高速分词(2007/09/08)》的实现原理并且希望我可以公开源代码,我回复了他的邮件告之我采用了Double Array Trie来构造我的字典并发了实现的C++代码,结果没多久这位同学告诉我没看懂其中算法的原理……

Continue reading “双数组Trie(Double Array Trie)实现原理的一点剖析”