中文文本校对技术研究

2014-08-14 19:53段良涛郭曙超
电脑知识与技术 2014年19期

段良涛 郭曙超

摘要:随着信息技术的快速发展,互联网越来越朝着智能化的脚步靠近,在人机交互过程中开始越来越多的使用自然语言。那么对于输入自然语言进行校对的研究便日益变成一个非常紧迫的课题。为了能够对中文输入校对有着更加深入的认知与了解,该文对文本校对的语言模型,策略方法,设计思路给与了简单的分析研究,并设计了一个简单的文本校对系统,实现中文语句的文本校对,用于在自动问答系统和用户搜索问句的相关领域进行纠错,为用户提供更好的服务。

关键词:文本校对;问答系统;语言模型;纠错策略

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2014)19-4602-03

Research on Chinese Text Proofreading

DUAN Liang-tao1, GUO Shu-chao2

(1.School of Computer Engineering, Qingdao Technological University, Qingdao 266033, China; 2.Shandong Entry-Exit Inspection and Quarantine Bureau, Qingdao 266000, China)

Abstract: With the rapid development of information technology, the Internet is becoming more and more intelligent, and more and more people use natural language to communicate with the computer, so the research of text proofreading is becoming more and more urgent. In order to understand text proofread better, after analyze and understand the language of the text proofreading model and methods , We have designed a simple text proofreading system to proofread the text in order to sentence correction for question answer system and user‘s search, so that to provide users with better service.

Key words: text proofreading; question and answer system; language model; error correction methods

1 概述

在信息技术迅猛发展的今天,人与计算机的交互也越来越更加频繁,计算机若是能够理解自然语言,就会为计算机的智能提升到一个新的高度,同时也能够丰富和方便人们的生活。

在人们输入自然语言的同时将会不可避免出现输入的错误,这样就会给计算机理解人们的意思带来很大的障碍,所以对自然语言的文本校对就显得特别重要。

纠错功能是指对于用户输入的自然语言问句,系统在经过一系列的分析、判断和纠错后返回经过系统纠错后的问句。

纠错功能具有非常丰富的应用前景,可以广泛应用于问答系统的中文纠错,搜索引擎用户问句纠错以及其它相关人机交互的自然语言纠错中。目前国内外已经有大量的研究机构和大学都开展着对于自然语言纠错的研究。借此,该文对于自然语言的纠错在此进行简单的剖析。

2 纠错处理的结构

2.1 纠错处理的基本结构

通用的纠错处理的框架图[6]如图1所示。

图1 通用的纠错处理的框架图

2.2 模块功能分析

中文纠错主要包括两大模块:问句查错模块与字符串纠正模块。

问句查错模块:在该模块中首先对文本进行分词然后通过采用一定的语言模型,并结合相关的查错策略来定义疑错窗口,判断出可能出现错误的字符串;为下一步的纠错处理作出准备。

字符串纠正模块:经过查错分析后,定义出可能出现的错误字符串。然后通过一定的工具或者是纠错算法并配合相应的词典,对词语进行纠错,并给出最近的纠错建议。

2.3 纠错的语言模型

在中文的纠错过程中需要考虑两种语言模型,基于词的语言模型和基于字符的语言模型。

基于詞的语言模型是需要进行分词和对于分词后的词语进行词性标注,通过对于一句话进行分词后,如果其中包含错误的字的话,那么就会出现大量的散串。而后通过对于散串的处理,结合字典,进行词语纠正。

基于字符的语言模型与基于词的语言模型相比,无需进行分词处理。通过n-gram模型,基于大规模的语料库进行统计,来查找到文本中的局部可能出现的错误。而后通过上下文依存句法的分析,得到可能出现的词语错误,然后进行校正。

基于字和基于词的语言模型采用的都是n-gram语言模型,同时需要大量的语料库作为基础。不同之处在于基于词的语言模型需要进行分词,而基于字的则不需要,同时基于字比基于词的语言模型的使用人群更加广泛。

2.4 常见的查错策略

2.4.1 英文查错的策略

对于英文的查错目前主流的方法[2]有两种:查字典法和N-gram分析法。

查字典法是通过将输入的n元字符串与字典进行匹配,如果匹配不成功,则将n元字符串标注为错误。因为这种匹配采用的是一种硬性匹配,所以这种检测的方法准确率非常高,是目前较流行的方法。[5]

n-gram分析法则是在一个庞大的文本语料的统计的前提下,将输入的n元串,分析它们在n-gram表中的出现频次,如果频次过低的话则被判断为错误。

2.4.2 中文查错的策略

对于中文的查错不同于英文的查错[3],因为在中文的查错中不存在错字,只存在的是别字。目前主流的中文查错策略对比如下[1]:

表1

