CN102063508B - 基于广义后缀树的中文搜索引擎模糊自动补全方法 - Google Patents
基于广义后缀树的中文搜索引擎模糊自动补全方法 Download PDFInfo
- Publication number
- CN102063508B CN102063508B CN 201110003711 CN201110003711A CN102063508B CN 102063508 B CN102063508 B CN 102063508B CN 201110003711 CN201110003711 CN 201110003711 CN 201110003711 A CN201110003711 A CN 201110003711A CN 102063508 B CN102063508 B CN 102063508B
- Authority
- CN
- China
- Prior art keywords
- word
- similarity
- suffix tree
- chinese
- broad sense
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 239000011159 matrix material Substances 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 4
- 238000010276 construction Methods 0.000 claims description 4
- 230000009471 action Effects 0.000 claims description 3
- 238000013459 approach Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000001105 regulatory effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 210000000697 sensory organ Anatomy 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
- Machine Translation (AREA)
Abstract
本发明公开了一种基于广义后缀树的中文搜索引擎模糊自动补全方法,包括步骤一:建立词的广义后缀树索引,利用现有的建立后缀树的方法,对中文词库中的所有词建立广义后缀树索引;步骤二:计算字的相似度;步骤三:计算相似度接近的词的权重值;步骤四:模糊自动补全。本发明依据中文语境中以字为单位的特点,利用广义后缀树能够高效的保存词库中所有词的后缀,根据相似度权重,在计算机上实现了中文搜索引擎的模糊自动补全,从而增强了计算机中文自动补全的功能和适用性。本方法中的模糊自动补全,不仅可以支持传统的中文前缀补全,而且能够支持中文的任意中缀补全。
Description
技术领域
本发明涉及计算机搜索引擎技术,尤其是一种基于广义后缀树的中文搜索引擎模糊自动补全方法。
背景技术
近年来,搜索引擎因其能够在几乎无限的资源中为广大用户找到所需的信息而越来越受到重视。优秀的搜索引擎也不断涌现,如:Google,Baidu等。在搜索引擎系统中,自动补全是一项非常有用的技术。当用户在搜索框输入字符串的前缀时,自动补全接口能够立刻返回与该前缀匹配的候选词集合。比如GoogleSuggest能够为用户提供查询补全,Facebook能够为用户提供好友查询补全。但是主流搜索引擎如Google,Baidu所提供的是精确自动补全,当用户键入的字符串没有错误时,这种方法工作良好,如果用户在键入字符串时发生错误,精确自动补全便不能为用户提供候选词。针对上述不足,微软已经提出了一种基于字典的后缀树(Suffix tree)模糊自动补全方法,能够处理英文语境下单词的模糊匹配,当用户在键入字符串时发生了小错误,用户期望的字符串仍能被自动补全。所述后缀树的概念最早由Weiner于1973年提出,既而由McCreight在1976年和Ukkonen在1992年和1995年加以改进完善,其实质是一种数据结构,能用来支持有效的字符串匹配和查询,快速解决很多关于字符串的问题。
然而,微软的基于字典的后缀树模糊自动补全方法,却不支持中文。英文以词为单位,一个词表示一种意思,模糊自动补全就是搜索与前缀匹配的候选字母,依据字典使其凑成数个可选的单词;中文与英文大不相同,中文以字为单位,单独的一个字,就至少包含一个确定的含义。
发明内容
本发明的目的在于:提供一种基于广义后缀树的中文搜索引擎模糊自动补全方法,能够增强中文自动补全的功能和适用性。
为实现上述目的,本发明可采取下述技术方案:
本发明一种基于广义后缀树的中文搜索引擎模糊自动补全方法,包括以下步骤:
步骤一:建立词的广义后缀树索引
利用现有的建立后缀树的方法,对中文词库中的所有词建立广义后缀树索引;
步骤二:计算字的相似度
对于GBK编码中的每个中文字进行预处理,计算每个字两两之间的音形相似度sim(yi,yj),将计算结果以数组的形式存储于音形相似度数据库中;计算每个字两两之间的字形相似度sim(ci,cj),将计算结果以数组的形式存储于字形相似度数据库中;
步骤三:计算相似度接近的词的权重值
依据用户输入的中文字符串,在步骤二所述的音形相似度数据库和/或字形相似度数据库中查找相似度接近的词,计算这些相似度接近的词的权重值;
步骤四:模糊自动补全
依据步骤三计算出的权重值,得到最终排序过的多个自动补全候选词。
权利要求1的步骤二中所述的音形相似度,是根据字的发音混淆程度计算得到的数据,如果两个字发音完全相同,设定其相似度数值为a1;如果两个字发音只有声调不同,设定其相似度数值为a2;如果两个字属于易混淆词表中的字,设定其相似度数为a3;所述a1、a2和a3满足下列条件:a1小于1,且a1>a2>a3>0。
设定所述a1=0.9;设定所述a2=0.8;设定所述a3=0.7。
步骤二中计算所述字形相似度的步骤包括:
步骤一:把每个字分别转化成图形;
步骤二:把每个字的所述图形转化成n×n像素的矩阵;
步骤三:计算每个字两两之间的字形相似度
步骤二中计算所述字形相似度的步骤包括:
步骤一:把每个字分别转化成图形;
步骤二:把每个字的所述图形转化成n×n像素的矩阵;
步骤三:计算每个字两两之间的字形相似度
步骤一中所述广义后缀树的实现方法为:对于一个词库T={t1,t2,...,tn},通过使用Ukkonen算法来构造广义后缀树,假设词库中词的平均长度为m,则构造算法的时间复杂度为O(nm)。
步骤二中,使用Mathematica来计算字形的相似度,把GBK中的中文字全部转化成数字,定量的计算每个字两两之间的矩阵的相似度。
步骤三采用基于有权重的编辑距离来计算所述广义后缀树中候选词与用户输入的中文字符串之间的相似度,保留传统编辑距离计算方法中插入和删除操作权值为1,改变替换操作的权值为1-sim(ci,cj)。
步骤四中查找自动补全候选词采用动态规划算法,其步骤为:
步骤一:维护一个包含节点和权重编辑距离的优先队列,加入所述广义后缀树根节点;
步骤二:按序读取用户输入的中文字符串的单个字符c;
步骤三:从优先队列中读取一个节点nd,lcur等于节点nd的编辑距离,对于节点nd的所有儿子节点nc,如果nc中的字符c′和c不同,把(nc,lcur+1-sim(c,c′))加入优先队列;如果nc中的字符c和c相同,把(nc,lcur)加入优先队列,然后对于与nc相距的每个后代节点ndesc,其中δ为容错阈值,把(ndesc,lcur+d)加入优先队列;
步骤四:重复上述步骤三,直到旧优先队列中元素读取完;
步骤五:重复上述步骤二,直到读取完输入的字符串。
步骤四中,综合考虑依据用户输入的中文字符串与候选词的相似度和基于候选词本身热度而形成的权值,采用的排序函数为Score(q,w)=α·(δ-ed′(q,w))+β·weight(w),0<β<α<1,α+β=1,其中Score(q,w)代表字符串q与候选词w的关联打分函数,α和β为权值调节因子,ed′(q,w)为q和w的编辑距离,weight(w)为候选词w的热度权值。
本发明的方法相对于现有技术的有益效果是:
依据中文语境中以字为单位的特点,利用广义后缀树能够高效的保存词库中所有词的后缀,并依据中文字在音形和字形上不同于其他语言的特点,通过基于拼音的音形相似度和基于感官上的字形相似度的计算,根据相似度权重,在计算机上实现了中文搜索引擎的模糊自动补全,从而增强了计算机中文自动补全的功能和适用性。本方法中的模糊自动补全,不仅可以支持传统的中文前缀补全,而且能够支持中文的任意中缀补全。
附图说明
图1是易混淆前鼻音,后鼻音,翘舌音,平舌音词表。
图2是广义后缀树示意图。
具体实施方式
本发明方法的关键有三点:广义后缀树的高效实现,字形相似度的计算,动态规划算法的实现。
1.广义后缀树的实现。本方法是基于广义后缀树来实现的,图2为一个简单的广义后缀树。对于一个词库T={t1,t2,...,tn},我们使用Ukkonen算法来构造广义后缀树。假设词库中词的平均长度为m,则构造算法的时间复杂度为O(nm)。
2.字形相似度的计算。使用Mathematica来计算字形的相似度。Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎、图形系统、编程语言、文本系统、和与其他应用程序的高级连接。Mathematica中的Rasterize函数能够以图片的格式输出运算结果,Binarize函数可以把图像转换为单色单通道,ImageData则可以把图像转换成数组的形式。使用以上函数,我们把GBK中的汉字全部转化成数字,然后就能定性定量的计算两两汉字即两两矩阵之间的相似度。图1给出了易混淆前鼻音,后鼻音,翘舌音,平舌音词表。
3.动态规划算法的实现。我们维护两个优先队列valid和newValid,保存(节点,有权重编辑距离)信息。以下为伪代码:
Add(valid,root,0)
对于每一个i=1Λδ
对于每一个节点nd到root的距离为1
Add(valid,nd,i)
输入的每个字符c
对于每一个有效的节点nd
赋值lcur=节点nd的有权值编辑距离
对于每一个nd的儿子节点nc
如果节点nc的字符c′与c不同
Add(newValid,nc,lcur+1-sim(c,c′))
如果节点nc的字符c′与c相同
Add(newValid,nc,lcur)
Add(newValid,ndesc,lcur+d)
交换newValid和valid,清空newValid
返回valid中的节点的叶子节点
对候选词进行排序。
实施例:
一种基于广义后缀树的中文搜索引擎模糊自动补全方法,其特征在于包括以下步骤:
步骤一:建立词的广义后缀树索引
利用现有的建立后缀树的方法,对中文词库中的所有词建立广义后缀树索引;所述广义后缀树的实现方法为:对于一个词库T={t1,t2,...,tn},通过使用Ukkonen算法来构造广义后缀树,假设词库中词的平均长度为m,则构造算法的时间复杂度为O(nm)。图2为一个简单的广义后缀树。
步骤二:计算字的相似度
对于GBK编码中的每个中文字进行预处理,计算每个字两两之间的音形相似度sim(yi,yj),将计算结果以数组的形式存储于音形相似度数据库中;计算每个字两两之间的字形相似度sim(ci,cj),将计算结果以数组的形式存储于字形相似度数据库中;
所述的音形相似度,是根据字的发音混淆程度计算得到的数据,如果两个字发音完全相同,设定其相似度数值为0.9;如果两个字发音只有声调不同,设定其相似度数值为0.8;如果两个字属于易混淆词表中的字,设定其相似度数为0.7。
图1是易混淆前鼻音,后鼻音,翘舌音,平舌音词表。
计算所述字形相似度使用Mathematica来计算字形的相似度,把GBK中的中文字全部转化成数字,定量的计算每个字两两之间的矩阵的相似度,其步骤包括:
步骤A:把每个字分别转化成图形;
步骤B:把每个字的所述图形转化成n×n像素的矩阵;
步骤C:计算每个字两两之间的字形相似度
其中,ci,cj代表字,sim(ci,cj)代表字ci,cj的相似度,n为字转化为图形的像素矩阵维数,为字ci像素矩阵第p行第q列的取值。
步骤三:计算相似度接近的词的权重值
依据用户输入的中文字符串,在步骤二所述的音形相似度数据库和字形相似度数据库中查找相似度接近的词,计算这些相似度接近的词的权重值;优选采用基于有权重的编辑距离来计算所述广义后缀树中候选词与用户输入的中文字符串之间的相似度,保留传统编辑距离计算方法中插入和删除操作权值为1,改变替换操作的权值为1-sim(ci,cj)。
步骤四:模糊自动补全
依据步骤三计算出的权重值,得到最终排序过的多个自动补全候选词。在本步骤中查找自动补全候选词采用动态规划算法,其步骤包括:
步骤D:维护一个包含节点和权重编辑距离的优先队列,加入所述广义后缀树根节点;
步骤E:按序读取用户输入的中文字符串的单个字符c;
步骤F:从优先队列中读取一个节点nd,lcur等于节点nd的编辑距离,对于节点nd的所有儿子节点nc,如果nc中的字符c′和c不同,把(nc,lcur+1-sim(c,c′))加入优先队列;如果nc中的字符c′和c相同,把(nc,lcur)加入优先队列,然后对于与nc相距的每个后代节点ndesc,把(ndesc,lcur+d)加入优先队列;
步骤G:重复上述步骤三,直到旧优先队列中元素读取完;
步骤H:重复上述步骤二,直到读取完输入的字符串。
优选综合考虑依据用户输入的中文字符串与候选词的相似度和基于候选词本身热度而形成的权值,采用的排序函数为Score(q,w)=α·(δ-ed′(q,w))+β·weight(w),0<β<α<1,α+β=1,其中Score(q,w)代表字符串q与候选词w的关联打分函数,α和β为权值调节因子,ed′(q,w)为q和w的编辑距离,weight(w)为候选词w的热度权值。最后根据查找到的词的权重,得到最终排序过的多个自动补全候选词。优选10个自动补全候选词供用户选择。
Claims (5)
1.一种基于广义后缀树的中文搜索引擎模糊自动补全方法,其特征在于包括以下步骤:
步骤一:建立词的广义后缀树索引
利用现有的建立后缀树的方法,对中文词库中的所有词建立广义后缀树索引;
步骤二:计算字的相似度
对于GBK编码中的每个中文字进行预处理,计算每个字两两之间的音形相似度 ,将计算结果以数组的形式存储于音形相似度数据库中,所述的音形相似度,是根据字的发音混淆程度计算得到的数据,如果两个字发音完全相同,设定其相似度数值为a1 ;如果两个字发音只有声调不同,设定其相似度数值为a2 ;如果两个字属于易混淆词表中的字,设定其相似度数为a3 ;所述a1、a2和a3满足下列条件:a1小于1,且a1>a2>a3>0;计算每个字两两之间的字形相似度,将计算结果以数组的形式存储于字形相似度数据库中,所述字形相似度的步骤包括:
a:把每个字分别转化成图形;
c:计算每个字两两之间的字形相似度
步骤三:计算相似度接近的词的权重值
依据用户输入的中文字符串,在步骤二所述的音形相似度数据库和/或字形相似度数据库中查找相似度接近的词,计算这些相似度接近的词的权重值;
步骤四:模糊自动补全
依据步骤三计算出的权重值,得到最终排序过的多个自动补全候选词,所述自动补全候选词采用动态规划算法,其步骤为:
d:维护一个包含节点和权重编辑距离的优先队列,加入所述广义后缀树根节点;
e:按序读取用户输入的中文字符串的单个字符c;
f:从优先队列中读取一个节点,等于节点的编辑距离,对于节点的所有儿子节点,如果中的字符和c不同,把()加入优先队列;如果中的字符和c相同,把()加入优先队列,然后对于与相距的每个后代节点,其中为容错阈值,把( )加入优先队列;
g:重复上述步骤三,直到旧优先队列中元素读取完;
h:重复上述步骤二,直到读取完输入的字符串。
2.根据权利要求1所述的基于广义后缀树的中文搜索引擎模糊自动补全方法,其特征在于:设定所述a1=0.9;设定所述a2=0.8;设定所述a3=0.7。
4.根据权利要求1至2所述的任一种基于广义后缀树的中文搜索引擎模糊自动补全方法,其特征在于:步骤三采用基于有权重的编辑距离来计算所述广义后缀树中候选词与用户输入的中文字符串之间的相似度,保留传统编辑距离计算方法中插入和删除操作权值为1,改变替换操作的权值为1- 。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110003711 CN102063508B (zh) | 2011-01-10 | 2011-01-10 | 基于广义后缀树的中文搜索引擎模糊自动补全方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110003711 CN102063508B (zh) | 2011-01-10 | 2011-01-10 | 基于广义后缀树的中文搜索引擎模糊自动补全方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102063508A CN102063508A (zh) | 2011-05-18 |
CN102063508B true CN102063508B (zh) | 2013-06-05 |
Family
ID=43998783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110003711 Active CN102063508B (zh) | 2011-01-10 | 2011-01-10 | 基于广义后缀树的中文搜索引擎模糊自动补全方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063508B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615600B (zh) * | 2013-11-04 | 2019-06-28 | 深圳力维智联技术有限公司 | 相似性案件比对实现方法及其装置 |
US11061893B2 (en) * | 2014-05-30 | 2021-07-13 | Apple Inc. | Multi-domain query completion |
CN104216995B (zh) * | 2014-09-10 | 2018-03-06 | 北京金山安全软件有限公司 | 信息处理方法及装置 |
CN107665217A (zh) * | 2016-07-29 | 2018-02-06 | 苏宁云商集团股份有限公司 | 一种用于搜索业务的词汇处理方法及系统 |
CN106407179B (zh) * | 2016-08-26 | 2019-03-26 | 福建网龙计算机网络信息技术有限公司 | 汉字字形相似度计算方法及其系统 |
CN106326484A (zh) * | 2016-08-31 | 2017-01-11 | 北京奇艺世纪科技有限公司 | 搜索词纠错方法及装置 |
CN106990956B (zh) * | 2017-03-10 | 2020-11-24 | 苏州棱镜七彩信息科技有限公司 | 基于后缀树的代码文件克隆检测方法 |
CN107665190A (zh) * | 2017-09-29 | 2018-02-06 | 李晓妮 | 一种文本校对错误词库的自动构造方法和装置 |
CN109726389B (zh) * | 2018-11-13 | 2020-10-13 | 北京邮电大学 | 一种基于常识和推理的中文缺失代词补全方法 |
CN110083677B (zh) * | 2019-05-07 | 2021-09-17 | 北京字节跳动网络技术有限公司 | 联系人的搜索方法、装置、设备及存储介质 |
CN110750704B (zh) * | 2019-10-23 | 2022-03-11 | 深圳计算科学研究院 | 一种查询自动补全的方法和装置 |
CN113038473B (zh) * | 2020-11-17 | 2023-08-25 | 深圳棒棒帮科技有限公司 | 通过识别笔迹连接局域网的方法、智能笔及存储介质 |
CN113128592B (zh) * | 2021-04-20 | 2022-10-18 | 重庆邮电大学 | 一种用于异构的医疗器械标识解析方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560767A (zh) * | 2004-02-24 | 2005-01-05 | 珠海市汉易通信息科技有限公司 | 文字输入的自动补全方法 |
CN1967534A (zh) * | 2006-11-06 | 2007-05-23 | 魏新成 | 地址搜索栏输入字符串的过程中即时提示在线搜索结果 |
WO2008124208A1 (en) * | 2007-04-02 | 2008-10-16 | Microsoft Corporation | Search macro suggestions relevant to search queries |
-
2011
- 2011-01-10 CN CN 201110003711 patent/CN102063508B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1560767A (zh) * | 2004-02-24 | 2005-01-05 | 珠海市汉易通信息科技有限公司 | 文字输入的自动补全方法 |
CN1967534A (zh) * | 2006-11-06 | 2007-05-23 | 魏新成 | 地址搜索栏输入字符串的过程中即时提示在线搜索结果 |
WO2008124208A1 (en) * | 2007-04-02 | 2008-10-16 | Microsoft Corporation | Search macro suggestions relevant to search queries |
Also Published As
Publication number | Publication date |
---|---|
CN102063508A (zh) | 2011-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102063508B (zh) | 基于广义后缀树的中文搜索引擎模糊自动补全方法 | |
CN105095204B (zh) | 同义词的获取方法及装置 | |
CN102622338B (zh) | 一种短文本间语义距离的计算机辅助计算方法 | |
CN110427623A (zh) | 半结构化文档知识抽取方法、装置、电子设备及存储介质 | |
US11727211B2 (en) | Systems and methods for colearning custom syntactic expression types for suggesting next best correspondence in a communication environment | |
US20120259615A1 (en) | Text prediction | |
CN103970798A (zh) | 数据的搜索和匹配 | |
CN110555203A (zh) | 文本复述方法、装置、服务器及存储介质 | |
JP2010044637A (ja) | データ処理装置、方法、及びプログラム | |
CN104408034A (zh) | 一种面向文本大数据的中文分词方法 | |
Zu et al. | Resume information extraction with a novel text block segmentation algorithm | |
CN104778256A (zh) | 一种领域问答系统咨询的快速可增量聚类方法 | |
Shu et al. | Word segmentation in Chinese language processing | |
Prabhakar et al. | Machine transliteration and transliterated text retrieval: a survey | |
KR101379128B1 (ko) | 사전 생성 장치, 사전 생성 방법 및 사전 생성 프로그램을 기억하는 컴퓨터 판독 가능 기록 매체 | |
Du et al. | Exploiting syntactic structure for better language modeling: A syntactic distance approach | |
Romero et al. | Modern vs diplomatic transcripts for historical handwritten text recognition | |
US11481547B2 (en) | Framework for chinese text error identification and correction | |
Rybka et al. | Morpho-syntactic parsing based on neural networks and corpus data | |
Kumar et al. | Comparison of various ml and dl models for emotion recognition using twitter | |
Qi et al. | Semi-supervised sequence labeling with self-learned features | |
Dumitrescu et al. | Racai’s natural language processing pipeline for universal dependencies | |
de Mendonça Almeida et al. | Evaluating phonetic spellers for user-generated content in Brazilian Portuguese | |
Shahid et al. | Next word prediction for Urdu language using deep learning models | |
Sun et al. | Detecting new words from Chinese text using latent semi-CRF models |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent for invention or patent application | ||
CB03 | Change of inventor or designer information |
Inventor after: Chen Huajun Inventor after: Feng Yelei Inventor after: Jiang Xiaohong Inventor after: Wu Chaohui Inventor before: Wu Chaohui Inventor before: Feng Yelei Inventor before: Jiang Xiaohong |
|
COR | Change of bibliographic data |
Free format text: CORRECT: INVENTOR; FROM: WU ZHAOHUI FENG YELEI JIANG XIAOHONG TO: CHEN HUAJUN FENG YELEI JIANG XIAOHONG WU ZHAOHUI |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |