一种内容搜索方法及装置
技术领域
本申请涉及自然语言处理技术领域,尤其涉及一种内容搜索方法及装置。
背景技术
在自然语言处理技术领域,语言研究人员在进行语言建模时需要使用高质量的文本素材,这些文本素材要求具有较为一致的语言规律,在语义、语法格式等方面相似或统一,从而保证语言建模的质量。
然而,对于语言研究人员来说,获取高质量的文本素材是一项复杂和繁重的工作,通常需要语言研究人员对包含文章、段落或句子的海量语料进行深度的挖掘,以从中获取符合语言建模要求的文本素材。对海量语料中进行内容搜索是获取文本素材的一种方式,但是现有的内容搜索方法仅通过简单的字符匹配的方式得到文本素材,导致文本素材的语义复杂多样,缺乏语义一致性,不利于获得高质量的语言模型。
发明内容
本申请实施例提供了一种内容搜索方法及装置,以解决现有的内容搜索方法通过简单字符匹配的方式获得文本素材,导致文本素材的语义缺乏一致性的问题。
第一方面,本申请实施例提供了一种内容搜索方法,包括:
解析用户输入的搜索表达式,以获取所述搜索表达式包含的关键字和距离约束条件;
根据所述关键字从预处理的语料中获取包含任意所述关键字的文章,得到文章集合;
从所述文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合;
根据所述搜索表达式对所述关键字形成的顺序约束条件,从所述第一句子集合中获取满足所述顺序约束条件的句子,得到第二句子集合;
从所述第二句子集合中获取满足所述距离约束条件的句子,作为搜索目标句。
第二方面,本申请实施例提供了一种内容搜索装置,包括:
解析模块,用于解析用户输入的搜索表达式,以获取所述搜索表达式包含的关键字和距离约束条件;
第一搜索模块,用于根据所述关键字从预处理的语料中获取包含任意所述关键字的文章,得到文章集合;
第二搜索模块,用于从所述文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合;
第三搜索模块,用于根据所述搜索表达式对所述关键字形成的顺序约束条件,从所述第一句子集合中获取满足所述顺序约束条件的句子,得到第二句子集合;
第四搜索模块,用于从所述第二句子集合中获取满足所述距离约束条件的句子,作为搜索目标句。
由以上技术方案可知,本申请实施例提供了一种内容搜索方法及装置,能够解析用户输入的搜索表达式,以获取搜索表达式包含的关键字和距离约束条件;根据关键字从预处理的语料中获取包含任意关键字的文章,得到文章集合;从文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合;根据搜索表达式对关键字形成的顺序约束条件,从第一句子集合中获取满足顺序约束条件的句子,得到第二句子集合;从第二句子集合中获取满足距离约束条件的句子,作为搜索目标句。由此,本申请实施例提供的技术方案,依次通过部分关键字、所有关键字、关键字顺序、关键字距离四个对语义有影响的维度对语料进行层层过滤,使筛选过后的语料在语义上逐渐收敛,使最终得到搜索目标句在语义层面具有一致性。另外,本申请实施例通过对语料的层层过滤,逐渐缩小语料规模,还提高了语料搜索速度和效率。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种内容搜索方法的流程图;
图2为本申请实施例提供的一种内容搜索方法步骤S103的流程图;
图3为本申请实施例提供的一种内容搜索方法步骤S104的流程图;
图4为本申请实施例提供的一种内容搜索方法步骤S301的流程图;
图5为本申请实施例提供的一种内容搜索方法步骤S105的流程图;
图6为本申请实施例提供的一种内容搜索方法步骤S501的流程图;
图7是本申请实施例提供的一种内容搜索装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请实施例提供了一种内容搜索方法及装置,以解决现有的内容搜索方法通过简单字符匹配的方式获得文本素材,导致文本素材的语义缺乏一致性的问题。
下面是本申请的方法实施例。
本申请的方法实施例提供了一种内容搜索方法。图1是该内容搜索方法的流程图。该方法可以应用于服务器、PC(个人电脑)、平板电脑、手机等多种设备中。
如图1所示,该方法包括以下步骤:
步骤S101,解析用户输入的搜索表达式,以获取所述搜索表达式包含的关键字和距离约束条件。
其中,由于输入的搜索表达式可以称作用户输入条件或搜索条件,本申请实施例中的内容搜索过程的实现都是基于搜索表达式,根据搜索表达式的不同,从语料中搜索出的内容也不同,因此,用户可以根据想要搜索的内容任意设计和输入不同的搜索表达式。
示例地,搜索表达式可以是以下形态:
<n>你好<v>公司{1,10}<org>
其中,以独立形态存在的字符“你好”“公司”,以及带有尖括号的“<n>”“<v>”“<org>”作为搜索表达式的关键字;由大括号“{}”和两个数字组成的内容作为搜索表达式中的距离约束条件。
其中,关键字包括类别关键字和字符关键字。如上述示出的搜索表达式,带有尖括号的“<n>”“<v>”“<org>”等为类别关键字,每个类别关键字对应一个类别,用于从语料中匹配该类别包含的字符内容;其中,类别可以包括词性类别、语义类别、物种类别、行业类别、地域类别,以及按照其他依据进行分类形成的类别等。例如:“<n>”“<v>”都是词性类别,分别表示名词、动词,用于从语料中匹配名词内容、动词内容;“<org>”是社会类别,表示组织机构名;“<loc>”是地理类别,表示地名;“<猫科动物>”“<动物>”“<植物>”都是物种类别;“<汽车>”“<金融>”“<房地产>”都是行业类别。另外,每个类别还可以对应设置词表,从而,在使用类别关键字对语料进行匹配时,可以将词表中的词汇作为匹配依据。另外,如上述示出的搜索表达式,以独立形态存在的字符“你好”“公司”等字符关键字,字符关键字用于对语料中的字符内容进行全字匹配,也就是说,字符关键字能够从语料中匹配到相同的字符内容。
其中,距离约束条件,例如{1,10},包含一个最小距离“1”和一个最大距离“10”,由此形成了一个距离范围,从而,该距离约束条件可以用于约束两个关键字之间的距离范围,那么,仅当距离约束条件前后的两个关键字的距离在最小距离和最大距离之间时,该距离约束条件才认为匹配成功。
需要补充说明的是,上述示出的搜索表达的形态,例如:<n>你好<v>公司{1,10}<org>,仅仅作为一种约定的可选择的示例形式,本领域技术人员在设计搜索表达式时,还可以设计其他的用于表达关键字和距离约束条件的方式,这些设计均没有超出本申请的保护范围。
步骤S102,根据所述关键字从预处理的语料中获取包含任意所述关键字的文章,得到文章集合。
本申请在对语料进行内容抽取之前,需要对语料进行预处理,预处理的主要内容包括:对语料中的文章进行命名实体识别和时间信息识别,其中,命名实体识别包括标注语料中的命名实体并获取命名实体在语料中的位置,时间信息识别包括标注语料中的时间信息并获取时间信息在语料中的位置。文章中标注的命名实体和时间信息用于与关键字进行匹配,以获取包含任意关键字的文章,并确定关键字在文章中的位置。
其中,命名实体识别的过程包括识别出语料中的人名、地名、组织机构名,以及其他以名称为标识的实体,并获取这些实体在语料中的位置;时间信息识别的过程包括识别出语料中的例如“2008年”“19时30分”“10月1日”等表达时间概念的信息,并获取这些信息在语料中的位置。
示例地,语料:
2008年开发区举行科技节,……
预处理结果为:
时间信息:2008年 时间信息起始位置:0 时间信息结束位置:5
命名实体(地名):开发区 地名的起始位置:5 地名的结束位置:8
上述示例中的位置包含了一个起始位置和一个结束位置,是通过以下方法定义的:以文章的第一个字符作为位置0,定义每个字符占据1个位置,其中,起始位置是命名实体或时间信息的首个字符在文章中的位置,结束位置是命名实体或时间信息的末尾字符在文章中的位置加1。
基于上述对语料的预处理过程,本申请在步骤S102中首先判断语料是否进行了预处理,如果语料进行了预处理,则根据关键字从语料中抽取包含任意关键字的文章,生成文章集合,如果语料没有进行预处理,则需要先对语料进行预处理,再得到文章集合。其中,判断语料是否进行预处理即判断是否对语料中的文章进行了命名实体识别和时间信息识别。
作为一种可选择的实施方式,步骤S102在具体执行时,可以使用关键字遍历语料中的文章,如果文章包含关键字中的至少一个,则将文章加入到文章集合。具体地,关键字可能包括类别关键字和字符关键字,其中,字符关键字用于对语料中的文章进行全字匹配,例如:“你好”能够匹配到文章中的“你好”;类别关键字用于与文章中已标注的命名实体或时间信息匹配,例如:“<loc>”能够匹配到文章中的“北京”。那么,根据上述类别关键字和字符关键字的匹配方式,当类别关键字和字符关键字中的至少一个在文章中匹配到对应的内容时,这篇文章就会被抽取加入到文章集合中,并获取文章在语料中的位置索引,位置索引用于指示文章在语料中的位置,例如:语料中的第一篇文章的位置索引可以是0,第二篇文章的位置索引可以是1,依此类推。
由此,步骤S102将语料中的不包含任何关键字的文章去除,所得到的文章集合中的每一篇文章都包含关键字,从而缩小了语料规模,提高内容搜索速度和效率。
步骤S103,从所述文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合。
具体地,对于每篇文章,以句子为搜索单位,如果一个句子中同时包含搜索表达式中的所有关键字,则将该句子加入到第一句子集合。
图2为本申请实施例提供的一种内容搜索方法步骤S103的流程图。
在一个实施例中,如图2所示,步骤S103可以包括以下步骤:
步骤S201,从所述文章集合中遍历获取包含所有字符关键字的句子。
对于一篇文章来说,有的句子包含关键字,有的句子不包含关键字;进一步地,在包含关键字的句子中,有的句子包含字符关键字,有的句子包含类别关键字,有的句子同时包含两种关键字;从句子数量上看,不包含关键字的句子往往数量最多,包含一种关键字的句子数量次之,同时包含两种关键字的句子数量最少。基于上述分析,步骤S201 首先从文章集合中遍历获取包含所有字符关键字的句子,从而,过滤掉不包含字符关键字句子或者仅包含部分字符关键字的句子,达到进一步缩小语料的搜索范围的目的。
步骤S202,从包含所有字符关键字的句子中搜索所述类别关键字。
在包含所有字符关键字的句子中,有的句子不包含类别关键字,有的句子只包含部分类别关键字,有的句子包含所有类别关键字。而如果要满足搜索表达式的匹配条件,句子中必须包含搜索表达式中的所有类别关键字,由此,步骤S202对包含所有关键字的句子进行进一步搜索,以搜索到包含类别关键字的句子,并确定包含所有类别关键字的句子,从而进一步缩了小语料的搜索范围。
步骤S203,根据搜索结果,将同时包含所有所述字符关键字和所有所述类别关键字的句子加入到第一句子集合,并获取第一句子集合中的每个句子的句索引,以及句子中每个所述关键字的关键字索引,其中,所述句索引用于指示句子在文章中的位置,所述关键字索引用于指示所述关键字在句子中的位置。
示例地,对于一篇文章,如果定义它的第1个句子的句索引为0,则它的第2个句子的句索引为2,依次类推,就可以确定文章中每个句子的位置。对于一个句子,如果定义它的1个字符的位置为0,则它的第2个字符的位置为1,依次类推,就可以确定句子中的每个关键字的位置;其中,关键字的位置可以包括起始位置和结束位置,起始位置是关键字的首个字符在文章中的位置,结束位置是关键字的末尾字符在文章中的位置加1;另外,由于在语料标注的过程中标注了命名实体和时间信息的位置,因此当句子中的命名实体和时间信息被确定为关键字时,可以通过上述标注的位置计算得到关键字在句子中的位置。
由此,与文章集合相比,第一句子集合的语料规模更小,并且第一句子集合中的每个句子都满足搜索表达式的关键词匹配条件,进一步缩了小语料的搜索范围,提高内容搜索速度和效率。
步骤S104,根据所述搜索表达式对所述关键字形成的顺序约束条件,从所述第一句子集合中获取满足所述顺序约束条件的句子,得到第二句子集合。
第一句子集合中的句子虽然包含了搜索表达式中的所有关键字,但是没有考虑到关键字在句子中的顺序是否与关键字在搜索表达式中的顺序相同,因此,为了进一步缩小语料的搜索范围,步骤S104根据关键字在搜索表达式中的顺序,对第一句子集合中的句子进行进一步地筛选过滤,将满足搜索表达式中关键字的顺序约束条件的句子筛选出来,得到第二句子集合。
示例地,对于搜索表达式:
<n>你好<v>公司{1,10}<org>
其形成的顺序约束条件为<n>--你好--<v>--公司--<org>,即要求:类别关键字“<n>”之后出现字符关键字“你好”,“你好”之后出现类别关键字“<v>”,“<v>”之后出现字符关键字“公司”,“公司”出现类别关键字“<org>”。
基于上述顺序约束条件,当句子中关键字的顺序与顺序约束条件相同时,句子就会被筛选出来并加入到第二句子集合,不满足上述顺序约束条件的句子会被过滤掉,从而,进一步缩了小语料的搜索范围,提高内容搜索速度和效率。
图3为本申请实施例提供的一种内容搜索方法步骤S104的流程图。
在一个实施例中,如图3所示,步骤S104可以包括以下步骤:
步骤S301,对于所述第一句子集合中的每个句子,依次分析相邻的两个所述关键字的顺序是否满足所述顺序约束条件。
示例地,对于搜索表达式:
<n>你好<v>公司{1,10}<org>
其形成的顺序约束条件为<n>--你好--<v>--公司--<org>,那么,对于第一句子集合中的每个句子,按照关键字在搜索表达式中出现的先后顺序,需要进行多次分析:
第一次分析:判断句子中的第一个关键字和第二个关键字是否满足“<n>--你好”顺序。例如:如果句子中的第一个关键字是“苹果”,第二个关键字是“你好”,则满足“<n>--你好”的顺序;如果句子中的第一个关键字是“你好”,第二个关键字是“苹果”,则不满足“<n>--你好”的顺序。如果第一次分析的关键字顺序满足顺序约束条件,则进行第二次分析,否则,过滤掉这个句子。
第二次分析:判断句子中的第二个关键字和第三个关键字是否满足“你好--<v>”顺序。例如:如果句子中的第二个关键字是“你好”,第三个关键字是“鼓掌”,则满足“你好--<v>”的顺序;如果句子中的第二个关键字是“你好”,第三个关键字是“公司”,则不满足“你好--<v>”的顺序。如果第二次分析的关键字顺序满足顺序约束条件,则进行第三次分析,否则,过滤掉这个句子。
后续的分析步骤依此类推。
步骤S302,如果所有相邻的所述关键字都满足所述顺序约束条件,则将句子加入到所述第二句子集合。
图4为本申请实施例提供的一种内容搜索方法步骤S301的流程图。
在一个实施例中,如图4所示,步骤S301可以包括以下步骤:
步骤S401,获取相邻的两个所述关键字在句子中的起始位置。
根据上文示出的关键字的位置的表示方法,使用起始位置和结束位置表示一个关键字的位置,解析句子中所有关键字的位置。
示例地,搜索表达式为:<v>了{0,5}苹果;第二句子集合中的一个句子为:小明吃了三个苹果;该句子共包含“吃”“了”“苹果”这三个关键字,这三个关键字的位置如表1所示:
关键字(句子) |
关键字(搜索表达式) |
起始位置 |
结束位置 |
吃 |
<v> |
2 |
3 |
了 |
了 |
3 |
4 |
苹果 |
苹果 |
6 |
8 |
表1关键字的位置表示方法
步骤S402,根据所述起始位置的数值大小确定两个所述关键字的顺序,如果所述顺序与所述顺序约束条件相同,则满足所述顺序约束条件。
示例地,首先,分析“吃”和“了”的顺序,由于“吃”的起始位置为2,“了”的起始位置为3,3大于2,说明句子中这两个关键字的顺序是“吃”在前“了”在后,与搜索表达式中的顺序约束条件相同,则满足所述顺序约束条件。然后,继续分析“了”和“苹果”的位置关系,并依此类推,知道确定句子中所有的关键字都满足顺序约束条件。
步骤S105,从所述第二句子集合中获取满足所述距离约束条件的句子,作为搜索目标句。
第二句子集合中的句子包含了搜索表达式中的所有关键字,并且关键字在句子中的顺序也满足搜索表达式形成的顺序约束条件,那么,如果再确定关键字在句子中满足距离约束条件,就能够确定这个句子为搜索目标句。
图5为本申请实施例提供的一种内容搜索方法步骤S105的流程图。
在一个实施例中,如图5所示,步骤S105可以包括以下步骤:
步骤S501,对于所述第二集合中的每个句子,获取所述关键字之间的距离,并分析所述距离是否满足对应的所述距离约束条件。
为了确定句子中的关键字是否满足距离约束条件,需要获取句子中关键字之间的距离,根据上文对每个字符占据一个位置的定义,关键字之间的距离可以用关键字相隔的字符数量来定义,例如:在“小明吃了三个苹果”中,“吃”和“了”相隔0个字符,距离为0,“了”和“苹果”相隔2个字符,距离为2。进一步例如,搜索表达式“<v>了{0,5} 苹果”包括距离约束条件“{0,5}”,约束了“了”和“苹果”的最小距离为0,最大距离为5,那么,句子中的“了”和“苹果”距离为2,则满足距离约束条件。
步骤S502,将所述距离满足所有所述距离约束条件的句子作为搜索目标句。
一个搜索表达式中可能包括一个距离约束条件,也可能包括多个距离约束条件,如果句子中的关键字的距离满足搜索表达式的所有距离约束条件,则该句子为搜索目标句。
图6为本申请实施例提供的一种内容搜索方法步骤S501的流程图。
在一个实施例中,如图6所示,步骤S501可以包括以下步骤:
步骤S601,获取位置在前的所述关键字的结束位置和位置在后的所述关键字的起始位置,并将所述起始位置和所述结束位置的差值作为所述距离。
示例地,如表1所示,“了”是位置在前的关键字,结束位置为4,“苹果”是位置在后的关键字,起始位置为6,则“苹果”和“了”的距离为6-4=2。
步骤S602,如果所述距离在所述距离约束条件限制的距离范围之内,则满足所述距离约束条件。
示例地,搜索表达式“<v>了{0,5}苹果”中的距离约束条件“{0,5}”约束了“了”和“苹果”的最小距离为0,最大距离为5,句子中的“了”和“苹果”距离为2,因此,“了”和“苹果”满足距离约束条件。
由以上技术方案可知,本申请实施例提供了一种内容搜索方法,包括:解析用户输入的搜索表达式,以获取搜索表达式包含的关键字和距离约束条件;根据关键字从预处理的语料中获取包含任意关键字的文章,得到文章集合;从文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合;根据搜索表达式对关键字形成的顺序约束条件,从第一句子集合中获取满足顺序约束条件的句子,得到第二句子集合;从第二句子集合中获取满足距离约束条件的句子,作为搜索目标句。由此,本申请实施例提供的方法,依次通过部分关键字、所有关键字、关键字顺序、关键字距离四个对语义有影响的维度对语料进行层层过滤,使筛选过后的语料在语义上逐渐收敛,使最终得到搜索目标句在语义层面具有一致性。另外,本申请实施例通过对语料的层层过滤,逐渐缩小语料规模,还提高了语料搜索速度和效率。
下面是本申请的装置实施例。
本申请的装置实施例提供了一种内容搜索装置,该装置可用于执行本申请的方法实施例,对于本申请装置实施例未公开的技术细节,请参照本申请的方法实施例。
图7是本申请实施例提供的一种内容搜索装置的示意图。
如图7所示,该装置包括:
解析模块701,用于解析用户输入的搜索表达式,以获取所述搜索表达式包含的关键字和距离约束条件;
第一搜索模块702,用于根据所述关键字从预处理的语料中获取包含任意所述关键字的文章,得到文章集合;
第二搜索模块703,用于从所述文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合;
第三搜索模块704,用于根据所述搜索表达式对所述关键字形成的顺序约束条件,从所述第一句子集合中获取满足所述顺序约束条件的句子,得到第二句子集合;
第四搜索模块705,用于从所述第二句子集合中获取满足所述距离约束条件的句子,作为搜索目标句。
由以上技术方案可知,本申请实施例提供了一种内容搜索装置,用于解析用户输入的搜索表达式,以获取搜索表达式包含的关键字和距离约束条件;根据关键字从预处理的语料中获取包含任意关键字的文章,得到文章集合;从文章集合中遍历获取同时包含所有关键字的句子,得到第一句子集合;根据搜索表达式对关键字形成的顺序约束条件,从第一句子集合中获取满足顺序约束条件的句子,得到第二句子集合;从第二句子集合中获取满足距离约束条件的句子,作为搜索目标句。由此,本申请实施例提供的装置,依次通过部分关键字、所有关键字、关键字顺序、关键字距离四个对语义有影响的维度对语料进行层层过滤,使筛选过后的语料在语义上逐渐收敛,使最终得到搜索目标句在语义层面具有一致性。另外,本申请实施例通过对语料的层层过滤,逐渐缩小语料规模,还提高了语料搜索速度和效率。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。