一种兼容关键词搜索的自然语言搜索方法及系统的制作方法

文档序号:6516871阅读:226来源:国知局
一种兼容关键词搜索的自然语言搜索方法及系统的制作方法
【专利摘要】本发明公开了一种兼容关键词搜索的自然语言搜索方法,该方法通过句子匹配实现搜索功能,在兼容目前关键词搜索的基础上实现了答案搜索,同时还提高了关键词搜索结果的相关性。本方法通过一系列的转换,最终通过带有语义属性的关键词匹配实现句子与句子的匹配,完成搜索功能。本发明还公开了一种兼容关键词搜索的自然语言搜索系统。应用本发明,能够对用户检索进行语义分析,判断用户的搜索意图,如果用户想要搜索一个问题的答案,那么在返回结果时会将匹配到的答案部分高亮,而不再象传统搜索引擎那样将匹配到的关键词进行高亮。
【专利说明】一种兼容关键词搜索的自然语言搜索方法及系统
【技术领域】
[0001]本发明涉及自然语言处理以及互联网搜索引擎技术,特别是将自然语言处理技术与搜索引擎技术相结合,以实现答案搜索并提高搜索结果的相关性。
【背景技术】
[0002]目前的搜索引擎主要提供基于关键词的搜索,它们通过将用户输入的关键词与索引中的网页内容进行匹配,将匹配度最高的一部分网页以摘要列表的形式返回给用户。这种搜索只是进行简单的关键词匹配,并不能理解用户的搜索意图,很多时候不能给出用户真正想要的结果。比如用户输入问题“When was SteveJobs diagnosed with a tumor ? ”进行搜索,本想搜索这个问题的答案,但目前的关键词搜索只会将匹配到问题中所有词的网页返回,并且将匹配到的词进行高亮,而不知道用户其实是想搜索一个答案。基于上面的情况,很多搜索引擎公司也通过一些方法尝试去理解用户的搜索意图,提供答案搜索。
[0003]一种方法是通过增加一个实体库,实现对部分搜索请求直接提供答案,以此作为对现有关键词搜索的一个补充,比如GOOGLE的知识图谱、BING的实体搜索等。但实体搜索有几个缺点:一是并非互联网上的所有内容都可以以实体-属性的形式进行组织;二是搜索实体本身或实体的属性可以给出结果,反过来通过一些相关属性搜索实体则无法给出结果;三是实体库的填充需要大量的线下数据挖掘和人工审核工作;四是实体库的规模跟互联网网页的数量比起来还是相当有限的。
[0004]还有一种方法是 通过提取文本中的事实关系,生成基于事实的索引系统,从而实现答案搜索功能,比如微软2008年收购的P0WERSET就是通过这一方式实现答案搜索的。这种方法的缺点是如果事实关系提取的过少会导致很多搜索没有结果,如果事实关系提取的过多则会导致索引数据异常庞大,无法达到搜索引擎需要的效率。
[0005]另外还有一些通过概念匹配的自然语言搜索方法来实现答案搜索,但目前还没能看到这些方法的实际应用效果。

【发明内容】

[0006]鉴于以上情况,本发明提供了一种兼容关键词搜索的自然语言搜索方法,该方法通过句子匹配实现搜索功能,在兼容目前关键词搜索的基础上实现了答案搜索,同时还提高了关键词搜索结果的相关性。
[0007]本发明提供的方法是将用户输入的检索串作为一个句子与目标网页中的句子进行完全或部分匹配,将匹配到句子的网页返回给用户。具体的匹配方法为首先将句子转换成语义树(类似于语法树,节点附有语义信息),那么句子跟句子的匹配就变成了语义树之间的匹配,如果一棵树中的每个词在另一棵树中都存在,并且该词在两棵树中的语义属性(类似与语法成分)都相同,则认为两颗树是匹配的;在进一步,在建索引时,将语义树转换成类似于传统搜索引擎的索引结构,不同的是每个词的位置信息不再是词的位置,而是其所在句子的位置,同时每个词都附有它在语义树中所具有的语义属性,在搜索时,将语义树中的查询词转换布尔查询,同时每个查询词附有它在语义树中所具有的语义属性,布尔查询的过程与传统的布尔查询相同,如果所有匹配到的词具有相同的位置,则说明这些词在同一个句子中,这时只要比较关键词的语义属性与匹配到词的语义属性即可,如果所有关键词的语义属性都与目标句子中匹配到词的语义属性相同,则表明两个句子是匹配的。经过上面的一系列转换,最终将句子与句子的匹配转换成了带有语义属性的关键词匹配。如果用户输入的是一个特殊疑问句,疑问词可以与目标句子中具有相同语义属性的任何词进行匹配,疑问词匹配到的部分即为用户要搜索的答案。比如网页中有一个句子“In2003,Steve Jobs wasdiagnosed with a pancreas neuroendocrine tumor.,,,用户搜索 “Whenwas Steve Jobs diagnosed witha tumor ?”时,会匹配到上面网页中的句子,由于检索串是一个特殊疑问句,疑问词“When”表示时间,在匹配到的句子中,“ In2003 ”也表示时间,那么很显然疑问词“When”匹配到的“In2003”即为用户要搜索的答案。
[0008]基于句子匹配的搜索同样要比基于关键词匹配的搜索结果相关度高,比如搜索关键词 “Steve Jobs,,,匹配到句子 “ In2003, Steve Jobs was diagnosed with a pancreasneuroendocrine tumor.,,和“Fernandez introduced Steve Jobs to his neighbor.,,,对于前面的搜索,显然“Stevejobs”作主语的第一句要比“Steve Jobs”作宾语的第二句相关度要高,本方法通过匹配“Steve Jobs”的语义属性可以得出上面的结果,而基于关键词的搜索则无法利用上面的语义信息计算相关度。
【专利附图】

