CN113094470B - 文本搜索方法和系统 - Google Patents
文本搜索方法和系统 Download PDFInfo
- Publication number
- CN113094470B CN113094470B CN202110378851.XA CN202110378851A CN113094470B CN 113094470 B CN113094470 B CN 113094470B CN 202110378851 A CN202110378851 A CN 202110378851A CN 113094470 B CN113094470 B CN 113094470B
- Authority
- CN
- China
- Prior art keywords
- pinyin
- text
- tree
- branch
- characteristic value
- 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 72
- 230000008569 process Effects 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 9
- 230000010354 integration Effects 0.000 claims description 7
- 238000007476 Maximum Likelihood Methods 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000010076 replication Effects 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 12
- 238000003491 array Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000009776 industrial production Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3334—Selection or weighting of terms from queries, including natural language queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/338—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
- G06F40/216—Parsing using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/232—Orthographic correction, e.g. spell checking or vowelisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明提供了文本搜索方法和系统,其针对用户输入文本可能造成输入错误的情况,其利用拼音树确定文本的搜索顺序,再对用户输入的文本内容进行排序和压缩得到特征值,然后对从拼音树搜索到的节点集合的每个节点的特征值和用户输入的文本的特征值进行基于二分法判断的文本比对,以及对完全比对成功的内容和不完全比对成功的内容按照不同优先级进行返回,以便于快速地和广泛地搜索出相应的结果,从而能够准确地搜索出输入完全匹配的内容和拼音正确但输入文字不正确的内容,以此提高中文搜索的效率和可靠性。
Description
技术领域
本发明涉及工业生产仿真设计的技术领域,特别涉及文本搜索方法和系统。
背景技术
关键字搜索是指在预定的文本中搜索某个关键字的技术,其广泛应用于互联网和软件开发领域中。目前,通常使用倒排索引的方式来进行关键字搜索,其能够实现将用户搜索的内容先去通过前缀树搜索得到关键字,再通过关键字将对应的关联文档返回回来,从而完成对关键字的搜索。但是,现有技术的关键字搜索方式注重于精准型的搜索模式而非广泛匹配的搜索模式。比如现代拼音输入法在输入拼音的过程中,往往依照用户输入的拼音优先展示用户常用的中文词语,而非真正用户在本次搜索中需要的中文词语,使用户错误输入拼音相同但文字不同的中文,导致无法查询到关键字;又或者因为用户因故意避开敏感词去输入非敏感的中文词语或者拼音,导致无法触发屏蔽检测;即用户会输入错误中文汉字或用拼音代替中文,导致文本搜索的结果可能性和可靠性被降低了。同时,对于小微公司或个人创业者来说,若想要搭建一套简单可用的分布式的搜索或关键字检测系统,在搭建、调试、代码接入和运行维护上都要付出较高的成本和精力。
发明内容
针对现有技术存在的缺陷,本发明提供文本搜索方法和系统,其包括构建文本索引库和文本的搜索,构建文本索引库包括:确定需要搜索的文本A1及其对应的搜索结果C1,并生成该文本A1对应的特征值A2;将该文本A1分解得到包含拼音的数组的集合{B1、B2、...、Bn};根据该包含拼音的数组的集合{B1、B2、...、Bn}和该特征值A2,构建形成关于该搜索结果C1的拼音树形式的文本索引库;而文本的搜索包括:将输入的目标文本M1中包含的所有文本转换为拼音文本M2;将输入的该目标文本M1处理得到对应的特征值M3;以拼音文本M2作为搜索依据,对该文本索引库进行搜索,得到符合拼音文本M2的节点集合,再依据所获得的节点集合中每个节点的特征值和该特征值M3进行匹配,反馈得到该文本索引库中的节点内容作为搜索结果;可见,该文本搜索方法和系统是针对用户输入文本可能造成输入错误的情况,其利用拼音树确定文本的搜索顺序,再对用户输入的文本内容进行排序和压缩得到特征值,然后对从拼音树搜索到的节点集合的每个节点的特征值和用户输入的文本的特征值进行基于二分法判断的文本比对,以及对完全比对成功的内容和不完全比对成功的内容按照不同优先级进行返回,以便于快速地和广泛地搜索出相应的结果,从而能够准确地搜索出输入完全匹配的内容和拼音正确但输入文字不正确的内容,以此提高中文搜索的效率和可靠性。
本发明提供文本搜索方法,其特征在于,其包括构建文本索引库的过程和文本的搜索过程,其中:
所述构建文本索引库的过程包括:
第一、确定需要搜索的文本A1及其对应的搜索结果C1,并生成所述文本A1对应的特征值A2;
第二、将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn};其中,Bi表示第i个拼音组,i=1,2,3…n;n表示所述文本A1分解得到的拼音组的数量;
第三、根据所述集合{B1、B2、…、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库;
所述文本的搜索过程包括:
第一、将输入的目标文本M1中包含的所有文本转换为对应的拼音文本M2,拼音文本M2是目标文本M1中所有最小单元各自对应的最小元素依序构成的文本,所述最小元素为最小单元对应的字符,所述最小单元包括中文字符、英文单词、字母或符号,所述字符包括字母和/或符号;
第二、对输入的所述目标文本M1进行处理得到对应的特征值M3;
第三、根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果;
进一步,在所述构建文本索引库的过程中,将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn}具体包括:
以中文字符、英文单词、字母、符号为最小单元,将所述文本A1依序进行切分,并将切分出的中文字符替换为对应的汉语拼音,从而得到所述文本A1对应的一组以汉语拼音、英文单词和符号为最小元素的字符组F1;
依序取所述字符组F1中的每一个最小元素为字符头、以排列在该字符头后面的所有最小元素为后续字符,将每个字符头和该个字符头对应的后续字符依序排列,组成该个字符头对应的一个拼音组,从而最终生成每个字符头各自对应的拼音组;将第i个字符头对应的拼音组表示为所述Bi,最终构成所述集合{B1、B2、…、Bn};
进一步,在所述构建文本索引库的过程中,根据所述集合{B1、B2、…、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库具体包括:
将拼音组Bi对应拼音树的第i个分支,第i个分支包括依序连接的ni个节点,ni表示拼音组Bi包括的所有最小元素中字符的总数量;所述字符包括字母和/或符号;ni个节点上依序承载拼音组Bi的相应字符;
所述拼音树的每个分支对应的叶子节点上承载所述特征值A2和所述搜索结果C1,从而形成所述文本索引库;
进一步,在所述文本的搜索过程中,根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
在所述拼音树T的每个分支中搜索所述拼音文本M2,
若确定所述拼音树T的任何一个分支中不包含所述拼音文本M2,则返回空白形式的搜索结果;
若确定所述拼音树T的至少一个分支中包含所述拼音文本M2,则确定所述目标文本M1对应的特征值M3;
判断所述至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含所述特征值M3,最后将匹配到的叶子节点反馈作为搜索结果;
进一步,在所述中文文本的搜索过程中,判断所述至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含所述特征值M3,最后将匹配到的叶子节点反馈作为搜索结果具体包括:
对所述至少一个分支中每个分支对应的叶子节点上承载的特征值和特征值M3进行二分法判断;
若所述至少一个分支中每个分支对应的叶子节点上承载的特征值均不包含所述特征值M3,则返回空白形式的搜索结果;
若所述至少一个分支中存在至少一个第二目标分支对应的叶子节点上承载的特征值包含所述特征值M3,则根据每个第二目标分支对应的叶子节点上承载的特征值与特征值M3之间的匹配度输出相应的搜索结果;
进一步,在所述文本的搜索过程中,根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
对于拼音文本M2,依序提取所述拼音文本M2中的最小元素;
根据所述拼音文本M2中的最小元素,计算拼音树T中每个分支与所述拼音文本M2之间的匹配率;
将匹配率按照从大到小的顺序进行排序;将位于前N位的匹配率对应的分支作为所述拼音文本M2匹配的第一目标分支;N为预设值,为大于或等于1的正整数;
对每个第一目标分支对应的叶子节点上承载的特征值与特征值M3进行二分法判断;
若每个第一目标分支对应的叶子节点上承载的特征值均不包含所述特征值M3,则返回空白形式的搜索结果、或者将所述第一目标分支对应的叶子节点上承载的搜索结果作为所述特征值M3对应的搜索结果进行反馈;
若至少一个第一目标分支对应的叶子节点上承载的特征值包含所述特征值M3,则根据每个第一目标分支对应的叶子节点上承载的特征值与特征值M3之间的匹配度输出相应的搜索结果;
进一步,按照如下公式(1)、(2)、(3)计算拼音树T中每个分支与所述拼音文本M2之间的匹配率:
其中,Y1(M2|di)表示拼音文本M2与拼音树T中第i个分支之间的匹配率;|di|表示拼音树中第i个分支di的长度;|T|表示拼音树T中所有分支的总长度;tj表示拼音文本M2中第j个最小元素;tf(tj,T)表示拼音文本M2中第j个最小元素在拼音树T中出现的频率;sf(tj,di)表示拼音文本M2中第j个最小元素在拼音树T中第i个分支中出现的频率;|d|表示拼音树T中所有分支的长度平均值;P(tj|di)表示拼音文本M2中第j个最小元素在第i个分支中出现的概率系数,表示连乘运算;P(di)表示拼音树中第i个分支di的长度占拼音树T中所有分支的总长度的比例;
进一步,按照如下步骤B1-B3确定拼音树T中每个分支与所述拼音文本M2之间的匹配率Y3(M2|di):
步骤B1、按照如下公式(1)、(2)、(3)计算拼音树T中每个分支与所述拼音文本M2之间的第一匹配率:
其中,Y1(M2|di)表示拼音文本M2与拼音树T中第i个分支之间的第一匹配率;|di|表示拼音树中第i个分支di的长度;|T|表示拼音树T中所有分支的总长度;tj表示拼音文本M2中第j个最小元素;tf(tj,T)表示拼音文本M2中第j个最小元素在拼音树T中出现的频率;sf(tj,di)表示拼音文本M2中第j个最小元素在拼音树T中第i个分支中出现的频率;|d|表示拼音树T中所有分支的长度平均值;P(tj|di)表示拼音文本M2中第j个最小元素在第i个分支中出现的概率系数,表示连乘运算;P(di)表示拼音树中第i个分支di的长度占拼音树T中所有分支的总长度的比例;
步骤B2、定义拼音树T中第i个分支与所述拼音文本M2之间的第二匹配率为Y2(M2|di),di表示拼音树T的第i个分支;设k个中间参数v={θ1,θ2,...,θk},k等于拼音树T中分支的个数,设θi为所述拼音树中出现频率最高的第i个最小元素;那么有:
为了确定v,定义最大似然函数L为:
其中,表示tj在第i个分支di中出现的次数;tj表示拼音文本M2中第j个最小元素;P(tj|θz)表示当θz为所述拼音树中出现频率最高的最小元素时,tj在拼音树中出现的概率;P(di|θz)表示是当θz为所述拼音树中出现频率最高的最小元素时,di中出现θz的概率;P(θz)表示当θz为所述拼音树中出现频率最高的最小元素时,θz在所述拼音树中出现的概率;P(tj|θz)、P(di|θz)、P(θz)为后验概率,通过贝叶斯公式求解;最终当最大似然函数L取最大化的时候,确定参数向量v={θ1,θ2,...,θk}的值,进而确定出P(M2|θi)和P(θi|di),其中,P(θi|di)表示θi在di出现的频率;P(M2|θi)表示θi在M2中出现的频率;进而根据公式(4)确定出Y2(M2|di);
步骤B3、确定Y3(M2|di)=max(Y1(M2|di),Y2(M2|di))。
本发明还提供文本搜索系统,其特征在于,其包括文本索引库构建模块和文本搜索模块;其中,
所述文本索引库构建模块用于确定需要搜索的文本A1及其对应的搜索结果C1,并生成所述文本A1对应的特征值A2;
再将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、...、Bn};其中,Bi表示第i个拼音组,i=1,2,3...n;n表示所述文本A1分解得到的拼音组的数量;
最后根据所述集合{B1、B2、...、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库;
所述文本搜索模块用于将输入的目标文本M1中包含的所有文本转换为对应的拼音文本M2,拼音文本M2是目标文本M1中所有最小单元对应的字符依序构成的文本,所述最小单元包括中文字符、英文单词、字母或符号,所述字符包括字母和/或符号;
再对输入的所述目标文本M1进行处理得到对应的特征值M3;
最后根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果;
进一步,还包括核心搜索模块、集群通信模块和服务集成模块;
所述核心搜索模块用于基于特定编程语言实现的单机搜索逻辑;
所述集群通信模块包括基于发布订阅模型的若干预设服务,所述集群通信模块用于对所述文本搜索系统接收到的请求在集群服务间进行命令和数据的传播复制并反馈对应的预设服务处理结果;
所述服务集成模块用于提供基于spring boot应用的配置和注解,或者提供将搜索功能在spring boot应用上进行配置,或者将spring boot应用升级为集群搜索节点。
相比于现有技术,文本搜索方法和系统包括构建文本索引库和文本的搜索,构建文本索引库包括:确定需要搜索的文本A1及其对应的搜索结果C1,并生成该文本A1对应的特征值A2;将该文本A1分解得到包含拼音的数组的集合{B1、B2、…、Bn};根据该包含拼音的数组的集合{B1、B2、…、Bn}和该特征值A2,构建形成关于该搜索结果C1的拼音树形式的文本索引库;而文本的搜索包括:将输入的目标文本M1中包含的所有文本转换为拼音文本M2;将输入的该目标文本M1处理得到对应的特征值M3;以拼音文本M2作为搜索依据,对该文本索引库进行搜索,得到符合拼音文本M2的节点集合,再依据所获得的节点集合中每个节点的特征值和该特征值M3进行匹配,反馈得到该文本索引库中的节点内容作为搜索结果;可见,该文本搜索方法和系统是针对用户输入文本可能造成输入错误的情况,其利用拼音树确定文本的搜索顺序,再对用户输入的文本内容进行排序和压缩得到特征值,然后对从拼音树搜索到的节点集合的每个节点的特征值和用户输入的文本的特征值进行基于二分法判断的文本比对,以及对完全比对成功的内容和不完全比对成功的内容按照不同优先级进行返回,以便于快速地和广泛地搜索出相应的结果,从而能够准确地搜索出输入完全匹配的内容和拼音正确但输入文字不正确的内容,以此提高中文搜索的效率和可靠性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的文本搜索方法的流程示意图。
图2为本发明提供的文本搜索系统的结构示意图。
图3为本发明提供的文本搜索方法中构建文本索引库过程的流程框图。
图4为本发明提供的文本搜索方法中文本的搜索过程的流程框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1,为本发明实施例提供的文本搜索方法的流程示意图。该文本搜索方法包括构建文本索引库的过程和文本的搜索过程,其中:
该构建文本索引库的过程包括:
第一、确定需要搜索的文本A1及其对应的搜索结果C1,并生成该文本A1对应的特征值A2;其中,该搜索结果C1可为但不限于是该文本A1本身、或者与该文本A1对应的文本字本,或者与该文本A1之间有相关关系、关联关系的相关文本等;该特征值A2可为但不限于是该文本A1进行稀疏矩阵变换后得到的稀疏矩阵特征值、或者可以是该文本A1中包括的关键内容等。
第二、将该文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn};其中,Bi表示第i个拼音组,i=1,2,3…n;n表示该文本A1分解得到的拼音组的数量;
第三、根据该集合{B1、B2、…、Bn}和该特征值A2,构建关于该搜索结果C1的拼音树形式的文本索引库;
该文本的搜索过程包括:
第一、将输入的目标文本M1中包含的所有文本转换为对应的拼音文本M2,拼音文本M2是目标文本M1中所有最小单元各自对应的最小元素依序构成的文本,该最小元素为最小单元对应的字符,该最小单元包括中文字符、英文单词、字母或符号,该字符包括字母和/或符号(例如“。”、“,”、“、”等);举例而言,目标文本为“小盒子ok”时,其最小单元为“小、盒、子、ok”这四个最小单元,其中“小”这个最小单元对应的最小元素为“xiao”这个拼音。
第二、对输入的该目标文本M1进行处理得到对应的特征值M3;其中,该特征值M3可通过对该目标文本M1转换为稀疏矩阵后,计算该稀疏矩阵对应的矩阵特征值而得到;
第三、根据该拼音文本M2和该特征值M3,对该拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果。
上述技术方案的有益效果为:该文本搜索方法是针对用户使用拼音输入法来输入文本可能造成输入错误的情况,其利用拼音树确定文本的搜索顺序,再对用户输入的文本内容进行排序和压缩得到特征值,然后对从拼音树搜索到的节点集合的每个节点的特征值和用户输入的文本的特征值进行基于二分法判断的文本比对,以及对完全比对成功的内容和不完全比对成功的内容按照不同优先级进行返回,以便于快速地和广泛地搜索出相应的结果,从而能够准确地搜索出输入完全匹配的内容和拼音正确但输入文字不正确的内容,以此提高中文搜索的效率和可靠性。
优选地,在该构建文本索引库的过程中,将该文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn}具体包括:
以中文字符、英文单词、字母、符号为最小单元,将该文本A1依序进行切分,并将切分出的中文字符替换为对应的汉语拼音,从而得到该文本A1对应的一组以汉语拼音、英文单词和符号为最小元素的字符组F1;其中,对于将中文字符转换为汉语拼音是按照中文含义拼音的形式进行直接转换,对于将英文单词转换为汉语拼音是将英文单词中的英文字母直接视为汉语拼音而形成,对于将符号转换为汉语拼音是将所有类型的符号均直接转换为某一特定类型的汉语字符、比如汉语字符“a”、“e”、“i”、“o”这类元音字符。
依序取该字符组F1中的每一个最小元素为字符头、以排列在该字符头后面的所有最小元素为后续字符,将每个字符头和该个字符头对应的后续字符依序排列,组成该个字符头对应的一个拼音组,从而最终生成每个字符头各自对应的拼音组;将第i个字符头对应的拼音组表示为该Bi,最终构成该集合{B1、B2、…、Bn}。
上述技术方案的有益效果为:作为搜索依据并包含中文的文本A1的字符长度通常稍大,其一般包含多个不重复的字符、可能存在中英文混杂且具有语言上的顺序性,将该文本A1,按照以汉字、字母、符号进行分解而得到多个包含拼音的数组F1的集合{B1、B2、…、Bn},可以有效的在保证语言顺序性的前提下,统一利用英文字符的简单性进行匹配,在实际操作中,比如该文本A1经过分割并替换中文字符为汉字字母以及英文字符保持不变的数组F1中,包括a1、a2、a3、…、an-1、an一共n个字符块,并且最后一个字符块为an,则可以将该数组F1拆分分解为a1…an、a2…an、a3…an、…、an-1…an若干字母数组、即{B1、B2、…、Bn},这样能够便于在后续的搜索环节中,可以对用户的输入被转化为字母形式后,以原始字符串内的任意位置为头进行完整的匹配。
优选地,在该构建文本索引库的过程中,根据该集合{B1、B2、…、Bn}和该特征值A2,构建关于该搜索结果C1的拼音树形式的文本索引库具体包括:
将拼音组Bi对应拼音树的第i个分支,第i个分支包括依序连接的ni个节点,ni表示拼音组Bi包括的所有最小元素中字符的总数量;该字符包括字母和/或符号;ni个节点上依序承载拼音组Bi的相应字符;
该拼音树的每个分支对应的叶子节点上承载该特征值A2和该搜索结果C1,从而形成该文本索引库。其中,将该拼音树的每个分支对应的叶子节点上承载该特征值A2和该搜索结果C1可通过随机分配的方式将该特征值A2和该搜索结果C1随机承载在任意一个叶子节点上。
上述技术方案的有益效果为:通过上述过程文本索引库,能够实现拼音树上叶子节点、特征值A2与搜索结果C1三者的一一对应关系。
优选地,在该文本的搜索过程中,根据该拼音文本M2和该特征值M3,对该拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
在该拼音树T的每个分支中搜索该拼音文本M2,
若确定该拼音树T的任何一个分支中不包含该拼音文本M2,则返回空白形式的搜索结果;
若确定该拼音树T的至少一个分支中包含该拼音文本M2,则确定该目标文本M1对应的特征值M3;其中,可按照unicode码进行排序和压缩,从而得到所述目标文本M1对应的特征值M3;
判断该至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含该特征值M3,最后将匹配到的叶子节点反馈作为搜索结果,即将匹配到的叶子节点自身承载的搜索结果C1直接反馈作为最终的搜索结果。
上述技术方案的有益效果为:基于该多个包含拼音的数组的集合{B1、B2、…、Bn}构建相应的拼音树T,这样能够将拼音树组的集合{B1、B2、…、Bn}中的每个子集数组都转换为具有链表结构的拼音搜索分支,从而可以进行文本的双端匹配,大大提高该拼音集合的字符数据可查询性,而在实际操作中,该拼音树T可具有多叉树的数据结构,这里就不再做进一步累述。此外,通过在该拼音树T的每一个叶子节点上设置每一个中文文本A1对应的特征值A2及其对应的搜索结果C1,这样能够以该特征值A2作为每一个叶子节点的特征符号,对于已经匹配到拼音树获取的节点集合再进行一次特征值的比对,从而可以对搜索结果进行精度调整和权重评价。
优选地,在该中文文本的搜索过程中,判断该至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含该特征值M3,最后将匹配到的叶子节点反馈作为搜索结果具体包括:
对该至少一个分支中每个分支对应的叶子节点上承载的特征值和特征值M3进行二分法判断;
若该至少一个分支中每个分支对应的叶子节点上承载的特征值均不包含该特征值M3,则返回空白形式的搜索结果;
若该至少一个分支中存在至少一个第二目标分支对应的叶子节点上承载的特征值包含该特征值M3,则根据每个第二目标分支对应的叶子节点上承载的特征值与特征值M3之间的匹配度输出相应的搜索结果,其中,根据特征值匹配的结果按照不同优先级反馈叶子节点承载的搜索结果可为但不限于是根据特征值匹配结果的搜索时间先后顺序作为优先级别的依据来反馈叶子节点承载的搜索结果,或者,可按照第一预设规则反馈搜索结果;其中,该第一预设规则包括:确定每个第二目标分支对应的叶子节点上承载的特征值与该特征值M3之间的匹配度;按照匹配度从大到小的顺序对第二目标分支进行排序,并按照该排序依序将第二目标分支对应的叶子节点上承载的搜索结果输出作为对应的搜索结果。
优选地,在该文本的搜索过程中,根据该拼音文本M2和该特征值M3,对该拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
对于拼音文本M2,依序提取该拼音文本M2中的最小元素;
根据该拼音文本M2中的最小元素,计算拼音树T中每个分支与该拼音文本M2之间的匹配率;
将匹配率按照从大到小的顺序进行排序;将位于前N位的匹配率对应的分支作为该拼音文本M2匹配的第一目标分支;N为预设值,为大于或等于1的正整数;
对每个第一目标分支对应的叶子节点上承载的特征值与特征值M3进行二分法判断;
若每个第一目标分支对应的叶子节点上承载的特征值均不包含该特征值M3,则返回空白形式的搜索结果、或者将该第一目标分支对应的叶子节点上承载的搜索结果作为该特征值M3对应的搜索结果进行反馈;
若至少一个第一目标分支对应的叶子节点上承载的特征值包含该特征值M3,则根据每个第一目标分支对应的叶子节点上承载的特征值与特征值M3之间的匹配度输出相应的搜索结果,其中,根据特征值匹配的结果按照不同优先级反馈叶子节点承载的搜索结果可为但不限于是根据特征值匹配结果的搜索时间先后顺序作为优先级别的依据来反馈叶子节点承载的搜索结果,或者,可按照第二预设规则反馈搜索结果;其中,该第二预设规则包括:确定每个第一目标分支对应的叶子节点上承载的特征值与该特征值M3之间的匹配度;按照匹配度从大到小的顺序对第一目标分支进行排序,并按照该排序依序将第一目标分支对应的叶子节点上承载的搜索结果输出作为对应的搜索结果。
上述技术方案的有益效果为:由于拼音树T中的每一个叶子节点具有相应的拼音文本和特征值A2,通过在该拼音树T中搜索该拼音文本M2,能够快速地和准确地确定该拼音树T中是否存在与该拼音文本M2相对应的拼音,从而能够有效避免在拼音树T上发生遗漏搜索的情况,从而保证搜索的全面性和可靠性,并保证有针对性地反馈相应的搜索结果;而基于二分法,判断该拼音树T的叶子节点上特征值A2是否包含该特征M3,能够以特征值作为唯一性的比对判断标准,从而大大提高在拼音树T上进行搜索的效率。
优选地,按照如下公式(1)、(2)、(3)计算拼音树T中每个分支与该拼音文本M2之间的匹配率:
其中,Y1(M2|di)表示拼音文本M2与拼音树T中第i个分支之间的匹配率;|di|表示拼音树中第i个分支di的长度;|T|表示拼音树T中所有分支的总长度;tj表示拼音文本M2中第j个最小元素;tf(tj,T)表示拼音文本M2中第j个最小元素在拼音树T中出现的频率;sf(tj,di)表示拼音文本M2中第j个最小元素在拼音树T中第i个分支中出现的频率;|d|表示拼音树T中所有分支的长度平均值;P(tj|di)表示拼音文本M2中第j个最小元素在第i个分支中出现的概率系数,表示连乘运算;P(di)表示拼音树中第i个分支di的长度占拼音树T中所有分支的总长度的比例。
优选地,按照如下步骤B1-B3确定拼音树T中每个分支与该拼音文本M2之间的匹配率Y3(M2|di):
步骤B1、按照如下公式(1)、(2)、(3)计算拼音树T中每个分支与该拼音文本M2之间的第一匹配率:
其中,Y1(M2|di)表示拼音文本M2与拼音树T中第i个分支之间的第一匹配率;|di|表示拼音树中第i个分支di的长度;|T|表示拼音树T中所有分支的总长度;tj表示拼音文本M2中第j个最小元素;tf(tj,T)表示拼音文本M2中第j个最小元素在拼音树T中出现的频率;sf(tj,di)表示拼音文本M2中第j个最小元素在拼音树T中第i个分支中出现的频率;|d|表示拼音树T中所有分支的长度平均值;P(tj|di)表示拼音文本M2中第j个最小元素在第i个分支中出现的概率系数,表示连乘运算;P(di)表示拼音树中第i个分支di的长度占拼音树T中所有分支的总长度的比例;
步骤B2、定义拼音树T中第i个分支与该拼音文本M2之间的第二匹配率为Y2(M2|di),di表示拼音树T的第i个分支;设k个中间参数v={θ1,θ2,...,θk},k等于拼音树T中分支的个数,设θi为该拼音树中出现频率最高的第i个最小元素:那么有:
为了确定v,定义最大似然函数L为:
其中,表示tj在第i个分支di中出现的次数;tj表示拼音文本M2中第j个最小元素;P(tj|θz)表示当θz为该拼音树中出现频率最高的最小元素时,tj在拼音树中出现的概率;P(di|θz)表示是当θz为该拼音树中出现频率最高的最小元素时,di中出现θz的概率;P(θz)表示当θz为该拼音树中出现频率最高的最小元素时,θz在该拼音树中出现的概率;P(tj|θz)、P(di|θz)、P(θz)为后验概率,通过贝叶斯公式求解;最终当最大似然函数L取最大化的时候,确定参数向量v={θ1,θ2,...,θk}的值,进而确定出P(M2|θi)和P(θi|di),其中,P(θi|di)表示θi在di出现的频率;P(M2|θi)表示θi在M2中出现的频率;进而根据公式(4)确定出Y2(M2|di);
步骤B3、确定Y3(M2|di)=max(Y1(M2|di),Y2(M2|di))。
上述技术方案的有益效果为:通过上述过程,能够便于计算,不需要理解语言上下文,因为模型考虑的完全概率问题。概率计算是比较容易计算机实现的;以及可扩展强,其实不仅仅对拼音树查找有效,对其他类型的文本结构也有效。
参阅图3和4分别为本发明提供的文本搜索方法中构建文本索引库过程的流程框图和文本的搜索过程的流程框图。该两个流程框图简化地展示该构建文本索引库过程和该文本的搜索过程的流程走向,其实质上与上述关于文本搜索方法整体过程相同,这里就不做重复的累述。
参阅图2,为本发明实施例提供的文本搜索系统的结构示意图。该文本搜索系统包括文本索引库构建模块和文本搜索模块;其中,
该文本索引库构建模块用于确定需要搜索的文本A1及其对应的搜索结果C1,并生成该文本A1对应的特征值A2;
再将该文本A1分解得到包含至少1个拼音组的集合{B1、B2、...、Bn};其中,Bi表示第i个拼音组,i=1,2,3...n;n表示该文本A1分解得到的拼音组的数量;
最后根据该集合{B1、B2、...、Bn}和该特征值A2,构建关于该搜索结果C1的拼音树形式的文本索引库;
该文本搜索模块用于将输入的目标文本M1中包含的所有文本转换为对应的拼音文本M2,拼音文本M2是目标文本M1中所有最小单元对应的字符依序构成的文本,该最小单元包括中文字符、英文单词、字母或符号,该字符包括字母和/或符号;
再对输入的该目标文本M1进行处理得到对应的特征值M3;
最后根据该拼音文本M2和该特征值M3,对该拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果。
上述技术方案的有益效果为:该文本搜索系统是针对用户使用拼音输入法来输入文本可能造成输入错误的情况,其利用拼音树确定文本的搜索顺序,再对用户输入的文本内容进行排序和压缩得到特征值,然后对从拼音树搜索到的节点集合的每个节点的特征值和用户输入的文本的特征值进行基于二分法判断的文本比对,以及对完全比对成功的内容和不完全比对成功的内容按照不同优先级进行返回,以便于快速地和广泛地搜索出相应的结果,从而能够准确地搜索出输入完全匹配的内容和拼音正确但输入文字不正确的内容,以此提高中文搜索的效率和可靠性。
优选地,该文本索引库构建模块将该文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn}具体包括:
以中文字符、英文单词、字母、符号为最小单元,将该文本A1依序进行切分,并将切分出的中文字符替换为对应的汉语拼音,从而得到该文本A1对应的一组以汉语拼音、英文单词、字母或符号为最小单元的字符组F1;
依序取该字符组F1中的每一个最小单元为字符头、以排列在该字符头后面的所有最小单元为后续字符,将每个字符头和该个字符头对应的后续字符依序排列,组成该个字符头对应的一个拼音组,从而最终生成每个字符头各自对应的拼音组;将第i个字符头对应的拼音组表示为该Bi,最终构成该集合{B1、B2、…、Bn}。
上述技术方案的有益效果为:作为搜索依据并包含中文的文本A1的字符长度通常稍大,其一般包含多个不重复的字符、可能存在中英文混杂且具有语言上的顺序性,将该文本A1,按照以汉字、字母、符号进行分解而得到多个包含拼音的数组F1的集合{B1、B2、…、Bn},可以有效的在保证语言顺序性的前提下,统一利用英文字符的简单性进行匹配,在实际操作中,比如该文本A1经过分割并替换中文字符为汉字字母以及英文字符保持不变的数组F1中,包括a1、a2、a3、…、an-1、an一共n个字符块,并且最后一个字符块为an,则可以将该数组F1拆分分解为a1…an、a2…an、a3…an、…、an-1…an若干字母数组、即{B1、B2、…、Bn},这样能够便于在后续的搜索环节中,可以对用户的输入被转化为字母形式后,以原始字符串内的任意位置为头进行完整的匹配。
优选地,该文本索引库构建模块根据该集合{B1、B2、…、Bn}和该特征值A2,构建关于该搜索结果C1的拼音树形式的文本索引库具体包括:
将拼音组Bi对应拼音树的第i个分支,第i个分支包括依序连接的ni个节点,ni表示拼音组Bi包括的所有最小单元中字符的总数量;该字符包括字母和/或符号;ni个节点上依序承载拼音组Bi的相应字符;
该拼音树的每个分支对应的叶子节点上承载该特征值A2和该搜索结果C1,从而形成该文本索引库。
上述技术方案的有益效果为:通过上述过程文本索引库,能够实现拼音树上叶子节点、特征值A2与搜索结果C1三者的一一对应关系。
优选地,该文本搜索模块根据该拼音文本M2和该特征值M3,对该拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
在该拼音树T的每个分支中搜索该拼音文本M2,
若确定该拼音树T的任何一个分支中不包含该拼音文本M2,则返回空白形式的搜索结果;
若确定该拼音树T的至少一个分支中包含该拼音文本M2,则确定该目标文本M1对应的特征值M3;其中,可按照unicode码进行排序和压缩,从而得到所述目标文本M1对应的特征值M3;
判断该至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含该特征值M3,最后将匹配到的叶子节点反馈作为搜索结果。
上述技术方案的有益效果为:基于该多个包含拼音的数组的集合{B1、B2、…、Bn}构建相应的拼音树T,这样能够将拼音树组的集合{B1、B2、…、Bn}中的每个子集数组都转换为具有链表结构的拼音搜索分支,从而可以进行文本的双端匹配,大大提高该拼音集合的字符数据可查询性,而在实际操作中,该拼音树T可具有多叉树的数据结构,这里就不再做进一步累述。此外,通过在该拼音树T的每一个叶子节点上设置每一个中文文本A1对应的特征值A2及其对应的搜索结果C1,这样能够以该特征值A2作为每一个叶子节点的特征符号,对于已经匹配到拼音树获取的节点集合再进行一次特征值的比对,从而可以对搜索结果进行精度调整和权重评价。
优选地,该文本搜索模块判断该至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含该特征值M3,最后将匹配到的叶子节点反馈作为搜索结果具体包括:
对该至少一个分支中每个分支对应的叶子节点上承载的特征值和特征值M3进行二分法判断;
若该至少一个分支中每个分支对应的叶子节点上承载的特征值均不包含该特征值M3,则返回空白形式的搜索结果;
若该至少一个分支中存在至少一个分支对应的叶子节点上承载的特征值包含该特征值M3,则根据特征值匹配的结果按照不同优先级反馈叶子节点承载的搜索结果。
上述技术方案的有益效果为:由于拼音树T中的每一个叶子节点具有相应的拼音文本和特征值A2,通过在该拼音树T中搜索该拼音文本M2,能够快速地和准确地确定该拼音树T中是否存在与该拼音文本M2相对应的拼音,从而能够有效避免在拼音树T上发生遗漏搜索的情况,从而保证搜索的全面性和可靠性,并保证有针对性地反馈相应的搜索结果;而基于二分法,判断该拼音树T的叶子节点上特征值A2是否包含该特征M3,能够以特征值作为唯一性的比对判断标准,从而大大提高在拼音树T上进行搜索的效率。
优选地,该文本搜索模块根据该拼音文本M2和该特征值M3,对该拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
对于拼音文本M2,依序提取该拼音文本M2中的最小单元;
根据该拼音文本M2中的最小单元,计算拼音树T中每个分支与该拼音文本M2之间的匹配率;
将匹配率按照从大到小的顺序进行排序;将位于前N位的匹配率对应的分支作为该拼音文本M2匹配的第一目标分支;
对每个第一目标分支对应的叶子节点上承载的特征值与特征值M3进行二分法判断;
若每个第一目标分支对应的叶子节点上承载的特征值均不包含该特征值M3,则返回空白形式的搜索结果、或者将该第一目标分支对应的叶子节点上承载的搜索结果作为该特征值M3对应的搜索结果进行反馈;
若至少一个第一目标分支对应的叶子节点上承载的特征值包含该特征值M3,则根据特征值匹配的结果按照不同优先级反馈叶子节点承载的搜索结果。
优选地,该文本搜索系统还包括核心搜索模块、集群通信模块和服务集成模块;
该核心搜索模块用于基于特定编程语言实现的单机搜索逻辑;
该集群通信模块包括基于发布订阅模型的若干预设服务,该集群通信模块用于对该文本搜索系统接收到的请求在集群服务间进行命令和数据的传播复制并反馈对应的预设服务处理结果;
该服务集成模块用于提供基于spring boot应用的配置和注解,或者提供将搜索功能在spring boot应用上进行配置,或者将spring boot应用升级为集群搜索节点。
上述技术方案的有益效果为:通过在文本搜索系统中设置集群通信模块和服务集成模块,能够实现在依赖被导入到用户的JAVA工程中后直接作为集群搜索工具类使用,其利用用户JAVA工程中本身自带对redis的支持,利用redis的发布/订阅实现索引的集群通信功能,以及在该依赖被导入到用户的spring boot工程后将项目升级改装为一个和自身工程业务互不影响的搜索节点。实现在不影响用户自身的spring boot项目的原有功能的前提下,还可以直接使用本搜索技术提供的HTTP服务或JAVA方法,并支持通过redis进行搜索节点集群通信同步。
从上述实施例的内容可知,该文本搜索方法和系统包括构建文本索引库和文本的搜索,构建文本索引库包括:确定需要搜索的文本A1及其对应的搜索结果C1,并生成该文本A1对应的特征值A2;将该文本A1分解得到包含拼音的数组的集合{B1、B2、…、Bn};根据该包含拼音的数组的集合{B1、B2、…、Bn}和该特征值A2,构建形成关于该搜索结果C1的拼音树形式的文本索引库;而文本的搜索包括:将输入的目标文本M1中包含的所有文本转换为拼音文本M2;将输入的该目标文本M1处理得到对应的特征值M3;以拼音文本M2作为搜索依据,对该文本索引库进行搜索,得到符合拼音文本M2的节点集合,再依据所获得的节点集合中每个节点的特征值和该特征值M3进行匹配,反馈得到该文本索引库中的节点内容作为搜索结果;可见,该文本搜索方法和系统是针对用户输入文本可能造成输入错误的情况,其利用拼音树确定文本的搜索顺序,再对用户输入的文本内容进行排序和压缩得到特征值,然后对从拼音树搜索到的节点集合的每个节点的特征值和用户输入的文本的特征值进行基于二分法判断的文本比对,以及对完全比对成功的内容和不完全比对成功的内容按照不同优先级进行返回,以便于快速地和广泛地搜索出相应的结果,从而能够准确地搜索出输入完全匹配的内容和拼音正确但输入文字不正确的内容,以此提高中文搜索的效率和可靠性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (7)
1.文本搜索方法,其特征在于,其包括构建文本索引库的过程和文本的搜索过程,其中:
所述构建文本索引库的过程包括:
第一、确定需要搜索的文本A1及其对应的搜索结果C1,并生成所述文本A1对应的特征值A2;
第二、将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn};其中,Bi表示第i个拼音组,i=1,2,3…n;n表示所述文本A1分解得到的拼音组的数量;
第三、根据所述集合{B1、B2、…、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库;
所述文本的搜索过程包括:
第一、将输入的目标文本M1中包含的所有文本转换为对应的拼音文本M2,拼音文本M2是目标文本M1中所有最小单元各自对应的最小元素依序构成的文本,所述最小元素为最小单元对应的字符,所述最小单元包括中文字符、英文单词、字母或符号,所述字符包括字母和/或符号;
第二、对输入的所述目标文本M1进行处理得到对应的特征值M3;
第三、根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果;
其中,在所述构建文本索引库的过程中,将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn}具体包括:
以中文字符、英文单词、字母、符号为最小单元,将所述文本A1依序进行切分,并将切分出的中文字符替换为对应的汉语拼音,从而得到所述文本A1对应的一组以汉语拼音、英文单词、字母和符号为最小元素的字符组F1;
依序取所述字符组F1中的每一个最小元素为字符头、以排列在该字符头后面的所有最小元素为后续字符,将每个字符头和该个字符头对应的后续字符依序排列,组成该个字符头对应的一个拼音组,从而最终生成每个字符头各自对应的拼音组;将第i个字符头对应的拼音组表示为所述Bi,最终构成所述集合{B1、B2、…、Bn};
其中,在所述构建文本索引库的过程中,根据所述集合{B1、B2、…、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库具体包括:
将拼音组Bi对应拼音树的第i个分支,第i个分支包括依序连接的ni个节点,ni表示拼音组Bi包括的所有最小元素中字符的总数量;所述字符包括字母和/或符号;ni个节点上依序承载拼音组Bi的相应字符;所述拼音树的每个分支对应的叶子节点上承载所述特征值A2和所述搜索结果C1,从而形成所述文本索引库;
其中,在所述文本的搜索过程中,根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
在所述拼音树T的每个分支中搜索所述拼音文本M2,
若确定所述拼音树T的任何一个分支中不包含所述拼音文本M2,则返回空白形式的搜索结果;
若确定所述拼音树T的至少一个分支中包含所述拼音文本M2,则确定所述目标文本M1对应的特征值M3;
判断所述至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含所述特征值M3,最后将匹配到的叶子节点反馈作为搜索结果。
2.如权利要求1所述的文本搜索方法,其特征在于:
在所述中文文本的搜索过程中,判断所述至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含所述特征值M3,最后将匹配到的叶子节点反馈作为搜索结果具体包括:
对所述至少一个分支中每个分支对应的叶子节点上承载的特征值和特征值M3进行二分法判断;
若所述至少一个分支中每个分支对应的叶子节点上承载的特征值均不包含所述特征值M3,则返回空白形式的搜索结果;
若所述至少一个分支中存在至少一个第二目标分支对应的叶子节点上承载的特征值包含所述特征值M3,则根据每个第二目标分支对应的叶子节点上承载的特征值与特征值M3之间的匹配度输出相应的搜索结果。
3.如权利要求1所述的文本搜索方法,其特征在于:
在所述文本的搜索过程中,根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
对于拼音文本M2,依序提取所述拼音文本M2中的最小元素;
根据所述拼音文本M2中的最小元素,计算拼音树T中每个分支与所述拼音文本M2之间的匹配率;
将匹配率按照从大到小的顺序进行排序;将位于前N位的匹配率对应的分支作为所述拼音文本M2匹配的第一目标分支;N为预设值,为大于或等于1的正整数;
对每个第一目标分支对应的叶子节点上承载的特征值与特征值M3进行二分法判断;
若每个第一目标分支对应的叶子节点上承载的特征值均不包含所述特征值M3,则返回空白形式的搜索结果、或者将所述第一目标分支对应的叶子节点上承载的搜索结果作为所述特征值M3对应的搜索结果进行反馈;
若至少一个第一目标分支对应的叶子节点上承载的特征值包含所述特征值M3,则根据每个第一目标分支对应的叶子节点上承载的特征值与特征值M3之间的匹配度输出相应的搜索结果。
4.如权利要求3所述的文本搜索方法,其特征在于:
按照如下公式(1)、(2)、(3)计算拼音树T中每个分支与所述拼音文本M2之间的匹配率:
5.如权利要求3所述的文本搜索方法,其特征在于:
按照如下步骤B1-B3确定拼音树T中每个分支与所述拼音文本M2之间的匹配率Y3(M2|di):
步骤B1、按照如下公式(1)、(2)、(3)计算拼音树T中每个分支与所述拼音文本M2之间的第一匹配率:
其中,Y1(M2|di)表示拼音文本M2与拼音树T中第i个分支之间的第一匹配率;|di|表示拼音树中第i个分支di的长度;|T|表示拼音树T中所有分支的总长度;tj表示拼音文本M2中第j个最小元素;tf(tj,T)表示拼音文本M2中第j个最小元素在拼音树T中出现的频率;sf(tj,di)表示拼音文本M2中第j个最小元素在拼音树T中第i个分支中出现的频率;|d|表示拼音树T中所有分支的长度平均值;P(tj|di)表示拼音文本M2中第j个最小元素在第i个分支中出现的概率系数,表示连乘运算;P(di)表示拼音树中第i个分支di的长度占拼音树T中所有分支的总长度的比例;
步骤B2、定义拼音树T中第i个分支与所述拼音文本M2之间的第二匹配率为Y2(M2|di),di表示拼音树T的第i个分支;设k个中间参数v={θ1,θ2,…,θk},k等于拼音树T中分支的个数,设θi为所述拼音树中出现频率最高的第i个最小元素;那么有:
为了确定v,定义最大似然函数L为:
其中,表示tj在第i个分支di中出现的次数;tj表示拼音文本M2中第j个最小元素;θz表示v中的第z个参数;P(tj|θz)表示当θz为所述拼音树中出现频率最高的最小元素时,tj在拼音树中出现的概率;P(di|θz)表示是当θz为所述拼音树中出现频率最高的最小元素时,di中出现θz的概率;P(θz)表示当θz为所述拼音树中出现频率最高的最小元素时,θz在所述拼音树中出现的概率;P(tj|θz)、P(di|θz)、P(θz)为后验概率,通过贝叶斯公式求解;最终当最大似然函数L取最大化的时候,确定参数向量v={θ1,θ2,…,θk}的值,进而确定出P(M2|θi)和P(θi|di),其中,P(θi|di)表示θi在di出现的频率;P(M2|θi)表示θi在M2中出现的频率;进而根据公式(4)确定出Y2(M2|di);
步骤B3、确定Y3(M2|di)=max(Y1(M2|di),Y2(M2|di))。
6.文本搜索系统,其特征在于,其包括文本索引库构建模块和文本搜索模块;其中,
所述文本索引库构建模块用于确定需要搜索的文本A1及其对应的搜索结果C1,并生成所述文本A1对应的特征值A2;
再将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn};其中,Bi表示第i个拼音组,i=1,2,3…n;n表示所述文本A1分解得到的拼音组的数量;
最后根据所述集合{B1、B2、…、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库;
所述文本搜索模块用于将输入的目标文本M1中包含的所有文本转换为对应的拼音文本M2,拼音文本M2是目标文本M1中所有最小单元对应的字符依序构成的文本,所述最小单元包括中文字符、英文单词、字母或符号,所述字符包括字母和/或符号;
再对输入的所述目标文本M1进行处理得到对应的特征值M3;
最后根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果;
其中,所述将所述文本A1分解得到包含至少1个拼音组的集合{B1、B2、…、Bn}具体包括:
以中文字符、英文单词、字母、符号为最小单元,将所述文本A1依序进行切分,并将切分出的中文字符替换为对应的汉语拼音,从而得到所述文本A1对应的一组以汉语拼音、英文单词、字母和符号为最小元素的字符组F1;
依序取所述字符组F1中的每一个最小元素为字符头、以排列在该字符头后面的所有最小元素为后续字符,将每个字符头和该个字符头对应的后续字符依序排列,组成该个字符头对应的一个拼音组,从而最终生成每个字符头各自对应的拼音组;将第i个字符头对应的拼音组表示为所述Bi,最终构成所述集合{B1、B2、…、Bn};
其中,所述根据所述集合{B1、B2、…、Bn}和所述特征值A2,构建关于所述搜索结果C1的拼音树形式的文本索引库具体包括:
将拼音组Bi对应拼音树的第i个分支,第i个分支包括依序连接的ni个节点,ni表示拼音组Bi包括的所有最小元素中字符的总数量;所述字符包括字母和/或符号;ni个节点上依序承载拼音组Bi的相应字符;所述拼音树的每个分支对应的叶子节点上承载所述特征值A2和所述搜索结果C1,从而形成所述文本索引库;
其中,所述根据所述拼音文本M2和所述特征值M3,对所述拼音树形式的文本索引库进行搜索,得到目标文本M1对应的搜索结果,其包括:
在所述拼音树T的每个分支中搜索所述拼音文本M2,
若确定所述拼音树T的任何一个分支中不包含所述拼音文本M2,则返回空白形式的搜索结果;
若确定所述拼音树T的至少一个分支中包含所述拼音文本M2,则确定所述目标文本M1对应的特征值M3;
判断所述至少一个分支中每个分支对应的叶子节点上承载的特征值是否包含所述特征值M3,最后将匹配到的叶子节点反馈作为搜索结果。
7.如权利要求6所述的文本搜索系统,其特征在于:
还包括核心搜索模块、集群通信模块和服务集成模块;
所述核心搜索模块用于基于特定编程语言实现的单机搜索逻辑;
所述集群通信模块包括基于发布订阅模型的若干预设服务,所述集群通信模块用于对所述文本搜索系统接收到的请求在集群服务间进行命令和数据的传播复制并反馈对应的预设服务处理结果;
所述服务集成模块用于提供基于spring boot应用的配置和注解,或者提供将搜索功能在spring boot应用上进行配置,或者将spring boot应用升级为集群搜索节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110378851.XA CN113094470B (zh) | 2021-04-08 | 2021-04-08 | 文本搜索方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110378851.XA CN113094470B (zh) | 2021-04-08 | 2021-04-08 | 文本搜索方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113094470A CN113094470A (zh) | 2021-07-09 |
CN113094470B true CN113094470B (zh) | 2022-05-24 |
Family
ID=76675161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110378851.XA Active CN113094470B (zh) | 2021-04-08 | 2021-04-08 | 文本搜索方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113094470B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192108A (zh) * | 2007-03-28 | 2008-06-04 | 腾讯科技(深圳)有限公司 | 一种中文拼音输入方法及系统 |
CN102867049A (zh) * | 2012-09-10 | 2013-01-09 | 山东康威通信技术股份有限公司 | 一种基于单词查找树实现的汉语拼音快速分词方法 |
CN103294776A (zh) * | 2013-05-13 | 2013-09-11 | 浙江大学 | 一种智能手机通讯录模糊搜索的方法 |
CN103383699A (zh) * | 2013-06-28 | 2013-11-06 | 安徽科大讯飞信息科技股份有限公司 | 字符串检索方法及系统 |
CN103389976A (zh) * | 2012-05-07 | 2013-11-13 | 宇龙计算机通信科技(深圳)有限公司 | 用于终端的搜索方法及系统 |
CN103678675A (zh) * | 2013-12-25 | 2014-03-26 | 乐视网信息技术(北京)股份有限公司 | 通过拼音进行搜索的方法、服务器及系统 |
CN107193921A (zh) * | 2017-05-15 | 2017-09-22 | 中山大学 | 面向搜索引擎的中英混合查询纠错的方法及系统 |
CN107679122A (zh) * | 2017-09-20 | 2018-02-09 | 福建网龙计算机网络信息技术有限公司 | 一种模糊搜索方法及终端 |
CN109671436A (zh) * | 2018-12-07 | 2019-04-23 | 陈包容 | 智能语音识别通讯录联系人人名的方法 |
CN110019649A (zh) * | 2017-12-25 | 2019-07-16 | 北京新媒传信科技有限公司 | 一种建立、搜索索引树的方法及装置 |
CN110489603A (zh) * | 2019-07-30 | 2019-11-22 | 东软集团股份有限公司 | 一种信息检索的方法、装置和车机 |
CN111460311A (zh) * | 2019-11-12 | 2020-07-28 | 腾讯云计算(北京)有限责任公司 | 基于字典树的搜索处理方法、装置、设备和存储介质 |
-
2021
- 2021-04-08 CN CN202110378851.XA patent/CN113094470B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101192108A (zh) * | 2007-03-28 | 2008-06-04 | 腾讯科技(深圳)有限公司 | 一种中文拼音输入方法及系统 |
CN103389976A (zh) * | 2012-05-07 | 2013-11-13 | 宇龙计算机通信科技(深圳)有限公司 | 用于终端的搜索方法及系统 |
CN102867049A (zh) * | 2012-09-10 | 2013-01-09 | 山东康威通信技术股份有限公司 | 一种基于单词查找树实现的汉语拼音快速分词方法 |
CN103294776A (zh) * | 2013-05-13 | 2013-09-11 | 浙江大学 | 一种智能手机通讯录模糊搜索的方法 |
CN103383699A (zh) * | 2013-06-28 | 2013-11-06 | 安徽科大讯飞信息科技股份有限公司 | 字符串检索方法及系统 |
CN103678675A (zh) * | 2013-12-25 | 2014-03-26 | 乐视网信息技术(北京)股份有限公司 | 通过拼音进行搜索的方法、服务器及系统 |
CN107193921A (zh) * | 2017-05-15 | 2017-09-22 | 中山大学 | 面向搜索引擎的中英混合查询纠错的方法及系统 |
CN107679122A (zh) * | 2017-09-20 | 2018-02-09 | 福建网龙计算机网络信息技术有限公司 | 一种模糊搜索方法及终端 |
CN110019649A (zh) * | 2017-12-25 | 2019-07-16 | 北京新媒传信科技有限公司 | 一种建立、搜索索引树的方法及装置 |
CN109671436A (zh) * | 2018-12-07 | 2019-04-23 | 陈包容 | 智能语音识别通讯录联系人人名的方法 |
CN110489603A (zh) * | 2019-07-30 | 2019-11-22 | 东软集团股份有限公司 | 一种信息检索的方法、装置和车机 |
CN111460311A (zh) * | 2019-11-12 | 2020-07-28 | 腾讯云计算(北京)有限责任公司 | 基于字典树的搜索处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113094470A (zh) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7169389B2 (ja) | 文書タイトルツリーの構築方法、装置、電子設備、記憶媒体、及びプログラム | |
CN109960726B (zh) | 文本分类模型构建方法、装置、终端及存储介质 | |
CN101131706B (zh) | 一种查询修正方法及系统 | |
US20050154690A1 (en) | Document knowledge management apparatus and method | |
CN111680494B (zh) | 相似文本的生成方法及装置 | |
CN105094368B (zh) | 一种对输入法候选项进行调频排序的控制方法及控制装置 | |
CN112783921A (zh) | 一种数据库操作方法及装置 | |
WO2005010727A2 (en) | Extracting data from semi-structured text documents | |
CN102722483A (zh) | 用于确定输入法的候选项排序的方法、装置和设备 | |
CN102640089A (zh) | 电子设备的文本输入系统及文本输入方法 | |
CN101661462A (zh) | 四层结构的中文文本正则化体系及实现 | |
CN107818141A (zh) | 融入结构化要素识别的生物医学事件抽取方法 | |
CN113591093B (zh) | 基于自注意力机制的工业软件漏洞检测方法 | |
CN112115232A (zh) | 一种数据纠错方法、装置及服务器 | |
CN114818643B (zh) | 一种保留特定业务信息的日志模板提取方法及装置 | |
CN115017268B (zh) | 一种基于树结构的启发式日志抽取方法及系统 | |
CN106030568A (zh) | 自然语言处理系统、自然语言处理方法、以及自然语言处理程序 | |
CN107153469B (zh) | 为输入数据搜索匹配候选项的方法、数据库创建方法、装置及计算机程序产品 | |
CN112328747A (zh) | 事件脉络生成方法、装置、终端设备及存储介质 | |
WO2014071100A1 (en) | Search service including indexing text containing numbers in part using one or more number index structures | |
CN113094470B (zh) | 文本搜索方法和系统 | |
Isele et al. | Active learning of expressive linkage rules for the web of data | |
CN116432125B (zh) | 基于哈希算法的代码分类方法 | |
Nejja et al. | The context in automatic spell correction | |
CN107463845B (zh) | 一种sql注入攻击的检测方法、系统和计算机处理设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |