基于拼音索引的中文模糊匹配算法
- 格式:pdf
- 大小:294.47 KB
- 文档页数:5
使用网络搜索引擎计算汉语词汇的语义相似度高国强;黄吕威;陈丰钰【摘要】Similarity computation of Chinese words is a key problem in Chinese information processing. It measures semantic similarity between Chinese words using the information returned by web search engines. First,implement a model named WebPMI which computes similarity using page counts,and then,describe another model named CODC which analyzes semantic similarity using text snippets. Final-ly,present the algorithm based on the two models. Experimental results show that this algorithm outperforms all the existing web-based semantic similarity measures for Chinese,and is close to the traditional semantic similarity measures using lexicon.%汉字词语的语义相似度计算是中文信息处理中的一个关键问题。
文中利用网络搜索引擎提供的信息来计算汉语词对的语义相似性。
首先通过程序访问搜索引擎,获取汉字词汇的搜索结果数,并依此实现了相似度计算模型WebPMI;然后描述了根据查询返回的文本片段进行语义相关性分析的模型CODC;最后,结合这个两个模型,给出了文中算法的伪代码。
lookup的模糊运用什么是lookup?在计算机科学领域,lookup是指根据关键词或条件在数据库或数据结构中查找并返回相关信息的过程。
lookup操作可以应用在各种场景中,例如在搜索引擎中查找相关网页、在数据库中查询特定的数据记录等。
lookup操作通常需要一个索引来提高查找效率,索引可以是一个数据结构,它存储了关键词和对应数据的映射关系。
通过使用索引,可以在常数时间内(O(1))查找到所需的信息,而不需要遍历整个数据库。
lookup的模糊运用lookup操作通常是精确匹配的,即需要提供准确的关键词或条件来进行查找。
然而,在某些情况下,我们可能需要进行模糊查找,即在给定的关键词或条件不完全匹配的情况下,仍然能够找到相关的信息。
模糊查找可以应用在很多实际场景中,例如在搜索引擎中输入关键词的拼写错误时,仍然能够返回相关的搜索结果;在数据库中查询姓氏时,允许输入部分姓氏的拼音或笔画数来进行模糊匹配等。
下面我们将介绍一些常见的模糊查找算法和技术。
1. 正则表达式正则表达式是一种强大的模糊查找工具,它可以通过定义一些特定的规则来匹配字符串。
正则表达式可以用于查找和替换操作,常见的用途包括在文本编辑器中查找和替换文本、在编程语言中进行模式匹配等。
例如,我们可以使用正则表达式来查找所有以”cat”开头的单词:import retext = "I have a cat, but I like dogs more."pattern = r"\bcat\w*\b"matches = re.findall(pattern, text)print(matches) # 输出: ['cat']在上述代码中,\bcat\w*\b是一个正则表达式,它表示匹配以”cat”开头的单词。
re.findall()函数可以返回所有匹配的结果。
正则表达式的语法非常灵活,可以根据需要定义各种规则来进行模糊查找。
中文模糊匹配分词标注算法中文分词标注算法是自然语言处理中的一项重要技术,它可以将中文文本按照词语的语义进行切分和标注,为后续的文本分析和语义理解提供基础。
本文将介绍中文分词标注算法的原理、常用方法以及应用场景。
我们需要了解中文分词的概念。
中文是一种没有明确的词语边界的语言,因此在自然语言处理中,需要将连续的中文字符序列切分成有意义的词语。
中文分词的目标是找出文本中的词语,并为每个词语标注其词性和其他语义信息。
中文分词标注算法的原理是基于统计和规则的方法。
统计方法通过建立大规模的语料库,利用词频、概率等统计特征对词语进行切分和标注。
常用的统计方法包括隐马尔可夫模型(Hidden Markov Model,HMM)、最大熵模型(Maximum Entropy Model,MEM)和条件随机场(Conditional Random Field,CRF)等。
隐马尔可夫模型是一种常用的序列标注模型,它将分词和标注任务看作是一个序列标注问题。
模型的输入是一个由字符组成的序列,输出是对应的词语序列及其词性标注。
隐马尔可夫模型通过训练语料库中的词语序列和其对应的词性标注,学习词语之间的转移概率和字符到词语的发射概率,从而对新的文本进行分词和标注。
最大熵模型是一种基于信息论的统计模型,它通过最大化熵值来选择最合适的词语切分和标注方式。
最大熵模型将分词和标注问题转化为一个优化问题,通过最大化模型的似然函数来确定最优的词语切分和标注。
条件随机场是一种概率图模型,它能够对给定的输入序列和输出序列进行联合建模。
条件随机场综合考虑了整个序列的上下文信息,通过学习输入序列和输出序列之间的条件概率分布,实现对文本的准确切分和标注。
除了统计方法,规则方法也常用于中文分词标注。
规则方法通过人工定义一系列规则和规则模板,根据词语的语法和语义特征进行切分和标注。
规则方法的优点是可以根据具体任务和领域进行定制化,但缺点是需要耗费大量人力和时间进行规则的定义和调整。
术语模糊匹配导出精准匹配提取术语:模糊匹配导出与精准匹配提取一、模糊匹配导出在信息检索和数据处理领域,模糊匹配导出是一种常见的技术。
它指的是在输入内容与数据库或文档进行比对时,不要求完全一致,而是允许一定的差异或相似度。
这种方法能够更全面地检索相关信息,因此在大数据分析、搜索引擎优化等方面有着广泛的应用。
1. 模糊匹配概述模糊匹配的核心思想是允许输入内容与目标进行部分匹配,以便找到更多相关信息。
在实际应用中,模糊匹配可以通过编辑距离、相似度算法等技术来实现。
编辑距离是衡量两个字符串之间的相似程度,常用的有Levenshtein距离、Hamming距离等。
相似度算法则可以通过计算词语、短语或句子之间的相似度来实现模糊匹配。
2. 模糊匹配应用模糊匹配广泛应用于搜索引擎、拼写检查、语音识别、推荐系统等领域。
在搜索引擎中,用户输入的关键词可能存在拼写错误或同义词,通过模糊匹配技术能够更准确地给出搜索结果。
在拼写检查和语音识别中,模糊匹配可以帮助准确识别用户输入的信息。
而在推荐系统中,模糊匹配能够更全面地推荐相关内容,提高用户体验。
3. 模糊匹配的优势相比于精确匹配,模糊匹配有着更广泛的适用性。
它能够容忍输入信息的一定误差或变化,从而在实际应用中更具灵活性。
模糊匹配能够帮助用户发现他们可能没有意识到的相关信息,提高信息检索的全面性和准确性。
二、精准匹配提取与模糊匹配相对的是精准匹配提取,它要求输入信息与目标完全一致或高度相似。
在一些需要高度准确性的领域,如医学诊断、法律文书、工程设计等,精准匹配提取技术非常重要。
1. 精准匹配提取概述精准匹配提取的核心思想是确保输入内容与目标完全匹配或高度一致。
在实际应用中,精准匹配可以通过关键词匹配、正则表达式等技术来实现。
关键词匹配是指将输入内容与目标进行逐字比对,确保每个关键词都能匹配上。
而正则表达式则可以根据特定模式来提取符合要求的信息。
2. 精准匹配提取应用精准匹配提取在许多领域都有着重要的应用价值。
模糊匹配算法
到目前为止,模糊匹配作为一种较为有用的文本处理技术被广泛应用于我们的日常生
活中。
它的基本思想是利用松散的匹配算法,尽可能地接近用户指定的要求或目标。
有了
模糊匹配技术,简化字符串的精确匹配查询变得更加轻松,提高了文本检索的效率,也节
省了开发者的大量精力。
如今,不管是搜索引擎还是大型检索系统,它们都使用模糊匹配
技术来加强搜索结果。
然而,由于在文本数据样本中,语言表达方式存在较大的差异以及大量的无效空文本,模糊匹配技术在效果上受到一定程度的影响。
为了解决这个问题,有专家开发出一种称为“全文模糊匹配”的新技术,该技术的特点在于,几乎可以实现文本的基本全文检索,也
就是说模糊搜索可以实现更多样化的搜索和更多种类的搜索,从而提高查询的效率。
同时,为了提高模糊匹配的准确度,也有一些算法可以用来改进模糊匹配效果,比如,贝叶斯置信度模型、近似字符串匹配算法和字符串相似度算法等。
这些算法在某些特定处
理过程中都可以提供高精度的匹配结果。
最后,由于模糊匹配的算法处理耗时,使用模糊匹配可能会导致一定难以接受的性能
降低。
因此,模糊匹配技术不光需要从算法性能上去优化,同时需要提供一系列基于硬件
结构上的优化。
在这个过程中,合理使用缓存技术,适当增加处理芯片的频率,以及性能
集成度会进一步提高处理效果。
总而言之,模糊匹配一直是文本处理技术中一个高度重视的话题,其有效的实现对于
提高文本搜索效率尤为关键。
借助模糊匹配的强大的文本处理能力,搜索引擎可以较精确
地更快速地呈现用户查询的结果,为用户提供更加精准的服务。
拼音输入法中的模糊音识别与处理研究随着智能手机、平板电脑等移动设备的普及和网络技术的发展,拼音输入法已经成为我们日常生活和工作中不可或缺的工具。
在使用拼音输入法时,我们经常会遇到一个问题,就是当我们输入一个汉字的拼音时,拼音输入法有时无法准确识别我们的拼音,而是识别成同音或类似拼音的汉字。
这种现象被称为模糊音。
究竟是什么原因导致拼音输入法存在模糊音现象呢?如何有效地解决这一问题呢?本文将对此进行探讨和研究。
一、模糊音的定义模糊音是指输入拼音时,因为同音或类音的拼音在语音中发生了交叉或重叠,导致拼音输入法无法确定用户输入的拼音具体对应哪个汉字,进而出现歧义的现象。
例如,“zhi”这个拼音对应了很多汉字,如“知”、“织”、“直”等等,如果我们输入“zhi”这个拼音时,拼音输入法无法确定我们究竟是要输入哪个汉字,就会出现模糊音的情况。
二、模糊音的原因模糊音的存在主要是因为拼音的发音和语音存在交叉或重叠的情况,而导致了同音或类音的拼音无法确定对应哪个汉字。
具体的原因包括但不限于以下几个方面:1、汉字本身的异读字。
例如,字母“z”对应的汉字有“子”、“自”、“字”等,这些汉字虽然读音相似,但含义却完全不同。
如果用户输入“zi”这个拼音时,拼音输入法就需要根据上下文来判断用户具体想要输入的是哪个汉字,而由此就可能出现模糊音的情况。
2、同音字。
例如,“xiang”这个拼音对应了非常多的汉字,如“相”、“想”、“象”等等,这些汉字的读音非常相似,容易造成拼音输入法的混淆,从而出现模糊音的情况。
3、领域特定词汇。
各个领域都有其特定的词汇,这些词汇在普通的拼音输入法中不一定被准确地收录和识别,从而导致模糊音的出现。
例如,在医学领域中,“xue”这个拼音除了指血液外,还可以指血管、血脉等,如果拼音输入法没有收录这些领域特定词汇,就容易出现模糊音。
三、模糊音的解决解决模糊音的问题,首先需要建立一套准确的拼音输入法模型。
中文句子中的模糊字符串匹配摘要:一、模糊字符串匹配的概念与背景1.定义模糊字符串2.背景与意义二、中文句子中的模糊字符串匹配方法1.传统的字符串匹配方法2.基于词性标注的匹配方法3.基于词汇的匹配方法4.基于机器学习的匹配方法三、模糊字符串匹配在中文自然语言处理中的应用1.中文分词2.语义角色标注3.命名实体识别四、未来发展趋势与挑战1.结合深度学习的方法2.处理未登录词问题3.提高匹配效率与准确率正文:中文句子中的模糊字符串匹配是自然语言处理领域中的一个重要研究方向。
模糊字符串是指具有不确定性的字符串,如“某人”、“某个地方”等。
在中文自然语言处理任务中,处理模糊字符串对于提高系统的准确性和鲁棒性具有重要意义。
本文将介绍中文句子中的模糊字符串匹配方法及其在自然语言处理中的应用。
一、模糊字符串匹配的概念与背景模糊字符串匹配是指在一定范围内寻找与给定字符串相似的字符串的过程。
在中文自然语言处理中,模糊字符串广泛存在于词汇、句子和篇章中。
为了更好地理解和处理中文文本,研究模糊字符串匹配方法具有重要的实际意义。
二、中文句子中的模糊字符串匹配方法传统的字符串匹配方法主要采用简单的字符匹配,如编辑距离、Levenshtein 距离等。
但这些方法对于模糊字符串的处理能力较弱。
为了解决这一问题,研究者们提出了基于词性标注、词汇和机器学习的匹配方法。
1.基于词性标注的匹配方法:通过分析句子中词的词性,将词性信息引入匹配过程,提高匹配的准确性。
例如,将名词与名词进行匹配,动词与动词进行匹配。
2.基于词汇的匹配方法:通过构建词汇表,将词汇表中的词汇与句子中的词进行匹配。
这种方法可以有效地处理一词多义和未登录词问题。
例如,通过词干提取、词形还原等方法将词汇进行规范化,再进行匹配。
3.基于机器学习的匹配方法:通过训练分类器,实现对模糊字符串的自动匹配。
例如,使用支持向量机(SVM)、神经网络等模型进行匹配。
这些方法可以自动学习文本的特征表示,提高匹配的准确性和泛化能力。
汉语拼音的模糊查询vbaVBA是Visual Basic for Applications的缩写,是一种在Microsoft Office应用程序中编写宏的编程语言。
在这篇文章中,我们将讨论如何使用VBA编写一个汉语拼音的模糊查询功能。
首先,我们需要一个包含汉字和对应拼音的数据表。
假设我们已经有了一个名为“汉字拼音表”的Excel表格,其中包含两列数据,一列是汉字,另一列是对应的拼音。
接下来,我们需要创建一个用户界面,以便用户输入模糊查询的拼音。
我们可以使用UserForm来实现这个界面。
在VBA编辑器中,选择“插入”>“用户窗体”,然后设计一个简单的用户窗体,包含一个文本框和一个按钮。
在用户点击按钮时,我们将获取文本框中的输入,并与汉字拼音表中的拼音进行比对。
我们可以使用Excel的自动过滤功能来实现这个比对。
首先,我们需要定义一个变量来存储用户输入的拼音。
然后,我们可以使用VBA代码将该拼音应用于汉字拼音表的拼音列,以过滤出匹配的结果。
下面是一个示例代码,演示了如何实现这个功能:```vbaSub FuzzyQuery()Dim inputPinyin As StringDim pinyinRange As RangeDim filterRange As Range' 获取用户输入的拼音inputPinyin = UserForm1.TextBox1.Value' 设置拼音范围为汉字拼音表中的拼音列Set pinyinRange = Sheets('汉字拼音表').Range('B:B')' 清除之前的筛选结果Sheets('汉字拼音表').AutoFilterMode = False' 应用拼音过滤器pinyinRange.AutoFilter Field:=1, Criteria1:='*' & inputPinyin & '*', Operator:=xlAnd' 获取过滤后的结果Set filterRange =pinyinRange.SpecialCells(xlCellTypeVisible)' 输出匹配的汉字For Each cell In filterRangeDebug.Print cell.Offset(0, -1).ValueNext cell' 清除筛选Sheets('汉字拼音表').AutoFilterMode = FalseEnd Sub```在这个示例代码中,我们首先获取了用户输入的拼音,并将其存储在变量`inputPinyin`中。
在开发各类应⽤管理系统中,⼀般都要实现各种查询功能,如何准确、快速查找到符合条件的记录,是实现各种查询功能的重点。
系统的实际开发过程中,查询功能⼀般都是通过对字符进⾏⽐较、判断等⽅法来实现。
我们开发⼀个⼈事管理系统中过程中,系统要具有新的查询⽅式,即只要知道⼀个⼈姓名的读⾳,并不知道每个字的具体写法,通过检索数据库,就能把所有符合这个读⾳的记录内容全部显⽰出来。
由于汉字存在着⼤量的同⾳字,采⽤常⽤的字符⽐较法,如查找⼀个名叫“李晓军”的⼈,数据库中存在的叫“李⼩君”的数据就不能查到,利⽤常⽤的查询⽅法实现不了同⾳字的查询功能。
为了解决同⾳字的模糊查询问题,笔者借⽤WINDOWS系统下的输⼊法⽣成器,将系统中的拼⾳输⼊法字典库,⽣成了⼀个拼⾳查询字典库,利⽤这个拼⾳查询字典库,在使⽤VFP数据库管理系统编写的⼈事管理系统中,轻松实现了按语⾳进⾏模糊查询功能,具体思路如下: ⼀、⾸先要⽣成⼀个拼⾳字典查询数据库 选择WINDOWS系统的开始—程序—附件—输⼊法⽣成器,进⼊输⼊法⽣成器窗⼝,使⽤⿏标点击逆转换的页框,点击打开⽂件按钮,选中硬盘WINDOWS\SYSTEM⽂件夹下的WINPY.MB⽂件,在码表原⽂件中输⼊C:\WINPY.TXT,输⼊完毕后点击逆转换,此时系统对全拼字典库进⾏转换,最后将⽣成⼀个纯⽂本⽂件,利⽤这个纯⽂本⽂件编写⼀段⼩程序即可⽣成⼀个拼⾳字典查询数据库。
⼆、进⼊VFP系统,编写⼀段⽣成程序命令为ZH.PRG 程序中的内容如下所列: CREA TABL B1 (NR C(60),HZ C(2),PY1 C(12),PY2 C(12))&&创建⼀个临时数据库 USE B1 &&打开⽣成的数据库 APPE FROM C:\WINPY.TXT SDF &&将利⽤输⼊法⽣成器⽣成的字典码⽂件WINPY.TXT⽂件内容追加到数据库中 DELE FOR ASC(SUBS(NR,3,1)) >=128 &&在数据库中删除全部词组内容,只留下单字 DELE FOR RECN()< 13 &&在数据库删除编码库的头⽂件 PACK &&清除打了删除标记的记录。
基于汉语拼音的模糊查询及其在图书馆管理系统中的应用靳小倩;杨静【摘要】在图书馆管理系统的查询功能中,模糊查询可以使得整个系统的查询、管理变得更简洁和高效.通过区位码实现汉字拼音模糊查询,主要介绍其基本思想、算法实现示例以及使用的实例,来展示拼音模糊查询的实现方法,解决汉字模糊查询的弊端.%In the function of phonetic of the library management system, fuzzy search can manage and check the system more compactly and efficiently. The paper mainly represents using region-position code to realize the Hanzi phonetic fuzzy search. To set forth the basic idea of the phonetic fuzzy search, and elaborate the examples of using it and combining the two functions, we want to show the implementation of the phonetic fuzzy search,and solve its shortcomings.【期刊名称】《计算机应用与软件》【年(卷),期】2011(028)005【总页数】3页(P42-44)【关键词】模糊查询算法;区位码;汉字拼音模糊查询【作者】靳小倩;杨静【作者单位】贵州大学计算机科学与信息学院,贵州,贵阳,550025;贵州大学计算机科学与信息学院,贵州,贵阳,550025【正文语种】中文0 引言随着信息时代的发展,图书馆管理系统也由最初的集成管理系统技术发展到了现在的数字化图书馆管理系统技术。
Lucene搜索——拼音、模糊音解决方案Lucene全文搜索引擎,在我们的使用中已经能很好的解决中文的搜索功能。
我们可以方便的利用现在网上比较流行的两种开源lucene中文分词插件“庖丁解牛”和“IKAnalyzer”来实现我们想要的结果。
但是在中文拼音和谐音字方面无论是这两个插件还是现在lucene 官方的支持都没提供很好的分词器插件和解决方案。
经过大家的一起讨论,最后在拼音和谐音方面准备下面方式来实现该功能。
下面我描述一下解决思路和算法,及一些问题。
一.总体思路a)建立索引文件:建立索引文件时保存两部分内容,汉字和汉字的拼音,其中拼音中间要加上空格。
例如:成都市天府广场——>cheng du shi tian fu guangchang。
索引文件中内容就是“成都市天府广场cheng du shi tian fu guang chang ”对于汉字翻译成带空格的拼音用数据库语法不好实现,我们可以使用java拼音插件。
b)处理用户输入内容:用户输入的内容分为两种情况i.中文汉字:例如:“成都天府”这种情况可以通过“IKAnalyzer“和“庖丁解牛”完全解决ii.同音字:例如“程度天府”不是完全错误时分词器可以通过正确的微量匹配,同音字的我们就可以把汉字翻译成拼音再进行搜索。
“cheng du “两个“单词”我们在分词时已经加入到索引中所以是可以搜到的。
iii.谐音和拼音。
(这里是本文档的重点)1.拼音例如输入:chengdutianfuguangchang也有两种种情况输入很正确和输入拼音中有错误,无论哪种情况我们都必须把这个巨大的字符串给拆分了。
拆分算法:首先我们要建立一个汉字拼字对照表。
例如:A Ai An Ang AoBa Bai ban bang bao be bei benBeng bi bia等将所有的拼音组合都放到一个集合里面,所有的组合并不是非常大。
下面我们进行拆分:以成都天府广场为例:********************************************************************c h e n gd u t i a n f u g u a n g c h a n gchcheng堵chechengd堵chenchengdutianf堵cheng du ti aanfuguang堵cheng du ti an fu gu aguang堵cheng du ti an fu guaguangc堵死cheng du ti an fu guantianfuguang堵死cheng du tian fu gu aguang堵死cheng du tian fu guaguangc堵死guangchchang堵死cheng du tian fu guang chachang堵死cheng du tian fu guang chanchang cheng du tian fu guang chang************************************************************************ 通过上面分析我们分析到最后找到了一个结果cheng du tian fu guang chang 其他结果都在半路终止了(例子太特殊了只有一种情况),这样我们就把把拼音字符串给拆分了,我们先考虑拼写完全正确的情况,再有拼音书写错误的我们再进一步的进行考虑(可以采用跳过无匹配的字符重新组合)。
ISSN 100020054CN 1122223 N 清华大学学报(自然科学版)J T singhua U niv (Sci &Tech ),2009年第49卷第S 1期2009,V o l .49,N o .S 116 31132821332基于拼音索引的中文模糊匹配算法曹 犟1,2, 邬晓钧2, 夏云庆2, 郑 方2(1.清华大学计算机科学与技术系,北京100084;2.清华信息科学技术国家实验室技术创新和开发部语音和语言技术中心,北京100084)收稿日期:2009203219基金项目:国家自然科学基金资助项目(60703051)作者简介:曹犟(1984—),男(汉),湖北,硕士研究生。
通讯联系人:郑方,研究员,E 2m ail :fzheng @tsinghua .edu .cn摘 要:主流商业搜索引擎主要基于关键词精确匹配技术。
为提高在用户的输入错误时的检索效率,提出了有索引的汉语模糊匹配算法。
该算法采用汉字、拼音和拼音改良的编辑距离这3种汉字相似程度的不同度量方式,对用户查询进行扩展,将模糊匹配转化为多个精确匹配,对精确匹配的结果按与查询串的相似程度进行排序。
在实验中,将该方法应用于网页文本语料库中。
在使用基于拼音改良的编辑距离度量方式时,在时间和空间复杂度增长不大的情况下,该方法取得了60.42%的准确率与50.41%召回率。
关键词:文件信息处理;拼音索引;模糊匹配;查询扩展中图分类号:T P 391.1 文献标识码:A 文章编号:100020054(2009)S 121328205P i ny i n -i ndexed m ethod for approx i m a te ma tch i ng i n Ch i neseCAO J ia ng1,2,W U Xia o jun 2,XI A Yunq ing 2,ZHENG Fa ng2(1.D epart m en t of Co m puter Sc ience and Technology ,Tsi n ghua Un iversity ,Be ij i n g 100084,Ch i n a ;2.Cen ter for Speech and Language Technolog ies ,D iv ision of Techn ica l I nnova tion and D evelop m en t ,Tsi nghua Nationa l Labora tory for I nfor ma tion Sc ience and Technology ,Be ij i ng 100084,Ch i na )Abstract :T he exact m atch ing of keyw o rds is key to popular comm ercial search engines .A Ch inese app roxi m ate m atch ing m ethod w ith an index structure w as developed to ach ieve better retrieval w hen the inpu t con tains erro rs .T h ree types of si m ilarity m easu rem en t betw een two Ch inese strings w ere developed based on the character edit 2distance,the P inyin edit 2distance and the P inyin i m p roved edit 2distance .T he si m ilarity m easurem en ts w ere used to expand the user ’s query so that the app rox i m ate m atch ing task can be rep resented as several exact m atch ing sub 2task s .T he results of these exact m atch ings are m erged and so rted by their si m ilarity to the o riginal query .T ests on a w ebpage tex t database gave a 50.4%recall rate w ith the P inyin i m p roved edit 2distance w ith a 60.4%p recisi on w ith a s m all increase in ti m e and space comp lex ity .Key words :p inyin 2indexed;P inyin (spelling of Ch inese )index;app roxi m ate m atch ing;query expansi on 现有的主流商业信息检索系统大部分采用基于关键词精确匹配的检索技术,取得了一定的成果[1]。
但是在实际应用中,用户的查询输入与检索系统数据库的构建都不可能完全正确[2]。
用户对于搜索主题所处的领域不了解,采用不合适的查询词,会导致查询词的覆盖范围大大缩小[3];在中文信息检索系统中,用户还常会输入同音或近音的错别字。
模糊检索根据用户输入的模糊特征来检索匹配内容,可处理精确的关键词匹配所无法解决的这些问题[4]。
在英文检索系统中,通常对用户输入的单词进行拼写纠错,就能解决大多数问题[5]。
系统先搜索单词表,找出所有与查询串中单词的编辑距离(edit distance )在一定限度之内的所有词汇,再根据这些词汇来执行精确检索,即可在一定程度上实现模糊检索[4]。
所以,英文模糊检索的主要研究集中在快速简捷的字符串的模糊匹配算法方面[6-7]。
考虑到查询串的整体性,文[8]提出了块索引的方法,通过二步的模糊匹配过程,找到与查询串整体编辑距离在一定限度之内的串的位置。
汉语是典型的非字母语言,把任意两个汉字的差别都算成同一个值不够精确。
绝大多数汉字都是表意单元,词语的搭配灵活多样,难以建立完整的词表用于纠错。
所以汉语的模糊检索无法照搬英文中的方法,目前的研究主要集中在快速的汉字串模糊匹配算法方面[9-10]。
其中,文[9]的研究工作改善了模糊匹配的时空复杂度,在实际系统中算法的时间复杂度可以达到子线性,在实际的实验中也取得了很好的效果。
然而,遍历整个文本集来寻找相似串的出现位置,虽然可以比较准确地完成模糊检索任务,,时间开销依然难以接受。
本文提出一种基于汉语拼音的模糊检索方法。
与前述思路不同,通过扩展原始的查询串,将模糊检索任务转化为若干精确匹配的检索任务,从而大大降低算法复杂度。
1 汉字串相似度度量参考英文基于字母编辑距离的度量方式,本文提出3种汉字串相似度的度量方式:基于汉字的编辑距离、基于拼音的编辑距离,以及基于拼音改良的编辑距离。
1.1 基于汉字的编辑距离将单个汉字作为编辑距离中的距离度量单位,即:两个汉字串之间的距离,等于使它们完全一样所需的最少替换、插入或者删除的汉字个数。
1.2 基于拼音的编辑距离由于汉语拼音输入法的广泛使用,大部分用户的输入错误都表现为同音字或者近音字的替换误用,对Sogou实验室所提供的用户日志的分析结果也证实了这一点。
基于此,本文提出了基于拼音的编辑距离来衡量汉字串的相似度。
如果把拼音串简单地看作广义的英文字母串,则替换、插入或者删除一个字母后,所得结果不一定是合法的拼音串。
因此应从音节的角度来分析拼音串的差别。
对于一个单独的音节来说,它与另外一个音节的差异总可以分解为以下三种变化:声母变化、韵母变化和声调变化。
声母、韵母和声调的可能取值都是有限的,可以枚举定义从一种取值变为另一种取到所有与它编辑距离为n的音节。
例如,要找到所有与它编辑距离是2的音节,那么变化可能是声母改变1个距离单位,韵母改变1个距离单位,声调改变0个距离单位;或者声母改变2个距离单位,韵母和声调没有发生改变。
这只是一个排列组合的问题。
如果给所有音节编号,将音节整体看作一个特殊的单字,那么基于拼音的编辑距离可认为是基于汉字的编辑距离的细化,即不同的汉字之间根据拼音的近似程度有不同的距离,而不是笼统地将任意两个汉字的距离都计为1。
1.3 基于拼音改良的编辑距离根据前述基于拼音的编辑距离定义,音节 li3 和 n i3 的编辑距离是1, li3 和 p i3 的编辑距离也是1。
但是这2组音节的差异从发音机理角度来看, li3 与 n i3 更加近似。
类似的例子如:音节 lin3 与 ling3 的差异较小,而 lin3 和 lan3 的差异较大。
基于以上考虑,提出改良的编辑距离计算方式如下。
1)发音相似(容易发生替换错误)的声母或韵母之间差异小于1。
例如, l 和 n 、 z 和 zh 、 c 和 ch 等声母对, in 和 ing 、 en 和 eng 等韵母对,对音节编辑距离的贡献小于1(本文实验中赋予0.5的替换代价),这样的声母和韵母对一共是9对。
对于其余的声母或者韵母对的替换代价的计算,则依然采用方法二中的使用字符编辑距离的计算方法。
2)若同一音节的声母和韵母同时发生改变,则在计算编辑距离时给予一个正的惩罚值(本文实验中取值为2)。
根据这一计算方式,对于音节串A=I1I2I3…I n(其中I i,i=1,2,…,n代表一个音节),若I2在声母和韵母上同时发生差异为1的变化得到新的音节串B=I1I′2I3…In,I1和I3各发生一个声母或韵母的差异为1的变化得到新的音节串C=I′1I2I′3…I n,则C与A之间的编辑距离为2,小于B与A之间的编辑距离4。
3)音调变化导致的差异小于1。
由于音调错误比较常见和普遍,而且广泛使用的各种拼音输入法都不要求用户输入音调,所以可认为音调差异小于一般声母和韵母之间的差异,因而,按照发音相似的韵母和声母对一样的处理方式,这种差异在本文实验中赋予0.5的替换代价。
在本文实验中,由于将所有小于1的差异都赋9231曹 犟,等: 基于拼音索引的中文模糊匹配算法值为0.5,因此将所有的差异都乘以2之后,可以得到结果为整数的编辑距离,而这并不影响不同串之间相似度大小的比较。
2 索引与查询扩展依据具体的距离度量方式,可以扩展原始的查询串,将模糊匹配转化成多个相关的精确匹配,实现检索任务,步骤是:首先对查询串进行编辑距离由小到大的扩展,然后对扩展出的查询串进行精确匹配,精确匹配的结果在去重之后再按照查询串的编辑距离由小到大进行排序,最后将排序的检索结果返回给用户。