中文分词技术

2025-01-30

中文分词技术(精选8篇)

中文分词技术 篇1

1 中文分词的重要性

中文分词是中文信息处理的重要的基础环节,可以从以下几点来认识[1]:首先,“词”是组成句子的基本单位,要对句子进行分析,首先得对“词”进行分析,只有在这个基础上才能谈得上进一步作其他的处理;其次,计算机有关汉语言的知识很大一部分是以机器词典(给出词的各项信息,包括句法信息,语义信息,甚至语用信息等)的形式存储的,中文信息处理系统只有在“词”的基础上进行,才可能利用这些知识。目前,有关中分分词技术的研究已经取得了很大的进展,涌现出许多的分词方法并在实际过程中取得了一定的应用成果。

2 典型分词算法及优缺点

目前采用的分词算法大体上分为三类:(1)基于字符串匹配的分词方法,如MM方法、RMM方法;(2)基于统计的分词方法,如组合度算法;(3)基于理解的分词方法,如专家系统方法、神经元网络方法。

(1)M M方法,即正向最大匹配算法,该算法的基本思想是按照文本从左至右的阅读习惯取一定长度(等于词典中最长词条中汉字的个数)的汉字串与词典中的最长词条进行比对,如果比对成功则把该汉字串作为一个词切分出来,如果在词典中匹配不到这样长度的汉字串,则去掉该汉字串的末尾一个字重新与词典中的词条进行比对,按照汉字串长度逐步减小的原则重复以上比对过程,直到匹配成功为止,这样就完成一个词的切分,然后对剩余未切分的文本重复上述一系列步骤,直到切分出语句中所有词为止。

(2)R M M方法,即逆向最大匹配算法,它的分词过程与MM方法相同,不同的是分词方向与MM正好相反。每次是从待处理文本的末尾开始处理,每次匹配不成功时去掉的是汉字串的首字。

从以上两种分词方法来看,MM法的原理简单,容易在计算机上实现。但是,据统计MM方法的错误切分率为1/169,也就是说切分精度不高,所以,该方法一般不单独使用,而是作为一种基本的方法和其它方法配合使用;RMM方法的切分精度要高一些,据统计RMM的错误切分率为1/245。但是,该方法为了查询方便,要求配备逆序的分词词典,这样的分词词典维护起来比较困难,不符合人们习惯。

(3)组合度算法,该算法大致的分词思路是根据在上下文中相邻字同时出现的概率高于一定的值时就把相邻字作为一个词看待。这个统计方法的结果反映了语言中的用词规律,对切分歧义和识别新词有良好的效果。但它也存在一些缺点,如对自然语言的处理和表示比较薄弱,经常会抽一些无用词组;对频度较低的词,永远被错误切分。

(4)专家系统方法,该方法力求从结构与功能上分离分词过程和实现分词所依赖的汉语词法知识、句法知识及语义知识,使知识库便于维护和管理。它把自动分词过程看成是自动推理过程。实现推理的方法是统一的,不论对歧义切分字段还是非歧义字段都采用同样的推理,所需的知识全部在知识库中。但该方法由于分词所依赖的常识性知识过于庞大,全面地收集整理这些常识性知识是非常困难的。

(5)神经元网络方法,该方法旨在模拟人脑的神经系统运作机制来实现一定的功能。主要是将分词知识以统一的“权重”形式表示,从而使一般分词方法中的“启发性”知识与“常识性”知识处于相同地位,知识表达简捷性和精确性使得知识的组织和利用也相当简单,但其时间复杂度较高。

以上关于专家系统和神经元网络分词方法在中文自动分词中的应用将大大提高分词的智能性,是近年来分词研究的热点也是未来中文自动分词发展的一个重要方向。

3 中文分词发展难点

目前,虽然国内外对中文分词的研究取得了很大的进展,但是还不能满足实际需要,主要表现在以下三个方面。

(1)分词算法的运行速度和精度未能达到理想的效果。目前,中文分词涉及到的应用广泛,如机器翻译、搜索引擎、文本分类、信息检索等等,由于采用的分词算法的好坏直接影响到这些信息处理系统的应用效果,所以继续在分词算法的运行速度和精度上下功夫必将带动信息处理系统整体性能的提升。

(2)对歧义切分和未登录词的识别未能达到令人满意的程度。中文分词中的歧义识别和未登录词识别对分词的速度和精度有很大的影响,目前还没有很好的办法提升歧义词和未登录词的识别精度,有待进一步有针对性地研究。

(3)至今对分词未能达成彻底统一的标准。通用的词表和统一的分词规范将对中文分词的研究起到促进作用,应该尽快做好这些基础性工作[2]。

4 结语

随着信息技术的普及,越来越多的领域涉及到中文自动分词的应用,所以中文分词技术的进步将影响到众多领域的发展。虽然现在已有清华、中科院等几十家国内外专业机构在从事中文分词技术的研究并已取得了较好的成果,但是关于分词的几大难点还没有完全突破,需要综合多个学科的研究成果作为基础,可以考虑把专家系统方法和神经元网络方法结合起来,或者从中文书面书写规则出发寻求好的办法[3~4]。相信随着科学技术的发展以及我们的共同努力,中文分词技术的难点会得到彻底的解决。

参考文献

[1]苗夺谦,卫志华.中文文本信息处理的原理与应用[M].北京:清华大学出版社,2007.

[2]张春霞,郝永天.汉语自动分词的研究现状及困难[J].系统仿真报,2005,17(1):74~102.

[3]刘晓英.汉语自动分词的发展趋势[J].高校图书馆工作,2005,4:133~176.

[4]文庭孝,邱均平,侯经川.汉语自动分词研究展望[J].数字图书馆,2004,7:204~245.

中文分词技术 篇2

这篇文章主要介绍了python实现中文分词FMM算法,实例分析了Python基于FMM算法进行中文分词的实现方法,涉及Python针对文件、字符串及正则匹配操作的相关技巧,需要的朋友可以参考下

本文实例讲述了python实现中文分词FMM算法,分享给大家供大家参考。具体分析如下:

FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n-1个...然后继续下去。假如n个词在词典中出现,那么从n+1位置继续找下去,直到句子结束。

import re def PreProcess(sentence,edcode=“utf-8”): sentence = sentence.decode(edcode) sentence=re.sub(u“[。,,!……!”‘::??、|“”‘‘;]“,” “,sentence) return sentence def FMM(sentence,diction,result = [],maxwordLength = 4,edcode=”utf-8“): i = 0 sentence = PreProcess(sentence,edcode) length = len(sentence) while i < length: # find the ascii wordtempi=itok=sentence[i:i+1]while re.search(”[0-9A-Za-z-+#@_.]{1}“,tok)None: i= i+1 tok=sentence[i:i+1]if i-tempi>0: result.append(sentence[tempi:i].lower.encode(edcode)) # find chinese wordleft = len(sentence[i:])if left == 1: ”“”go to 4 step over the FMM“”“ ”“”should we add the last one? Yes, if not blank“”“ if sentence[i:] ” “: result.append(sentence[i:].encode(edcode)) return resultm = min(left,maxwordLength)for j in xrange(m,0,-1): leftword = sentence[i:j+i].encode(edcode)# print leftword.decode(edcode) if LookUp(leftword,diction): # find the left word in dictionary # it‘s the right one i = j+i result.append(leftword) break elif j == 1: ”“”only one word, add into result, if not blank“”“ if leftword.decode(edcode) ” “:result.append(leftword) i = i+1 else: continue return result def LookUp(word,dictionary): if dictionary.has_key(word):return True return False def ConvertGBKtoUTF(sentence): return sentence.decode(‘gbk‘).encode(‘utf-8‘)dictions = {} dictions[”ab“] = 1 dictions[”cd“] = 2 dictions[”abc“] = 1 dictions[”ss“] = 1 dictions[ConvertGBKtoUTF(”好的“)] = 1 dictions[ConvertGBKtoUTF(”真的“)] = 1 sentence = ”asdfa好的是这样吗vasdiw呀真的daf dasfiw asid是吗?“ s = FMM(ConvertGBKtoUTF(sentence),dictions) for i in s: print i.decode(”utf-8“)test = open(”test.txt“,”r“) for line in test: s = FMM(CovertGBKtoUTF(line),dictions) for i in s:print i.decode(”utf-8“)

运行结果如下:

asdfa

好的

vasdiw

真的

daf

dasfiw

asid

中文分词技术 篇3

随着信息技术的飞速发展, 海量数据挖掘成为众多应用技术的基石。据统计, 在信息领域中80%以上的信息是以语言文字为载体的, 文本挖掘便成为数据挖掘的焦点。由于自然语言文本中包含多层次的歧义 (词汇、句法、语义、语用等) , 这给文本挖掘带来很多困难。自然语言处理 (Natural Language Processing简称NLP) 的主要目标是实现计算机对语言的自动理解, 即通过句子表层的词语符号串识别句子的句法结构, 判断成分之间的语义关系, 最终弄清句子表达的意思。国外在自然语言处理方面的研究起步较早, 但中文信息处理技术是我国的专长, 同时中文信息处理的首要难题是中文分词[1]。计算机自然语言处理是按词汇进行分析的, 中文文本处理较之西方语言最大的区别就在于语句的词汇之间没有明显的分词界限, 因此中文分词的效果直接影响中文自然语言处理和文本挖掘的准确性。

本文通过研究现有中文分词技术方法, 提出一种面向中文文本未登录领域词自动识别的中文分词算法。首先, 利用已有的中文自然语言处理技术对中文文本进行自动分词, 并用改良的串频统计方法自动识别出语料中的领域词汇, 进一步在保证常用词标注正确的前提下提高未登录词的自动识别精度, 有效提高了中文分词的正确性和准确性。

二、中文分词技术概述

中文自然语言处理中的首要问题主要在于中文分词, 目前的中文分词技术大致可分为三大类[1]:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

1.基于字符串匹配的分词方法。这种方法又叫做机械分词方法, 它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配, 若在词典中找到某个字符串, 则匹配成功 (识别出一个词) 。按照扫描方向的不同, 串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况, 可以分为最大 (最长) 匹配和最小 (最短) 匹配;按照是否与词性标注过程相结合, 又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下: (1) 正向最大匹配法 (由左到右的方向) ; (2) 逆向最大匹配法 (由右到左的方向) ; (3) 最少切分 (使每一句中切出的词数最小) 。

还可以将上述各种方法相互组合, 例如, 可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点, 正向最小匹配和逆向最小匹配一般很少使用。一般说来, 逆向匹配的切分精度略高于正向匹配, 遇到的歧义现象也较少。统计结果表明, 单纯使用正向最大匹配的错误率为1/169, 单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统, 都是把机械分词作为一种初分手段, 还需通过利用各种其它的语言信息来进一步提高切分的准确率。

2.基于理解的分词方法。这种分词方法是通过让计算机模拟人对句子的理解, 达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析, 利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下, 分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断, 即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性, 难以将各种语言信息组织成机器可直接读取的形式, 因此目前基于理解的分词系统还处在试验阶段。

3.基于统计的分词方法。从形式上看, 词是稳定的字的组合, 因此在上下文中, 相邻的字同时出现的次数越多, 就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计, 计算它们的互现信息。当紧密程度高于某一个阈值时, 便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计, 不需要切分词典, 因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性, 会经常抽出一些共现频度高、但并不是词的常用字组, 例如“这一”、“之一”、“有的”、“我的”、“许多的”等, 并且对常用词的识别精度差, 时空开销大。

到底哪种分词算法的准确度更高, 目前并无定论。对于任何一个成熟的分词系统来说, 不可能单独依靠某一种算法来实现, 都需要综合不同的算法。通常基于统计的分词方法的生词识别精度较高, 但由于其是无词典分词法, 对常用词的切分反而不理想。鉴于汉语分词牵涉到汉语分词、未定义词识别、词性标注以及语言特例等多个因素, 大多数系统缺乏统一的处理方法, 往往采用松散耦合的模块组合方式, 最终模型并不能准确有效地表达千差万别的语言现象, 而中科院的自动分词系统ICTCLAS采用了层叠隐马尔可夫模型 (Hierarchical Hidden Markov Model) , 将汉语词法分析的所有环节都统一到了一个完整的理论框架中, 获得较好的总体效果。

因此, 本文首先使用ICTCLAS汉语分词工具对文本进行基本切分, 再通过一种改良的串频统计算法对未登录的复合名词进行识别, 从而在保证常用词标注正确的前提下进一步保证文本中未登录领域词的识别与切分。

三、使用ICTCLAS进行初步分词

中国科学院计算技术研究所在多年研究工作积累的基础上, 研制出的汉语词法分析系统ICTCLAS (Institute of Computing Technology, Chinese Lexical Analysis System) , 结合了多种分词算法, 分词速度单机996KB/s, 分词精度98.45%, 目前已经升级到了ICTCLAS 5.0, 是一个相当理想的汉语初步分词工具。

以下通过摘自凤凰网资讯的一篇文章, 来测试和演示ICTCLAS的分词结果:

“猪流感疫情全球蔓延

据新华社电中国疾控中心病毒病所所长李德新昨日表示, 中国具备对人感染“A (H1N1) 型流感” (此前称猪流感) 病例的检测、诊断能力, 一旦中国出现疑似人感染猪流感病例, 24小时以内就可以确诊。

李德新说, 尽管中国目前还没有出现人感染猪流感病毒, 但已掌握病毒序列情况, 并可以采取一些检测方法确诊病例, 根据这种方法, 从疑似到确认病例, 需要24小时左右的时间。

据悉, 目前中国还没从墨西哥、美国或世界卫生组织得到活病毒, 美国疾控中心正在开发用于病毒核酸检测的试剂, 该试剂将在近几天内送到中国, 这将有助于中国进行人感染猪流感的病例诊断。”

经ICTCLAS分词, 可得到如下结果:

“猪/n流感/n疫情/n全球/n蔓延/vi

据/p新华社/nt电/n中国/ns疾/ag控/v中心/n病毒/n病/n所/q所长/n李德/nsf新/a昨日/t表示/v, /wd中国/ns具备/v对/p人/n感染/v“/wyz A/x (/wkz H1N1/x) /wky型/k流感/n”/wyy (/wkz此前/t称/v猪/n流感/n) /wky病例/n的/ude1检测/vn、/wn诊断/vn能力/n, /wd一旦/c中国/ns出现/v疑/vg似/vg人/n感染/v猪/n流感/n病例/n, /wd 24/m小时/n以内/f就/d可以/v确诊/v。/wj

李德/nsf新说/n, /wd尽管/c中国/ns目前/t还/d没有/d出现/v人/n感染/v猪/n流感/n病毒/n, /wd但/c已/d掌握/v病毒/n序列/n情况/n, /wd并/cc可以/v采取/v一些/mq检测/vn方法/n确诊/v病例/n, /wd根据/p这种/r方法/n, /wd从/p疑/vg似/vg到/v确认/v病例/n, /wd需要/v 24/m小时/n左右/m的/ude1时间/n。/wj

据悉/v, /wd目前/t中国/ns还/d没/d从/p墨西哥/nsf、/wn美国/nsf或/c世界/n卫生/an组织/v得到/v活/a病毒/n, /wd美国/nsf疾/ag控/v中心/n正在/d开发/v用于/v病毒/n核酸/n检测/vn的/ude1试剂/n, /wd该/rz试剂/n将/d在/p近/a几/m天/qt内/f送/v到/v中国/ns, /wd这/rzv将/d有助于/v中国/ns进行/vx人/n感染/v猪/n流感/n的/ude1病例/n诊断/vn。/wj”

可以看出该分词软件的分词准确度很高, 这样在对文章准确分词之后, 我们就可以保证常用词识别的正确性, 不致出现诸如“这一”、“我的”之类由于互现频度高导致的错误切分和标注。

然而, 基于词典的分词方法对未在词典中出现的新词尤其是合成名词的识别能力有限, 如“猪流感”在文中多次出现, 但自动分词系统仍将其分为“猪/n流感n”两个词, 不利于未登录领域词的发现和切分, 切分准确度存在偏差。

四、基于串频统计的未登录词发现算法

面向处理无约束的, 领域无关的普通文本, 文本中新鲜概念和领域知识的正确切分尤为重要, 这就需要分词工具能自动识别文本中的未登录领域词。国内外关于领域关键词识别的研究主要采用统计方法[2,3,4,5,6,7,8,9,10]。一篇文章的领域关键词通常会在文中多次出现, 并且常以一些合成名词的方式出现, 串频统计[1]正是最理想的发掘方法, 由于领域合成词常由名词串构成, 我们只统计文中名词的共现度。基于以上考虑, 我们在ICTCLAS分词基础上加入名词的串频统计算法, 进一步精确划分出领域关键词。

我们通过统计名词串在全文的共现频度, 将大于某一阀值的名词串修正为一个领域名词, 来重新切分合成名词。以下是本文提出的面向全文的串频统计的未登录词切分修正算法的思想:

计算各句话中所有长度大于1的标注为名词 (/n) 的名词串在全文中的出现次数, 并根据串频和串长对每个这样的名词串进行加权, 加权函数为W=F×L3 (F为串频, 即汉字串在上下文中出现的次数;L为串长, 即名词串中所含名词的个数) 。权值超过给定阈值的名词串将作为系统自动识别出来的合成词存入临时领域词库中, 留待之后进行分词的修正。

(一) 名词串全文频度的计算方法。

(1) 外散列表。为了迅速地计算当前句子的所有名词串在文中出现的次数, 需要将句中的名词转换存入外散列表中。采用外散列表的数据结构可以大幅度缩短名词串频度的统计时间, 以保证重新分词的速度。在国标GB2312-80中, 每个区有94个汉字, 这些汉字的位码就是1到94, 散列表设立95个入口, 对于一级汉字, 位码就是它的散列函数值, 而所有的二级汉字共用一个入口95。先按词的首字进行散列, 如遇冲突考虑该词的第二个汉字, 以此类推。每个桶中的数据是一个序对 (句号, 词号) , 句号是该词所在的句子在文中的序号, 词号指该词在所在句子中的位置, 即排在第几个词。 (句号, 词号) 序对唯一地确定了一个词在文中的相应位置, 若该词在文中多次出现, 则将不同的序对连缀起来构成一个位置链表。 (2) 串频的计算。当欲计算某个名词串的频度时, 不必将该名词串与文中的每句话逐个匹配, 只需计算串中各个名词的位置链表的邻接位置序列的个数即可。例如:上文对应的散列表中“猪”的位置链为 (1, 1) → (2, 30) → (2, 47) → (3, 11) → (4, 50) , “流感”的位置链为 (1, 2) → (2, 25) → (2, 31) → (2, 48) → (3, 12) → (4, 51) , 则“猪”和“流感”共有五个邻接位置序列: (1, 1) - (1, 2) , (2, 30) - (2, 31) , (2, 47) - (2, 48) , (3, 11) - (3, 12) , (4, 50) - (4, 51) , 于是名词串“猪流感”的频度为5。

(二) 名词串权值的估算方法。

由于汉语分词中有长词优先的规律, 因此一个名词串在当前文本中是否能作为一个合成词除了决定于它在文中的频度以外, 还取决于它的词长。为此, 设定名词串的成词可能性权值W=F×L3, 上文已提到, F为名词串的频次, L是串中名词的个数。这是一个经验函数, 比如, 上例中“猪流感”的权值计算为5×23=40。

定义1:若名词串S是由名词串T分裂而得的子串, 且S的频度不大于T的权值, 则称T完全覆盖了S。例如:“天地人大”在文中出现3次, 权值为24, “天地”也只出现3次, 称“天地人大”完全覆盖其子串“天地”。

(三) 抽词。

每个不被任何其它名词串完全覆盖且权值超过某个给定阈值D (例如:16) 的名词串被视为领域合成词, 将该名词串及其位置序列和权值存入领域词库之中, 领域词库中的词在重新分词结束后自动清除。

(四) 修正分词。

将领域词库的词按权值降序排列, 构成一个词链。然后按逐词遍历算法对全文修正切分:第一步:设立指针指向词链首;第二步:若指针为空则转第六步;第三步:根据指针所指的词的位置序列依次找到文中其所在的句子;第四步:若相应位置的名词串未被标记则匹配合并该串并标注为领域名词, 若相应位置上的名词串已标记为领域名词则不做任何修改;第五步:指针指向词链中下一个词, 转第二步;第六步:算法结束。

五、实验结果及分析

经过以上中文分词和领域词修正的算法的处理, 文本中的每个句子都已按词性进行了标注和切分。该改良算法不依赖领域词典, 对于领域无关或未知领域的普通中文文本都能实现较精准的切分。根据以上的算法, 我们并分别对互联网上随机抽取的100篇文章进行了中文切分实验, 然后与人工分词结果相对照, 得到正确率为98.63%, 较ICTCLAS初步分词提高0.18个百分点。对抽取结果进行分析之后发现:本算法极大提高了由合成名词构成的未登录领域词的识别度, 但由于本算法仅针对名词共现度做串频统计, 例如“范跑跑”、“微博”等此类含有其他词性的未登录词修正切分的能力则有限, 这也是影响本分词算法精度最大的因素。另外, 对权值和阈值的设置仍需经大规模语料库训练做进一步调整, 该算法仍有进一步改进优化空间。

六、总结与展望

本文提出一种自动切分未登录领域词的中文分词方法, 该方法在ICTCLAS分词工具对语料进行初分的基础上, 利用改良的串频统计技术对未登录词汇进行识别和切分修正, 提高了领域无关的普通中文文本的分词精度, 取得了较好的实验结果。该方法独立于具体领域, 移植性好, 精准度高。为进一步进行各种诸如中文检索、知识管理、数据挖掘等智能处理奠定了基石, 具有广阔的研究空间和重要的研究意义。

参考文献

[1]刘开瑛.中文文本自动分词和标注[M].商务印书馆.

[2]Agirre E, Ansa O, Hovy E, Martinez D.Enriching very large ontologies using the WWW.In:Staab S, Maedche A, eds.Proc.of the ECAI2004 Workshop on Ontology Learning.2000.http://ol2000.aifb.unikarlsruhe.de/

[3]Xu F, Kurz D, Piskorski J, Schmeier S.A domain adaptive approach to automatic acquisition of domain relevant terms and their relations with bootstrapping.In:Proc.of the LREC 2002.http://www.dfki.uni-sb.de/~feiyu/LREC_TermExtraction_final.pdf.

[4]Missikoff M, Navigli R, Velardi P.Integrated approach for web ontology learning and engineering.IEEE Computer, 2002, 35 (11) :60-63.

[5]Navigli R, Velardi P, Gangemi A.Ontology learning and its application to automated terminology translation.IEEE Intelligent Systems, 2003, 18 (1) :22-31.

[6]Alexander Maedche, Steffen Staab.Discovering conceptual relations from text.

[7]Ljiljana Stojanovic, Nenad Stojanovic, Raphael Volz.Migrating data-intensive Web Sites into the Semantic Web.

[8]陈文亮, 朱靖波, 姚天顺.基于Bootstrapping的领域词汇自动获取[C].第7届全国计算语言学联合学术会议论文集 (JSCL 2003) .北京:清华大学出版社, 2003:67-72.

[9]郑家恒, 卢娇丽.关键词抽取方法的研究[J].计算机工程, 2005, 31 (9) :194-196.

中文分词技术 篇4

信息化的发展和网络的普及,使得人们对信息处理的方式也发生了变革。要让计算机能够自动地处理信息就必须借助分词技术让计算机理解自然语言。在自然语言信息处理中,中文与英文存在着巨大的不同。在英文中,空格作为自然分隔符去分辨单词,而在中文中,字、句、段能够以明显的分隔符来分辨,可是对于词是没有这样的分隔符的。然而词是中文里最小的能够独立存在的有意义的成分,所以对于中文来说,将词确定下来是理解自然语言的第一步。特别是现如今中文搜索引擎技术的飞速发展,使得中文分词技术显得越发的重要。目前使用最广泛的方法是基于词典的分词方法,这种方法核心是词典的匹配算法。本文就是基于Lucene平台的加入设计改进的MMSEG算法的中文分词技术方法。

1 基于Lucene的中文分词

作为开源组织Apache Jakarta的成员项目,Lucene是一个用Java语言实现的成熟的、自由的、开源的软件项目,是一个高性能的、可扩展的信息检索工具集,可以方便快捷地融入到应用程序中,以增加索引和搜索功能[2,3,4]。

文本分词技术在Lucene中起着及其重要的作用,因为要对需要索引和检索的文档进行分词处理,Lucene的核心包和扩展包对中文分词采取类似英文的机械式切分方法,这些方法由于完全不考虑中文独特的语法和语义,所以很难保证用户在中文环境下对全文检索的需求。因此,在Lucene的架构上,选择了加入MMSEG算法,以此来设计并实现了可以适用于日常应用的中文词典分词模块,其中设计的中文歧义消除模块能够有效地屏蔽大部分的机器歧义字符串,从中提取出正确的词汇。

2 中文分词技术

对于计算机来说,中文自动分词就是清楚,合理地将中文的词与词相分割开,达到明确文字所要表达的意思,当前汉语信息处理的主要任务已从“字处理”转移到“词处理”。因此,词的切分问题是首先需要解决的,除此之外汉语中的歧义也是自动分词过程中不可避免的现象。在自动分词过程中具有两种或两种以上切分形式的字段称为歧义字段,只有歧义字段才会产生错误切分。因此想要提高中文分词的速度和准确率,选择一个能快速准确切分词和消除歧义现象的算法是极其重要的。

根据是否利用机器可读词典和统计信息可将汉语自动分词方法分为三大类:(1)基于词典的方法;(2)基于统计的方法;(3)混合方法[5]。在这其中应用范围最广,最流行的当属基于词典的方法。这种算法是在切分时用待切分的字符串去匹配词典中的字条,如果匹配成功则切分成一个词。目前最常用的基于词典的字符串匹配方法,主要包括最大匹配、全切分和最短路径法。

3 中文分词算法

3.1 FFM算法

最大匹配算法是基于字符串匹配的分词方法,按照一定的策略将待处理的字符串与足够大的机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功,切出该词,否则进行其他相关处理。按照扫描方向的不同,字符串匹配可以分为正向匹配和逆向匹配;按照长度不同优先匹配的情况,可以分为最大匹配和最小匹配。在此主要介绍最大匹配算法。最大匹配算法能够保证将词典中存在的最长复合词切分出来,之所以称为最大匹配,就是要求每一个句子的切分结果中词的总数最少。最大匹配算法原理简单且易于实现,能保证最长复合词从词典中切分出来[6,7]。

这里提到的有两种最大匹配法:(1)简单最大匹配算法;(2)复杂最大匹配算法。

简单最大匹配法算法的基本思想:(1)取待切分汉语句的m个字符作为匹配字段,其中m为机器可读词典中最长词条的汉字个数;(2)查找机器可读词典并进行匹配若能匹配则将这个匹配字段作为一个词切分出来,若不能匹配则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段进行再次匹配,重复以上过程直到切分出所有词为止。

最大匹配算法的要求就是,每一句的切分结果中词的总数最少,即取出与最长词条相符合的词。例如在“中国人民大学大学生”中,在词典中匹配,这句话可能被切分为“中国/人民/大学/大学生”。而按照最大匹配算法,则是“中国人民大学/大学生”。可是,随之带来的是忽略了词条中的子词,“中国/人民/大学/大学生”。同时产生的歧义无法消除,如由于自然语言的二义,例如“棒球拍卖完了”,既能切分为“棒球/拍卖/完了”,也可以切分为“棒球拍/卖/完了”。另外由于机器自动分词产生的歧义,如“他只会诊断一般的疾病”,切分为“他/只会/诊断/一般/的/疾病”,也可以切分为“他/只/会诊/断/一般/的/疾病”。

复杂最大匹配算法的基本思想:从字句的开头开始分词,如果存在有歧义的分词(例如,_C1_是一个单词,但是_C1C2_也是一个单词),就继续搜寻以_C1_或者_C1C2_开头的三词块。例如以下存在的可能的三词块:

其中第三个词块的长度是最长的,则在第三个词块中的第一个单词_C1C2_就被认为是正确的分词。在此基础上继续重复这个过程从汉字C3开始,一直到字句的最后一个词被识别。

3.2 改进的FMM算法,即MMSEG算法

MMSEG算法实现了前面所说的最大匹配算法的简单和复杂形式。更进一步实现了三个消除歧义方法,也就是为了消除之前算法所无法消除的歧义。

规则1:组合长度最大

适用于简单最大匹配法以及复杂最大匹配法,即,取最大长度的单词。例如:

“同济大学物理科学馆”,存在如下组合:

同济大学__物理__科学馆

同济大学__物理__科学__

同济大学__物__理科__

同济__大学物理__科学馆

同济__大学__物理__

应用此规则可以切分出合理的组合,选择组合长度最大的词块,然后选择这个词块的第一个词,作为切分出的第一个词,上文例子中“同济大学__物理__科学馆”中的“上海大学”,或者“同济__大学物理__科学馆”中的“上海”。

规则2:平均词语长度最大

在应用复杂最大匹配算法时,如果经过规则后任然存在超过1个最大长度的三词块,例如:

“竞技场”,存在如下组合:

竞技场__(3/1=3)

竞技__场__(3/2=1.5)

竞__技__场(3/3=1)

由于组合长度均为3,规则1无法处理。利用规则2,即选择最大平均词语长度的词块(平均词长=词组总字数/词语数量)。根据此规则,选择平均词语长度为3的“竞技场”。

规则3:词语长度的变化率最小

当出现例如这样的词汇“研究生命起源”,其组合如下:

研究生__命__起源sqrt(((3-2)2+(1-2)2+(2-2)2))/3)=0.8165

研究__生命__起源sqrt(((2-2)2+(2-2)2+(2-2)2))/3)=0

规则1无法过滤,因为组合长度均为6,经过规则2也无法过滤,因为平均词语长度均为6/3=2。此时,利用规则3(词语长度变化率)来切分,也就是标准差公式。

标准差,在概率统计中最常使用作为统计分布程度上的测量。标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。

根据此条规则,由标准差公式算出的结果得出,选择第二条词块。

规则4:单字词词频自然对数累加计算

例如“设施和服务”,存在如下的组合:

设施__和__服务

设施__和服__务

设__施__和__服务

设__施__和服__务

经过规则1后,剩下两个词块无法过滤:

设施__和__服务

设施__和服__务

而经过规则2和规则3的计算后,所得结果依然相同,此时利用规则4(单字词词频自然对数累加计算),比较单个字词的使用频率,选择更常见的那个。同时,这里选择自然对数计算而不是直接累加,是因为即使词频一样,实际的效果也是不同的。例如,两个词块中都存在2个单字词,其词频分别为3和7,另一种情况为5和5,直接的累加结果均为10,这样就无法区分。而对其取自然对数再相加,得到结果为(ln5+ln5)>(ln3+ln7)。

4 中文分词模块的设计与实现

4.1 词典和数据结构

本文测试词典源自于网络上开源的词典,包含约2万个以上的词条,一定程度上保证了测试的完整性和准确性。存储词典的数据结构为Hash Map,其时间复杂度为O(1)。

测试词典的词条长度的分布如图1所示。

由于词条长度大于7的比例过小,为了分词的准确性,特此省略7字长度以上的词条。

4.2 分词模块系统框架

分词模块系统框架如图2所示。

4.2.1 分词预处理

首先预处理阶段,利用显式(空格,分段符等)和隐式的切分标记(标点符号、数字、ASCII字符以及出现频率高、构词能力差的单字词、数词+单字常用量词模式)将待分析的文本切分成短的汉字串。

4.2.2 分词流程

分词的基本流程如图3所示,其中切分的过程包括对FFM和MMSEG算法的选择。在词条切分之后进行歧义的过滤,此时就需要MMSEG算法中的4条规则的作用。

5 实验结果

测试的文章段落来自“人民日报”的网络版中一篇文章,测试的分词结果是自动分词的结果。

路遥生前有言:“写作就是燃烧自己。”为创作《平凡的世界》,他花4年时间阅读了100多部长篇小说及各类书籍,翻阅了10年间全国主要报纸,多次重返陕北故乡。创作期间,他把自己“关”起来如牛马般劳作。得知作品获茅盾文学奖时他说:很高兴,但当初只想着写,能不能获奖确实没想过。幸福在于创造的过程,而不是那个结果。凡做一件事,便把这件事看作自家生命,专注于创作过程,路遥深入“不闻掌声”之境。

分词的结果如图4所示。

根据多次实验结果的分析和测算,对比公布的现在较流行的分词算法所得结果,对比结果如表1所示。

6 结束语

随着互联网的快速发展,网络上每天会产生难以计数的信息,面对这种信息爆炸,人们要想在其中寻找合适的信息是极其困难的。由此而生的全文搜索引擎发挥着巨大的作用,而其是以匹配英文语言出现的。对于汉语的搜索检索仍然是研究的重要课题,引起了广泛的关注和研究热情,但因为概念较新,目前已发表的关于中文分词技术的文献还不多。

本文采用的基于正向最大匹配算法(FFM)结合MMSEG算法的中文分词技术通过Lucene搜索引擎架构实现的中文分词器,比其原本的中文分词模块工作效率更高,分词效果更好。因此在针对汉语的搜索方面,提出了一个更好的解决方向。同时,本系统也存在许多不足的地方,比如分词速度不够快;分词词典不够完善;对于未登陆词条的处理还不够;以及欠缺对专有名词的处理。今后,还将在自动更新词典,完善词典中数据结构方面进行完善,使匹配词条时能更快,更有效率。

参考文献

[1]Chen K J,Liu S H.Word identification for Mandarin Chinese sentences[C].Proceedings of the Fifteenth International Conference on Computational Linguistics,Nantes:COLING-92,1992.

[2]王志嘉,薛质.一种基于Lucene的中文分词的设计与测试[J].信息技术,2010(12):50-54.

[3]周敬才,胡华平,岳虹.基于Lucene全文检索系统的设计与实现[J].计算机工程与科学,2015(2):252-256.

[4]朱岸青,黄杰.基于Lucene的全文检索系统模型的研究和开发[J].暨南大学学报:自然科学与医学版,2009,30(5):504-508.

[5]龙树全,赵正文,唐华.中文分词算法概述[J].电脑知识与技术,2009,5(10):2605-2607.

[6]张春霞,郝天永.汉语自动分词的研究现状与困难[J].系统仿真学报,2005,17(1):138-143.

中文分词技术 篇5

1 交通信息检索子系统总体框架

整个交通管理检索系统包含检索模块、索引模块、信息抽取模块和本文所研究的分词模块, 分词模块为其它的模块提供支持, 信息抽取、索引建立以及信息检索都涉及相应的分词工作。信息抽取模块对需要进行信息抽取工作的数据提交分词引擎进行分词处理, 然后进行数据的提取工作, 索引模块对需要建立索引的数据提交分词模块处理后, 建立索引文件提供给检索模块使用, 检索模块根据用户或者其它部分的请求, 对请求的关键词等提交分词模块进行分词处理后进行相应的检索并返回检索结果。

2 中文分词模块的设计

2.1 切分词图

切分词图是本文使用的核心的数据结构。对于一个句子, 如果把两个汉字之间的间隔作为节点, 把一个汉语词作为连接两个节点的有向边, 那么我们就可以得到一个切分有向无环图。进行歧义切分前, 将待切分文本出现在分词词典中的每一个词用一条有向边在词图中表示, 得到文本的全切分词图。如“交通信号灯”的全切分词图如图1所示。

2.2 歧义词切分

设句子S由一系列词串w1w2...wn构成, 各个词串的联合概率P (w1w 2...wn) 决定了该句子的信息量。而将P (w1w 2...wn) 分解成条件概率的形式就为:

假设某一个词出现的概率只依赖于它之前出现的n-1个词, 即引入n-1阶马尔可夫假设, 自然语言模型称为n元模型。一元模型假设上下文无关, 没有考虑上下文的信息, 三元以上 (包括三元) 模型的使用会导致严重的数据稀疏问题, 在本文研究的交通专有领域中, 采用二元模型进行分词的建模分析, 即有:

为方便处理, 令

这样对切分文本的粗分处理就转化为: (1) 建立切分文本的全切分词图; (2) 定义词图中有向边的长度为-ln P (wi|wi-1) ; (3) 求解切分词图中使P* (S) 最小的N条路径, 即最优的N种粗分结果。求解最优N条路径本文使用了一种基于Dijkstra的扩展方法, 改进的地方在于每个节点处记录N个最短路径值, 并记录相应路径上当前节点的前驱;如果同一长度对应多条路径, 必须同时记录这些路径上当前节点的前驱;通过回溯即可求出N条路径, 即N种最优粗分结果;在对N种粗分结果进行未登录词识别后, 将未登录词按照普通词参与计算-ln P (wi|wi-1) , 得到每一种粗分结果的P* (S) , 最终P* (S) 对应最小值的粗分路径即为最终的分词结果。

2.3 基于角色标注的人名识别

(1) 角色定义。

将一个句子中的所有词划分为:人名的内部组成、上下文、其他词等, 称为中国人名的构成角色[3]。人名的部分角色构成如表1所示。

(2) 角色语料生成。

人名识别训练所用的角色语料库是在1998年1月份人民日报语料库基础上按照表1中的人名角色修正得到的。例如原始语料如下。

会/n上/f, /w我/r局/n局长/n赵国庆/nr指出/v, /w上/f半/m年/t全市/n交通/n安全/n形势/n总体/d保持/v平稳/a状态/n

相应的修正后用于人名识别的角色语料如下。

会/A上/A, /A我/A局/A局长/K赵/B国/C庆/D指出/L, /A上/A半/A年/A全市/A交通/A安全/A形势/A总体/A保持/A平稳/A状态/A。

(3) 角色标注。

假定W= (w1, w2, ..., wn) 是文本粗分后的结果, T= (t1, t2, ..., tn) 为角色序列, R是角色标注的最终结果, 则有:R=argTmax P (T|W) 。

为了减少参数空间的规模, 本文提出两个假设: (1) wi的出现只与其自身的角色ti相关。 (2) 引入上下文的相关性, 角色ti的出现与前一个单词wi-1的角色ti-1相关。则有:

使用文献[4]介绍的经典Veterbi算法得到R的最优标注结果, 然后对标注结果使用简单的模板匹配识别出人名。

2.4 基于词典的正向最大匹配地名识别

考虑到重庆市交通领域内的文本信息包含较多的重庆市地名而外省市地名较少的特点, 本文根据收集的地名及专有地名词表库采用最大正向匹配法进行地名识别, 收集的地名库中包含有82312个重庆地名, 基本上涵盖了在用的一般地名。地名识别流程图如图2所示。以“杨柳街附近出现拥堵”为例说明最大正向匹配法识别地名的过程。该句经分词粗分阶段后, 得到其中一个粗分结果为“杨柳/街/附近/出现/拥堵/”, 除地名未被识别出来外, 其他分词结果正确。采用正向最大匹配法, 检查切分碎片“杨柳”, 在地名词典库中查找, 存在以“杨柳”起始的地名, 即第一个字匹配成功;同理到第三个字均匹配成功;然后查找“杨柳街附近”是否在地名词典库中存在, 结果不存在, 由此可知能够最大匹配的是“杨柳街”, 合并切分碎片, 识别出一个地名;接着检查是否已匹配到词尾, 如果不是, 继续上述的最大匹配方法直到词尾, 否则输出地名识别结果, 此句地名识别结束。

2.5 评估选优

切分的目标是寻找句子S的一条概率乘积最大的词语序列, 亦即句子S的交叉熵最小的词语序列。对S的N-最优粗分结果进行未登录词识别后, 对于每一条识别后的切分路径, 在评估选优阶段将未登录词作为普通词参与计算相应的交叉熵, 得到交叉熵为最小值的切分路径为最终的句子切分结果。

3 实验与分析

本文实现的中文分词系统使用的词典包含180225条记录的词语表。使用的训练语料为收集的1998年1月份人民日报语料库和交通领域的语料库, 其中, 人民日报语料库包含893432个单词5347356个字符, 交通领域语料库包含近14万字。从人民日报中提取出包含有339230个字、104372个词的语料作为测试语料1;从交通领域内提取出包含有32496个字、13232个词的语料作为测试语料2, 对本分词系统分别进行在这两种测试预料下的测试, 测试结果如表2和表3所示。

表2和表3对三种切分算法做了比较。其中, F M M表示正向最大匹配分词法;I C T C L A S是中科院计算所研制的分词系统;N-Best是本文设计的对切分文本只进行N-最优路径求解的粗切分结果。实验结果表明, 在测试语料1即人民日报测试集下本文设计的分词系统的准确率和召回率没有ICTCLAS高, 而在测试语料2即交通领域内高于基于FMM分词方法和ICTCLMS, 结果证明本文设计的针对交通领域的分词方法是切实可行的。

4 结语

本文在分析交通管理领域特点的基础上, 给出了适合该领域内信息检索系统的分词方法。试验结果表明, 该系统在该领域背景下具有较高的分词准确率和召回率, 本文使用基于一阶马尔可夫模型的最小交叉熵模型进行歧义词的消解处理, 使召回率达到91.69%, 准确率达到90.45%, 证明本文设计的分词方法是有效的。

摘要:如何建立适于交通管理系统下信息检索子系统中的分词模块是提高检索性能的关键所在。本文在分析交通管理领域特点的基础上, 提出了适合交通管理领域的分词方法, 实现了适用于该领域内的分词系统。实验结果表明, 系统测试的准确率和召回率分别达到95.9%和95.1%。

关键词:中文分词,歧义切分,N最优路径,人名识别,地名识别

参考文献

[1]许嘉璐、傅永和.现代汉语词汇研究[M].广东:广东教育出版社, 2006:1~85.

[2]黄昌宁、赵海.中文分词十年回顾[J].中文信息学报, 2007, 21 (3) :8~19.

中文分词技术 篇6

智能电网信息安全关系到国家信息安全和国家安全,随着国家电网公司智能电网信息化建设,必须高度重视信息安全工作,进一步提升公司信息安全自主可控能力,防止信息外泄,因此需要对出入信息内外网以及互联网的信息内容进行过滤检查,确保敏感信息不会泄露。

目前,国家电网公司在调度网和信息内网以及信息内外网之间采用信息网络安全隔离装置进行文本数据传输和数据库访问。信息网络安全隔离装置主要用于电力信息网的不同安全区之间的隔离[1],电力信息系统在双网隔离环境下,部署在信息内外网的信息系统进行数据交换时需要严格遵守相关的管理政策和安全策略,特别是从信息内网传递到信息外网以及互联网的数据文档要进行严格管理,对于类似“规划、计划、方案”等敏感关键字的文档,应严格禁止其从内网通过信息安全隔离装置传输到外网。也就是说,对通过信息安全隔离装置进行数据传输的文档,要对其进行关键字过滤之后,再决定是否允许传输。

当前,部署在电力信息网的隔离装置没有对数据内容本身进行检查,或者仅采用简单的字符串匹配方式进行检查,需要在性能和效率上进一步提升。本文主要研究如何进一步提升关键字词过滤检查技术的性能和效率,在过滤准确率方面也进行了讨论。

1 关键词过滤问题

我们知道,英语中对关键字词进行过滤时,只需要通过空格符就能分隔单个英文单词,然后进行匹配,然而在汉语中,一句话是连接在一起的,除逗号等标点符号外,词和词之间没有标点符号进行隔开,需要进行分词(或称为切词)的操作之后,再和已定义的敏感关键词进行匹配,因此,进行关键词过滤需要考虑以下2个问题。

1)中文分词准确率问题。由于中文是一种十分复杂的语言,让计算机理解中文语言则更困难。在进行中文分词时,会涉及到诸如歧义分词带来的错误过滤检查问题,比如有如下语句:

[语句1]小方案桌上放着一本书。

假设需要过滤的敏感关键词是“方案”,[语句1]本身是合法的,按照传统关键词过滤匹配方法,[语句1]中含有“方案”敏感关键词,根据安全策略却是非法的。实际上可以将此句切分为[语句2]:

[语句2]小方案桌上放着一本书。

2)过滤带来的性能影响。在进行敏感关键字词过滤的同时,需要考虑到在频繁的数据文档传输情况下,关键字过滤带来的性能影响。

2 实现方式

2.1 相关描述

1)把不包含标点符号的中文语句记为S,语句集合记为CS,文档记为D,则:

2)过滤关键字词记为K,过滤关键字词集合记为Ck,则:

3)基础词库中每个词组定义为B,基础词库定义为Cb,基础词库的作用是用来在对S进行分词时的基础匹配,则:

2.2 构建二叉排序树

2.2.1 构建基础词库二叉排序树Tb

构建Tb的前提是需要有现成的、全面的中文词组库,这些词组是进行中文分词最基础的也是最重要的部分,需要通过手工添加删除(注:目前互联网上也可以下载一些较为全面的词库)。

二叉排序树有以下特点[2]:

1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;

2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;

3)左、右子树也分别为二叉排序树。

从二叉排序树的性质中可以看出,需要明确结点值的比较问题,即词组之间的比较依据,一般可通过词组拼音字母顺序,或者汉字编码的大小顺序进行排序,为方便论述起见,这里以拼音字母顺序对基础词库进行排序,相同拼音以4个声调作为排序依据。

先简要说明一下二叉排序树数据结构及其主要函数(见图1)。

以此构建图2所示二叉排序树示例。

2.2.2 构建过滤关键词二叉排序树Tk

同样以拼音字母顺序对过滤关键词集合Ck构建二叉排序树Tk(见图3)。

2.3 分词并检查

中文分词算法有很多种,较为常见的有基于字符串匹配分词算法、基本理解的分词算法、基于词频统计[3]的分词算法,本文采用基于字符串匹配的分词算法。

基于字符串匹配的分词算法也可称为机械分词算法,一般有以下几种方式:

1)正向最大匹配法(从左到右的方向);

2)逆向最大匹配法(从右到左的方向);

3)最少切分法(使每个语句S的切出的词数最小);

4)双向最大匹配法[4](进行正逆向2次扫描)。

根据实际需求的不同,可选择不同的分词算法,或者同时使用多种分词算法,本文以第2种算法,即逆向最大匹配法来说明中文分词过程。

假定:要检查过滤的文档为D,D中包含语句集合为CS,基础词库二叉排序树为Tb,关键字二叉排序树为Tk,分词检查过程如下:

1)从语句CS集合中取出语句S;

2)在S中的取最后N个汉字,放入词组W中(注:N初始值可自定义,一般不超过7);

3)在Tb中查找W;

4)若在Tb中未找到W,N=N-1,若N=0,转到第1步,否则转到第2步;

5)若W在Tb中找到,在Tk中继续查找W;

6)若W在Tk中未找到,N=N-1,若N=0,转到第1步,否则转到第2步;

7)若W在Tk中找到,则表示文档D存在敏感过滤关键字,分词检查结束。

其过程示意如图4所示。

在图4(a)中,第1次取“放着一本书”在Tb中查找,第2次取“着一本书”在Tb中查找,依此类推,由于未能找到词组,最后把“书”字输出,并在Tk中查找是否存在该字;在图4(b)中,第1次取了“上放着一本”,到第4次取出“一本”时,在Tb中找到有该词,检查该词在Tk中是否存在。

此算法取最大匹配值5,此值为分词词组的最大长度,实际上,这个值可根据实际情况来定义,值越大,对分词速度会有一定的影响。

2.4 过滤关键字词基本算法小结

综上所述,过滤关键字词算法可分以下几步完成:

1)构建基础词库Cb的二叉排序树Tb;

2)构建过滤关键词K的二叉排序树Tk;

3)将需要过滤检查的文档D依据标点符号将其分解为语句集合CS;

4)从语句集合CS中的取出单个语句S,依据Tb进行最大后缀匹配分词,每分出一个词在Tk中进行查找,若查找到,则标记,若未找到,继续查找;

5)根据标记结果确定文档D是否存在敏感过滤关键字词。

2.5 性能分析

从上述对分词检查的过程来看,可以将基于二叉排序树的中文分词过程分为3个部分。

1)构建Tb和Tk。构建二叉排序树Tb和Tk平均时间复杂度为O(logn),最坏时间复杂度为O(n);空间复杂度为O(1)。

2)对文档D进行简要处理后进行分词。该部分可以分为两小步:(1)进行预处理,把标点符号、空格等剔除:平均时间复杂度为O(n),空间复杂度为O(1);(2)分词:平均时间复杂度为O(n),空间复杂度为O(1)。

3)对切分后的字词在Tk中查找是否存在。在Tk中查找的平均时间复杂度为O(logn),最坏时间复杂度为O(n),空间复杂度为O(1)。

一般情况下,为增强分词检查的性能,应先预构建Tb和Tk,再对要检查的文档进行预处理后进行分词处理,所以对文档进行安全过滤的有效时间复杂度为分词时间复杂度与查找时间复杂度之和,即:O(n)+O(logn),空间复杂度为O(1)。

3 结语

本文论述的关键点主要体现在二叉排序树和中文分词。选择二叉排序树作为基础词库和关键字词的存储载体,是因为其查找时间复杂度和空间复杂度都比较令人满意。在分词方面,准确率是一个很重要的话题,本文采用的逆向最大匹配法相对其他几种字符串匹配算法来说准确率较高,但不能保证百分之百的分词准确,在性能允许的情况下,可采用多种分词方法结合,或者更复杂的分词技术处理。

参考文献

[1]刘利成.解决电力信息安全的技术措施和管理措施[J].电力安全技术,2006,8(2):8-9.

[2]顾卫杰,钱月霞.二叉排序树在动态检索中的应用研究[J].重庆电子工程职业学院学报,2010,19(3):149-151.GU Weijie,QIAN Yuexia.The Application Research on Dynamic Search Based on Binary Search Tree[J].Journal of Chongqing Vocational&Technical Institute,2010,19(3):149-151.

[3]费洪晓,康松林,朱小娟,等.基于词频统计的中文分词的研究[J].计算机工程与应用,2005(7):67-68.Fei Hongxiao,Kang Songlin,Zhu Xiaojuan,et al.Chinese Word Segmentation Research Based on Statistic the Frequency of the Word[J].Computer Engineering and Applications,2005(7):67-68.

中文分词算法研究 篇7

1 分词技术综述

1.1 全文检索技术

所谓全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。在中文文档中根据是否采用分词技术,索引项可以是字、词或词组,由此可分为基于字的全文索引和基于词的全文索引。

基于字的全文索引是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字和词有很大分别。此方法查全率较高, 但查准率较低。有时会出现令人啼笑皆非的检索结果,如检索货币单位“马克”时,会把 “马克思”检索出来。

基于词的全文索引是指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文文字则需要切分字词,以达到按词索引的目的。对中文文档进行切词, 提高分词的准确性, 抽取关键词作为索引项, 实现按词索引可以大大提高检索的准确率。

1.2 中文分词技术

中文分词与英文分词有很大的不同,对英文而言,一个单词就是一个词,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,需要人为切分。

目前国内外对于中文分词的主要研究成果分为以下几种:正向最大匹配法、反向最大匹配方法、分词与词性标注一体化方法、最佳匹配法、专家系统方法、最少分词词频选择方法、神经网络方法等[1]。

纵观众多研究成果,可以看出当前中文分词还存在一下两个基本的问题需要解决[2]:

(1)歧义问题。汉语中存在大量的歧义现象,对几个字分词可能有好多种结果。简单的分词往往会歪曲查询的真正含义。

(2)未登录词识别问题。理想的系统应该能对未登录词进行记录和识别,并通过不断整理,增强未登录词识别的能力。

2 分词算法研究

下面各节,对当前研究的分词算法进行了分析,并设计了分词原型选择实验,对当前流行分词模块进行测评和比较。

2.1 中文分词基本原理

中文分词的基本处理是针对输入文字串进行分词、过滤处理,输出中文单词、英文单词和数字串等一系列分割好的字符串。中文分词模块的输入输出如图1所示。

2.1.1 ICTCLAS模块

ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System)是由中国科学院计算技术研究所研究的基于多层隐马尔可夫模型HMM的汉语词法分析系统。HMM是一个双重随机过程,两个组成部分:①马尔可夫链:描述状态的转移,用转移概率描述;②一般随机过程:描述状态与观察序列间的关系,用观察值概率描述[4]。

基于HMM的分析系统的功能有:中文分词;词性标注;未登录词识别。

该模块包含的词典是通过统计方法建立的,对其进行了封装,以.dct格式存储。

2.1.2 最大正向匹配算法模块

最大正向匹配算法是项目中常用的分词解决方案。最大正向匹配算法模块采用机械式匹配算法的原理,通过建立词典并进行正向最大匹配,对中文进行分词。尽管最大匹配法分词是常用的解决的方案,但是无疑它存在很多明显的缺陷,这些缺陷也限制了最大匹配法在大型搜索系统中的使用频率。最大匹配法的问题有以下几点:

2.1.2.1 长度限制

由于最大匹配法必须首先设定一个匹配词长的初始值,这个长度限制是最大匹配法在效率与词长之间的一种妥协。

(1) 词长过短,长词就会被切错。例如当词长被设成5时,也就意味着它只能分出长度为5以下的词,例如当这个词为“中华人民共和国”长度为7的词时,我们只能取出其中的5个字去词典里匹配,例如“中华人民共”,显然词典里是不可能有这样的词存在的。因此我们无法下确的划分出“中华人民共和国”这样的词长大于5的词。

(2) 词长过长,效率就比较低。效率是分词算法、甚至是整个算法理论体系的关键。算法书里所有的高深的查询或排序算法都是从效率出发的,否则任何办法都可以解决分词效率低的问题。必须要在词长与效率之间进行妥协,既要求分词尽量准确,又要求词长不能太长。

2.1.2.2 掩盖分词歧义

中文是如此复杂的语言,机械的电脑是很难理解这么复杂的语言,因此它必然会带来歧义性,两个简单的例子:

(1)“有意见分歧”(正向最大匹配和逆向最大匹配结果不同)。

有意/ 见/ 分歧/,有/ 意见/ 分歧/

(2)“结合成分子时”(正向最大匹配和逆向最大匹配结果相同)。

结合/成分/子时/

由于词的歧义性使我们在使用最大匹配法分词会产生错误的结果,而且使用正向分词与逆向分词往往会产生截然不同的结果。尽管使用回溯法或计算计算词的使用频率,可以使出现歧义的可能性减少,这样的结果仍然是不可避免的。

2.2 分词模型比较实验

2.2.1 分词系统的评价准则

分词系统的最主要的工作是进行分词。对于分词而言,不仅要求所研制的软件在分词的正确率和速度方面满足一定的要求,而且要像开发大型传统软件那样,在各个阶段不断的进行评价,其目的主要是检查它的准确性和实用性,分词的评价主要有以下几个方面:

(1)分词正确率。书面汉语的文本可以看成是字符序列,分词的正确率直接影响更高一级的处理。

(2)切分速度。切分速度是指单位时间内所处理的汉字个数。在分词正确率基本满足要求的情况下,切分速度是另一个很重要的指标,特别对于算法不单一,使用了辅助手段,诸如联想,基于规则的,神经网络,专家系统等方法更应该注意这一点。通常中文信息处理的文本数量是相当大的,因此必须考虑方法是否能使系统总开销合理。

(3)功能完备性。自动分词方法除了完成分词功能外,还应具备词库增删、修改等功能。

(4)易扩充性和可维护性。这是提供数据存储和计算功能扩充要求的软件属性,包括词库的存储结构,输入/输出形式的变化等方面的扩展和完善。这项指标与系统清晰性、模块性、简单性、结构性、完备性以及自描述性等软件质量准则有直接的联系,随着开发版本的升级,需要不断提高与改进,使之适应中文信息处理的各种应用。

(5)可移植性。 可移植性是指方法能从一个计算机系统或环境转移到另一个系统或环境的容易程度。 一个好的分词方法不应该只能在一个环境下运行,而应该稍作修改便可在另一种环境下运行,使它更便于推广[5]。

本着以上几点原则,设计了分词模块测评实验。

2.2.2 实验参数

通常,我们用查全率、查准率来衡量信息检索系统的检索效率。查全率( recall ratio) 指系统在实施某检索作业时,检出相关文献的能力。查准率(precision ratio) 指系统在实施某一检索作业时,拒绝不相关文献的能力,是衡量信息检索系统精确度的尺度[6]。一般来说,查全率越高,精度越低,反之精度越高,查准率越低。由F1参数来综合查全率和查准率的结果进行比较。当然还有快速查找大量文本文件的速度和能力,例如:对单一项的查询、多个项的查询、短语查询、通配符等功能。但与分词模块直接相关的参数主要是查全率、查准率、F1参数和分词速度[7]。本实验中,也使用查全率、查准率、F1参数、分词速度几个参数来评价系统性能。公式如下:

查全率undefined

undefined

分词速度undefined

2.2.3 测试集

在实验中,选择测试集来自北京大学的《人民日报》1998年上半年的纯文本语料。共包含3,148篇文章1,673,069字。

2.3.4 实验步骤

(1)收集一个题材和体裁分布平衡的测试文本集(生语料)。

测试集的规模一般在50万至100万字次左右。

(2)编制一个分词评测软件。

软件的输入是两个文本:

①被测系统对测试集实施自动分词的输出结果。

②标准文本。

评测软件对这两个文本进行逐词对比和统计计算,然后分别输出被测系统的评测结果:查全率、查准率、F1参数、分词时间、分词速度。

2.2.5 测试算法

测试步骤如下,见图2:

(1)读取生语料,读取熟语料,进入2;

(2)是否存在下一个文件?是,进入3;否,进入12;

(3)滤掉标点,把句子分隔开,存在数组中,进入4;

(4)加载分词模块,进入5;

(5)对处理后的生语料进行分词,并记录开始时间,进入6;

(6)记录结束时间,进入7;

(7)将分词结果和熟语料对应输出,进入8;

(8)判断是否存在下一个句子,是,进入9;否,进入10;

(9)判断是否存在下一个词,是,进入11;否,进入8;

(10)计算相关参数,并进入2;

(11)在熟语料的对应句子中进行匹配,判断是否成功?是,accurate++,进入9;否,进入9;

(12)计算相关参数;

2.2.6 测试结果及分析

对测试结果进行整合得到:ICTCLAS耗时60.110s,分词速度为60.47KB/s;最大正向匹配算法进行分词,耗时25.763s,分词速度为141.09KB/s。

测评综合结果如表1所示。

对结果进行分析,可以看出最大正向匹配算法在速度上明显优于中科院ICTCLAS分词模块,但在查准率、查全率和F1参数上逊于中科院ICTCLAS分词模块。正确性比较见图3。

分析原因有以下两点:

(1)算法匹配方式:

最大正向匹配算法一般选择最长的词语进行匹配,而语料库中的熟语料并未按照最长词语进行划分。这是导致分词结果与熟语料存在一些不匹配的另一个原因。但这并不代表该算法正确率不高,而只是与语料库不完全匹配。这一点可以由人工从分词的结果中看出来。

(2)词典的质量:

最大正向匹配算法模块选用的通用词典在质量上可能与ICTCLASC存在差别。在机械式匹配算法中,词典的质量严重影响着分词的质量。所以,词典的质量可能是导致模块几个参数值下降的一个原因。因此,有必要进一步提高词典的质量。

综合分词结果来看,得到以下结论:

