汉语分词技术初探计算机科学与技术毕业论文内容摘要:

入速度,一些互现频率高的相互邻接的几个字也常常作为输入的单位,比如:“每一”、“再不”、“这就”、“也就”等。 ②检索系统,检索系统的词典 注重术语和专名,并且一些检索系统倾向于分词单位较小化。 比如,在构造倒排文档及创建索引时把“分布式计算”切成“分布式\计算”,使得无论用“分布式计算”还是用“分布式”检索,都能查到。 上述的两个实例,前者把不是词的几个字放在了一起组成了“词 ” ,而后者把是词的却切分开了。 事实上,许多中文信息处理系统,都是根据 10 自己服务目的制定适合自己需要的分词系统。 因此分词系统的通用性、适应性普遍不足,其分词结果很难采用统一的通用的分词标准来评价。 歧义识别 歧义是汉语中普遍存在的问题,因此切分歧义词也是汉语分词中的一大难题。 形式上相同的一段文字,在不同的场景或语境中,可以切分出不同的结果,有不同的含义。 ( 1)交集型歧义 对于汉字串 AJB, AJ, JB 同时成词。 例:他说的 /确实 /在理。 他说 /的确 /实在 /理。 ( 2)组合型歧义 对于汉字串 AB, A, B, AB 皆可独立成词。 例:门 /把手 /坏 /了,请 /把 /手 /拿 /开。 将来, 学生会 ( 3)混合型歧义 同时包含交集型和组合型歧义。 这些歧义有的会产生不同的分词结果,这些结果有时都有含义,这种情况就是真歧义;有时,只有一种结果是在所有真实语境中是有实在意义的。 这种情况 叫作伪歧义。 ( 4)真歧义 歧义字段在不同的语境中确实有多种分隔形式 例:地面积 这块 /地 /面积 /还真不小。 地面 /积 /了厚厚的雪。 11 ( 5)伪歧义 歧义字段单独拿出来看有歧义,但在所有真实语境中,仅有一种分隔形式可接受。 例: 挨批评 挨 /批评(√) 挨批 /评( X) 对于交集型歧义字段,真实文本中伪歧义现象远多于真歧义现象。 未登录词 在文本处理过程中,会遇到很多词典中未囊括的词语。 如:人名等。 这些不断增加的词汇没有可能和必要都加入到词典中。 所以,分词中遇到未登录词汇是不能避 免的。 例如: 实体名词和专有名词 人名:张三、李四 地名:三义庙、白洋淀 机构名:方正、联想 专业术语和新词语 专业术语:万维网、主机板 缩略词:三个代表、扫黄打非 未登录词和歧义现象是影响中文分词准确率的两大因素,两者之中,未登录词造成的影响更为严重。 在真实的文档和语料库中,专有名词和术语占了很大比例,词典在多数情况下很难包括这些词。 分词算法能否对新词进行有效识别对应用来说十分重要,目前新词识别的准确率已经成为一 12 个评价分词系统好坏的重要指标。 三、基本中文分词算法 自从 1983 年,背景航空航天大学实现了我国第一个实用性的自动分词系统到现在,国内外的研究者在中文分词领域进行了广泛的研究,提出了许多有效的算法。 (一) 中文分词算法介绍 现在最常用的中文分词系统主要采用以下 3 种算法: 基于字符串匹配的分词算法 这种方法又叫做机械分词算法,机械分词法按照一定策略将待切分字符串与机器里预先准备的词条进行匹配,然后找出一个最长的结果。 按照扫描方向的不同,串匹配分词算法可以分为正向匹配和逆向匹配。 按照不同长度优先匹配的情况,可以分为最大 (最长 )匹配和最小 (最短 )匹配;按照是否与词性标注过程 相结合,又可以分为单纯分词算法和分词与标注相结合的一体化算法。 常用的几种机械分词算法如下: ( 1)正向最大匹配法 (由左到右的方向 ); 正向最大匹配分词是基于词典的分词系统。 所谓最大匹配,就是要求每一句的分词结果中的词汇总量要最少。 正向最大匹配分词又分为增字和减字匹配法 [4]。 增字匹配法需要一种特殊的词典结构支持,能够达到较高的分词效率。 减字法的流程为:首先读入一句句子,取出标点符号,这样句子就被分成相应的若干段,然后对每一段进行词典的匹配,如果没有匹配成功就 13 从段末尾减去一个字,再进行匹配,重复上述过程,直 到匹配上某一个单词。 整句句子重复这些流程,直到句子全部分解成词汇为止。 如果事先知道词典中最长词的长度,那么在一开始的匹配中,不用将分割出来的整段语句与词典匹配,只需要以最长词的长度为最大切分单位进行切分就可以了。 ( 2)逆向最大匹配法 (由右到左的方向 ); 逆向最大匹配分词与正向最大匹配分词相反,从句子结尾开始进行分词。 ( 3)最少切分 (使每一句中切出的词数最小 )。 这种算法使每一句中切出的词数最小。 如果将上述各种方法相互组合,例如,可以将正向最大匹配算法和逆向最大匹配算法相结合来构成双向匹配法。 由于汉语单字 成词的特点,正向最小匹配和逆向最小匹配一般很少使用。 可以把机械分词作为初步的处理手段,然后再通过进一步工作提高结果的正确率。 实际使用中还可以将上述各种算法相互组合,例如,可以将正向最大匹配算法和逆向最大匹配算法结合起来构成双向匹配法。 由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。 一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。 统计结果表明 [5],单纯使用正向最大匹配的错误率为 1/169,单纯使用逆向最大匹配的错误率为 1/245。 但这种精度还远远不能满足实际的需要。 实际 使用的分词系统,都是把机械分词作为一种初分手段,然后通过利用各种其它的语言信息来进一步提高切分的准确率。 14 基于理解的分词算法 这种分词算法是通过让计算机模拟人对句子的理解,达到识别词的效果。 其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。 它通常包括三个部分:分词子系统、句法语义子系统、总控部分。 在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。 这种分词方法需要使用大量的语言知识和信息。 由于汉语语言知 识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。 基于统计的分词算法 从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。 因此字与字相邻共现的频率或概率能够较好的反映成词的可信度 [4],可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。 定义两个字的互现信息,计算两个汉字 X、 Y 的相邻共现概率。 互现信息体现了汉字之间结合关系的紧密程度。 当紧密程度高于某一个阈值时,便可认为此字组可能构成 了一个词。 这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。 但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。 它的优点在于可以发现所有的切分歧义,但是统计语言模型的精度和决策算法在很大程度上决定了解决歧义的方法,需要大量的标注语料, 15 并且分词速度也因搜索空间的增大而有所缓慢。 实际应用的统计分词系统都要使用一部基本的分词词典 (常用词词典 )进行串匹配 分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。 ( 二 ) 根据具体应用使用合适的分词算法 在实际应用中,对于某一具体的应用系统,并不是单纯使用某种分词算法就能解决问题,我们可以根据具体应用的所需满足条件使用不同的方法。 在此以中文信息检索中所用到的分词算法为例进行说明。 混合分词 对于实际应用中的中文信息检索系统来说,当弄不清楚使用哪种分词算法更好的话,可以试着合并使用多种方法,混合分词就是 一种简单且容易实现的方法,也是大型检索系统中常用的一种方法,使用混合分词方法能够涵盖更多的词汇。 混合分词的原理就是“先用专业词典进行一遍分词,再用普通词典进行一遍分词”,我们用一个实例对为何要进行两次分词进行说明。 例如,对“搜索引擎知识”这句话进行分词,如果我们的词典中含有“搜索引擎”这个词,那么这句话的切分结果就是“搜索引擎\知识”。 如果词典中没有“搜索引擎”这个词,而只含有“搜索”,“引擎”,“知识 ” 这三个词,那么这句话的切分结果就是“搜索\引擎\知识”。 因此我们可以得到这样一个结论,对同一文本进行切 分,如果使用的词典不同,会导致不同的分词 16 结果。 显然,如果用第一种方法分词,当一个用户想要查找包含“搜索”这个关键字的相关资源时,他就不会搜索到结果。 同理,假设检索系统不对用户输入的词进行切分,如果用第二种方法分词,当一个用户想要查找包含“搜索引擎”这个关键字的相关资源时,同样也找不到结果。 所以,只进行一遍分词必然有一定得局限性,如果采用两遍、甚至多遍分词,便会解决上述问题。 对于上面这个例子,我们采取组织两个词典的措施:一个为专业词典,一个为普通词典。 其中,专业词典放置一些比较专业的词组,比如名人人名、专有名 词、地点名、机构名等,普通词典就是我们常 用的词组。 那么我们可以将“搜索引擎”放入专业词典,将“搜索 ” 、“引擎 ” 放入普通词典。 先用专业词典进行一遍分词,再用普通词典进行一遍分词,最后将结果合并到一起,那么结果如“搜索引擎\搜索\引擎\知识”。 这样既满足了查询“搜索引擎”的要求,又满足了查询“搜索”的要求。 据了解 [6],百度的分词采取了至少两个词典,一个是普通词典,一个是专用词典。 而且是专用词典先切分,然后将剩余的片断交由普通词典来切分。 一般专业的搜索引擎对分词速度要求要达到 1M/ s 以上,因此为了提高处理速 度,百度的普通词典切分采用双向最大匹配算法,这种分词算法舍弃了一定得精度来达到极快的切分速度。 因为对于搜索引擎来说,在查询切分和文档切分时采用相同的分词算法,如果有一些文档切分是分词是错误,在查询切分时也产生相同的切分错误。 那么即使两次切分阶段错误,但最后相同错误却使匹配成功,使得仍然可以正确检索到结果。 17 基于字的切分法 现实中,无论一个词典所包含的词组有多么齐全,其还是包含不了一些新出现的词组,所以有些词在没有更新新词的词典中是分不出来的,尤其在如今的互联网中,新词每天都在出现,数量更是每天都在增长。 想对这些分不出来的新词进行处理,就需要采用多元切分的混合分词方法。 一元分词和二元分词是比较流行的非词典式分词方法。 一元分词就是将“ ABCDE” 切分成“ A\ B\ C\ D\ E”,这个例子中,就是将一个词拆成一个个独立的字,这称之为一元分词。 同样,二元分词就是将“ ABCDE” 切分成“ AB\ BC\ CD\ DE”,在这个例子中,就是将一个词拆成两两相连的词。 在实际应用中,对分不出来的新词我们也可以不分词,比如将“ ABCDE” 切分成“ ABCDE”,这样,我们就较好的保持了新词的完整性。 那么,在实际的应用中,我们就可以把 三种分词方法全部利用上,以求达到最好的效果。 如下一个词条“ ABCDEFGHIJ”,假设这个词条首先通过词典分割成“ ABCDE\ FGH\ IJ”。 假设 FGH 与 IJ 是出现在词典中的字条,ABCDE 是分不出来的词, 那么对 ABCDE 进行三遍混合分词, 最终结果便为“ A\ B\ C\ D\ E\ AB\ BC\ CD\ DE\ ABCDE\ FGH\ IJ”。 四、中文分词词典 词典是中文分词技术中重要组成部分,其实词典就是各种词的集合,词典告诉计算机什么样的才是一个词,程序分词时自动与词典进行对比。 18 (一) 词典的索引 使用索引来组 织数量庞大的文件是一种高效的方法。 目前在各种中文处理系统中常用于组织词典的索引方法主要有两种:一种是 Hash 索引、一种是 Tile 索引树。 Hash 索引 Hash 函数是一个映像,其将关键字的集合映射到某个地址的集合。 用Hash 表的方法构造词典就是将关键字与表项的存储位置建立一个对应的函数关系。 以首字 Hash 词典机制的原理为例,据汉字机内码的编码规律可知,我们就可以通过一对一映射的 Hash 函数实现词首字的快速查找。 根据 Hash函数的定义可知, Hash 函数一般都无法避免冲突,所以通常还要有相应的冲突处理方法, 因此对于词组中的剩余字串最快的只能通过二分查找来进行查找。 我们的思想是基于 Hash 索引的词典机制就是构造一种 Hash 函数来计算词语的 Hash 值,将 Hash 值相同的词组放入一个通常称之为“桶 ”的 集合内。 匹配时先计算待查词的 Hash 值,得到首字的存储位置,然后再进入相应的 Hash 桶内再进行二分查找。 Trie 树 键树 [7]又称数字查找树。 它是一棵度 =2 的树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。 例如,若关键字是数值,则结点中只包含一个数位;若关键字是英文单词,则结点中只包含 一个英文字母。 键树中每个结点的最大度 d 和关键字的“基”有关,若关键字是英文单词,则 d=27,若关键字是数值,则 d=11。 键树的深度 h 则 19 取决于关键字中字符或数位的个数。 若以树的多重链表表示键树,则树。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。