一种基于双数组字典树的搜索关键词提取系统
文献发布时间:2023-06-19 10:58:46
技术领域
本申请涉及一种关键词提取系统,具体是一种基于双数组字典树的搜索关键词提取系统。
背景技术
用户使用搜索引擎对内容检索的时候,如果出现长尾词,返回结果往往差强人意,前面的结果可能并不是用户想要的,因为长尾词中间各个词语是无差别的,基于对语义的分析,我们知道一个词语中间,往往有少数几个词语是关键词。对于一个汽车行业的引擎来说,我们需要提取出用户输入信息汽车相关的词语。以便于后面更好的进行分析处理。
对于这个问题业界的基本方案有如下几种:
方案一、TF-IDF算法,TF-IDF是一种数值统计方法,用于反映一个词对于预料中某篇文档的重要性,它的主要思想为:如果某个词在一篇文档中出现的频率高,即TF高;并且在其他文档中很少出现,即IDF高,则认为这个词具有很好的类别区分能力。
方案二、TextRank算法,此种算法的一个重要特点是可以脱离语料库的背景,仅对单篇文档进行分析就可以提取该文档的关键词。
方案三:候选词匹配:基于关键词词库的多模式匹配得到候选,这里最重要的工作是词库构建,往往会融合多种方法:垂直站点专有名词,百科词条,输入法细胞词库,广告主购买词
第一个问题、方案一缺点是有时候用词频来衡量文章中的一个词的重要性不够全面,有时候重要的词出现的可能不够多,而且这种计算无法体现位置信息,无法体现词在上下文的重要性。
第二个问题、方案二的方案基于PageRank的,需要准备PageRank数据,而在识别耗时的实时性上不太好,还有就是旧页面等级会比新页面高。因为即使是非常好的新页面也不会有很多上游链接,除非它是某个站点的子站点。
第三个问题、使用方案三太过依赖词典的实时性,词库构建。需要经常刷新,才能满足需要。因此,针对上述问题提出一种基于双数组字典树的搜索关键词提取系统。
发明内容
一种基于双数组字典树的搜索关键词提取系统,包括用户接口、查询操作模块、检索模块、排序模块、文本操作模块、标引模块、索引模块、数据库管理模块、文本数据库模块、第一分词模块和第二分词模块,所述检索模块的内部设置有第一分词模块,所述索引模块的内部设置有第二分词模块;
所述用户接口与查询操作模块之间相互连接,所述查询操作模块与检索模块之间相互连接,所述检索模块与排序模块之间相互连接。
进一步地,所述用户接口与数据库管理模块之间相互连接。
进一步地,所述文本操作模块与数据库管理模块之间相互连接。
进一步地,所述文本操作模块与标引模块之间相互连接。
进一步地,所述标引模块与索引模块之间相互连接。
进一步地,所述索引模块与检索模块之间相互连接。
进一步地,所述标引模块与数据库管理模块之间相互连接。
进一步地,所述数据库管理模块与文本数据库模块之间相互连接。
进一步地,所述用户接口为第三方打包、HTTP协议。
进一步地,所述索引模块中提取关键词步骤为:
(1)设数组下标为i,如果base[i]、check[i]均为0,则表示该位置为空;
(2)如果base[i]为负值(叶子节点)则表示该状态可能是一个结束状态;
设有状态Ab,Ac,Ad...An,A在base[]中对应的下标是i,令base[i]=j;
(3)为保证A的直接子节点都能放入数组,j应该满足:
base[j+b]==0,base[j+c]==0,base[j+d]==0...base[j+n]==0;
check[j+b]==0,check[j+c]==0.......check[j+n]==0,
j值确定后,Ab,Ac,Ad...An,的下标也就确定下来了。
分别是j+b,j+c,j+d.....j+n
同时令:
check[j+b]=i,check[j+c]=i,check[j+d]=i.......check[j+n]=i
(4)查询
本申请的有益效果是:本申请提供了一种可以达到达到快速识别短语文本中的汽车相关词汇的基于双数组字典树的搜索关键词提取系统。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请一种实施例的整体结构示意图;
图2为本申请一种实施例的检索模块的内部结构示意图;
图3为本申请一种实施例的索引模块的内部结构示意图;
图4为本申请一种实施例的关键词提取过程示意图;
图5为本申请一种实施例的词典示意图。
图中:1、用户接口,2、查询操作模块,3、检索模块,4、排序模块,5、文本操作模块,6、标引模块,7、索引模块,8、数据库管理模块,9、文本数据库模块,10、第一分词模块,11、第二分词模块。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外“、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参阅图1-5所示,一种基于双数组字典树的搜索关键词提取系统,包括用户接口1、查询操作模块2、检索模块3、排序模块4、文本操作模块5、标引模块6、索引模块7、数据库管理模块8、文本数据库模块9、第一分词模块10和第二分词模块11,所述检索模块3的内部设置有第一分词模块10,所述索引模块7的内部设置有第二分词模块11;
所述用户接口1与查询操作模块2之间相互连接,所述查询操作模块2与检索模块3之间相互连接,所述检索模块3与排序模块4之间相互连接;
所述用户接口1与数据库管理模块8之间相互连接;所述文本操作模块5与数据库管理模块8之间相互连接;所述文本操作模块5与标引模块6之间相互连接;所述标引模块6与索引模块7之间相互连接;所述索引模块7与检索模块3之间相互连接;所述标引模块6与数据库管理模块8之间相互连接;所述数据库管理模块8与文本数据库模块9之间相互连接;所述用户接口1为第三方打包、HTTP协议;
用户接口(1)用于提供给调用者的接口,可是第三方打包、HTTP协议的方式;查询操作模块(2)根据用户以的关键词进行匹配查找;检索模块(3)进行提取出关键词进行查询的步骤;索引模块(7)进行把源数据经过分词归并的后建倒排、顺排索引的过程;文本操作模块(5)进行文本的过滤过程,分词清洗;标引模块(6)进行文章分类质量分计算过程。
所述索引模块7中提取关键词步骤为:
(1)设数组下标为i,如果base[i]、check[i]均为0,则表示该位置为空;
(2)如果base[i]为负值(叶子节点)则表示该状态可能是一个结束状态;
设有状态Ab,Ac,Ad...An,A在base[]中对应的下标是i,令base[i]=j;
(3)为保证A的直接子节点都能放入数组,j应该满足:
base[j+b]==0,base[j+c]==0,base[j+d]==0...base[j+n]==0;
check[j+b]==0,check[j+c]==0.......check[j+n]==0,
j值确定后,Ab,Ac,Ad...An,的下标也就确定下来了。
分别是j+b,j+c,j+d.....j+n
同时令:
check[j+b]=i,check[j+c]=i,check[j+d]=i.......check[j+n]=i
(4)查询
本申请在使用时,通过用户接口提供给调用者,用户接口可以使得第三方打包、HTTP协议,通过用户接口依据用户的需求将数据输送至查询操作模块2处通过查询操作模块2依据用户提供的关键词进行匹配查找,通过检索模块3将源数据经过第一分词模块10进行分词归并后进行建倒排、顺排索引,经过排序模块4输送回用户接口1,通过用户反馈可以继续进行查询操作;
通过数据库管理模块8进行提取文本数据库模块9内部的数据,通过数据库管理模块8将数据输送至标引模块6处,通过标引模块6对文章数据进行分类质量分计算,通过数据库管理模块8将文本数据输送至文本操作模块5处,通过文本操作模块5将文本进行过滤,分词清晰,通过标引模块6将倒排后的文档输送至索引模块7处,通过数据库管理模块8将文本输送至用户接口1处,索引模块7内进行把源数据经过分词归并的后建倒排、顺排索引的过程,索引模块7中提取关键词步骤为:
(1)设数组下标为i,如果base[i]、check[i]均为0,则表示该位置为空;
(2)如果base[i]为负值(叶子节点)则表示该状态可能是一个结束状态;
设有状态Ab,Ac,Ad...An,A在base[]中对应的下标是i,令base[i]=j;
(3)为保证A的直接子节点都能放入数组,j应该满足:
base[j+b]==0,base[j+c]==0,base[j+d]==0...base[j+n]==0;
check[j+b]==0,check[j+c]==0.......check[j+n]==0,
j值确定后,Ab,Ac,Ad...An,的下标也就确定下来了。
分别是j+b,j+c,j+d.....j+n
同时令:
check[j+b]=i,check[j+c]=i,check[j+d]=i.......check[j+n]=i
遍历置位所有状态后,双数组构建结束。
DAT查询起来极为方便。待查词有几个字,就将汉字分别转换为对应的序列码,然后作几次加法,即可查到相应的词语,无须折半查找。由于汉语词语的平均长度不超过4个汉字,因此DAT的查询算法的效率极高。
(4)查询
阶段概述:
1,两个数组:base[]、check[]。
2,base[]中的每一个元素相当于trie树的一个节点,其值作为转移到下一个状态的基值。
3,check[],当前状态的前一状态,用于检查本状态是否存在
4,对于从状态s到状态t的一个转移,必须满足:
base[s]+c=t check[base[s]+c]=s其中c是输入变量。
查询流程:
设有词组,“阿斯林,阿斯顿,阿斯顿马丁,阿三,奥德赛”,字编码如下
1-阿,2-奥,3-斯,4-三,5-林,6-顿,7-马,8-丁,9-德,10-赛
经过处理生成词典(如图5)
查询:
输入“阿斯顿”
‘阿’的编码1,base[1]=1,接下来,输入状态是‘斯’编码3,
base[1]+3=4,check[4]=1
符合,所以‘阿斯’是一个状态,且base[4]>0,可以继续
输入状态是‘顿’编码6,
base[4]+6=8
check[8]=4
符合,所以‘阿斯林’是一个结束状态,base[8]<0,'阿斯顿'是一个词。
利用字符串的公共前缀来节约存储空间,查找速度快,有限自动机的利用,每个节点代表一种状态,根据输入变量的不同,进行状态转换。当达到结束状态或无法转移时完成查询,根节点不包含字符,除根节点外每一个节点都只包含一个字符,从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串,每个节点的所有子节点包含的字符都不相同。
本申请的有益之处在于:本专利的发明点在于充分利用AC状态机能高速完成模式匹配,达到快速识别短语文本中的汽车相关词汇,从而获得用户的详细意图,把意图传递到后面的搜索过程中,使检索结果更符合用户期望。
涉及到电路和电子元器件和模块均为现有技术,本领域技术人员完全可以实现,无需赘言,本申请保护的内容也不涉及对于软件和方法的改进。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
- 一种基于双数组字典树的搜索关键词提取系统
- 一种基于双数组字典树进行术语匹配的方法