ICTCLAS模块在查准率、查全率、F1参数占有优势。但是,其词典存储形式不开源,不支持词典编辑,并且无法建立专业词典,功能完备性、易扩充性和可维护性上具有缺陷。在测试中发现,其稳定性不高,参数传递不精准可能会导致分词系统的分词结果出现乱码。

最大正向匹配算法在查准率、查全率等参数上测试结果逊于ICTCLAS。但其正向最大匹配算法的速度和精度上基本能够满足系统的要求。并且能够通过词典质量的进一步改进,使得分词效果得到改善。它在功能完备性、易扩充性和可维护性上优于ICTCLAS,更适用于在系统开发中的应用。

3 结束语

论文研究了当前搜索引擎技术中采用的分词技术,设计了分词模块的选择试验,比较了ICTCLAS和最大正向匹配算法模块这两种技术的优缺点。

由于是对中文自动分词技术的初步应用,所以工作还存在一些不足。比如:分词算法还存在切分歧义,切分处理技术还不能适应汉语丰富的构词变化等问题。

摘要:当前搜索引擎技术被广泛的应用,这使得全文检索技术和中文分词技术的研究逐渐深入。本论文致力于研究中文分词算法,通过实验对分词原理做出比较,对分词算法、词典对分词质量的影响做出判断和评估,并设计了分词原型比较实验,比较测评了当前流行的中文分词方式:中科院分词模块和最大正向匹配法模块。

关键词:全文检索,中文分词,查准率,查全率,F1参数

参考文献

[1]马玉春,宋涛瀚.web中中文文本分词技术研究.计算机应用,2004,24(4):134~136

[2]易丽萍,叶水生,吴喜兰.一种改进的汉语分词算法.计算机与现代化,2007,2:13~15

[3]Chien Lee-Feng.PA T-tree-based adaptive keyphrase extraction for intelligent Chinese information retrieval.Information Pro-cessing and Management,1999,35:501~521

[4]顾铮,顾平.信息抽取技术在中医研究中的应用.医学信息学,2007,20:27~29

[5]何淑芳.基于BBS文本信息的中文自动分词系统的研究.青岛:中国海洋大学,2006.

[6]张自然,金燕.知识检索与信息检索的检索效率比较.情报科学,2005,4:590~592

中文自动分词系统概述 篇8

现有的分词方法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

1 基于隐马尔科夫模型的分词

1.1 隐马模型概述

隐马尔科夫模型(Hidden Markov Model,HMM)[3]是对马尔科夫模型的一种扩展。隐马尔科夫模型的基本理论形成于20世纪60年代和70年代初期。70年代,CMU的J.K.Baker以及IBM的F.Jelinek等把隐马尔科夫模型应用于语音识别。隐马尔科夫模型在计算语言学中有着广泛的应用。例如隐马尔科夫模型在此类自动标注中的应用。

1.2 基于隐马模型的分词

原始的字串在经过原子切分、N最短路径粗切分后将生成二元切分词图,例如原始字串是“他说的确实在理”,生成的二元切分词图。如表1所示。

其中小数值代表了相临两个词之间的耦合成度,即构成更大长度词的可能性的机率,值越小说明两个词独立成词的可能性越大。在此图的基础上计算出概率最大的分词结果。最终得到最短路为(0,1,2,3,6,9,11,12),里面的数值分别对应图的下标,并形成最终结果:始##始/他/说/的/确实/在/理/末##末。

2 基于最大匹配模型的分词

2.1 词典的构建

为了提高分词的效率,根据最大匹配算法的设计要求,在设计词典时,采用首字一级索引[4]。我们在构建词典时根据词首字的区位码将其分为6768个块,每个块里的词都是同一个字开头的。在词首字排列方面我们是按照区位码的方式排列的,其实就相当是个hash表,对词的搜索就可以将词首字的内码转换为区位码,区位码作为下标就能找到相应的块,在块中再进行二分查找去匹配要找的词。词典的结构如图1所示。

2.2 算法设计

所谓“最大匹配”,就是尽可能地用最长的词来匹配句中的汉字串,从而使得切出来的词尽可能长,词的数量尽可能少。

2.2.1 算法设计原则

该模块按照如下约定进行设计:

1)不进行词性的判断,对于不能处理的词,如地名,人名,当成单字处理。

2)对输入中文文档按照规定的词表进行过滤,将句子分为词。

3)判断标点符号。

4)文件格式支持TXT.

5)为了简化系统,仅支持GBK,对于BIG5等其他编码的支持可以作为扩展功能。

2.2.2 算法设计思路

基于词典的最大匹配(MM)法则正向扫描待分析的汉字串,将待分析汉字串与一个“充分大的”机器词典中的词条进行匹配,选择机器中的最长词作为一次成功匹配。匹配的原则是以标点符号作为主要的断句手段,每一句话作为一个汉字串,扫描汉字串,用汉字串的首字作为关键字搜索词典,若在词典中找到某个字符串,与待分析字符串中的某一个字符相匹配,则匹配成功(识别出一个词),每次都把字典中长度尽可能最长的词条与句子中当前位置上的词进行匹配[5]。

具体步骤如下:

1)取待切分语句的m个字符作为匹配字段,其中m为机器可读词典中最长词条的汉字个数;

2)查找机器可读词典并进行匹配。若能匹配,则将这个匹配字段作为一个词切分出来;若不能匹配,则将这个匹配字段的最后一个字去掉,剩下的字符串作为新的匹配字段,进行再次匹配。重复以上过程,直到切分出所有词为止。

3 中文自动分词系统设计与实现

3.1 系统设计目标

汉语自动分词是目前中文信息处理中公认的难题,因为汉语自动分词是自然语言理解、机器翻译、信息检索、语言文字研究、汉语文本自动标引等研究领域中最基本的一个环节,也是中文信息自动处理的“瓶颈”。所以,要设计出一套不仅运行效率好而且分词准确率高的中文自动分词系统是很有必要的,本系统就是本着这个目标去实现的。

3.2 系统总体设计思想

影响分词系统最重要的地方是词典的构建和对文本的粗切分、分词及排歧的效果。本系统的设计就是努力完成很好的粗切分和尽量排除歧义。本系统分别实现了两种模型隐马模型和最大匹配模型。

1)基于隐马模型:

(1)在词典的构建方面:我们是在《人民日报》一个月的语料库基础上生成的,具体的构建情况后面有详细的介绍。

(2)粗切分和排歧方面:使用了N最短路径方法的粗切分模型,旨在提高召回率同时兼顾准确率。

(3)在分词方面:使用了基于类的隐马尔科夫模型,达到很好的分词效果。

2)最大匹配模型:本系统还采用了正向最大匹配模型,算法实现简单同时也达到了很好的分词效果。

3.3 系统总体框架

系统的总体框架也是分两种模型介绍的。

1)基于隐马模型:先对原始词串进行原子切分,然后在此基础上进行N-最短路径粗切分,找出前N个最符合的切分结果,生成二元切分词表,然后通过基于类的隐马分词生成分词结果[6]。分词过程如图2所示。

2)正向最大匹配模型:循环从字串取n个字符,对这n个字符用正向最大匹配算法进行分词,将分词结果追加到ResultStr字符串中,当判断取到字串尾时分词结束并输出分词结果。分词过程如图3所示。

4 结论

随着语言处理任务的不断发展,中文自动分词面临着新的挑战。本文对中文自动分词系统进行了概述。在本次中文分词系统开发的过程中,如何保存词典库里的信息并有效的读取,从而提高中文分词的效率,方便各类用户使用是开发系统的关键。

摘要:汉语自动分词是中文信息处理领域的基础课题。该系统是利用计算机对中文文章进行自动分词、识别的计算机应用系统,它包括基本的自动分词方法、歧义处理和命名实体的识别等基本模块,其各部分相互依赖,共同决定该系统的质量、价值和应用水平。该文首先对汉语分词的定义、方法、应用及困难进行了概述,后面实现了隐马尔科夫模型和最大匹配模型,最后详细介绍基于上述模型所实现的中文自动分词系统。

关键词:汉语分词,隐马尔科夫模型,最大匹配模型

参考文献

[1]李双龙.基于统计的汉语分词研究[D].北京:北京科技大学,2006.

[2]温滔.自适应歧义切分的汉语分词系统的设计与实现[D].苏州大学,2005.

[3]Lawrence R Rabiner.A tutorial on hidden Markov models and selected applications in speechrecognition.Proc of IEEE,1989,77(2):257-286.

[4]张培颖,李村合.一种中文分词词典新机制—四字哈希机制[J].微型电脑应用,2006,22(10):1-3.

[5]张春霞,郝天永.汉语自动分词的研究现状与困难[J].系统仿真学报,2005,17(1):138-143.

上一篇:报警功能下一篇:间苯三酚法