【附图说明】
[0009]图1为本发明具体实施的搜索引擎的结构图。
[0010]图2为传统搜索引擎的正排索引单条记录结构
[0011]图3为本发明实现的单词正排索引单条记录结构
[0012]图4为属性正排索引单条记录结构
[0013]图5为检索模块返回的检索结果信息结构
[0014]图6为单词倒排索引结构
[0015]图7为属性倒排索引结构
[0016]图8为网页解析模块流程图
[0017]图9为语义树中语法成分的标识
[0018]图10索引句子的语义树实例
[0019]图11为单词正排索引记录实例
[0020]图12为单词倒排索引实例
[0021]图13为属性正排索引记录实例
[0022]图14为属性倒排索引实例
[0023]图15为查询语义树实例
[0024]图16为布尔查询条件实例
[0025]图17为查询语义树实例
[0026]图18为布尔查询条件实例
[0027]图19为查询语义树实例
[0028]图20为布尔查询条件实例[0029]图21为搜索结果页面
[0030]术语及方法
[0031]本发明涉及到的几个术语和方法。语义树:由一个或多个节点构成,每个节点在语义树中充当一个语法成分(比如“主语”、“谓语”、“宾语1”、“宾语2”、“状语”等),每个节点由一个或多个单词构成,或者是一棵语义树,一个节点可以充当另一个节点的语法成分(比如“宾语1”、“定语”、“同位语”等),同时每个节点会附带一定的语义信息。语义属性:指语义树上的节点及构成该节点的单词所具有的属性,对于在语义树中充当语法成分“主语”、“宾语I”或“宾语2”的节点,直接将所充当的语法成分作为其语义属性;对于在语义树中充当语法成分“谓语”的节点,如果是主动语态,直接用“谓语”作为该节点的语义属性,如果是被动语态,则在“谓语”前面加上被动语态标识作为该节点的语义属性;对于由副词构成的节点在语义树中充当“状语”的情况,直接将所充当的语法成分“状语”作为其语义属性;对于由介词构成的节点在语义树中充当“状语”或“定语”并且该节点本身带有宾语节点的情况,如果该节点和其宾语节点结合在一起表示“时间”、“地点”、“原因”或“方法”的,贝U用“时间”、“地点”、“原因”或“方法”等作为其宾语节点的语义属性,否则直接将介词本身作为其宾语节点的语义属性;对于特殊疑问句,如果由疑问词构成的节点在语义树中充当语法成分“主语”、“宾语I”或“宾语2”,则直接将节点所充当的语法成分作为其语义属性,否则用疑问词所表示的“时间”、“地点”、“原因”或“方法”作为该节点的语义属性。无效单词:是指在将语义树转换成单词正排索引记录时需要忽略掉的单词,包括“冠词”、谓语中表示时态或语态的“助动词”及在语义树中作“定语”或“状语”的节点所包含的介词,特殊疑问句中的疑问词。有效单词:指除无效单词外的其它单词。无效节点:是指在语义树转换成属性正排索引记录时需要忽略掉的节点,包括在语义树中充当“谓语”的节点、由介词构成的在语义树中作“定语”或“状语”的节点。有效节点:指语义树中除无效节点外的其它节点。待查找语义属性:指用户提交的检索串的问题部分在语义树中具有的语义属性,如果用户提交的是一个疑问句,那么会将疑问词在语义树中所具有的语义属性作为待查找语义属性,如果用户提交的是一个隐含问句,则将隐含问题部分在语义树中所具有的语义属性作为待查找语义属性,否则将待查找语义属性设为空。布尔查询条件:由查询词及查询词的语义属性、操作符“AND”和“0R”、优先级符号“ O ”共同构成。
【具体实施方式】
[0032]本发明利用计算机实现了 一个分布式搜索系统。
[0033]本发明的具体实施以英文搜索为例,但本发明所描述的方法同样适用于其它语言。
[0034]本发明通过对传统的基于关键词搜索的索引结构及相关的索引和检索过程进行修改和扩展,实现句子匹配方式的搜索,使新的搜索既支持自然语言搜索,同时还兼容原来的关键词搜索。将本发明所提供的方法描述成对传统搜索引擎的修改和扩展是便于基于现有知识的基础上更容易理解本发明所提供的方法,但本发明所提供的方法并不局限于是对传统搜索引擎的改造,同样适用于新搜索引擎的开发。另外为了更集中的描述本发明提供的方法,本发明对具体实施过程的描述进行了简化,比如简化了部署结构,省略了分布式部署、缓存等部分结构内容的描述;同样对与传统搜索引擎基本相同的过程和数据结构的描述也做了简化,比如省略了对索引数据的编码和压缩过程、二级索引、文档库的结构等内容的描述。
[0035]图1为本发明具体实施的结构图,与传统搜索引擎的流程基本类似,索引过程为首先由网络蜘蛛111从互联网Iio上抓取网页,将网页存储到网页库112中;网页解析模块113按照一定的规则和顺序从网页库112中逐一地取出网页进行解析,提取文本内容,然后从文本中依次地提取句子,为句子分配一个序号并将其结构化成语义树,再将语义树转换成单词正排索引记录和属性正排索引记录,待所有的句子处理完成后,将文本内容、所有单词正排索引记录和所有属性正排索引记录存储成正排索引114 ;所有的网页解析完成后,索引模块109将正排索引114转换成倒排索引106,转换过程中会依次为每个文档分配一序号作为其在倒排索引中的文档ID,并利用此ID和文本内容生成文档库108。检索过程为用户通过浏览器、APP等形式的客户端101提交搜索请求,用户的搜索请求首先到达HTTP服务102,HTTP服务102会将请求从HTTP格式转换成内部格式并传给检索代理103,检索代理103将收到的搜索请求中的检索串结构化成语义树,并将语义树与其它请求信息一同传给查询解析104,查询解析104将检索代理103提交的语义树转换成一个待查找语义属性(可能为空)和一个布尔查询条件,然后将转换后的查询请求传给文档检索105,文档检索105根据待查找语义属性和布尔查询条件从倒排索引106中检索符合条件的文档ID及其相关信息,并进行相关度计算,然后利用检索到的结果计算推荐答案,而后选取一定数量的相关度最高的文档,最后将推荐答案(如果存在)和这些文档的ID及其相关信息合在一起返回给查询解析104,查询解析104再将收到内容不做任何修改,直接传回给检索代理103,检索代理103将收到的文档ID及其相关信息连同用户提交的检索串一起传给摘要服务107,摘要服务107根据这些信息从文档库108中提取答案或摘要,并对摘要进行高亮处理,完成后将答案(如果存在)和摘要内容返回给检索代理103,检索代理103利用相关模版,将答案(如果存在)和摘要内容组织成网页返回给HTTP服务102,最后由HTTP服务102将页面返回给客户端101。
[0036]图2为传统搜索引擎的正排索弓I的单条记录结构,单词201为文档中出现的单词,位置203为单词在文档中出现的位置,通常用单词在文档中出现的顺序号表示,标志204由单词的一些特征构成,比如单词是否为大写、单词的字体等。单词命中202为位置203和标志204合在一起的一个别名,正排索引记录在存储时以文档为单位,即属于同一个文档的所有正排索引记录会存储在一起。
[0037]图3为本发明描述的单词正排索引的单条记录结构。单词301与201的含义相同,为文档中出现的单词,位置303与203的含义不相同,不再是传统正排索引记录中的单词在文档中出现的序号,而是单词所在的句子在建索引时获取的序号,每个文档中的句子序号从O开始,语义属性304也不再与传统索引记录中的标志204相同,而是单词在语义树中具有的语义属性(建索引时首先将句子转换成语义树),单词命中302为位置303和语义属性304两个字段合在一起的一个别名。单词正排索引记录的具体存储与传统搜索引擎一样,以文档为单位存储,属于同一个文档的所有单词正排索引记录会存储在一起形成单词正排索引,见114。
[0038]图4为增加的属性正排索引的单条记录结构。建索引时首先将句子转换成语义树,而属性正排索引是以语义树上的节点为单位,节点的位置401与303的含义相同,为节点所在的句子在建索引时获取的序号,语义属性403为该节点在语义树中具有的语义属性,偏移404指该节点包含的起始单词的首字母在文档中的绝对位置,长度405为该节点包含的所有单词及单词之间空格的总长度,签名406指该节点包含的所有单词的总签名,属性命中402是语义属性403、偏移404、长度405和签名406四个字段合在一起的一个别名。属性正排索引记录同样以文档为单位存储,属于同一个文档的所有属性正排索引记录会存储在一起形成属性正排索引,见114。
[0039]图5为文档检索105返回给查询解析104的数据结构,文档ID (502)为文档在索引中的编号,偏移503、长度504分别与图4中的偏移404、长度405的含义相同,标志505用于标识该记录是一个推荐答案、普通答案还是非答案。摘要属性501为文档ID502、偏移503、长度504和标志505四个字段合在一起的别名。
[0040]图6单词倒排索引结构,本结构以单词为单位进行组织。单词601后面跟随的是该单词的所有文档命中(602、603、...),每个文档命中包含文档ID及单词命中信息,t匕如文档命中602中包括文档IDl (604)、单词命中次数605、及命中次数个单词命中(606、607、...、608),单词命中(607、607、608等)的格式同图3中的302,文档命中按其文档ID从小到大的顺序进行排列,因为对于指定的单词不是在所有文档中都会出现,所以文档ID(604,609,...)并不一定连续,同一文档下的所有单词命中按单词命中中的位置(303)从小到大排列,由于指定的单词不是在文档的所有句子中都会出现,所以单词命中中的位置也并不一定连续。
[0041]图7为属性倒排索引结构,本结构以文档的为单位进行组织,首先是文档ID (701),后面跟随着文档中的句子命中个数702 (文档中被索引的句子总数,包含从句),句子命中个数702后面跟随着每个句子命中(708、709、...、710),每个句子命中中包含位置及属性命中信息,如句子命中1(708)包含位置703、命中个数704以及命中个数个属性命中(705、706、...707),其中的位置(比如703)为句子在建索引时获取的序号,可能与每个句子在文档中的实际位置不同,因为在建索引时,对于带有从句的句子,主句和从句会分别建索引,这时会给句子多分配一个序号,那么下一个句子会从当前序号开始,而不再是其
在文档中的实际位置。所有的句子命中(708、709.....710)按位置(703等)从小到大排
列。属性命中(705、706.....707等)的含义及其所包含的字段与图4中的402相同。
[0042]网页解析模块113的具体过程见图8,首先801按照一定的规则依次从网页库112中取出网页后转给802,802从网页中抽取有效的文本数据后转给803,803从文本数据中依次提取句子并转给804,804为收到句子分配一个序号并将其结构化成语义树后转给805,805将语义树映射成单词正排索引记录和属性正排索引记录,如果语义树中包含语义树(即带有从句的句子),则会为子树分配序号并做同样的映射,当文本中所有的句子都处理完成后,806将文本内容、所有单词正排索引记录和所有属性正排索引记录以文档为单位一同存储成正排索引114。例如803从文本内容中提取到了一个句子“In2003,SteveJobs wasdiagnosed with a pancreas neuroendocrine tumor.,,,转给 804 处理,804 首先将当前序号“62”分配给上面的句子(该句子前面还有其它的句子),然后将句子结构化成语义树1000,1000中每个节点前面都有一个语法成分标识,比如“sd” (1001)等,这些标识表示节点在语义树中充当的语法成分,标识的具体含义参见图9,另外还有一些附加的语义信息并没有在语义树1000上显示,比如节点“In” (1002)与其宾语节点“2003”合在一起表示时间,这一语义信息附在节点“In” (1002)上,但并没有在语义树上显示,而程序在具体执行时可以从语义树的每个节点上获取这样的语义信息。语义树1000经805转换成单词正排索引记录1100和属性正排索引记录1300。单词正排索引1100中的每一行代表一条记录,结构及其含义参见前面所述的图3,上面句子建索引时的序号是62,所以由该句子建成的单词正排索引记录1100中所有记录的位置1108的值都为62。首先转换节点“Steve Jobs” (1004)中的单词,将单词的原形“steve”和“job”作为单词正排索引记录中的单词,根据语义属性的定义及转换规则,直接将其在语义树中充当的语法成分“subject”作为单词“Steve”和“Jobs”的语义属性,生成记录1101和1102 ;节点“wasdiagnosed”在语义树中充当” predicate”,在转换过程中助动词“was”被忽略,“diagnosed”使用其原形“diagnose”,由于是被动语态,所以语义属性变为“predicate”前面加上被动语态的标识“passive”,即用“passive predicate”充当语义属性生成记录1103 ;携带宾语“2003”的节点“In” (1002)在语义树中做状语,属于介词携带宾语做状语的情况,所以转换时其宾语“2003”作为转换词,而“In” (1002)作为其宾语“2003”的语义属性而不再作为有效词进行转换,由于“In” (1002)与其宾语“2003”在一起表示时间,所以在转换成语义属性时用“time”替换介词“In”本身,即“2003”作为索引词、“62”作为其位置,“time”作为其语义属性共同构成一条单词正排索引记录1104。节点“with”(1003)携带宾语节点“a pancreasneuroendocrine tumor”在语义树中做状语,在转换时,“with”充当其宾语的语义属性,冠词“a”因是无效词被忽略,所以单词“panCreaS”、“neur0end0Crine”、“tum0r”分别转换咸记录 1105、1106、1107 ;至此句子“In2003, Steve Jobs was diagnosed with a pancreasneuroendocrinetumor.”的单词正排索引记录转换完成。语义树转换成属性正排索引记录时是以节点为单位,每个有效节点生成一条记录,语义树1000可以转换成属性正排索引记录1300,1300中的位置1304同单词正排索引记录1100中的位置1108 —致,语义属性1305与单词正排索引记录中的语义属性1109—致,记录1301为节点“Steve Jobs” (1004)生成的记录,其语义属性为”subject”,偏移1306为节点“Steve Jobs” (1004)的第一个单词的首字母“S”在文档中的绝对位置,长度1307为字符串“Steve Jobs”的长度,签名1308为字符串“Steve Jobs”的签名的值;记录1302为节点“In” (1002)及其携带的宾语节点“2003”共同生成的记录,其语义属性与1104中的语义属性相同,偏移、长度和签名分别为“In” (1002)的宾语节点“2003”在文档中的绝对位置、长度和签名的值;记录1303由节点“with”(1003)及其携带的宾语节点“a pancreas neuroendocrine tumor”生成,语义属性为“with ”,偏移、长度、签名分别为“ a pancreasneuroendocrine tumor ”在文档中的绝对位置、长度和签名的值;谓语节点“was diagnosed” (1005)在转换属性正排索引记录时作为无效语法成分被忽略。至此,转换完成一个句子的单词正排索引记录和属性正排索引记录。
[0043]待所有的网页正排索引建完后,索引模块109会将正排索引114转换成倒排索引106和文档库108。由于正排索引是以文档为单位进行存储的,正排索引中并不存储文档ID,所以在转换时则需要将文档ID加入到倒排索引中,在本发明的具体实施中文档ID为文档在正排索引中的存储顺序,从O开始,文档库中的文档ID与倒排索引中的文档ID —致,以便在检索时提取摘要信息,单词倒排索引的创建过程为首先从正排索引中取出一个正排文档并为其分配一个编号,即文档ID,然后将文档中的所有单词正排索引记录按照单词301和位置303排序,即同一个单词的所有记录按位置从小到大的顺序排在一起,之后对属于同一单词的所有记录进行合并生成单个文档的单词倒排索引,然后取出第二个文档,重复上面的步骤同样生成一个单个文档的倒排索引,然后将其与第一个单词倒排索引进行合并,重复上面的步骤即可生成一个包含全部网页的单词倒排索引。比如当前文档的编号为8,单词正排索引1100转可以换成单词倒排索引1200,倒排索引以单词(1201)为单位进行组织,文档命中(1202、1203、1204)以文档ID(比如1205)从小到大依次排序,由于一个单词并非在每篇文档中都会有命中,所以文档ID可能不是连续的,其起始的文档ID也可能不是0,单词命中也是按照命中中的位置(比如1207)从小到大依次排序。1200其中其它命中文档(1202、1204)的个数对于每个单词都是不同的,但图中为了表示方便,将它们都画成了等宽度;其它命中(1206、1208)的数量对每个单词也是不同的,为表示方便,也将它们都画成了等宽度。倒排属性索引以文档为单位进行组织,正排属性索引1300可转换成倒排属性索引1400,生成过程为将上面已分配的文档ID “8”做为倒排属性索引中的文档ID (1402),句子命中个数1403为正排属性索引中最后一条记录的位置1304的值加I (1300只是正排属性记录中的一部分),因为位置是从O开始,所以将最后一条记录的位置加I即为的句子命中个数,然后从正排属性索引中取一组位置相同的记录,即一个句子的所有属性命中,将位置1304的值填到倒排索引的位置1404中,将取出记录的数量填到1405作为命中个数,然后将每条记录中的语义属性1305、偏移1306、长度1307和签名1308作为一个属性命中追加到命中个数1404的后面,到此一组数据处理完成。接下来再取出一组位置相同的记录重复上面的步骤即可。按照上面的步骤处理其它文档中的属性正排索引。
[0044]搜索过程为用户通过客户端101提交搜索请求,客户端101可以是浏览器、APP等,用户可以直接输入文本,也可以通过语音等方式输入,客户端101会将任何非文本形式的输入转换成文本,然后在将文本封装成HTTP协议格式的请求并将其发送给HTTP服务102,HTTP服务10 2将HTTP请求转换成内部请求并发给检索代理103,检索代理103再将用户请求中的检索串结构化成语义树。比如用户通过客户端101提交检索串“When wasSteve Jobs diagnosed with a tumor ? ”,通过 HTTP 服务 102 传给检索代理 103,检索代理103将其结构化成语义树1500 (见图15),再将语义树1500序列化后传给查询解析104,104再将收到的内容还原成语义树1500,然后再将语义树形式的查询转换成待查找语义属性和布尔查询条件,具体转换过程为首先在语义树中查找是否有疑问词,如果有,则将疑问词具有的语义属性作为待查找语义属性,如果没有但用户提交的检索串隐含是在搜索一个答案,仍然会为隐含问题部分转换一个待搜索语义属性,比如语义树中只有一个节点,该节点中包含表示事物属性的词或最高级形式的形容词,则将” subject |objectl” (表示待查找语义属性可以即可以匹配“主语”,也可以匹配“宾语”)作为待查找语义属性,其它情况将待查找语义属性设为空;转换成布尔查询条件是针对语义树上的每个有效单词进行,将语义树上的单词的原形作为布尔查询条件中的查询词,将单词在语义树中具有的语义属性作为布尔查询条件中查询词的语义属性,语义树上同一节点单词用操作符“0R”连接,并且将属于同一节点的单词集合两边用优先级符号“O”括起来,在不同节点的单词集合之间用操作符“AND”连接。比如语义树1500可以转换成待查找语义属性和布尔查询条件1600(将图16),转换过程为首先在语义树中查找是否有疑问词,在语义树1500找到了疑问词“When”(1503),“When” (1503)所在的节点在语义树中做状语,根据语义属性定义及转换规则,由于其含有语义属性“时间”,所以在转换成待查找语义属性时,将“When” (1503)转换成“time” 1601 ;接下来依次将语义树1500中的有效单词转换成布尔查询条件,主语“Steve Jobs” (1502)中的单词的原形作为查询词,其在语义树1500中所具有的语义属性“subject”跟在单词的后面,作为查询词的语义属性,分别转换成1602和1604,由于1602和1604在语义树中属于同一节点,所以之间用“0R” (1603)操作符连接,并且两边用“ O”扩起来,提高计算的优先级;节点“was diagnosed” (1504)在转换时,助动词“was”被省略,“diagnosed”会用原形“diagnose”取代,语义属性为“predicate”前面加上语态标识“passive”,最后转换成1606 ;节点“with a tumor^(1501)在语义树中做状语,由于是介词加宾语的形式,所以转换时介词“with”充当语义属性,宾语节点“a tumor”中的冠词“a”省略,最后转换成1608,语义树上不同节点的单词集合之间用“AND”连接(1605、1607)。至此,语义树1500转换成了待查找语义属性和布尔查询条件1600。
[0045]查询解析104将待查找语义属性、布尔查询条件及其它查询条件传给文档检索105,由105执行具体的检索过程。105首先根据布尔查询条件中的查询词及其之间的布尔关系进行检索,其过程与传统搜索引擎的检索过程类似,首先定位每个查询词在倒排索引中的位置,然后利用传统的布尔检索算法依次定位符合检索条件的文档命中,即每次定位一组具有相同文档ID的文档命中,比如根据布尔检索条件1600在单词倒排索引1200中进行检索,首先定位1600中的查询词“steve”、“ job”、“diagnose”、“tumor”在1200中的位置,然后根据布尔检索算法定位到了一组文档ID为“8”的文档命中(1203中属于查询词的一组文档命中),所不同是传统搜索引擎会利用这组文档命中中的单词命中计算查询词在文档中相互之间的距离,找出距离最短的一组单词命中用于计算文档与检索串之间的相关度,而利用本发明提供方法实现的搜索引擎会在这组文档命中的单词命中中找出一组最多的具有相同位置的单词命中(每个文档命中最多只有一个单词命中在找出的这组单词命中中),比如在这组文档命中1203中查找到了位置为“62”的一组单词命中1207,这组单词命中在这组文档命中1203中是最多的一组具有相同位置的单词命中,再将查询词的语义属性与各自对应的单词命中中的语义属性进行比较,最后根据上面找出的单词命中的数量和语义属性匹配的数量一同计算命中文档与检索串的相关度,具有相同位置的单词命中越多、匹配到的语义属性越多,则文档与检索串的相关度越高。如果所有查询词在同一组文档命中中都具有相同位置的单词命中,并且其语义属性与各自的单词命中中的语义属性也相同,则表示检索串完全匹配到了文档中的一个句子,这时文档检索105会根据检索到的文档ID在106中的属性倒排索引中查找该文档中与单词命中中位置相同的句子命中,然后再在找到的句子命中中查找存在包含待查找语义属性的属性命中,如果找到,则将属性命中取出,将文档ID、相关度、属性命中和普通答案标志作为一条检索结果。比如利用上面查到的文档ID “8”(1205),和位置“6 2” (1207)在倒排属性索引1400中查到了句子命中1401,这时检索服务105查看1600中是否有待查找语义属性,发现其中有待查找语义属性“time”(1601),然后在1401中查到了包含语义属性“time”(1406)的属性命中2,即属性命中2中的偏移1407、长度1408和签名1409就是用户要查找的答案在文档中的偏移、长度和签名,然后将文档ID“8”、相关度、属性命中2和普通答案标志作为一条检索结果,如果检索条件没有完全匹配到一个句子或句子命中中没有包含待查找语义属性的属性命中,则将句子命中中的第一个属性命中取出,然后将文档ID、相关度、属性命中和非答案标志作为一条检索结果。重复上面的步骤检索其它结果。[0046]选取指定数量的文档和利用签名选取推荐答案即可在检索到每条结果后进行,也可以在所有的结果都检索完成后进行,选项指定数量的文档与传统搜索引擎相同,利用优先级队列(或堆排序)的方式选取相关度最高的指定数量的文档,并且文档按相关度由高到低排列。选取推荐答案的过程为根据每条检索结果的标志判断此条检索结果是否为普通答案,如果是普通答案则按检索结果中的属性命中中的签名进行聚合,将具有相同签名的文档相关度合在一起,作为候选答案的权重,最后将具有最高权重的候选答案作为推荐答案。将推荐答案所在的文档ID、权重、属性命中和推荐答案标志作为一条检索结果。将前面选取的文档和推荐答案(如果有)按格式500组织并返回,其中的偏移503和长度504即为属性命中402中的偏移404和长度405。
[0047]检索代理103收到检索结果后,将其与用户提交的检索串一同传给摘要服务107,107依次处理检索结果中的每条记录,首先根据记录中的文档ID将文档内容从文档库108中取出,然后判断记录中的标志,如果是推荐答案,则利用记录中的偏移和长度直接从文档中提取答案内容,否则,根据记录中的偏移和长度,从文档内容中提取摘要,具体方法为从偏移位置向前搜索到偏移所在句子的开始位置,如果向前搜索的距离超过了指定摘要的长度(此长度不是返回记录中的长度,而是摘要服务指定的长度)的一半,则停止搜索,以当前位置作为起始位置,从起始位置开始截取摘要服务指定长度的文本内容作为摘要,如果断返回记录中的标志为普通答案,则将返回结果记录中的绝对偏移转换为在摘要中的相对偏移,然后利用转换后的偏移和返回记录中长度对答案内容进行高亮,如果标志是非答案,则利用传统的关键词匹配的高亮方法将摘要与检索串中的关键词进行匹配,将匹配到的词进行高亮。所有结果记录处理完成后,将答案(如果存在)、高亮后的摘要内容及文档的连接、标题等返回给检索代理103,检索代理103收到摘要服务107的返回后,应用其预先配置好的模版,将答案、标题、摘要、链接等相关内容填充到模版的指定位置,生成检索页面返回给HTTP服务102,102再将页面返回给客户端。至此用户完成了一次检索。
[0048]同样对于搜索“Whatwas Steve Jobs diagnosed with in20037”,搜索串会被结构化成语义树1700,进一步转换成待查找语义属性及布尔查询条件1800,搜索的到结果是 1401 中的“属性命中 3”,即答案是句子 “ In2003, Steve Jobs was diagnosed with apancreas neuroendocrine tumor.,,中白勺 “a pancreasneuroendocr i ne tumor,,。
[0049]如果用户搜索“Steve Jobs”,检索串首先被结构化成语义树1900,进一步被转换成布尔查询条件2000,由于语义树2000中没有疑问词且只有一个节点,并且不是一个隐含问题,所以将待查找语义属性设置为“null”,而语义树中只有一个节点,所以节点中的查询词“steve”和“job”之间用“AND”操作符连接。利用布尔查条件2000在单词倒排索引中的查找过程与前面所述相同,不同的是在查找属性倒排索引时取出句子命中中的第一个属性命中即可,并且将标志设置为非答案。这样就相当于普通的关键词搜索,在高亮时会对匹配到的关键词进行高亮,由于在搜索时还会利用布尔查询条件中的语义属性与单词倒排索引中的语义属性匹配的数量进行相关度计算,所以其检索结果的相关度要好于传统关键词搜索结果的相关性,比如上面的搜索“Steve Jobs”在语义树中具有的语义属性为“主语”,它在文档中匹配到的在句子中做主语的“Steve Jobs” 一定要比匹配到的在句子中做宾语的“Steve Jobs”相关度要高。
[0050]图21 为搜索“When was Steve Jobs diagnosed with a tumor ? ”得到的结果页面,其中的“2003” (2101)为推荐答案,第一条搜索结果中对答案“2003” (2102)进行了高亮,对于没有匹配到答案的其它搜索结果,对匹配到的关键词进行了高亮,比如2103、2104、2105。
[0051]以上的具体实施只是为了更好地用图例说明本发明方法所具备的特征,并不意味本发明所述的方法只局限于上面的一种实施方案,任何不脱离本发明所述方法的实质下的修改及扩展都将在本发明的权利要求范围之内。
【权利要求】
1.一种通过计算机实现的兼容关键词搜索的自然语言搜索方法,其特征在于,该方法包括以下步骤: 将文本以句子为单位结构化成语义树,然后将语义树映射成单词正排索引记录和属性正排索引记录; 将用户输入的检索串结构化成语义树,然后将语义树转换为待查找语义属性和布尔查询条件,利用待查找语义属性及布尔查询条件进行检索,根据检索结果选取推荐答案,最后根据摘要属性提取答案或摘要并对摘要进行高亮。
2.根据权利要求1,其中所述的单词正排索引记录包含单词、位置和语义属性。
3.根据权利要求1,其中所述的正排属性索引记录包含位置、语义属性、偏移、长度和签名。
4.根据权利要求1,其中所述的布尔查询条件包括查询词及其语义属性、操作符以及优先级符号。
5.根据权利要求1,其中所述的将语义树映射成单词正排索引记录,进一步包括: 对语义树中每个有效单词建一条单词正排索引记录; 将语义树中的有效词的原形作为单词正排索引记录中的单词; 将句子在建索引时获取的序号作为单词正排索引记录中的位置; 将单词在语义树中具有的语义属性作为其在单词正排索引记录中的语义属性。
6.根据权利要求1,其中所述的将语义树映射成属性正排索引记录,进一步包括: 为语义树中每个有效节点生·成一条属性正排索引记录; 将句子在建索引时获取的序号作为属性正排索引记录中的位置; 将节点在语义树中具有的语义属性作为属性正排索引记录中的语义属性; 将节点所包含的第一个单词的首字母在文档中的绝对位置作为属性正排索引中的偏移; 将节点包含的所有单词及单词之间空格的总长度作为属性正排索引记录中的长度; 将节点包含的所有单词的总签名作为属性正排索引记录中的签名。
7.根据权利要求1,其中所述的将语义树转换为待查找语义属性,进一步包括: 对于检索串是特殊疑问句的情况,将疑问词在语义树中所具有的语义属性作为待查找语义属性; 对于检索串隐含是在搜索一个答案,将隐含问题部分的语义属性作为待查找语义属性; 对于除上面两种类型之外的检索,将待查找语义属性设为空。
8.根据权利要求1,其中所述将语义树转换为布尔查询条件,进一步包括: 转换过程针对语义树上每个有效单词进行; 将语义树中有效单词的原形作为布尔查询条件中的查询词; 将有效单词在语义树中具有的语义属性作为其在布尔查询条件中的语义属性; 对于语义树中只有一个节点的情况,节点中的单词之间用操作符“AND”连接; 对于语义树中有两个或两个以上节点的情况,语义树上同一节点中的单词之间用操作符“OR”连接,同一节点的单词集合用优先级符号“ O ”括起来,不同节点的单词集合之间用操作符“AND”连接。
9.根据权利要求1,其中所述的利用待查找语义属性及布尔查询条件进行检索,进一步包括: 利用布尔查询条件在单词倒排索引中检索一个文档ID及单词命中中的位置; 利用具有相同位置的单词命中的数量和语义属性匹配的数量计算命中文档与布尔查询条件之间的相关度; 利用文档ID和单词命中中的位置在属性倒排索引中检索句子命中; 如果待查找语义属性不为空并且句子命中中的某一属性命中中的语义属性与待查找语义属性相同,则取出该属性命中,将标志设置为普通答案并且提高该文档的相关度,否则取出句子命中中的第一个属性命中并将标志设置为非答案; 将检索到的文档ID、相关度、属性命中和标志作为一条检索结果。
10.一种在计算机上运行的兼容关键词搜索的自然语言搜索系统,其特征在于,该系统包括: 网页解析模块(113),用于解析网页,将网页中的文本内容转换成正排索引数据;检索代理模块(103),用于将用户输入的检索串结构化成语义树;查询解析模块(104),用于将语义树转换成待查找语义属性 和布尔查询条件;文档检索模块(105),用于执行布尔检索。
【文档编号】G06F17/27GK103530415SQ201310518467
【公开日】2014年1月22日 申请日期:2013年10月29日 优先权日:2013年10月29日
【发明者】谭永 申请人:谭永
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1