CN102693320B - 一种搜索方法及装置 - Google Patents
一种搜索方法及装置 Download PDFInfo
- Publication number
- CN102693320B CN102693320B CN201210179560.9A CN201210179560A CN102693320B CN 102693320 B CN102693320 B CN 102693320B CN 201210179560 A CN201210179560 A CN 201210179560A CN 102693320 B CN102693320 B CN 102693320B
- Authority
- CN
- China
- Prior art keywords
- triple
- data
- inquiry
- candidate
- search data
- 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.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种搜索方法及装置,所述方法包括:对用户输入的搜索数据进行预处理;从预处理后的搜索数据中提取预设的数据结构,包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合;将预设的数据结构映射为本体三元组;依据本体三元组,从预设的数据库中搜索与搜索数据相关的解答数据,并将解答数据提供给用户。所述方法搜索的依据为预设的本体三元组而非自然语言的关键字,搜索的范围为预设的数据库而非互联网,最终提供给用户的为解答数据,而非网页的列表,从而不需要用户进一步进行有用数据的甄选,所以,提高了搜索结果的准确性。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种搜素方法及装置。
背景技术
互联网的迅猛发展和广泛普及,使得网络成为获得信息的重要来源,从互联网获取信息的有效手段之一即是通过搜索引擎进行关键字的搜索。现有的搜索引擎根据用户输入的关键字,从互联网中找出与关键字相关联的网页,经过排序后呈现给用户。可见,现有的搜索引擎最终向用户提供的只是网页的列表,通常情况下,这些网页中还可能包含一些对用户无用的内容,例如广告等,用户要需要依次查询列出的网页,才能从中甄选出有用的信息,因而,现有的搜索引擎存在搜索结果定位不准确的问题。
发明内容
有鉴于此,本发明提供了一种搜索方法及装置,目的在于解决现有的搜索引擎搜索结果定位不准确的问题。
为了实现上述目的,本发明实施例提供了以下技术方案:
一种搜索方法,包括:
对用户输入的搜索数据进行预处理;
从预处理后的搜索数据中提取预设的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合;
将所述预设的数据结构映射为本体三元组;
依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据提供给用户。
优选地,所述对用户输入的搜索数据进行预处理包括:
接收用户输入的搜索数据;
去除所述搜索数据中的冗余数据。
优选地,从预处理后的搜索数据中提取预设的数据结构包括:
将所述预处理后的搜索数据按照预设的数据类型进行分类,以确定所述预处理后的搜索数据所属的数据类型;
依据所述预处理后的搜索数据所属的数据类型,提取所述预处理后的搜索数据的核心查询三元组;
依据所述核心查询三元组,获取所述预处理后的搜索数据的析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
优选地,所述预设的数据类型包括:
特指问句、正反问句、是非问句和选择问句;
所述特指问句包括有疑问代词的特指问句,有疑问动词的特指问句,以及无疑问词的特指问句。
优选地,所述将所述预设的数据结构映射为本体三元组包括:
将核心查询三元组映射为核心本体三元组;
将合取关联查询三元组映射为合取关联本体三元组;
将析取关联查询三元组映射为析取关联本体三元组;将条件关联查询三元组映射为条件关联本体三元组;
将否定条件关联查询三元组映射为否定条件关联本体三元组;
将条件和否定条件关联候选词映射为条件或否定条件关联本体三元组。
优选地,所述依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据包括:
将本体三元组中的核心本体三元组、析取本体三元组及合取本体三元组,中属于类的成分替换为其相应的候选实体;
利用条件以及否定条件关联本体三元组,从所述候选实体中过滤其修饰的类对应的候选实体;
利用析取关联三元组,从所述候选实体中过滤核心三元组中其修饰的类对应的候选实体;
依据所述述候选实体中剩下的实体构建答案。
一种搜索装置,包括:
预处理模块,用于对用户输入的搜索数据进行预处理;
数据结构提取模块,用于从预处理后的搜索数据中提取预设的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合;
映射模块,用于将所述预设的数据结构映射为本体三元组;
解答模块,用于依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据提供给用户。
优选地,所述数据结构预设模块包括:
分类单元,用于将所述预处理后的搜索数据按照预设的数据类型进行分类,以确定所述预处理后的搜索数据所属的数据类型;
核心查询三元组提取单元,用于依据所述预处理后的搜索数据所属的数据类型,提取所述预处理后的搜索数据的核心查询三元组;
其它类型三元组获取单元,用于依据所述核心查询三元组,获取所述预处理后的搜索数据的析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
优选地,所述解答模块包括:
候选实体生成单元,用于将本体三元组中的核心本体三元组、析取本体三元组及合取本体三元组,中属于类的成分替换为其相应的候选实体;
过滤单元,用于利用条件以及否定条件关联本体三元组,从所述候选实体中过滤其修饰的类对应的候选实体;利用析取关联三元组,从所述候选实体中过滤核心三元组中其修饰的类对应的候选实体;
构建单元,用于依据所述述候选实体中剩下的实体构建答案。
本发明实施例提供的搜索方法及装置,对预处理后的搜索数据提取所述的数据结构,并将预设的数据结构映射为本体三元组,依据所述本体三组从预设的数据库中搜索相关的数据作为搜索结果提供给用户,所述搜索方法及装置搜索的依据为预设的本体三元组而非自然语言的关键字,搜索的范围为预设的数据库而非互联网,最终提供给用户的为解答数据,而非网页的列表,从而不需要用户进一步进行有用数据的甄选,所以,提高了搜索结果的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种搜索方法的流程图;
图2为本发明实施例公开的从预处理后的搜索数据中提取预设的数据结构的方法的流程图;
图3为本发明实施例公开的一种搜索装置的结构示意图;
图4为本发明实施例公开的一种搜索装置中数据结构预设模块的结构示意图;
图5为本发明实施例公开的一种搜索装置中解答模块的结构示意图。
具体实施方式
本发明实施例公开了一种搜索方法及装置,目的在于解决现有的搜索方法或搜索引擎存在的搜索结果定位不准确的问题,其核心发明点在于,对用户输入的搜索数据进行预处理;从预处理后的搜索数据中提取预设的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合;将所述预设的数据结构映射为本体三元组;依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据提供给用户。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开的一种搜索方法,用于对用户输入的搜索数据搜索相关解答数据,如图1所示,包括:
S101:对用户输入的搜索数据进行预处理;
预处理通常是指对原始数据进行的初步处理,本实施例中,预处理过程可以包括:接收用户输入的搜索数据,去除所述搜索数据中的冗余数据。
例如,用户输入“北京烤鸭怎么做?”的搜索数据,其中除了包括文字外,还包括标点符号“?”,而“?”对于搜索“北京烤鸭怎么做”的解答数据是无用的,属于冗余数据,因此,本实施中预处理过程要将其去掉。
S102:从预处理后的搜索数据中提取预设的数据结构;
所述预设的数据结构是指能够以最简洁的形式代表所述搜索数据的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
例如:搜索数据“蒸鸡蛋怎么做”中可以提取出核心查询三元组<蒸鸡蛋,做>,而搜索数据“蒸鸡蛋的材料和工具”中可以提取出核心查询三元组<蒸鸡蛋,材料>,以及合取关联查询三元组<蒸鸡蛋,工具>。
需要说明的是,从不同的搜索数据中提取出的数据结构是不同的,每一个搜索数据中不一定能够提取出所有的数据结构,搜索数据能够提取出哪些三元组是由搜索数据本身所决定的。
具体地,从预处理后的搜索数据中提取预设的数据结构的具体过程如图2所示,包括:
S201:将所述预处理后的搜索数据按照预设的数据类型进行分类,以确定所述预处理后的搜索数据所属的数据类型;
本实施例中,可以采用预先设置的分词词典对预处理后的搜索数据进行数据分析,包括:分词、词性标注和依存关系分析,例如对于“北京烤鸭做么做?”,首先分词,分词结果为“北京烤鸭”“怎么”和“做”这三个词,其中“北京烤鸭”的词性是名词,“怎么”是代词,“做”是动词;“北京烤鸭”的依存关系是主语,“怎么”是状语,“做”是核心词也可以叫做“谓语”。
再对分析后的数据进行分类,本实施例中,可以将搜索数据分为以下几种预设的数据类型中的一种:特指问句、正反问句、是非问句和选择问句,其中特指问句又包括有疑问代词的特指问句,有疑问动词的特指问句,以及无疑问词的特指问句。例如,“北京烤鸭是什么味道的?”属于有疑问代词的特指问句,“想知道北京烤鸭的做法”属于有疑问动词的特指问句,“北京烤鸭的做法?”属于无疑问词的特征问句,“北京烤鸭难不难做?”属于正反问句,“北京烤鸭容易做吗?”属于是非问句,“是红酒还是料酒适合做北京烤鸭?”属于选择问句等。
S202:依据所述预处理后的搜索数据所属的数据类型,提取所述预处理后的搜索数据的核心查询三元组;
预处理后的搜索数据所属的数据类型不同,提取核心查询三元组的方法也不同,具体地,当预处理后的搜索数据属于有疑问代词的特指问句时,提取所述预处理后的搜索数据的核心查询三元组的具体过程为:
1.获取问句的核心词hed(依存关系为HED的词);
2.获取问句的疑问代词w_r;
3.取出直接依存于疑问代词的名词或者动词noun1;
4.取出直接依存于hed的名词或者动词noun2;
5.如果noun1不为空,令n2=noun1;
6.如果n2是空,且noun2不为空,令n2=noun2;
7.如果n2为空,令n2=hed;
8.如果n2为空,返回NULL;
9.如果n2不为空
a)取出所有直接依存或间接依存于n2的名词,存入列表nlist中;
b)如果nlist中存在依存关系为动词的主语(verb-object,SBV)的名词noun3,则令n1=noun3;
c)如果nlist中存在依存关系为动词的宾语(verb-object,VOB)的名词noun4,则令n3=noun4;
d)取出所有直接依存或间接依存于hed的名词,存入列表nlist2中;
e)如果nlist2中存在依存关系为SBV的名词noun5,且n1为空,令n1=noun3;
f)如果nlist2中存在依存关系为VOB的名词noun6,且n3为空,令n3=noun4;
g)如果n1为空,从nlist和nlist2中任取一个不同于n3的名词作为n1;
h)如果n3为空,从nlist和nlist2中任取一个不用于n1的名词作为n3;
i)如果n1为空,则从list中任取一个不同于n2和n3的名词作为n1;
j)如果n3为空,则从list中任取一个不同于n1和n2的名词作为n3;
10.如果n1和n3都不为空,返回<n1,n2,n3>;
11.如果n1不为空,而n3为空,返回<n1,n2>;
12.如果n3不为空,而n1为空,返回<n2,n3>;
13.如果n1和n3都为空,返回NULL。
例如,对“北京烤鸭怎么做”这一搜索数据提取核心查询三元组,获取搜索数据的核心词hed=“做”,获取疑问代词w_r=“怎么”,由于动词“做”直接依存于疑问代词“怎么”,因此noun1=“做”,由上述步骤1~8可以确定n2=“做”,名词“北京烤鸭”直接依存于核心词并且依存关系为“SBV”,由上述步骤d~f可以确定n1=“北京烤鸭”,进一步分析发现n3=NULL,所以最终返回的核心查询三元组为<北京烤鸭,做,>。
当预处理后的搜索数据属于有疑问动词的特指问句时,所述提取所述预处理后的搜索数据的核心查询三元组的具体过程包括:
1.获取问句的核心词hed(依存关系为HED的词);
2.获取问句的疑问动词w_verb;
3.取出直接依存于hed的名词noun1;
4.取出直接依存于疑问动词的名词noun2;
5.如果hed是名词,令n1=hed;
6.如果n1为空,且noun1不为空,令n1=noun1;
7.如果noun2不为空,且不等于n1,令n3=noun2;
8.如果n3为空,noun1不为空,且noun1!=n1,令n3=noun1;
9.如果n1不为空,而n3为空,则取出直接或间接依赖于n1的名词noun3,
令n3=noun3;
10.如果n3不为空,而n1为空,则取出直接或间接依赖于n3的名词noun4,
令n1=noun4;
11.如果n1和n3都不为空,返回<n1,n3>;
12.否则返回NULL。
例如,对“想知道北京烤鸭的做法”这一搜索数据提取核心查询三元组,其中“想”为核心词hed,“知道”为疑问动词w_verb,其中名词“做法”直接依存于疑问动词,由步骤上述对属于有疑问动词的特指问句提取核心查询三元组的步骤4~7得到n3=“做法”,“北京烤鸭”间接依存于“做法”,由步骤10可以得到n1=“北京烤鸭”,所以最终返回的核心查询三元组为<北京烤鸭,,做法>。
当所述预处理后的搜索数据属于无疑问词的特指问句时,所述提取所述预处理后的搜索数据的核心查询三元组的具体过程包括:
1.获取问句的核心词hed(依存关系为HED的词);
2.如果核心词hed为名词,令n3=hed;
3.如果hed不是名词,从后往前遍历list,取出遇到的第一个名词,记为noun1;
4.如果noun1不为空,令n3=noun1;
5.如果n3为空,返回NULL;
6.提取直接或者间接依存于n3的名词,记为noun2;
7.如果noun2不为空,令n1=noun2,返回<n1,,n3>;
8.如果noun2为空,则从list中任取一个不同于n3的名词,记为noun3;
9.如果noun3不为空,令n1=noun3,返回<n1,,n3>;
10.否则返回NULL。
例如,对“北京烤鸭的做法?”这一搜索数据提取核心查询三元组,核心词hed为“做法”,并且核心词为名词,由对属于无疑问词的特指问句提取核心查询三元组的步骤1和2得到n3=“做法”,由于存在一个间接依赖于n3的名词“北京烤鸭”,由步骤6和7得到n1=“北京烤鸭”,最终返回的核心查询三元组为<北京烤鸭,,做法>。
当所述预处理后的搜索数据属于正反问句或是非问句时,所述提取所述预处理后的搜索数据的核心查询三元组包括:
1.获取问句的核心词hed(依存关系为HED的词);
2.获取问句的与hed之间存在连动(verb-verb,VV)依存关系的词hed_VV;
3.令n2=hed;
4.取出所有直接依存或间接依存于hed的名词,存入列表nlist中;
5.如果hed_VV不为空,取出所有直接依存或间接依存于hed_vv的名词,存入列表nlist2中;
6.如果nlist中存在依存关系为SBV的名词noun1,则令n1=noun1;
7.如果nlist中存在依存关系为VOB的名词noun2,则令n3=noun2;
8.如果nlist2中存在依存关系为SBV的名词noun3,且n1为空,令n1=noun3;
9.如果nlist2中存在依存关系为VOB的名词noun4,且n3为空,令n3=noun4;
10.如果n1为空,从nlist和nlist2中任取一个名词noun5,令n1=noun5;
11.如果n3为空,从nlist和nlist2中任取一个不用于n1的名词noun6,令n3=noun6;
12.如果n1为空,则从list中任取一个不同于n2的名词noun7,令n1=noun7;
13.如果n3为空,则从list中任取一个不同于n1和n2的名词noun8,令n3=noun8;
14.如果n1和n3都不为空,返回<n1,n2,n3>;
15.如果n1不为空,而n3为空,返回<n1,n2>;
16.如果n3不为空,而n1为空,返回<n2,n3>;
17.如果n1和n3都为空,返回NULL。
例如,对“北京烤鸭难不难做?”提取核心查询三元组,核心词为“做”,由步骤3得到n2=“做”,在这里“北京烤鸭”直接依存于核心词“做”,由步骤4和6得到n1=“北京烤鸭”,进一步分析发现n3也是NULL,因此返回的核心查询三元组是<北京烤鸭,做,>。
对“北京烤鸭容易做么?”提取核心查询三元组,核心词为“做”,由步骤3得到n2=“做”,由于“北京烤鸭”间接依存于核心词“做”,再由步骤4和6得到n1=“北京烤鸭”,进一步分析发现n3=NULL,因此最终得到的核心查询三元组也为<北京烤鸭,做,>。
当所述预处理后的搜索数据属于选择问句时,所述提取所述预处理后的搜索数据的核心查询三元组包括:
1.获取问句的核心词hed(依存关系为HED的词);
2.获取问句的与hed之间存在“VV”依存关系的词hed_VV;
3.获取问句中的“还是”节点w_or,即内容为“还是”的节点;
4.从右向左,获取在w_or节点前遇到的第一个名词,记为noun1;
5.如果noun1不为空,令n1=noun1;
6.如果n1为空,从右向左,获取在w_or节点前遇到的第一个形容词,记为adj1;
7.如果adj1不为空,令n1=adj1;
8.获取w_or节点后的第一个动词,记为verb1;
9.如果verb1不为空,令n2=verb1;
10.如果verb1为空,令n2=hed;
11.获取所有直接依存或间接依存于hed的名词,存入列表nlist中;
12.获取所有直接依存或间接依存于hed_VV的名词,存入列表nlist2中;
13.如果nlist中存在依存关系为“VOB”的名词noun2,且noun2!=n1,令n3=noun2;
14.如果n3为空,且nlist2中存在依存关系为“VOB”的名词noun3,且noun3!=n1,令n3=noun3;
15.如果n3为空,从nlist中任取一个不同于n1的名词noun4,令n3=noun4;
16.如果n3为空,从nlist2中任取一个不同于n1的名词noun5,令n3=noun5;
17.如果n1和n3都不为空,返回<n1,n2,n3>;
18.如果n1不为空,而n3为空,返回<n1,n2,>;
19.如果n3不为空,而n1为空,返回<,n2,n3>;
20.如果n1和n3都为空,返回NULL。
例如,对于“是红酒还是料酒适合做北京烤鸭?”这一搜索数据提取核心查询三元组,句子的核心词为“是”,从右向左W_OR前面的第一个名词为红酒,因此n1=“红酒”,从左向右,W_OR后的第一个动词为“适合”,因为n2=“适合”,名词“北京烤鸭”间接依存于核心词“是”,并且依存关系为“VOB”,因此n3=“北京烤鸭”,最终返回的核心查询三元组为<红酒,适合,北京烤鸭>。
S203:依据所述核心查询三元组,获取所述预处理后的搜索数据的析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
以下对根据核心查询三元组,获取不同的查询三元组进行具体说明:
依据所述核心查询三元组,获取合取关联查询三元组的具体过程为:
1.声明一个ArrayList nlist1,nlist1用于保存与n1之间存在合取关系的词;
2.声明一个ArrayList nlist2,nlist2用于保存与n2之间存在合取关系的词;
3.声明一个ArrayList nlist3,nlist3用于保存与n3之间存在合取关系的词;
4.如果n1不为空,nlist1=getConjunctiveWords(inlist,n1);
5.如果n2不为空,nlist2=getConjunctiveWords(inlist,n2);
6.如果n3不为空,nlist3=getConjunctiveWords(inlist,n3);
7.如果nlist1,nlist2,nlist3都为空,返回NULL;
8.如果nlist1为空,则nlist1.add(n1);
9.如果nlist2为空,则nlist2.add(n2);
10.如果nlist3为空,则nlist3.add(n3);
11.For(DependencyTreeNode node1:nlist1)
For(DependencyTreeNode node2:nlist2)
For(DependencyTreeNode node3:nlist3){
if(<node1,node2,node3>!=<n1,n2,n3>)
Outlist.add(<node1,node2,node3>);
}
需要说明的是,根据核心查询三元组,获取析取关联查询三元组具体过程与获取合取关联查询三元组提取过程基本相同,唯一区别在于判断句子中是否包含“一起”、“同时”、“一块”,“共同”等表示析取含义的词,如果包括就表示该三元组为析取关联三元组,否则为合取关联三元组。
例如对于问句“木耳和木瓜怎么一起做菜?”,经过分析得到核心三查询元组<木耳,做菜,>。随后算法分别尝试获取与“木耳”和“做菜”间存在合取关系的词。经过分析“木瓜”直接依存与“木耳”,且依存关系为COO,因此由下面算法的步骤2和3知道“木耳”和木瓜间存在合取关联。此外,不存在词语和“做菜”间存在合取关联。由于句子中存在“一起”这个表示析取含义的副词,所以“木耳”和“木瓜”之间实际上是析取关联的,所以该问句除了一个核心三元组<木耳,做菜,>,还可以提取出一个析取关联三元组<木瓜,做菜,>。
依据所述核心查询三元组,获取条件关联查询三元组或否定条件关联查询三元组的具体过程为:
1、声明一个ArrayList nlist1,nlist1用于保存与n1之间存在条件关系的词;
2、声明一个ArrayList nlist2,nlist2用于保存与n2之间存在条件关系的词;
3、声明一个ArrayList nlist3,nlist3用于保存与n3之间存在条件关系的词;
4、如果n1不为空,nlist1等于获取条件词算法(inlist,n1)的结果;
5、如果n2不为空,令nlist2等于获取条件词算法(inlist,n2)的结果;
6、如果n3不为空,令nlist3等于getConditionalWords(inlist,n3);
7、循环遍历nlist1,nlist2和nlist3得到三元组<sbj,pre,obj>。
其中,函数getConditionalWords(inlist,n3))的运算过程为:
(1)获取所有直接依存于node且依存关系为“ATTR”的名称或者形容词,存入列表nlist1中;
(2)outlist.addAll(nlist1);
(3)获取所有间接依存于node的名称和形容词,这些词直接依存的词的词性应该为“u”,且依存关系应为“DE”或者“DI”,将满足上述条件的词存入列表nlist2中;
(4)outlist.addAll(nlist2);
例如,“北京烤鸭简单的做法”经分析该问句的核心查询三元组为<北京烤鸭,,做法>,此外不存在合取和析取关联查询三元组。算法尝试获取与“北京烤鸭”和“做法”之间存在条件关联的词。形容词“简单”间接依存于“做法”,且“简单”直接依存的词“的”的词性为“u”,依存关系为“DE”,由getConditionalWords函数的步骤(3)和(4)可以知道“简单”是条件关联于“做法”的,此外不存在条件关联于“北京烤鸭”的词,因此可以得到一个条件关联查询三元组<容易,,北京烤鸭>。
否定条件关联查询三元组的提取过程与条件关联查询三元组的提取过程是一致的。例如对于问句“求北京烤鸭不困难的做法?”,经分析问句的核心查询三元组为<北京烤鸭,,做法>,此外不存在合取和析取关联查询三元组。形容词“困难”间接依存于“做法”,且“困难”直接依存的词“的”的词性为“u”,依存关系为“DE”,由getConditionalWords函数的步骤(3)和(4)可以知道“困难”是条件关联于“做法”的,但是在“困难”前存在副词“不”,所以这里的条件关联词“困难”表示否定的含义,因此最终得到一个否定关联查询三元组<困难,,做法>。
从上述获取预设的数据结构的过程可以看出,不同的搜索数据可获得的数据结构是不同的,在具体处理过程中,需要对用户输入的搜索数据都提取预设的数据结构,搜索数据会由于自身的构成特点导致其某些查询三元组返回的结果为空。
S103:将所述预设的数据结构映射为本体三元组;
其中,本体三元组是由上述三元组组成的数据结构,本实施例中,合法的本体三元组里有且必须有一个核心本体三元组,它代表了整个搜索问题的骨架。除此以外,本体三元组里可以不包括其它类型的三元组,也可以包括其它类型的三元组的任意组合,这里不做限定。
将所述预设的数据结构映射为本体三元组的具体处理过程如下:
计算<n1s,n2s,n3s>中不为空的列表个数,结果保存在num中;
如果num小于等于1,直接输出结果为空;
如果num等于2,循环遍历前两个列表,令<sbj,pre,obj>等于构成三元组算法(node1,node2,node3)结果;
如果num等于3,循环遍历三个列表,令<sbj,pre,obj>等于构成三元组算法(node1,node2,node3)结果;
如果num等于3,且<sbj,pre,obj>为空,递归调用核心三元组映射算法(<n1s,n2s,>,onto),返回结果存在<sbj1,pre1,obj1>中;
递归调用核心三元组映射算法(<n1s,n3s,>,onto),返回结果存在<sbj2,pre2,obj2>中;
递归调用核心三元组映射算法(<n2s,n3s,>,onto),返回结果存在<sbj3,pre3,obj3>中;
如果<sbj1,pre1,obj1>不为空,且pre1是通过自动补全产生的,那么令<sbj,pre,obj>等于<sbj1,pre1,obj1>,否则olist.add(<sbj1,pre1,obj1>);
如果<sbj2,pre2,obj2>不为空,且pre2是通过自动补全产生的,并且<sbj,pre,obj>为空,那么令<sbj,pre,obj>等于<sbj2,pre2,obj2>,否则向olist添加(<sbj2,pre2,obj2>);
如果<sbj3,pre3,obj3>不为空,且pre3是通过自动补全产生的,并且<sbj,pre,obj>为空,那么令<sbj,pre,obj>等于<sbj3,pre3,obj3>,否则向olist添加(<sbj3,pre3,obj3>)。
例如对于问句“料酒可以做北京烤鸭么?”,经提取后得到核心查询三元组<料酒,做,北京烤鸭>,经过预设的数据库IndexSearcher的检索,“北京烤鸭”和“料酒”分别唯一的对应着实体“Beijing_Roast_Duck”“Cooking_Wine”,而“做”唯一对应着数据属“steps_of_making_food”,其定义域为Food,值域为String。容易看出这些元素间不能组成一个合法的三元组,因此算法将其分解为<Beijing_Roast_Duck,Cooking_Wine,>,<Beijing_Roast_Duck,steps_of_making_food>,和<Cooking_Wine,steps_of_making_food>这三个三元组。通过递归调用映射算法,最终得到两个非空的输出<Beijing_Roast_Duck,Ingredient_of_Food,Wine>和<Beijing_Roast_Duck,steps_of_making_food,>,由于steps_of_making_food是数据属性,所以后一个三元组不用补全。通过检查发现属性Ingredient_of_Food是经过自动补全产生的,所以将<Beijing_Roast_Duck,Ingredient_of_Food,Wine>作为核心本体三元组返回,而将<Beijing_Roast_Duck,steps_of_making_food,>作为合取关联本体三元组返回。
需要说明的是,为了加速检索过程,IndexSearcher采用了倒排索引技术,检索过程的核心工作是计算字符串之间的相似度。
S104:依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据提供给用户。
其中,预设的数据库指的是以预设的方法预先设置的数据库,其中包括文本数据。
首先获取核心本体三元组、合取关联本体三元组及析取关联本体三元组中的类的可能对应的所有的候选实体。随后,利用条件本体三元组和否定条件本体三元组,对上述的候选实体进行过滤,这一步结束之后,会将析取关联本体三元组也作为条件关联本体三元组来处理,析取关联本体三元组中未知的类用经过上述过滤后剩下的实体来代替,然后利用析取关联本体三元组对核心本体三元组和合取关联本体三元组进行过滤,过滤后剩下的实体用于构建搜索数据的解答数据。
需要注意的是,对于不同类型的问句使用了不同的过滤控制策略。对于特指问句使用的是宽松的过滤策略,也就是如果有一个条件所有的候选实体都不满足,那么就不用该条件了,这样做可以最大可能返回给用户一个不为空的答案。而对于其它三类问句:是否、正反、和选择我们则使用严格的过滤策略,也就是如果有一个条件所有的候选实体都不满足,那么我们就直接返回给用户一个空的结果。
例如,对于问题“希望是咸味的,不是京菜,求菜的材料和做法?”,问题具有一个核心查询三元组<菜,,材料>,一个合取关联查询<菜,,做法>,一个条件关联查询三元组<咸味,,菜>,一个否定条件关联查询三元组<京菜,,菜>。首先将核心和合取关联三元组中的Class部分替换为其相应的实体,这之中“菜”是一个Class,因此将其替换成很多具体的菜;利用条件和否定条件三元组过滤这些具体的菜,过滤后的菜应满足“咸味的”,和不是“北京菜”两个属性;再利用析取关联三元组过滤核心三元组中的候选实体,由于此问句中不含析取关联三元组,因此这条没起作用;最后再用过滤后剩下的菜构建问题的答案,假使剩下菜的包含了“盐水鸭”,那么答案就有“盐水鸭的材料是XXX,盐水鸭的做法是XXX”。
本实施例所述的搜索方法,通过对用户输入的搜索数据提取预设的数据结构,将所述数据结构映射本体三元组,并依据本体三元组构建搜索,在预设的数据库中搜索出相应的解答数据,所述解答数据以文本的形式展现给用户,而非网页的列表,使得用户对搜索结果一目了然,而不必再进行有效搜索结果的甄选。
与上述方法实施例相对应的,本发明实施例还公开了一种搜索装置,如图3所示,包括:
预处理模块301,用于对用户输入的搜索数据进行预处理;
数据结构提取模块302,用于从预处理后的搜索数据中提取预设的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合;
映射模块303,用于将所述预设的数据结构映射为本体三元组;
解答模块304,用于依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据提供给用户。
本实施例所述的搜索装置,包括数据结构提取模块和映射模块,能够从搜索数据中提取出预设的数据结构,并将数据结构映射为本体三元组,使用所述本体三元组构建的搜索,能够在预设的数据库中直接获得与搜索数据相对应的本文解答,即所述装置最终提供给用户的是针对搜索数据的文本解答,而非传统的搜索引擎提供的网页列表,因而,所述搜索装置具有搜索结果定位准确的优势。
进一步地,如图4所示,所述数据结构预设模块包括:
分类单元401,用于将所述预处理后的搜索数据按照预设的数据类型进行分类,以确定所述预处理后的搜索数据所属的数据类型;
核心查询三元组提取单元402,用于依据所述预处理后的搜索数据所属的数据类型,提取所述预处理后的搜索数据的核心查询三元组;
其它类型三元组获取单元403,用于依据所述核心查询三元组,获取所述预处理后的搜索数据的析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
进一步地,如图5所示,所述解答模块包括:
候选实体生成单元501,用于将本体三元组中的核心本体三元组、析取本体三元组及合取本体三元组,中属于类的成分替换为其相应的候选实体;
过滤单元502,用于利用条件以及否定条件关联本体三元组,从所述候选实体中过滤其修饰的类对应的候选实体;利用析取关联三元组,从所述候选实体中过滤核心三元组中其修饰的类对应的候选实体;
构建单元503,用于依据所述述候选实体中剩下的实体构建答案。
本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种搜索方法,其特征在于,包括:
对用户输入的搜索数据进行预处理;
从预处理后的搜索数据中提取预设的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合,其中,从所述预处理后的搜索数据提取出的三元组的类型由所述搜索数据本身决定;
将所述预设的数据结构映射为本体三元组,其中,合法的本体三元组里有且必须有一个核心本体三元组;
依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据以文本形式提供给用户;
其中,从预处理后的搜索数据中提取预设的数据结构包括:
将所述预处理后的搜索数据按照预设的数据类型进行分类,以确定所述预处理后的搜索数据所属的数据类型,所述预设的数据类型包括:特指问句、正反问句、是非问句和选择问句;所述特指问句包括有疑问代词的特指问句,有疑问动词的特指问句,以及无疑问词的特指问句;
依据所述预处理后的搜索数据所属的数据类型,提取所述预处理后的搜索数据的核心查询三元组;
依据所述核心查询三元组,获取所述预处理后的搜索数据的析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
2.根据权利要求1所述的方法,其特征在于,所述对用户输入的搜索数据进行预处理包括:
接收用户输入的搜索数据;
去除所述搜索数据中的冗余数据。
3.根据权利要求1所述的方法,其特征在于,所述将所述预设的数据结构映射为本体三元组包括:
将核心查询三元组映射为核心本体三元组;
将合取关联查询三元组映射为合取关联本体三元组;
将析取关联查询三元组映射为析取关联本体三元组;将条件关联查询三元组映射为条件关联本体三元组;
将否定条件关联查询三元组映射为否定条件关联本体三元组;
将条件和否定条件关联候选词映射为条件或否定条件关联本体三元组。
4.根据权利要求1所述的方法,其特征在于,所述依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据包括:
将本体三元组中的核心本体三元组、析取本体三元组及合取本体三元组,中属于类的成分替换为其相应的候选实体;
利用条件以及否定条件关联本体三元组,从所述候选实体中过滤其修饰的类对应的候选实体;
利用析取关联三元组,从所述候选实体中过滤核心三元组中其修饰的类对应的候选实体;
依据所述述候选实体中剩下的实体构建答案。
5.一种搜索装置,其特征在于,包括:
预处理模块,用于对用户输入的搜索数据进行预处理;
数据结构提取模块,用于从预处理后的搜索数据中提取预设的数据结构,所述预设的数据结构包括:核心查询三元组、析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合,其中,从所述预处理后的搜索数据提取出的三元组的类型由所述搜索数据本身决定;
映射模块,用于将所述预设的数据结构映射为本体三元组,其中,合法的本体三元组里有且必须有一个核心本体三元组;
解答模块,用于依据所述本体三元组,从预设的数据库中搜索与所述搜索数据相关的解答数据,并将所述解答数据提供给用户;其中,所述数据结构预设模块包括:
分类单元,用于将所述预处理后的搜索数据按照预设的数据类型进行分类,以确定所述预处理后的搜索数据所属的数据类型,所述预设的数据类型 包括:特指问句、正反问句、是非问句和选择问句;所述特指问句包括有疑问代词的特指问句,有疑问动词的特指问句,以及无疑问词的特指问句;
核心查询三元组提取单元,用于依据所述预处理后的搜索数据所属的数据类型,提取所述预处理后的搜索数据的核心查询三元组;
其它类型三元组获取单元,用于依据所述核心查询三元组,获取所述预处理后的搜索数据的析取关联查询三元组、合取关联查询三元组、条件关联查询三元组、否定条件关联查询三元组、条件关联候选词集合、否定条件候选关联词集合。
6.根据权利要求5所述的装置,其特征在于,所述解答模块包括:
候选实体生成单元,用于将本体三元组中的核心本体三元组、析取本体三元组及合取本体三元组,中属于类的成分替换为其相应的候选实体;
过滤单元,用于利用条件以及否定条件关联本体三元组,从所述候选实体中过滤其修饰的类对应的候选实体;利用析取关联三元组,从所述候选实体中过滤核心三元组中其修饰的类对应的候选实体;
构建单元,用于依据所述述候选实体中剩下的实体构建答案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210179560.9A CN102693320B (zh) | 2012-06-01 | 2012-06-01 | 一种搜索方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210179560.9A CN102693320B (zh) | 2012-06-01 | 2012-06-01 | 一种搜索方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102693320A CN102693320A (zh) | 2012-09-26 |
CN102693320B true CN102693320B (zh) | 2015-03-25 |
Family
ID=46858753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210179560.9A Expired - Fee Related CN102693320B (zh) | 2012-06-01 | 2012-06-01 | 一种搜索方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102693320B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778122B (zh) * | 2012-10-17 | 2018-01-23 | 腾讯科技(深圳)有限公司 | 搜索方法和系统 |
CN103064977B (zh) * | 2013-01-14 | 2016-04-13 | 苏州海客科技有限公司 | 行程单两级关键字集合的建立以及搜索方法 |
CN104077297B (zh) * | 2013-03-27 | 2017-05-17 | 日电(中国)有限公司 | 基于本体的查询方法及装置 |
CN105320674B (zh) * | 2014-07-03 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 一种领域本体库的建立方法、装置及服务器 |
CN104102723B (zh) * | 2014-07-21 | 2017-07-25 | 百度在线网络技术(北京)有限公司 | 搜索内容提供方法和搜索引擎 |
CN106407442B (zh) * | 2016-09-28 | 2019-11-29 | 中国银行股份有限公司 | 一种海量文本数据处理方法及装置 |
CN110569335B (zh) * | 2018-03-23 | 2022-05-27 | 百度在线网络技术(北京)有限公司 | 基于人工智能的三元组校验方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1845105A (zh) * | 2006-05-22 | 2006-10-11 | 赵开灏 | 基于三元模型的信息检索加工的方法 |
CN1845104A (zh) * | 2006-05-22 | 2006-10-11 | 赵开灏 | 信息智能检索加工的系统和方法 |
CN101695082A (zh) * | 2009-09-30 | 2010-04-14 | 北京航空航天大学 | 基于关系挖掘的服务组织方法及装置 |
-
2012
- 2012-06-01 CN CN201210179560.9A patent/CN102693320B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1845105A (zh) * | 2006-05-22 | 2006-10-11 | 赵开灏 | 基于三元模型的信息检索加工的方法 |
CN1845104A (zh) * | 2006-05-22 | 2006-10-11 | 赵开灏 | 信息智能检索加工的系统和方法 |
CN101695082A (zh) * | 2009-09-30 | 2010-04-14 | 北京航空航天大学 | 基于关系挖掘的服务组织方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102693320A (zh) | 2012-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102693320B (zh) | 一种搜索方法及装置 | |
Bafna et al. | Feature based summarization of customers’ reviews of online products | |
US8560485B2 (en) | Generating a domain corpus and a dictionary for an automated ontology | |
CN103488648B (zh) | 一种多语种混合检索方法和系统 | |
JP5536875B2 (ja) | 同義語を識別し、同義語を使用して検索するための方法および装置 | |
CN105138511A (zh) | 一种对搜索关键词进行语义分析的方法和系统 | |
US8200671B2 (en) | Generating a dictionary and determining a co-occurrence context for an automated ontology | |
Bizzoni et al. | The Making of Ancient Greek WordNet. | |
Elmeleegy et al. | Harvesting relational tables from lists on the web | |
AU2009279767A1 (en) | Systems and methods for concept mapping | |
US8825620B1 (en) | Behavioral word segmentation for use in processing search queries | |
CN104715064A (zh) | 一种实现在网页上标注关键词的方法和服务器 | |
WO2014210387A2 (en) | Concept extraction | |
CN106776571A (zh) | 一种标签的生成方法及装置 | |
Berghe et al. | Retrieving taxa names from large biodiversity data collections using a flexible matching workflow | |
CN105095203B (zh) | 同义词的确定、搜索方法及服务器 | |
Lesnikova et al. | Interlinking english and chinese rdf data using babelnet | |
Aanen et al. | SCHEMA-an algorithm for automated product taxonomy mapping in e-commerce | |
Guisado-Gámez et al. | Massive query expansion by exploiting graph knowledge bases for image retrieval | |
CN106168947A (zh) | 一种相关实体挖掘方法和系统 | |
Södergren et al. | A multilingual entity linker using pagerank and semantic graphs | |
Ramprasath et al. | Improving QA performance through semantic reformulation | |
Alshuwaier et al. | Smart search tools using named entity recognition | |
Hijikata et al. | Bootstrapping approach for extracting object attribute names from the Web | |
Iter et al. | Frameit: Ontology discovery for noisy user-generated text |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150325 Termination date: 20210601 |
|
CF01 | Termination of patent right due to non-payment of annual fee |