[\&基于规则\&基于语料库\&基于特征与学习\&主要技术\&通过一系列的规则,将正确的字符串进行捆绑,这样剩下的不能捆绑的字符串就会被认为为错误。\&通过将n元字符串进行捆扎,然后在语料库的统计下,在一定阈值的限制下,分析出是否出现错误。\&先是构建字词混淆集,而后形成候选矩阵,通过动态规划与机器学习的方法找到校对候选字串的最佳路径,将其与原来的字符串进行比较。\&优点\&实现简单,对于既定规则的错误查询准确率较高。\&通过特定领域的语料库进行训练,对特定领域的文本纠错效率较高。\&准确率比较高。特征可以多样性,根据不同应用提取特征。既可以适用局部的语言限制也适应与长距离的语言限制。\&缺点\&查错的准确率受规则所限,不能穷举所有的语言规则。\&准确率受到训练语料库的领域类型和语料库的大小的限制,并且需要进行模型优化等操作。\&算法的复杂性太高,很难满足实用的需要;同时存在数据稀疏的问题。\&]

2.5 文本校对处理的基本流程

中文纠错处理的基本流程[1]如下:

1) 首先对于用户输入的问句采用进行分词处理和词性标注;

2) 通过将分词后的词语串采用N-gram语言模型进行建模;

3) 采用N-gram方法以庞大的语料库做基础,进行错误字符的定位操作,检测到可能出错的位置;

4) 将疑错窗口中的字符再通过词性的N-gram方法进行进一步检测,如果检测为不合理,则判定为错误,定义为出错字符串;

5) 将出错字符串进行纠错处理,给出最近的相似词语,进行返回;

6) 组合成纠错后的语句返回给用户或者进行下一步处理。

2.6 文本校对模块处理示例

例如输入问句:今天的天起怎么样?

首先问句进入问句查错模块模块,在该模块中首先进行分词,这样出错的字符串“天气”便会被定义为散串“天”、“起”。然后采用基于词的语言模型和基于语料库的n-gram查错策略对散串进行二元接续关系的统计分析,在问句查错模块中定位出可能出错的字符串[天,起];

接下进入错误字符串纠正模块,将出现的字符散串组合成一个连续的字符串”天起”,根据一定的字符串纠正算法对出错的字符串”天起”进行纠正,得到最为接近的拼写纠错建议为“天气”,然后将“天气”作为纠错后的字符串进行返回。

3 纠错系统的实现

在對纠错系统有了一定的了解分析之后,我们了解到纠错常用的语言模型和相关的策略,我们接下来实现一个简单的纠错系统。

3.1 技术支持

系统语言采用java进行实现,java语言是目前比较流行的开发语言,而且其可移植性比较好。

系统采用的数据库为mysql,mysql适用于多个操作系统,开源免费,它强大的功能受到越来越多人的青睐。

系统采用的分词工具是ansj分词工具,ansj是一个免费的java中文分词工具,采用的是中科院的ictclas中文分词算法,可以用于人名的识别,地名和组织机构的名称识别,支持行业和用户自定义词典,分词准确率较高,同时可以进行词性标注。

系统采用的纠错工具为Lucene的spellchecker纠错工具。它支持中英文的纠错,对于三个字以上词语的纠错能力较强,对于两个字的词语的纠错能力较弱。

系统采用的语料库是“《人民日报》199801标注语料”,该语料库已经由人工进行词性标注和分词。

3.2 系统的功能模块设计

纠错系统的三个模块组成:疑错窗口定位,疑错窗口的词性分析,错误词语的纠错。

疑错窗口定位:对问句分词后的字符串进行n-gram分析,以语料库统计作为基础,定位可能出现的词语位置。

词性分析:分析疑错窗口中的上下文的词性接续关系,也是以语料库统计为基础,若满足一定的阈值则判断为正确,若统计结果小于一定的阈值,则定义为错误。

词语纠错:对于出现的错误,采用spellchecker工具对于定位出来的错误词语进行纠错,如果纠错成功,则返回纠错后的问句;如果没有纠错成功,则提示可能出现的错误。

3.3 系统采用的语言模型及查错策略

系统采用的语言模型是基于词的基于词的语言模型,所以需要首先进行文本的分词处理;系统采用的查错策略是基于语料库的n-gram方法对分词后的字符串进行统计分析来进行出错字符串的定位。

4 总结

本文对纠错系统进行了分析,剖析,总结出了纠错系统的常用框架,并分析了目前纠错系统中的主流方法与思想。在对纠错常见策略的掌握基础之上进行了开发实践。该文提到的纠错系统的实现方法具有一定的通用性与实用性,可以满足相关的纠错的功能,为自然语言输入纠错比如问答系统的纠错和用户搜索问句的纠错提供了一定的帮助。同时系统纠错的准确率还有待提高,需要提高分词的准确率,不断扩大语料库,还需要在语法意义上对于中文纠错进一步进行提升。

参考文献:

[1] 朱磊.自然语言处理之汉语文本自动校对[D].成都:电子科技大学,2005.

[2] 秦英.问答系统中文输入纠错技术研究[D].济南:山东大学,2012.

[3] 陈智鹏.基于统计的搜索引擎中文输入纠错技术研究[D].北京:北京邮电大学.2010.

[4] 宗成庆.统计自然语言处理[M].北京:清华大学出版社,2008.

[5] 胡晓清.网络搜索引擎中文纠错功能实例剖析[J].图书情报工作,2008(1):1-6.

[6] 吴岩.中文自动差错与人机交互纠错系统的研究与实现-简介语料中文自动校对系统[C].语言计算与基于内容的文本处理—全国第七届计算语言学联合学术会议论文集,2003.