- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于自动机的分词方法
迟呈英1,战学刚2, 姚天顺2
(1鞍山科技大学 计算机学院 辽宁 鞍山 114002,
2东北大学 信息学院 辽宁 沈阳 110004)
摘要 本文介绍一种简洁有效的快速分词方法,并通过理论分析和实验对比说明几种分词方法的效率差异,以说明我们所提出的方法的有效性。
关键词:中文信息处理,分词,顺序查找,二分查找,自动机,二叉树
分类号:TP 文献标识码
1 引言
西方语言在语句(或从句)内词汇之间存在分割符(空格),而汉语的词汇在语句中是连续排列的。因此,汉语词汇的切分(分词)在中文信息处理的许多应用领域,如机器翻译、文献检索、文献分类、文献过滤、以及词频统计等,是非常重要的第一步。
自动分词是基于字符串匹配的原理进行的。迄今为止,已经有许多文献对各种分词方法进行探讨,其着重点或为分词的速度方面,或为分词的精度方面以及分词的规范。本文主要探讨分词的速度问题,通过实验对比和理论分析,说明我们所提出的算法是有效的。
目前人们所提出的分词方法,在考虑效率问题时,通常在词典的组织方面进行某种调整,以适应相应的算法,如最大匹配法、最小匹配法、逐词遍历法、以及最佳匹配法等。这些方法中,或将词典按词条长度排序或按词频排序,其目的在于协调算法与数据结构,使之效率最高。客观地说,它们都在一定程度上提高了分词的效率。
本文所介绍的是基于词典的最大向前匹配方法。而在数据结构方面,我们则是将词典组织成自动机形式。
2 数据结构与算法
文献[1,2,3]给出了三种基于词典的最大向前匹配方法的分词算法(相应于文献编号,我们以后分别称其对应的算法为算法1、算法2、和算法3)。我们可以把算法1看作是原始算法,把算法2看作是算法1的改进,而算法3则是算法2的进一步优化。在词典的组织方面,算法2和算法3是按照正常的词典排序(即按汉字的机器内码表示排序),并辅以词条的首字索引,以标明以该字起始词条在词典中的首记录。例如,在一般的词典中,词条的形式如下图所示:
图1:一般分词词典的形式
啊 啊哈
啊呀
啊哟
阿 阿爸
阿斗
阿尔巴尼亚
阿飞
阿富汗
…
在实际存储时,可以在词尾部分删除首字。这样做不仅节省了存储空间,更重要的是缩短了字符串比较的长度。
算法2和算法3对首字的检索都是基于哈希算法;算法2对于词尾部分采用线性搜索,而算法3则采用二分搜索。采用何种搜索算法应根据所用词典中每个首字下的词条数目确定,一般词条数较小时,二者无明显差异。这是由这两种算法本身的特性决定的。实际词典中许多首字下的词条数目很大,因此,采用二分搜索法较优。我们的实验结果也证实了这一点。
算法2和算法3在词典的组织方面是一致的,即如同普通词典一样,按照汉字的内码递增排序,并以词条的首字建立哈希索引。我们可以将同一首字下的所有词条组织成一个子表结构,如下图所示。
图2:词典的逻辑结构
索引 子表
…
饱私囊
…
华
华民国
华民族
华人民共和国
…
中
…
假设:源文本 source_text=“中华人民共和国成立于1949年。”
分词结果=“中华人民共和国/成立/于/1949/年/。”
分词过程为:
从源文本 source_text中取首字head_word = “中”,并设置已切分词汇segmented_word = head_word;
从索引中查找该首字。若未找到,则暂将该字作为单字词输出;否则,将其后续字符加入临时变量tail_word =“华”;
在以“中”为首字的子表中查找包含tail_word的词条;若查到,则从source_text中取字,继续加入tail_word中,并继续在子表中查找。在此过程中,如果满足条件的词条等于当前的tail_word,则置segmented_word = head_word + tail_word;
步骤3中的查找失败时,则以当前segmented_word中的字符串作为输出结果。
算法2和算法3的处理思想是一致的,只是在上述第三步的查找中,算法2采用的是顺序查找,而算法3采用的是二分查找。
在本例中,tail_word从“华”递增到“华人民共和国”的过程中,即使不计查找过程中的比较次数,tail_word与词典中的子表项“华”字比较了1次,同“华人民共和国”比较了5次。其比较长度分别为2、4、6、8、10、12。
“华” (segmented_word = “中华”)
“华人”
“华人民”
“华人民共”
“华人民共和”
“华人民共和国” (segmented_word = “中华人民共和国”)
显然,这种比较过程存在冗余的比较操作。例如,“人”字比较了5次,其中后4次的比较是多余的。因为字符串比较所需的时间同字符串的长度成正比,对于较长的词条,这种现象尤为突出。
为了消除这种冗余操作,我们提出将词典
您可能关注的文档
最近下载
- 医院感染管理办法试题及答案.docx VIP
- 设备管理软件:IBM Maximo二次开发_(4).IBMMaximo数据库管理.docx VIP
- 工程物资供应措施.docx VIP
- 第三章:寻找新闻线索.ppt VIP
- 人教版PEP英语六年级上册Unit 1 How can I get there教案.pdf VIP
- 2025年公安局招聘警务辅助人员考试试卷[附答案].docx
- TCEEIA 558:2021工业机器人可靠性测试与评定.pdf VIP
- 职场数字素养与技能提升培训课件.pptx VIP
- SYT7415-2018 油气集输管道内衬用聚烯烃管.pdf VIP
- 生物显微镜产品技术要求.docx
文档评论(0)