`
Hooopo
  • 浏览: 335140 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数学之美 系列二 -- 谈谈中文分词

阅读更多




谈谈中文分词
----- 统计语言模型在中文处理中的一个应用

上回我们谈到利用统计语言模型进行语言处理,由于模型是建立在词的基础上的,对于中日韩等语言,首先需要进行分词。例如把句子 “中国航天官员应邀到美国与太空总署官员开会。” 

分成一串词:
中国 / 航天 / 官员 / 应邀 / 到 / 美国 / 与 / 太空 / 总署 / 官员 / 开会。

最容易想到的,也是最简单的分词办法就是查字典。这种方法最早是由北京航天航空大学的梁南元教授提出的。

用 “查字典” 法,其实就是我们把一个句子从左向右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如 “上海大学”)就找最长的词匹配,遇到不认识的字串就分割成单字词,于是简单的分词就完成了。这种简单的分词方法完全能处理上面例子中的句子。八十年代,哈工大的王晓龙博士把它理论化,发展成最少词数的分词理论,即一句话应该分成数量最少的词串。这种方法一个明显的不足是当遇到有二义性 (有双重理解意思)的分割时就无能为力了。比如,对短语 “发展中国家” 正确的分割是“发展-中-国家”,而从左向右查字典的办法会将它分割成“发展-中国-家”,显然是错了。另外,并非所有的最长匹配都一定是正确的。比如“上海大学城书店”的正确分词应该是 “上海-大学城-书店,” 而不是 “上海大学-城-书店”。

九十年代以前,海内外不少学者试图用一些文法规则来解决分词的二义性问题,都不是很成功。90年前后,清华大学的郭进博士用统计语言模型成功解决分词二义性问题,将汉语分词的错误率降低了一个数量级。

利用统计语言模型分词的方法,可以用几个数学公式简单概括如下:
我们假定一个句子S可以有几种分词方法,为了简单起见我们假定有以下三种:
A1, A2, A3, ..., Ak,
B1, B2, B3, ..., Bm
C1, C2, C3, ..., Cn

其中,A1, A2, B1, B2, C1, C2 等等都是汉语的词。那么最好的一种分词方法应该保证分完词后这个句子出现的概率最大。也就是说如果 A1,A2,..., Ak 是最好的分法,那么 (P 表示概率):
P (A1, A2, A3, ..., Ak) 〉 P (B1, B2, B3, ..., Bm), 并且
P (A1, A2, A3, ..., Ak) 〉 P(C1, C2, C3, ..., Cn)
因此,只要我们利用上回提到的统计语言模型计算出每种分词后句子出现的概率,并找出其中概率最大的,我们就能够找到最好的分词方法。

当然,这里面有一个实现的技巧。如果我们穷举所有可能的分词方法并计算出每种可能性下句子的概率,那么计算量是相当大的。因此,我们可以把它看成是一个动态规划(Dynamic Programming) 的问题,并利用 “维特比”(Viterbi) 算法快速地找到最佳分词。

在清华大学的郭进博士以后,海内外不少学者利用统计的方法,进一步完善中文分词。其中值得一提的是清华大学孙茂松教授和香港科技大学吴德凯教授的工作。

需要指出的是,语言学家对词语的定义不完全相同。比如说 “北京大学”,有人认为是一个词,而有人认为该分成两个词。一个折中的解决办法是在分词的同时,找到复合词的嵌套结构。在上面的例子中,如果一句话包含“北京大学”四个字,那么先把它当成一个四字词,然后再进一步找出细分词 “北京” 和 “大学”。这种方法是最早是郭进在 “Computational Linguistics” (《计算机语言学》)杂志上发表的,以后不少系统采用这种方法。

一般来讲,根据不同应用,汉语分词的颗粒度大小应该不同。比如,在机器翻译中,颗粒度应该大一些,“北京大学”就不能被分成两个词。而在语音识别中,“北京大学”一般是被分成两个词。因此,不同的应用,应该有不同的分词系统。Google 的葛显平博士和朱安博士,专门为搜索设计和实现了自己的分词系统。

也许你想不到,中文分词的方法也被应用到英语处理,主要是手写体识别中。因为在识别手写体时,单词之间的空格就不很清楚了。中文分词方法可以帮助判别英语单词的边界。其实,语言处理的许多数学方法通用的和具体的语言无关。在 Google 内,我们在设计语言处理的算法时,都会考虑它是否能很容易地适用于各种自然语言。这样,我们才能有效地支持上百种语言的搜索。

对中文分词有兴趣的读者,可以阅读以下文献:

1. 梁南元 
书面汉语自动分词系统 
http://www.touchwrite.com/demo/LiangNanyuan-JCIP-1987.pdf

2. 郭进
统计语言模型和汉语音字转换的一些新结果 
http://www.touchwrite.com/demo/GuoJin-JCIP-1993.pdf

3. 郭进
Critical Tokenization and its Properties 
http://acl.ldc.upenn.edu/J/J97/J97-4004.pdf

4. 孙茂松
Chinese word segmentation without using lexicon and hand-crafted training data
http://portal.acm.org/citation.cfm?coll=GUIDE&dl=GUIDE&id=980775

分享到:
评论
1 楼 全冠清 2010-09-02  
然后呢????

相关推荐

    课程设计 - 基于Qt的中文分词系统.zip

    课程设计 - 基于Qt的中文分词系统.zip课程设计 - 基于Qt的中文分词系统.zip 课程设计 - 基于Qt的中文分词系统.zip课程设计 - 基于Qt的中文分词系统.zip 课程设计 - 基于Qt的中文分词系统.zip课程设计 - 基于Qt的中文...

    7.17.1系列Elasticsearch的elasticsearch-analysis-ik分词器

    适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...

    数学之美系列完整版.docx

    数学之美系列完整版是由吴军,Google研究员编写的一系列关于数学在自然语言处理和信息检索中的应用。这系列文章涵盖了统计语言模型、中文分词、隐含马尔科夫模型、信息论、图论、网络爬虫、有限状态机、信息指纹、...

    基于java的开发源码-中文分词工具包 smallseg.zip

    基于java的开发源码-中文分词工具包 smallseg.zip 基于java的开发源码-中文分词工具包 smallseg.zip 基于java的开发源码-中文分词工具包 smallseg.zip 基于java的开发源码-中文分词工具包 smallseg.zip 基于java的...

    ik-analyzer-8.3.0分词插件.zip

    中文分词是将连续的汉字序列切分成具有语义的独立单元(如词语)的过程。由于中文没有明显的词边界,这使得分词成为自然语言处理中的核心问题。ik-analyzer通过词典和动态算法相结合的方式,能够识别出各种复杂语境...

    盘古分词-开源中文分词组件词典-词典

    盘古分词是一款开源的中文分词组件,其主要任务是将连续的汉字序列切分成具有语义的词语,这是自然语言处理中的基础步骤。在中文文本处理中,由于汉字没有明显的空格来划分单词,因此分词显得尤为重要。分词的准确性...

    elasticsearch-ik中文分词器7.6.2.zip

    **Elasticsearch 7.6.2 中文分词器详解** Elasticsearch 是一个流行的开源全文搜索引擎,它提供了一种高效、灵活的方式来存储、搜索和分析大量数据。在处理中文文档时,为了实现准确的搜索和匹配,我们需要使用特定...

    搜索引擎关键技术---分词

    在中文信息处理领域,分词作为基础且关键的技术之一,对于搜索引擎等自然语言处理应用至关重要。本文将围绕一篇研究文章《由字构词——中文分词新方法》展开讨论,深入解析其背后的理论与实践意义。 #### 二、“由...

    数学之美系列完整版.doc

    【数学之美系列】是由Google研究员吴军撰写的一系列文章,主要探讨了数学在信息处理、自然语言处理(NLP)和搜索引擎技术中的应用。该系列文章涵盖了多个关键知识点,包括统计语言模型、中文分词、隐含马尔可夫模型...

    基于百度云的自然语言处理-分词-示例

    分词过程通常会涉及到中文的断句问题,因为中文没有明显的空格分隔,这使得分词算法需要具备理解和识别词语边界的能力。 词法分析是自然语言处理的另一个关键环节,它不仅包括分词,还包括词性的标注。词性标注是指...

    论文--一种新的中文分词词典结构--全哈希词典

    - **研究背景与意义**:汉语自动分词是汉语信息处理的关键技术之一,广泛应用于中文全文检索、中文自动全文翻译、中文文语转换等多个领域。分词准确性和速度直接影响着后续的信息处理效果。 - **研究现状**:目前...

    中文分词-哈工大软件学院中文信息处理刘秉权

    中文分词是自然语言处理领域中的基础性工作,尤其在中国这样一个使用复杂汉字的语言环境中,它的意义尤为显著。哈工大软件学院在中文信息处理方面有着深厚的底蕴和卓越的研究成果,为这个领域的进步做出了重要贡献。...

    Lucene中文分词组件 JE-Analysis 1.5.1

    //采用正向最大匹配的中文分词算法,相当于分词粒度等于0 MMAnalyzer analyzer = new MMAnalyzer(); //参数为分词粒度:当字数等于或超过该参数,且能成词,该词就被切分出来 MMAnalyzer analyzer = new ...

    elasticsearch-analysis-pinyin-7.4.0 es拼音分词器7.4.0

    为此,Elasticsearch提供了多种分词器,其中elasticsearch-analysis-pinyin-7.4.0就是专门针对中文处理的拼音分词器,它将汉字转换为拼音,以提高中文搜索的准确性和便利性。 这个插件的核心功能在于将中文字符转化...

    elasticsearch-analysis-ik 7.10.0 分词器

    在中文环境中,这个过程尤为重要,因为中文句子由多个汉字组成,而每个汉字本身并不构成完整的语义单位。Elasticsearch-analysis-ik 是一个专为 Elasticsearch 设计的中文分词插件,它基于 Lucene 的 IK 分词器,...

    中文词库-分词算法必备

    中文词库与分词算法是自然语言处理领域的关键技术之一,对于文本理解、信息检索、机器翻译等应用具有重要意义。通过深入理解和运用加权训练、BP算法等方法,我们可以构建更加智能、高效的中文处理系统,为现代社会的...

    中英文分词组件--CSharp分词

    中英文分词组件。完全C#托管代码编写,独立开发。 技术特点 ========= 1. 识别率接近90%。 虽然和专业分词系统相比有一定的差距,但对于搜索引擎等小型分词需求而言足够了。 2. 多元歧义自动识别。 对于前后...

    自然语言处理-中文分词

    中文分词是自然语言处理中的基础步骤,因为中文句子没有明显的空格来区分词汇,因此需要通过特定算法将连续的汉字序列切分成一个个有意义的词汇,这一过程就被称为中文分词。 在中文分词技术中,有三种常见的方法:...

    分词-词性标注-词典-中文语料库.zip

    《中文自然语言处理:分词、词性标注与词典构建》 中文自然语言处理(NLP)是信息技术领域中的重要研究方向,特别是在文本分析、信息检索和智能对话系统中起到关键作用。在这个领域,"分词"、"词性标注"以及"词典...

    elasticsearch-analysis-ik-7.7.1 分词器下载

    在处理中文文本时,由于中文的特殊性(如词语边界不明显),需要借助特定的分词器来对文本进行预处理。"elasticsearch-analysis-ik"就是一款专为Elasticsearch设计的中文分词插件,其7.7.1版本是针对Elasticsearch ...

Global site tag (gtag.js) - Google Analytics