搜索引擎的中文关键字纠错系统 --文章总结

文章1,基于搜索引擎的中文关键字纠错系统--by 任腾飞 原帖:http://wenku.baidu.com/view/3bb055170b4e767f5acfcefa.html

一 概述:

1 基于搜索引擎的中文关键字纠错系统是基于当前流行的搜索引擎所设计的一个用户帮助系统,它的主要功能是发现用户使用搜索引擎在输入关键字时可能发生的错误,并给向用户推荐可能正确的关键字。纠错系统使用分词与纠错并行处理的方法,可以纠正中文输入中可能出现的选字错误,注音错误和字形错误等常见错误。

2

纠错系统主要由训练模块,纠错模块和学习模块三个部分组成。

训练模块使用一个语料库,训练成字符树的存储结构,供纠错模块查询。并为保证字符树能够完整地读入内存,首先使用 hash 的方法将语料库中的词条分类。

纠错模块通过分词,纠错和查找字符树,对用户的输入进行处理,并对可能有错误的用户输入,给出系统的推荐词条。

学习模块通过记录并学习用户的输入,自动的为系统添加用户经常查询但系统中没有的

词条,以增强系统的功能。

3

系统的输入输出:用户在对话框中输入想要查询的关键字,系统将分析用户输入的关键字,如果没有发现

错误,则输出“关键字准确”;如果系统发现在用户输入的关键字中可能出现错误,则输出“您要查找的是不是:”+系统推荐词条。

训练系统:

 

二 纠错模块:

纠错模块主要由分词,字符树查找,纠错三部分组成。用户输入查询关键字后,纠错模块首先对关键字进行分词,并对每个非单字的词条在对应的字符树中查找匹配的词条,如果没有找到匹配的词条,则认为该词条可能出现错误,对该词条进行错误纠正之后重新在对应的字符树中查找。最后,系统输出“关键字准确”或者输出系统推荐词条。

1 分词

在纠错系统中将分词与查找纠错合并在一起处理,使用递归的分词策略(图 7):

1.如果字串是一个单字,则终止对它的分词;

2.对于长度不超过系统分词词库中单个词条最大长度的字串,首先将整个字串当作一个词条,在对应的字符树中查找匹配,并尝试进行纠错;

3.如果没有找到合适的匹配,则对字串中所有长度为 2 和3 的子串在分词词库中查找匹配,如果找到匹配,则子串前面的部分和子串后面的部分(如果有)分别作为一个新的字串,回到第一步进行搜索。

图 7:递归的分词方法

2 字符树查找

字符树查找就是对于一个词条,使用注音字库,对其进行注音,然后根据在训练模块训基于搜索引擎的中文关键字纠错系统练出的字符树中根据 hash 函数(按照系统的实现,即根据首字母)找到对应的字符树,沿注音所对应路径查找是否有匹配的词条。

3 纠错

(1)纠正选字错误

选字错误是指用户输时输入了正确的拼音,但在选择拼音对应的汉字时发生了错误,例如将“澳大利亚”误为“奥大利亚”,将“炼钢”误为“练钢”。产生选字错误的主要原因是用户在输入时的不留意(“练钢”)以及某些外来语及专有名词在音译时的多样性(“奥大利亚”)。

由于系统的训练模块是按照语料库中的词条的注音来训练字符树的,因此,系统在对应的字符树中寻找到注音匹配的路径后,如果找不到汉字匹配的词条,则寻找注音匹配但汉字不匹配的词条,作为纠正选字错误后的推荐词条。例如“练钢”的注音为l-i-a-n-g-a-n-g,根据 hash 函数,在[L]对应的字符树中找到注音匹配的路径,但在这条路径对应的词条中找不到“练钢”这一词条,这时,系统认为用户的输入可能发生了选字错误,并将路径l-i-a-n-g-a-n-g 对应的词条“炼钢”。

(2)纠正注音错误

由于我国地方方言的多样性和复杂性,某些方言的发音与标准普通话相差很大,一些使用方言较多的人群很难分清某些汉字的正确注音,如把“篮球”读作 n-a-n-q-i-u,把“飞机”读成 h-u-i-j-i。针对这类错误,系统尝试对无法正确找到匹配的词条尝试对注音中容易出错的部分进行纠正,并对纠正后的注音重新查找匹配。

系统实现了的表 1 中的九个拼音字母对的相互纠错功能:

f-h n-l r-l

z-zh c-ch s-sh

an-ang en-eng in-ing

表 1:易错拼音表

例如用户输入关键字“南球”,系统注音为 n-a-n-q-i-u,并且无法在字符树中找到匹配的注音路径,因此,系统尝试将注音中出现的易错拼音“n”和“an”进行纠正,将注音分别纠正为 l-a-n-q-i-u,n-a-n-g-q-i-u 和 l-a-n-g-q-i-u,分别在对应的字符数中查找匹配的路径,在l-a-n-q-i-u对应的路径下,找到词条“篮球”返回给用户。

 

(3) 纠正字形错误

汉字是一种象形文字,很多汉字在字形上非常相近,容易混淆,例如“彬”和“杉”,“日”和“曰”,并且这些字之间字音并不相同,因此无法通过选字错误来进行纠正。因此,记忆错误,使用基于笔画或字形的输入法输入时的疏忽,或者是用上的不规范,都可能会造成字形错误。例如将“太行山”误为“大行山”,将“彬彬有礼”误为“杉杉有礼”。这种错误在常用字和非常用之间更容易发生,用户很容易将一个非常用字误为和它相近的常用字,例如将“佘山”误为“余山”。

为了纠正字形错误,首先需要建立一个形近字表。由于没有现成的字表可以利用。而形近字表的建立需要很大的精力和丰富的语言文字方面的知识。因此在系统实现时只实验性的使用了一个简单的包含以下5 对形近字的字表(表 2):

彬-杉 日-曰 余-佘

夭-天 己-已

表 2:形近字表

系统在无法正确匹配输入词条时在形近字表中查找是否有用户输入词条中出现的汉字,如果找到,则使用它替换词条中的形近字,并重新进行注音,查找匹配。例如用户输入关键字“杉杉有礼”,系统对整个词条无法找到正确的匹配,但在查找形近字表将“杉杉”改为“彬彬”之后便可以在对应的字符树中找到“彬彬有礼”作为推荐词条。

 

三 学习模块实现:

系统学习模块的主要功能是在系统的使用过程中,将一些用户频繁查询,而系统词库中没有的词汇自动的加入到系统词库中,以逐步完善系统。基于搜索引擎的中文关键字纠错系统 系统自动记录每一次用户输入的关键字,并定期使用发现频繁模式的算法(如 apriori算法[5]) ,发现关键字记录中出现次数较多的模式(即词条),并在系统的词库中搜索该词条,如果发现词条不在词库中,则将词条加入到系统的词库中,并重新训练字符树。为了避免在词库中加入没有意义的词条,在此过程中可以加入人工指导,由系统自动发现频繁模式,而在由人工考察后在决定是否加入词库。

由于系统的自动学习功能可以在后台完成,因此并不会影响纠错系统和搜索引擎的执行效率和响应速度。

 

 

posted @ 2012-10-31 12:25  唐僧吃肉  阅读(1180)  评论(0编辑  收藏  举报