CN112307277A - 一种汉字串匹配预判方法 - Google Patents
一种汉字串匹配预判方法 Download PDFInfo
- Publication number
- CN112307277A CN112307277A CN202011048161.XA CN202011048161A CN112307277A CN 112307277 A CN112307277 A CN 112307277A CN 202011048161 A CN202011048161 A CN 202011048161A CN 112307277 A CN112307277 A CN 112307277A
- Authority
- CN
- China
- Prior art keywords
- row
- chinese character
- mode
- chain
- group
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000008569 process Effects 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 4
- 230000006399 behavior Effects 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims description 3
- 238000004064 recycling Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
Abstract
本发明公开了一种汉字串匹配预判方法,首先将所有汉字依照频度进行重新编码;然后将编码后的汉字进行变换,得到归并和首尾两种模式;存储汉字串及其归并模式,然后按照首尾模式建立索引;以输入的汉字串为子串,预先存储的所有汉字串为母串,对每个母串进行预判,判断匹配是否成功;本发明的一种汉字串匹配预判方法在匹配之前先进行预判,如果预判成功才进行匹配操作;如果预判不成功,则不进行匹配操作。在预判操作次数明显少于母串个数,预判本身又费时不多时,将显著节省运算时间。
Description
技术领域
本发明属于汉字处理技术领域,涉及一种汉字串匹配预判方法。
背景技术
在一个汉字串(母串)中查找另一个汉字串(子串)是否存在的操作称 为汉字串匹配,存在为匹配成功,不存在为匹配不成功。假如母串为“专利 制度”,则母串中存在子串“专利”,以“专利”为子串匹配时为匹配成功; 不存在子串“申请”,以“申请”为子串匹配时为匹配不成功;同理,以“制 度”为子串匹配时为匹配成功;以“专制”为子串匹配时为匹配不成功。汉 字串匹配使用一般字符串匹配算法,此算法已成熟。现在的问题是当一个子 串逐一匹配大量母串且只有少数母串能匹配成功时,尽管一对一的匹配可以 做到运算时间最少,但由于匹配次数多,仍然会消耗大量时间。如果找出一 种预判方法,在匹配前尽量剔除掉匹配不可能成功的母串,只留下匹配有可 能成功的少量母串逐一匹配,就可以减少匹配次数,从而在根本上减少运算 时间。本发明就提出了这样一种预判方法。
发明内容
本发明的目的是提供一种汉字串匹配预判方法,在匹配之前先进行预 判,如果预判成功才进行匹配操作;如果预判不成功,则不进行匹配操作。 在预判操作次数明显少于母串个数,预判本身又费时不多时,将显著节省运 算时间。
本发明所采用的技术方案是,一种汉字串匹配预判方法,具体按以下步 骤实施:
步骤1,将所有汉字依照频度进行重新编码;
步骤2,将经步骤1编码后的汉字进行变换,得到归并和首尾两种模式;
步骤3,存储汉字串及其归并模式,然后按照首尾模式建立索引;
步骤4,以输入的汉字串为子串,预先存储的所有汉字串为母串,对每 个母串进行预判,判断匹配是否成功。
本发明的特点还在于:
其中步骤1具体按以下步骤实施:
步骤1.1,将所有汉字按照频度从大到小的顺序排列;
步骤1.2,创建一个表,包含G*2组,每组C/2个代码,共G*C个元素; 每个元素包含组号、代码号、一个暂时为空的汉字集合、一个暂时为0的频 度值;
步骤1.3,将汉字逐个填入经步骤1.2建立的表;
步骤1.4,将经步骤1.3填好的表的元素转入一个二维表,该二维表有 C/2行,每行G*2列,按组号对应列号,代码号对应行号的规则填入;
步骤1.5,根据元素的编码频度将步骤1.4得到的二维表按列重新排序; 奇数列按元素编码频度从小到大的顺序排列;偶数列按元素编码频度从大到 小的顺序排列;
步骤1.6,偶数列合并到前1列,即原第2列合并到原第1列,原第4 列合并到原第3列,……,原第G*2列合并到原G*2-1列;合并方法是,奇 数列的各行保持不变,增加新行,将偶数列的各元素按原第1行到第N/2行 的顺序逐个增加为新行,每个元素1行,最终得到一个N行G列的新二维 表;
步骤1.7,以步骤1.6得到的新二维表的列号为组号,行号为代码号,重 新分配每个元素的组号、代码号,这样,每个汉字都有了一个编码;
其中步骤1.3中,将汉字逐个填入经步骤1.2建立的表,填入时,将汉 字填入表的第一个元素,即将汉字添加到元素的汉字集合,将汉字的频度值 累加到该元素的编码频度,填入后,将该元素移动到从前往后第一个编码频 度大于该元素编码频度的元素的前一个位置,原位置的元素及此前的所有元 素均顺次往前推;
其中步骤2具体按以下步骤实施:
步骤2.1,剔除掉汉字串中重复的汉字;
步骤2.2,每个汉字用临时编码按步骤1的编码方法进行重新编码;
步骤2.3,按新编码的组号将汉字分组;
步骤2.4,每组代码剔除掉重复的代码,按代码从小到大的顺序排列, 所得代码序列为归并模式;如该组代码为空,则归并模式也为空;
步骤2.5,将归并模式中的代码只保留最小的(C1)和最大的(C2), 其他去掉,所得整数对连同归并模式的代码个数称为首尾模式,表示为 [C1,C2,n];归并模式为空,首尾模式也为空;归并模式只有一个代码Ct,首 尾模式为[Ct,Ct,1];其中n如果大于nMax,则令n=nMax;
如果nMax=1,此时上述的首尾模式可表示为[C1,C2];
其中步骤3具体按以下步骤实施:
步骤3.1,建立汉字串表,为空表,当前行号设置为0;
步骤3.2,建立首尾模式索引表,一次性添加所有行(C*(C+1)*nMax/2 行),每行的每个开始行号、结束行号的值设为0;
步骤3.3,在表中存储一个汉字串;
步骤3.4在表中删除一个汉字串;
其中步骤3.3中,在表中存储一个汉字串具体按以下步骤实施:
步骤3.3.1,在汉字串表中按汉字串相等的条件查找,如果已有相同汉字 串则不予添加;
步骤3.3.2,根据汉字串求出归并模式,共有G个,在汉字串表中添加 一个新行,行号列为当前行号加1,设编号为Sn,汉字串列为输入的汉字串, 各个归并模式列为刚刚求出的各个归并模式;
步骤3.3.3,检查每组,如果存在归并模式,执行步骤3.3.4;如果不存 在,无操作;
步骤3.3.4,根据归并模式求出首尾模式,根据首尾模式找出其在索引表 中的行号i,从此行找出该组的起始行号x和结束行号y;
如果无起始行号,即x=0,设起始行号列的值为Sn;
如果有起始行号,但无结束行号,即x≠0,y=0,将汉字串表x行该组 的下个编号设为Sn,设结束行号列为Sn;
如果起始行号、结束行号均有,即x≠0,y≠0,将汉字串表y行该组的 下个行号设为Sn,结束行号列也设为Sn;
其中步骤3.4在表中删除一个汉字串,具体按以下步骤实施:
步骤3.4.1,在汉字串表中按汉字串相等的条件查找,如果未查到汉字串, 没有操作,如果查到,设查到的汉字串的行号为Sn;
步骤3.4.2,根据Sn行的归并模式求出各组的首尾模式,相应组的归并 模式为空无操作,不为空对每组执行步骤3.4.3;
步骤3.4.3,根据首尾模式求出其在索引表中的行位置i,从此位置找出 该组的起始行号x和结束行号y;
步骤3.4.4,如果x=Sn,找出汉字串表x行本组的下个行号x1,如果x1=0 即x行本组没有下一行,索引表i行本组的起始行号和结束行号都设为0, 即索引表i行本组的数据为空;如果x1≠0,索引表i行本组的起始行号设 为x1,步骤结束,如果x≠Sn,继续步骤3.4.5;
步骤3.4.5,从x1行开始找其下个行号x2,再找x2的下个行号x3…… 再找i-1行的下个行号xi……,对每行执行如下操作:
如果xi的下个行号等于Sn,将xi的下个行号设为Sn的下个行号,Sn 没有下个行号时将xi的下个行号设为空,并将结束行号设为xi,步骤结束, 如果xi的下个行号不等于Sn,继续找下个行号并执行同样的操作;
步骤3.4.6,在汉字串表中标记n行为已废除,其行号不回收;以后也不 会用到;
其中步骤4具体为:输入为子串、汉字串表、首尾模式索引表;输出为 匹配成功的汉字串;针对输入子串,把汉字串表中的所有汉字串都作为母串, 在汉字串表中搜索,找出预判成功的母串并逐一匹配,最终得到匹配成功的 母串;具体按照如下步骤实施:
步骤4.1,求出子串各组的归并模式、首尾模式:
各组的归并模式表示为g{C1,C2,……,Cn},其中1≤g≤G,为组号;1 ≤Ci≤C(1≤i≤n);C1<C2<……<Cn;归并模式为空表示为g{};
各组的首尾模式表示为:g[C1,C2,n],其中1≤g≤G为组号;1≤C1≤C 为首尾模式首代码;C1≤C2≤C为首尾模式尾代码;各组的首尾模式分别处 理如下:首尾模式为空无操作;不为空执行步骤4.2,产生本组的编号链_表, 针对所有各组的编号链_表执行步骤4.4;
步骤4.2,此步骤的输入为g[C1,C2,n],遍历1到C1,设每个值为x;针 对每个x,遍历C2到C,设每个值为y;
对每一对x、y,求出其对应的代码个数值的下限m1和上限m2,求下限 m1的方法如下:
x=C1,y=C2:m1=n;
x=C1,y≠C2:m1=n+1;
x≠C1,y=C2:m1=n+1;
x≠C1,y≠C2:m1=n+2;
上限m2=y-x+1,如果m2>nMax,则取m2=nMax;
如果上下限倒挂,即m1>m2,那么针对这一对x、y的操作结束;如果 m1≤m2,则遍历m1到m2,设每个值为m;
上述的每一组x、y、m组成一个首尾模式g[x,y,m],找出该首尾模式在 索引表中的行位置,从此行按组号g找出一个行号链,表示为Lg[x,y,m],意 为g[x,y,m]的行号链,行号链的具体值用起始行号h1,结束行号h2表示为 Lg(h1,h2),也可以只用起始行号表示为Lg(h1),其中h1<h2;如果行号 链中只有一个行号h1,表示为Lg(h1,0);
上述每一个首尾模式g[x,y,m]都对应一个行号链,剔除其中的空链,其 余行号链组成一个行号链_表;一个行号链_表包含多个行号链,用包括在{} 对中,以逗号隔开的行号链表示;
步骤4.3,针对步骤4.1产生的所有各组的行号链_表的操作,具体内容 如下:
步骤4.3.1,获取各行号链_表的当前行号,如有行号链_表的当前行号为 空,操作在此结束,如无,继续下述操作;
步骤4.3.2,如果各行号链_表的当前行号不全相等,找出其中的最大值 m,对其中所有当前行号不为m的行号链_表执行Get(m),即提取行号操作, 再执行本步骤,如果有行号链_表的提取结果为空,则操作结束;
步骤4.3.3,如果当前行号全相等,将此全相等的行号设为n执行步骤4.3, 执行完后继续本步骤;
步骤4.4,找到汉字串表的n行数据,将该行数据的归并模式作为母模 式,子串的归并模式作为子模式,按步骤4.4进行模式匹配,匹配不成功, 本操作结束;
如匹配成功,说明子串包含于母串的预判成功,接下来应使用标准模式 对母串和子串进行匹配操作;
无论预判和匹配是否成功,都对每个行号链_表执行Get(n+1)操作,如 果有结果为空则操作结束;否则执行步骤4.3;
步骤4.5,母模式和子模式都包括G个归并模式,母模式和子模式匹配 成功的条件是:子模式中不为空的归并模式,在母模式中也不为空;
其中步骤4.2中涉及行号链、行号链_表的操作具体如下:
步骤4.2.1,行号链操作,行号链由互相链接的若干个行号节点组成,每 个节点有两个字段:行号、下个行号,其中下个行号是本行号链中其他一个 节点的编号,全部节点中,有且只有一个是首节点,首节点不是其他任何节 点的下节点,此处的行号链按从小到大的顺序排列,即任何节点的下节点的 行号一定大于其自身的行号;
步骤4.2.1.1,当前行号,设行号链为L,当前行号表示为L.Get,当前行 号的初始值设置为首节点的行号,操作过程中可改变当前行号,如果没有首 节点,当前行号为空,当前行号为空也称为本行号链为空;
步骤4.2.1.2,提取行号,设行号链为L,提取行号操作表示为L.Get(x), 从当前行号开始找,以遇到的第一个不小于x的行号为结果,并将当前行号 也设置为此行号,如果一直到最后一个行号,也没有符合条件的行号,则结 果为空;
步骤4.2.2,行号链_表操作,行号链_表是一个集合,其元素为行号链, 各行号链中的所有行号互不重合,即没有任何两个是相等的;
步骤4.2.2.1,当前行号,设行号链_表为B,当前行号表示为B.Get,为各 元素的当前行号中最小的。其中为空的行号链不参与比较。如果各元素的当 前行号都为空,则本行号链_表的当前行号也为空,也称为本行号链_表为空;
步骤4.2.2.2,提取行号,设行号链_表为B,提取行号操作表示为B.Get(x)。 对行号链表中的各元素执行Get(x),返回其中的最小值,其中为空的行号链 不参与运算;
其中步骤4.5的具体匹配过程为:
以下步骤针对某一组的一个母模式Ai和同一组的一个子模式Bi,其中 Ai的编码为a1、a2......an,a1<a2<......<an;Bi的编码为b1、b2......bn, b1<b2<......<bn;
步骤4.5.1,令i=1,j=1;
步骤4.5.2,如果bj不存在,归并模式匹配成功;
如果ai不存在,归并模式匹配失败;
如果ai=bj,i加1,j加1,执行步骤4.5.2;
如果ai<bj,i加1,j不变,执行步骤4.5.2;
如果ai>bj,i不变,j加1,执行步骤4.5.2。
本发明的有益效果是:
本发明的一种汉字串匹配预判方法在匹配之前先进行预判,如果预判成 功才进行匹配操作;如果预判不成功,则不进行匹配操作。在预判操作次数 明显少于母串个数,预判本身又费时不多时,将显著节省运算时间。
附图说明
图1是本发明一种汉字串匹配预判方法的实施步骤3.3汉字串串添加的 实施步骤示意图;
图2是本发明一种汉字串匹配预判方法的实施步骤3.4汉字串串删除的 实施步骤示意图;
图3a是本发明一种汉字串匹配预判方法中一个子串匹配表中所有母串 时进行预判的完整过程示意图,图3b为图3a中步骤B的流程示意图;
图4a和图4b是本发明一种汉字串匹配预判方法的汉字临时编码示例 表;
图5是本发明一种汉字串匹配预判方法中汉字串及归并模式存储结构的 示例;
图6是本发明一种汉字串匹配预判方法的内容3首尾模式索引的存储结 构的示例。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明提供了一种汉字串匹配预判方法,具体包括四部分,具体为汉字 的编码方案、汉字的变换方案、汉子串的存储方案和匹配预判过程;
步骤1,汉字编码方案(称为临时编码),编码结果如图4a和图4b所示, 图4a和图4b是汉字编码方案对频度最大的1500个汉字,按4组,每组64 个代码进行编码的结果,具体按照如下步骤实施:
步骤1.1,将所有汉字按照频度从大到小的顺序排列。汉字频度表可以 使用公开发布的通用汉字频度表,也可以根据使用环境自行收集语料统计;
步骤1.2,创建一个表,包含G*2组,每组C/2个代码,共G*C个元素, 每个元素包含组号、代码号、一个暂时为空的汉字集合、一个暂时为0的频 度值(编码频度);
步骤1.3,将汉字逐个填入上表,填入时,将汉字填入表的第一个元素, 即将汉字添加到元素的汉字集合,将汉字的频度值累加到该元素的编码频 度,填入后,将该元素移动到从前往后第一个编码频度大于该元素编码频度 的元素的前一个位置,原位置的元素及此前的所有元素均顺次往前推,这样 该表的元素将始终按照元素编码频度从小到大的顺序排列,第一个元素一直 是编码频度最小的元素,也是下一个汉字的填入位置;
步骤1.4,将上表的元素转入一个二维表,该表有C/2行,每行G*2列, 按组号对应列号,代码号对应行号的规则填入;
步骤1.5,根据元素的编码频度将上述二维表按列重新排序;奇数列(第 1列、第3列……)按元素编码频度从小到大的顺序排列;偶数列(第2列、 第4列……)按元素编码频度从大到小的顺序排列;
步骤1.6,偶数列(第2列、第4列……)合并到前1列,即原第2列 合并到原第1列,原第4列合并到原第3列,……,原第G*2列合并到原 G*2-1列,合并方法是,奇数列的各行保持不变,增加新行,将偶数列的各 元素按原第1行到第N/2行的顺序逐个增加为新行,每个元素1行,最终得 到一个N行G列的新二维表;
步骤1.7,以新二维表的列号为组号,行号为代码号,重新分配每个元 素的组号、代码号,这样,每个汉字都有了一个编码,每个编码包括组号、 代码号;每个编码包括一个或多个汉字;每个编码的多个汉字频度之和大致 相等;每组代码的频度随代码从小到大呈现为两头小、中间大;
步骤2,对汉字串进行变换的方案,具体按照如下步骤实施:
步骤2.1,剔除掉汉字串中重复的汉字;
步骤2.2,每个汉字用临时编码重新编码;
步骤2.3,按新编码的组号将汉字分组;
步骤2.4,每组代码剔除掉重复的代码,按代码从小到大的顺序排列, 所得代码序列为归并模式,如该组代码为空,则归并模式也为空;
步骤2.5,将归并模式中的代码只保留最小的(C1)和最大的(C2), 其他去掉,所得整数对连同归并模式的代码个数称为首尾模式,表示为 [C1,C2,n];归并模式为空,首尾模式也为空;归并模式只有一个代码Ct,首 尾模式为[Ct,Ct,1],其中的n如果大于nMax,则令n=nMax;
如果nMax=1,则代码个数实际上被忽略,不参与运算,此时上述的首 尾模式可表示为[C1,C2];
步骤3,如图6所示,用二维表存储汉字串及其归并模式,并按首尾模 式建立索引,具体按照如下步骤实施:
步骤3.1,建立汉字串表,为空表,当前行号设置为0;
步骤3.2,建立首尾模式索引表(简称索引表),一次性添加所有行 (C*(C+1)*nMax/2行),每行的每个开始行号、结束行号的值设为0;
步骤3.3,在表中存储一个汉字串(添加汉字串),具体过程如下:
步骤3.3.1,在汉字串表中按汉字串相等的条件查找,如果已有相同汉字 串则不予添加;
步骤3.3.2,根据汉字串求出归并模式(共有G个),在汉字串表中添加 一个新行,行号列为当前行号加1(设所编号为Sn),汉字串列为输入的汉 字串,各个归并模式列为刚刚求出的各个归并模式;
步骤3.3.3,检查每组,如果存在归并模式,执行步骤3.3.4;如果不存 在,无操作;
步骤3.3.4,根据归并模式求出首尾模式,根据首尾模式找出其在索引表 中的行号i,从此行找出该组的起始行号x和结束行号y;
如果无起始行号,即x=0,设起始行号列的值为Sn;
如果有起始行号,但无结束行号,即x≠0,y=0,将汉字串表x行该组 的下个编号设为Sn,设结束行号列为Sn;
如果起始行号、结束行号均有,即x≠0,y≠0,将汉字串表y行该组的 下个行号设为Sn,结束行号列也设为Sn;
步骤3.4在表中删除一个汉字串;
步骤3.4.1,在汉字串表中按汉字串相等的条件查找,如果未查到汉字串, 没有操作,如果查到,设查到的汉字串的行号为Sn;
步骤3.4.2,根据Sn行的归并模式求出各组的首尾模式,相应组的归并 模式为空无操作,不为空对每组执行步骤3.4.3;
步骤3.4.3,根据首尾模式求出其在索引表中的行位置i,从此位置找出该 组的起始行号x和结束行号y;
步骤3.4.4,如果x=Sn,找出汉字串表x行本组的下个行号x1,如果x1=0 (x行本组没有下一行),索引表i行本组的起始行号和结束行号都设为0(索 引表i行本组的数据为空);如果x1≠0,索引表i行本组的起始行号设为x1, 步骤结束。如果x≠Sn,继续步骤3.4.5;
步骤3.4.5,从x1行开始找其下个行号x2,再找x2的下个行号x3…… 再找i-1行的下个行号xi……,对每行执行如下操作:
如果xi的下个行号等于Sn,将xi的下个行号设为Sn的下个行号,Sn 没有下个行号时将xi的下个行号设为空,并将结束行号设为xi,步骤结束。 如果xi的下个行号不等于Sn,继续找下个行号并执行同样的操作;
步骤3.4.6,在汉字串表中标记n行为已废除,其行号不回收,以后也不 会用到;
步骤4,匹配预判方法具体为,输入为:子串、汉字串表、首尾模式索 引表;输出为:匹配成功的汉字串,针对该子串,把汉字串表中的所有汉字 串都作为母串,在汉字串表中搜索,找出预判成功的母串并逐一匹配,最终 得到匹配成功的母串,具体按照如下步骤实施:
步骤4.1,求出子串各组的归并模式、首尾模式;
各组的归并模式表示为g{C1,C2,……,Cn},其中1≤g≤G为组号;1≤ Ci≤C(1≤i≤n);C1<C2<……<Cn,归并模式为空表示为g{};
各组的首尾模式表示为:g[C1,C2,n],其中1≤g≤G,为组号;1≤C1 ≤C,为首尾模式首代码;C1≤C2≤C,为首尾模式尾代码,各组的首尾模 式分别处理如下:首尾模式为空无操作;不为空执行步骤4.2,产生本组的 编号链_表,针对所有各组的编号链_表执行步骤4.4;
步骤4.2,此步骤的输入为g[C1,C2,n],遍历1到C1,设每个值为x; 针对每个x,遍历C2到C,设每个值为y;
对每一对x、y,求出其对应的代码个数值的下限m1和上限m2,求下限 m1的方法如下:
x=C1,y=C2:m1=n;
x=C1,y≠C2:m1=n+1;
x≠C1,y=C2:m1=n+1;;
x≠C1,y≠C2:m1=n+2;
上限m2=y-x+1,如果m2>nMax,则取m2=nMax;
如果上下限倒挂,即m1>m2,那么针对这一对x、y的操作结束;如果 m1≤m2,则遍历m1到m2,设每个值为m;
上述的每一组x、y、m组成一个首尾模式g[x,y,m],找出该首尾模式在 索引表中的行位置,从此行按组号g找出一个行号链,表示为Lg[x,y,m],意 为g[x,y,m]的行号链,行号链的具体值用起始行号h1,结束行号h2表示为 Lg(h1,h2),也可以只用起始行号表示为Lg(h1),其中h1<h2;如果行号 链中只有一个行号h1,表示为Lg(h1,0);此行号链也可能为空;
行号链也可以用单独一个字母,或者一个字母加组号表示,如L、Lg等; 上述每一个首尾模式g[x,y,m]都对应一个行号链,剔除其中的空链,其余行 号链组成一个行号链_表,一个行号链_表包含多个行号链,用包括在{}对中, 以逗号隔开的行号链表示,关于行号链、行号链_表的专门操作,具体如下:
步骤4.2.1,行号链操作,行号链由互相链接的若干个行号节点(简称节 点)组成,每个节点有两个字段:行号、下个行号,其中下个行号是本行号 链中其他一个节点(下节点)的编号,全部节点中,有且只有一个是首节点, 首节点不是其他任何节点的下节点,此处的行号链按从小到大的顺序排列, 即任何节点的下节点的行号一定大于其自身的行号;
步骤4.2.1.1,当前行号,设行号链为L,当前行号表示为L.Get,当前行 号的初始值设置为首节点的行号,操作过程中可改变当前行号,如果没有首 节点,当前行号为空,当前行号为空也称为本行号链为空;
步骤4.2.1.2,提取行号,设行号链为L,提取行号操作表示为L.Get(x), 从当前行号开始找,以遇到的第一个不小于x的行号为结果,并将当前行号 也设置为此行号。如果一直到最后一个行号,也没有符合条件的行号,则结 果为空;
步骤4.2.2,行号链_表操作,行号链_表是一个集合,其元素为行号链, 各行号链中的所有行号互不重合,即没有任何两个是相等的;
步骤4.2.2.1,当前行号,设行号链_表为B,当前行号表示为B.Get,为各 元素的当前行号中最小的。其中为空的行号链不参与比较。如果各元素的当 前行号都为空,则本行号链_表的当前行号也为空,也称为本行号链_表为空;
步骤4.2.2.2,提取行号,设行号链_表为B,提取行号操作表示为B.Get(x)。 对行号链表中的各元素执行Get(x),返回其中的最小值,其中为空的行号链 不参与运算;
步骤4.3,这是针步骤4.1产生的所有各组的行号链_表的操作。具体如 下:
步骤4.3.1,获取各行号链_表的当前行号,如有行号链_表的当前行号为 空,操作在此结束,如无,继续下面的操作;
步骤4.3.2,如果各行号链_表的当前行号不全相等,找出其中的最大值 m,对其中所有当前行号不为m的行号链_表执行Get(m)(提取行号)操作, 再执行本步骤,如果有行号链_表的提取结果为空,则操作结束。
步骤4.3.3,如果当前行号全相等,将此全相等的行号设为n执行步骤4.4。 执行完后继续本步骤。
步骤4.4找到汉字串表的n行数据,将该行数据的归并模式作为母模式, 子串的归并模式作为子模式,按步骤4.5进行模式匹配,匹配不成功,本操 作结束;
如匹配成功,说明子串包含于母串的预判成功,接下来应使用标准模式 对母串和子串进行匹配操作。
无论预判和匹配是否成功,接下来都对每个行号链_表执行Get(n+1)操 作,如果有结果为空则操作结束;否则执行步骤4.3;
步骤4.5,母模式和子模式都包括G个归并模式,母模式和子模式匹配 成功的条件是:子模式中不为空的归并模式,在母模式中也不为空,且都按 以下步骤匹配成功:
以下步骤针对某一组的一个母模式Ai和同一组的一个子模式Bi,其中 Ai的编码为a1、a2......an,a1<a2<......<an;Bi的编码为b1、b2......bn, b1<b2<......<bn;
步骤4.5.1,令i=1,j=1,执行步骤4.6.2;
步骤4.5.2,如果bj不存在,归并模式匹配成功;
如果ai不存在,归并模式匹配失败;
如果ai=bj,i加1,j加1,执行步骤4.6.2;
如果ai<bj,i加1,j不变,执行步骤4.6.2;
如果ai>bj,i不变,j加1,执行步骤4.6.2。
本发明一种汉字串匹配预判方法具有如下优点:
1.将汉字串与匹配有关的特征提取出来,并和汉字串一起存储,虽然增 加了存储空间,但可以针对存储的特征执行预判操作,避免了对无关母串进 行无谓操作,从而大大节省了运算时间。这是一种以空间换时间的策略。
2.通过将汉字重新编码,并允许多个汉字占用一个编码,从而控制了编 码的总数,避免了汉字数增加造成编码增加,始终将存储空间控制在一个合 理范围内,使预判操作在能够实现。
3.通过多个汉字占用同一编码,使各个编码的频度(每个编码对应的所 有汉字的频度之和)基本相等,避免了频度悬殊造成的存储空间浪费,也避 免了运算时间忽多忽少造成的算法设计困难。
4.在各个代码的频度无法做到完全相等时,通过让两端代码的编码频度 小于中间代码的编码频度的安排,使不同首尾模式的出现概率尽量一致。因 为代码越靠两端,其所在首尾模式对应的归并模式中可出现的代码就越多, 不可出现的代码就越少,此种首尾模式本身出现的概率就越大,通过减少首 尾模式首代码和尾代码概率的方式平衡此偏大的概率,从而使不同首尾模式 出现的概率趋向于一致。
5.通过选择适当的代码组数可提高预判性能。代码组数越多,汉字串每 组归并模式的代码数就越少,其对应的首尾模式就越接近归并模式的特征, 母串筛选的效率就越高。当然代码组数增加会造成存储空间增加,造成归并 模式为空或只有一个代码的情况增加,也会制约预判效率的提高。因此应当 选择适当的代码组数。一般选择汉字串平均长度的二分之一附近的值比较合 适。
6.通过选择适当的代码数也可提高预判性能。代码数越多,归并模式、 首尾模式的总数就越多,每个归并模式、首尾模式对应的汉字串就越少,预 判的准确度就越高,但索引表将变大,占用存储空间会更多,代码数过多对 预判准确度的提高效果也变差,因此代码数也应选择一个合适的值。一般根 据汉字串的数量选择索引表的大小,再根据索引表的大小反推出代码数。
7.本发明提出的首尾模式,能将与匹配有关的主要特征表达在数据存储 结构中,仅仅通过一定的查找方式,就避免了对所有母串进行逐一检查,从 而减少了匹配次数,充分体现了预判的作用和意义。
8.本发明提出的归并模式,在简化的同时最大限度地保留了汉字串的特 征;归并模式使代码能够排序,从而提高了运算速度,尽早排除掉不可能匹 配成功的母串,提高了预判速度。
9.在实际应用中,经常出现需要在数量庞大的样本中精确查找某个汉字 串的操作,传统的做法是逐个查找每个母串,但毕竟能找到这个汉字串的母 串数量很少,虽然在某个母串中查找时有最优的算法可以使用,但仍然要耗 费一定时间。本发明提出进行预判的思路,并提出了可行的预判方法,有效 减少了运算次数,从而节省了总体查找时间,具有广泛的用途。
实施1
本例说明实施步骤4,汉字串表如图4,首尾模式索引表如图5所示, 其中省略了首尾模式的代码个数,也可以说代码个数的最大值nMax为1, 现在以“创新能力”为子串,以图4中的全部汉字串为母串,查找出现“创 新能力”的汉字串,步骤编号与步骤4各步骤的编号对应,首尾模式忽略代 码个数;
步骤4.1,求出各组的归并模式和首尾模式如下:
归并模式:1{44},2{22},3{21},4{53};
首尾模式:1[44,44],2[22,22],3[21,21],4[53,53];
执行步骤4.2,获得各组的行号链_表如下,其中Li表示i组的行号链_ 表:
L1={(5,0),(13,0),(2,3),(14,0),(11,0),(4,0)}
L2={(12,0),(13,0),(5,0),(8,0),(4,0)}
L3={(1,0),(12,0),(14,0),(4,7),(11,0)}
L4={(14,0),(4,0)}
在L1,L2,L3,L4上执行步骤4.4;
步骤4.3,
(1)求出首尾模式1[44,44]的编号链表;
x从1到44,y从44-64,找到每个1[x,y]的行号链,组成行号链_表如 下:
{[3,60],[24,48],[27,44],[32,54],[32,60,[44,44]]}
={(5,0),(13,0),(2,3),(14,0),(11,0),(4,0)};
(2)求出首尾模式2[22,22]的编号链表;
x从1到22,y从22-64,找到每个2[x,y]的行号链,组成行号链_表如 下:
{[12,48],[12,58],[16,52],[18,18],[22,49]}={(12,0),(13,0),(5,0),(8,0), (4,0)};
(3)求出首尾模式3[21,21]的编号链表;
x从1到21,y从21-64,找到每个3[x,y]的行号链,组成行号链_表如 下:
{[2,60],[6,61],[11,60],[21,21],[21,62]}={(1,0),(12,0),(14,0),(4,7),(11,0)};
(4)求出首尾模式4[53,53]的编号链表;
x从1到53,y从53-64,找到每个4[x,y]的行号链,组成行号链_表下: {[14,62],[53,53]}={(14,0),(4,0)};
步骤4.4,
L1={(5,0),(13,0),(2,3),(14,0),(11,0),(4,0)}
L2={(12,0),(13,0),(5,0),(8,0),(4,0)}
L3={(1,0),(12,0),(14,0),(4,7),(11,0)}
L4={(14,0),(4,0)}
操作按下表所示顺序进行。
L1、L2、L3、L4每列的表头显示了各组的行号链表,每行L1、L2、L3、 L4各列显示了各自的当前行号,当前行号不全相等时,求出最大值m,对 当前行号不为m的所有行号链表执行提取行号Get(m)操作,执行这个操作 的行号链表在“提取行号”列显示,提取行号后的当前行号在下一行显示;
当前行号全相等时,用归并模式执行预判操作:
步骤4.5,对母串表中的第4行执行预判操作;
第1组:母模式{44}包含子模式{44};
第2组:母模式{22,40,49}包含子模式{22};
第3组:母模式{21}包含子模式{21};
第4组:母模式{53}包含子模式{53};
所以,第4行“提高创新能力”预判成功,进行匹配,匹配结果,包含 “创新能力”;
当提取行号时,遇行号链表为空,则预判结束。
实施例2
汉字串表如图4,首尾模式索引表如图5,现在以“专利申请”为子串, 以图4中的全部汉字串为母串,查找出现“专利申请”的汉字串,步骤编号 与步骤4各步骤的编号对应,首尾模式忽略代码个数;
步骤4.1,求出各组的归并模式和首尾模式如下:
归并模式:1{},2{},3{60},4{14,22,37};
首尾模式:1为空,2为空,3[60,60],4[14,37];
执行步骤4.2,获得各组的行号链_表如下,其中Li表示第i组的行号链 _表:
L1为空
L2为空
L3={(1,0),(12,0),(14,0),(11,0),(10,0),(13,0),(9,0)}
L4={(2,0),(12,0),(14,0)}
在L3,L4上执行步骤4.4;
步骤4.3
(1)第1组归并模式为空,L1首尾模式也为空;
(2)第2组归并模式为空,L2首尾模式也为空;
(3)求出首尾模式3[60,60]的编号链表;
x从1到60,y从60到64,找到每个3[x,y]的行号链,组成行号链_表如 下:
{[2,60],[6,61],[11,60],[21,62],[32,60],[56,60],[60,60]}
={(1,0),(12,0),(14,0),(11,0),(10,0),(13,0),(9,0)}
(4)求出首尾模式4[14,37]的编号链表。
x从1到14,y从37-64,找到每个4[x,y]的行号链,组成行号链_表如下:
{[8,43],[14,41],[14,62]}={(2,0),(12,0),(14,0)}
步骤4.4,
L3={(1,0),(12,0),(14,0),(11,0),(10,0),(13,0),(9,0)}
L4={(2,0),(12,0),(14,0)}
操作按下表所示顺序进行。
L3、L4每列的表头显示了各组的行号链表,每行L3、L4显示了各自的 当前行号,当前行号不全相等时,对当前行号非最大值的行号链表执行提取 行号操作,目标参数为当前行号的最大值,执行这个操作的行号链表在“提 取行号”列显示,提取行号后的当前行号在下一行显示;
当前行号全相等时,用归并模式执行预判操作:
步骤4.5,对母串表中的第14行执行预判操作:
第3组:母模式{11,24,60}包含子模式{60};
第4组:母模式{14,,60,62}不包含子模式{14,22,37};
预判不成功;
当提取行号时,遇行号链表为空,则预判结束。
Claims (10)
1.一种汉字串匹配预判方法,其特征在于,具体按以下步骤实施:
步骤1,将所有汉字依照频度进行重新编码;
步骤2,将经步骤1编码后的汉字进行变换,得到归并和首尾两种模式;
步骤3,存储汉字串及其归并模式,然后按照首尾模式建立索引;
步骤4,以输入的汉字串为子串,预先存储的所有汉字串为母串,对每个母串进行预判,判断匹配是否成功。
2.根据权利要求1所述的一种汉字串匹配预判方法,其特征在于,所述步骤1具体按以下步骤实施:
步骤1.1,将所有汉字按照频度从大到小的顺序排列;
步骤1.2,创建一个表,包含G*2组,每组C/2个代码,共G*C个元素;每个元素包含组号、代码号、一个暂时为空的汉字集合、一个暂时为0的频度值;
步骤1.3,将汉字逐个填入经步骤1.2建立的表;
步骤1.4,将经步骤1.3填好的表的元素转入一个二维表,该二维表有C/2行,每行G*2列,按组号对应列号,代码号对应行号的规则填入;
步骤1.5,根据元素的编码频度将步骤1.4得到的二维表按列重新排序;奇数列按元素编码频度从小到大的顺序排列;偶数列按元素编码频度从大到小的顺序排列;
步骤1.6,偶数列合并到前1列,即原第2列合并到原第1列,原第4列合并到原第3列,……,原第G*2列合并到原G*2-1列;合并方法是,奇数列的各行保持不变,增加新行,将偶数列的各元素按原第1行到第N/2行的顺序逐个增加为新行,每个元素1行,最终得到一个N行G列的新二维表;
步骤1.7,以步骤1.6得到的新二维表的列号为组号,行号为代码号,重新分配每个元素的组号、代码号,这样,每个汉字都有了一个编码。
3.根据权利要求2所述的一种汉字串匹配预判方法,其特征在于,所述步骤1.3中,将汉字逐个填入经步骤1.2建立的表,填入时,将汉字填入表的第一个元素,即将汉字添加到元素的汉字集合,将汉字的频度值累加到该元素的编码频度,填入后,将该元素移动到从前往后第一个编码频度大于该元素编码频度的元素的前一个位置,原位置的元素及此前的所有元素均顺次往前推。
4.根据权利要求1所述的一种汉字串匹配预判方法,其特征在于,所述步骤2具体按以下步骤实施:
步骤2.1,剔除掉汉字串中重复的汉字;
步骤2.2,每个汉字用临时编码按步骤1的编码方法进行重新编码;
步骤2.3,按新编码的组号将汉字分组;
步骤2.4,每组代码剔除掉重复的代码,按代码从小到大的顺序排列,所得代码序列为归并模式;如该组代码为空,则归并模式也为空;
步骤2.5,将归并模式中的代码只保留最小的(C1)和最大的(C2),其他去掉,所得整数对连同归并模式的代码个数称为首尾模式,表示为[C1,C2,n];归并模式为空,首尾模式也为空;归并模式只有一个代码Ct,首尾模式为[Ct,Ct,1];其中n如果大于nMax,则令n=nMax;
如果nMax=1,此时上述的首尾模式可表示为[C1,C2]。
5.根据权利要求1或4所述的一种汉字串匹配预判方法,其特征在于,所述步骤3具体按以下步骤实施:
步骤3.1,建立汉字串表,为空表,当前行号设置为0;
步骤3.2,建立首尾模式索引表,一次性添加所有行(C*(C+1)*nMax/2行),每行的每个开始行号、结束行号的值设为0;
步骤3.3,在表中存储一个汉字串;
步骤3.4在表中删除一个汉字串。
6.根据权利要求5所述的一种汉字串匹配预判方法,其特征在于,所述步骤3.3中,在表中存储一个汉字串具体按以下步骤实施:
步骤3.3.1,在汉字串表中按汉字串相等的条件查找,如果已有相同汉字串则不予添加;
步骤3.3.2,根据汉字串求出归并模式,共有G个,在汉字串表中添加一个新行,行号列为当前行号加1,设编号为Sn,汉字串列为输入的汉字串,各个归并模式列为刚刚求出的各个归并模式;
步骤3.3.3,检查每组,如果存在归并模式,执行步骤3.3.4;如果不存在,无操作;
步骤3.3.4,根据归并模式求出首尾模式,根据首尾模式找出其在索引表中的行号i,从此行找出该组的起始行号x和结束行号y;
如果无起始行号,即x=0,设起始行号列的值为Sn;
如果有起始行号,但无结束行号,即x≠0,y=0,将汉字串表x行该组的下个编号设为Sn,设结束行号列为Sn;
如果起始行号、结束行号均有,即x≠0,y≠0,将汉字串表y行该组的下个行号设为Sn,结束行号列也设为Sn。
7.根据权利要求5所述的一种汉字串匹配预判方法,其特征在于,所述步骤3.4在表中删除一个汉字串,具体按以下步骤实施:
步骤3.4.1,在汉字串表中按汉字串相等的条件查找,如果未查到汉字串,没有操作,如果查到,设查到的汉字串的行号为Sn;
步骤3.4.2,根据Sn行的归并模式求出各组的首尾模式,相应组的归并模式为空无操作,不为空对每组执行步骤3.4.3;
步骤3.4.3,根据首尾模式求出其在索引表中的行位置i,从此位置找出该组的起始行号x和结束行号y;
步骤3.4.4,如果x=Sn,找出汉字串表x行本组的下个行号x1,如果x1=0即x行本组没有下一行,索引表i行本组的起始行号和结束行号都设为0,即索引表i行本组的数据为空;如果x1≠0,索引表i行本组的起始行号设为x1,步骤结束,如果x≠Sn,继续步骤3.4.5;
步骤3.4.5,从x1行开始找其下个行号x2,再找x2的下个行号x3……再找i-1行的下个行号xi……,对每行执行如下操作:
如果xi的下个行号等于Sn,将xi的下个行号设为Sn的下个行号,Sn没有下个行号时将xi的下个行号设为空,并将结束行号设为xi,步骤结束,如果xi的下个行号不等于Sn,继续找下个行号并执行同样的操作;
步骤3.4.6,在汉字串表中标记n行为已废除,其行号不回收。
8.根据权利要求1所述的一种汉字串匹配预判方法,其特征在于,所述步骤4具体为:输入为子串、汉字串表、首尾模式索引表;输出为匹配成功的汉字串;针对输入子串,把汉字串表中的所有汉字串都作为母串,在汉字串表中搜索,找出预判成功的母串并逐一匹配,最终得到匹配成功的母串;具体按照如下步骤实施:
步骤4.1,求出子串各组的归并模式、首尾模式:
各组的归并模式表示为g{C1,C2,……,Cn},其中1≤g≤G,为组号;1≤Ci≤C(1≤i≤n);C1<C2<……<Cn;归并模式为空表示为g{};
各组的首尾模式表示为:g[C1,C2,n],其中1≤g≤G为组号;1≤C1≤C为首尾模式首代码;C1≤C2≤C为首尾模式尾代码;各组的首尾模式分别处理如下:首尾模式为空无操作;不为空执行步骤4.2,产生本组的编号链_表,针对所有各组的编号链_表执行步骤4.4;
步骤4.2,此步骤的输入为g[C1,C2,n],遍历1到C1,设每个值为x;针对每个x,遍历C2到C,设每个值为y;
对每一对x、y,求出其对应的代码个数值的下限m1和上限m2,求下限m1的方法如下:
x=C1,y=C2:m1=n;
x=C1,y≠C2:m1=n+1;
x≠C1,y=C2:m1=n+1;
x≠C1,y≠C2:m1=n+2;
上限m2=y-x+1,如果m2>nMax,则取m2=nMax;
如果上下限倒挂,即m1>m2,那么针对这一对x、y的操作结束;如果m1≤m2,则遍历m1到m2,设每个值为m;
上述的每一组x、y、m组成一个首尾模式g[x,y,m],找出该首尾模式在索引表中的行位置,从此行按组号g找出一个行号链,表示为Lg[x,y,m],意为g[x,y,m]的行号链,行号链的具体值用起始行号h1,结束行号h2表示为Lg(h1,h2),也可以只用起始行号表示为Lg(h1),其中h1<h2;如果行号链中只有一个行号h1,表示为Lg(h1,0);
上述每一个首尾模式g[x,y,m]都对应一个行号链,剔除其中的空链,其余行号链组成一个行号链_表;一个行号链_表包含多个行号链,用包括在{}对中,以逗号隔开的行号链表示;
步骤4.3,针对步骤4.1产生的所有各组的行号链_表的操作,具体内容如下:
步骤4.3.1,获取各行号链_表的当前行号,如有行号链_表的当前行号为空,操作在此结束,如无,继续下述操作;
步骤4.3.2,如果各行号链_表的当前行号不全相等,找出其中的最大值m,对其中所有当前行号不为m的行号链_表执行Get(m),即提取行号操作,再执行本步骤,如果有行号链_表的提取结果为空,则操作结束;
步骤4.3.3,如果当前行号全相等,将此全相等的行号设为n执行步骤4.4,执行完后继续本步骤;
步骤4.4,找到汉字串表的n行数据,将该行数据的归并模式作为母模式,子串的归并模式作为子模式,按步骤4.5进行模式匹配,匹配不成功,本操作结束;
如匹配成功,说明子串包含于母串的预判成功,接下来应使用标准模式对母串和子串进行匹配操作;
无论预判和匹配是否成功,都对每个行号链_表执行Get(n+1)操作,如果有结果为空则操作结束;否则执行步骤4.4;
步骤4.5,母模式和子模式都包括G个归并模式,母模式和子模式匹配成功的条件是:子模式中不为空的归并模式,在母模式中也不为空。
9.根据权利要求8所述的一种汉字串匹配预判方法,其特征在于,所述步骤4.2中涉及行号链、行号链_表的操作具体如下:
步骤4.2.1,行号链操作,行号链由互相链接的若干个行号节点组成,每个节点有两个字段:行号、下个行号,其中下个行号是本行号链中其他一个节点的编号,全部节点中,有且只有一个是首节点,首节点不是其他任何节点的下节点,此处的行号链按从小到大的顺序排列,即任何节点的下节点的行号一定大于其自身的行号;
步骤4.2.1.1,当前行号,设行号链为L,当前行号表示为L.Get,当前行号的初始值设置为首节点的行号,操作过程中可改变当前行号,如果没有首节点,当前行号为空,当前行号为空也称为本行号链为空;
步骤4.2.1.2,提取行号,设行号链为L,提取行号操作表示为L.Get(x),从当前行号开始找,以遇到的第一个不小于x的行号为结果,并将当前行号也设置为此行号,如果一直到最后一个行号,也没有符合条件的行号,则结果为空;
步骤4.3.2,行号链_表操作,行号链_表是一个集合,其元素为行号链,各行号链中的所有行号互不重合,即没有任何两个是相等的;
步骤4.3.2.1,当前行号,设行号链_表为B,当前行号表示为B.Get,为各元素的当前行号中最小的。其中为空的行号链不参与比较。如果各元素的当前行号都为空,则本行号链_表的当前行号也为空,也称为本行号链_表为空;
步骤4.3.2.2,提取行号,设行号链_表为B,提取行号操作表示为B.Get(x)。对行号链表中的各元素执行Get(x),返回其中的最小值,其中为空的行号链不参与运算。
10.根据权利要求8所述的一种汉字串匹配预判方法,其特征在于,所述步骤4.5的具体匹配过程为:
以下步骤针对某一组的一个母模式Ai和同一组的一个子模式Bi,其中Ai的编码为a1、a2......an,a1<a2<......<an;Bi的编码为b1、b2......bn,b1<b2<......<bn;
步骤4.5.1,令i=1,j=1;
步骤4.5.2,如果bj不存在,归并模式匹配成功;
如果ai不存在,归并模式匹配失败;
如果ai=bj,i加1,j加1,执行步骤4.5.2;
如果ai<bj,i加1,j不变,执行步骤4.5.2;
如果ai>bj,i不变,j加1,执行步骤4.5.2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011048161.XA CN112307277A (zh) | 2020-09-29 | 2020-09-29 | 一种汉字串匹配预判方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011048161.XA CN112307277A (zh) | 2020-09-29 | 2020-09-29 | 一种汉字串匹配预判方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112307277A true CN112307277A (zh) | 2021-02-02 |
Family
ID=74488195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011048161.XA Pending CN112307277A (zh) | 2020-09-29 | 2020-09-29 | 一种汉字串匹配预判方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112307277A (zh) |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6094647A (en) * | 1989-06-14 | 2000-07-25 | Hitachi, Ltd. | Presearch type document search method and apparatus |
CN1725156A (zh) * | 2004-07-23 | 2006-01-25 | 黄桂汉 | 汉字输入方法及使用该方法进行输入的键盘 |
CN1794589A (zh) * | 2004-12-21 | 2006-06-28 | 联发科技股份有限公司 | 转换方法以及系统 |
CN101533398A (zh) * | 2008-03-16 | 2009-09-16 | 徐文新 | 模式匹配索引查找方法 |
CN101546228A (zh) * | 2009-05-07 | 2009-09-30 | 腾讯科技(深圳)有限公司 | 一种实现英文提示的输入方法和装置 |
US7734671B1 (en) * | 2007-10-09 | 2010-06-08 | The United States Of America As Represented By The Director, National Security Agency | Method of sorting text and string searching |
CN101930292A (zh) * | 2009-06-18 | 2010-12-29 | 徐州捷诺软件科技有限公司 | 汉字的形音数的综合编码方法和应用 |
CN102262669A (zh) * | 2011-07-28 | 2011-11-30 | 西安空间无线电技术研究所 | 一种从汉语拼音到汉字内码的快速输出方法 |
CN102685098A (zh) * | 2012-02-24 | 2012-09-19 | 华南理工大学 | 一种乱序数据包流免重组多模式匹配方法 |
CN103064844A (zh) * | 2011-10-20 | 2013-04-24 | 北京中搜网络技术股份有限公司 | 索引装置、索引方法、检索装置、检索方法和检索系统 |
CN103699647A (zh) * | 2013-12-26 | 2014-04-02 | 苏州大学 | 一种字符串词典的索引方法及系统 |
CN103810620A (zh) * | 2014-02-21 | 2014-05-21 | 广东绿瘦健康信息咨询有限公司 | 广告投放优化方法及其系统 |
CN104123011A (zh) * | 2009-06-18 | 2014-10-29 | 徐州捷诺软件科技有限公司 | 汉字和汉语拼音的编码输入方法和应用 |
CN104156721A (zh) * | 2014-07-31 | 2014-11-19 | 南京师范大学 | 一种基于模板匹配的脱机汉字笔画提取方法 |
US20160267142A1 (en) * | 2014-10-03 | 2016-09-15 | The Regents Of The University Of Michigan | Detecting at least one predetermined pattern in stream of symbols |
CN107122222A (zh) * | 2017-04-20 | 2017-09-01 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN108984695A (zh) * | 2018-07-04 | 2018-12-11 | 科大讯飞股份有限公司 | 一种字符串匹配方法及装置 |
CN109213808A (zh) * | 2018-09-26 | 2019-01-15 | 长沙学院 | 搜索方法、互联网信息库、基于搜索的舆情分析系统 |
-
2020
- 2020-09-29 CN CN202011048161.XA patent/CN112307277A/zh active Pending
Patent Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6094647A (en) * | 1989-06-14 | 2000-07-25 | Hitachi, Ltd. | Presearch type document search method and apparatus |
CN1725156A (zh) * | 2004-07-23 | 2006-01-25 | 黄桂汉 | 汉字输入方法及使用该方法进行输入的键盘 |
CN1794589A (zh) * | 2004-12-21 | 2006-06-28 | 联发科技股份有限公司 | 转换方法以及系统 |
US7734671B1 (en) * | 2007-10-09 | 2010-06-08 | The United States Of America As Represented By The Director, National Security Agency | Method of sorting text and string searching |
CN101533398A (zh) * | 2008-03-16 | 2009-09-16 | 徐文新 | 模式匹配索引查找方法 |
CN101546228A (zh) * | 2009-05-07 | 2009-09-30 | 腾讯科技(深圳)有限公司 | 一种实现英文提示的输入方法和装置 |
CN104123011A (zh) * | 2009-06-18 | 2014-10-29 | 徐州捷诺软件科技有限公司 | 汉字和汉语拼音的编码输入方法和应用 |
CN101930292A (zh) * | 2009-06-18 | 2010-12-29 | 徐州捷诺软件科技有限公司 | 汉字的形音数的综合编码方法和应用 |
CN102262669A (zh) * | 2011-07-28 | 2011-11-30 | 西安空间无线电技术研究所 | 一种从汉语拼音到汉字内码的快速输出方法 |
CN103064844A (zh) * | 2011-10-20 | 2013-04-24 | 北京中搜网络技术股份有限公司 | 索引装置、索引方法、检索装置、检索方法和检索系统 |
CN102685098A (zh) * | 2012-02-24 | 2012-09-19 | 华南理工大学 | 一种乱序数据包流免重组多模式匹配方法 |
CN103699647A (zh) * | 2013-12-26 | 2014-04-02 | 苏州大学 | 一种字符串词典的索引方法及系统 |
CN103810620A (zh) * | 2014-02-21 | 2014-05-21 | 广东绿瘦健康信息咨询有限公司 | 广告投放优化方法及其系统 |
CN104156721A (zh) * | 2014-07-31 | 2014-11-19 | 南京师范大学 | 一种基于模板匹配的脱机汉字笔画提取方法 |
US20160267142A1 (en) * | 2014-10-03 | 2016-09-15 | The Regents Of The University Of Michigan | Detecting at least one predetermined pattern in stream of symbols |
CN107122222A (zh) * | 2017-04-20 | 2017-09-01 | 深圳大普微电子科技有限公司 | 一种字符串的搜索系统及方法 |
CN108984695A (zh) * | 2018-07-04 | 2018-12-11 | 科大讯飞股份有限公司 | 一种字符串匹配方法及装置 |
CN109213808A (zh) * | 2018-09-26 | 2019-01-15 | 长沙学院 | 搜索方法、互联网信息库、基于搜索的舆情分析系统 |
Non-Patent Citations (2)
Title |
---|
QING CAI: "SUBTLEX-CH: Chinese word and character frequencies based on film subtitles", 《PLOS ONE》, vol. 5, no. 6, pages 1 - 8 * |
张会昌: "基于领域词典的中文文本相似度匹配", 《中国优秀硕士学位论文全文数据库 信息科技》, pages 138 - 1238 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Larsson | Structures of String Matching and Data Compression. | |
CN101345707B (zh) | 一种实现IPv6报文分类的方法及设备 | |
Crochemore et al. | Fast computation of a longest increasing subsequence and application | |
CN105610447B (zh) | 基于lz77算法的分区编码压缩方法 | |
CN109299086B (zh) | 最优排序键压缩和索引重建 | |
WO2011057680A1 (en) | Indexing compressed data | |
US20230403026A1 (en) | Sorting network-based dynamic huffman encoding method, apparatus and device | |
Ganguly et al. | pBWT: Achieving succinct data structures for parameterized pattern matching and related problems | |
Li et al. | Filter level pruning based on similar feature extraction for convolutional neural networks | |
US20220005546A1 (en) | Non-redundant gene set clustering method and system, and electronic device | |
CN103186669A (zh) | 关键词快速过滤方法 | |
CN108509505A (zh) | 一种基于分区双数组Trie的字符串检索方法及装置 | |
Andersson et al. | Suffix trees on words | |
CN108628953A (zh) | 一种基于fpga的并行字符串匹配算法 | |
CN108628907A (zh) | 一种用于基于Aho-Corasick的Trie树多关键词匹配的方法 | |
CN114756591B (zh) | 一种基于双向链表的数据筛选方法和系统 | |
CN113035282A (zh) | 基于标签数据生长基因的数据序列处理方法 | |
CN109800337B (zh) | 一种适用于大字母表的多模式正则匹配算法 | |
CN107565975A (zh) | Fastq格式文件无损压缩的方法 | |
CN112307277A (zh) | 一种汉字串匹配预判方法 | |
CN104052749B (zh) | 一种链路层协议数据类型识别的方法 | |
CN106708532B (zh) | 基于tcam的多层次正则表达式匹配方法 | |
JP4208326B2 (ja) | 情報索引装置 | |
CN113065419B (zh) | 一种基于流量高频内容的模式匹配算法及系统 | |
CN111814009B (zh) | 一种基于搜索引擎检索信息的模式匹配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |