一种语言结构大数据的快速检索方法

文档序号:33001201发布日期:2023-01-18 01:17阅读:31来源:国知局
一种语言结构大数据的快速检索方法

1.本发明涉及一种语料库检索方法,尤其是涉及一种语言结构大数据的快速检索方法。


背景技术:

2.自然语言在语法上呈现出层次组合性,针对各语法单位和语言数据经语法分析后呈现出的语法结构特征,可以设计索引单元和检索流程,实现语言结构大数据的快速检索。
3.1.语法的层次组合性:自然语言中的句子由各级语法单位按阶梯般的层级规律构成,其中,上级的语法单位由下级语法单位按一定的规则组合而成,如词由语素构成。自然语言句子的这种层次组合特性,可以通过语法分析将其反映出来。
4.2.语法单位:在自然语言句子,凡是能够在组合的某一位置上被替换的语言片段即为语法单位。最大的语法单位是句子,其他的语法单位从大到小依次是:词组、词、语素。
5.3.语言结构数据:语言结构数据指经过了语法或语义分析,并将分析结果以树结构或者图结构形式呈现的语料,主要包括句法结构树语料、句法依存树语料、句法依存图语料、语义结构树语料、语义依存图语料等。本发明主要针对句法结构树语料的快速检索,句法结构树语料是指对句子进行句法结构分析后,如短语结构句法分析,形成的标记了句子各语法单位的性质、功能信息,并体现了语法单位之间层级语法关系的树状结构语料。
6.4.索引:索引是一种为了加快信息查找,基于目标信息内容预先创建的一种储存结构,是一种常见的检索优化手段。对于大规模语料库系统而言,索引能够大幅提升语料库的查询效率,提升语料库检索系统的并发能力。语言数据的索引就是提取出语料中的待检索对象,对其构建索引,构建从语言数据的待检索对象到对象所在句子、段落或文档的关联关系,组织成一定的结构,以支持大规模语言数据的快速查询。
7.5.索引单元:索引单元在建索引时是指用于定位索引内容的节点。在检索时,是指从原子检索式中解析出的用于与索引库中内容进行过比较的单元,也称为检索单元。索引单元可以是字符、词语或语法标记符号。索引单元对应的索引内容则保存了索引单元所在句子在语料中的偏移量、索引单元在句中的位置、以及索引单元的相关信息。在检索时,通过索引单元找到对应的索引内容,通过索引内容可定位索引单元在语料中的位置及相关信息,还原出语料内容,从而完成比较,获得检索结果。
8.索引单元揭示了语料中有检索意义的内容或形式特征。所以,需要针对被索引数据的具体情况并结合用户的检索需要,选出合适的索引单元,为其配备适用的索引。语料库索引单元的设计应在语料特征的基础上,以检索需求为导向,什么特征具有被频繁检索的需求,什么特征的组合有利于提升知识抽取的准确率和效率,就将其作为重点索引对象,构建与之相关的索引单元,以期在最大限度上利用有限的资源实现更加高效的语料检索性能。
9.典型的索引单元有字、词等。生语料常以字作为索引单元,不依赖于分词,实现起来较为容易,检索时也只能以字或者字的组合来查找。分词词性标注语料通常以词和词性
标记作为索引单元,以支持词检索和词性检索。对于句法结构树语料,语料包含了字、词、短语、词性标记、属性标记以及不同语言单元之间的语法结构关系,为了支持对这些内容和关系的检索,索引单元也应当做出相应调整。
10.同时,随着语料库语言学研究的不断深入,对语料库的检索的准确度和功能的多样性提出了更高的需求,加之自然语言处理技术的发展,使得获取大规模语言结构数据成为现实可能。基于此,本发明针对语言结构数据的特点,考察了语言结构数据的检索需求,设计了以下基本索引单元:词性和该词性左紧邻词尾字符的组合、词性和该词性右紧邻词首字符的组合、句法功能属性标记和该句法单位尾字符的组合。除三类基本索引单元以外,还设计了5类复合索引单元类型,涉及:词性索引单元、句法功能属性标记索引单元、字符索引单元,复合索引单元复用了基本索引单元的索引数据,以支持使用词性、句法标记和字符实现快速查询,且无需额外产生额外的索引数据,有效压缩了索引库的规模。
11.6.检索语言:检索语言是语料库系统的重要组成部分。语料索引可以实现语言大数据的快速搜索,而检索语言承载了语料库检索系统提供的检索功能。对于一个语料库检索系统来说,在计算机执行检索操作的过程中,只有当检索输入与系统内部的数据特征标识相匹配,系统才能提供检索所需要的结果。而结果准确与否,不仅依赖于检索输入与数据特征标识的匹配程度,又很大程度上取决于检索输入规范的描述能力,即检索语言的描述能力。复杂的检索式设计可以支持强大的检索功能,但是会对用户学习和使用造成负担。例如,如果检索系统采用正则表达式的方式来查询,虽然语句标准、功能强,但是不易理解,需要付出更大的学习代价,且容易出错。本发明自定义了一套检索语言,支持对检索单元进行任意组装,可以描述复杂语言现象,在检索功能和使用的便捷度之间进行了平衡。
12.7.随着语料库语言学研究的深入,对语料检索提出了更高的要求。传统的关键词索引或关键词和词性索引,仅能提供词语和词性检索,未曾考虑语言数据的句法结构信息,由此获得的检索结果存在大量的歧义结构,准确度偏低。同时,近些年自然语言处理技术的快速发展,使得获取大规模语言结构数据成为现实可能。


技术实现要素:

13.本发明提供了一种语言结构大数据的快速检索方法,解决了对语料库检索的问题,其技术方案如下所述:
14.一种语言结构大数据的快速检索方法,包括以下步骤:
15.s1:根据语言结构数据的类型,确定需要构建的基本索引单元及索引单元对应的索引内容,所述基本索引单元包括词性和该词性左紧邻词的尾字符组合、词性和该词性右紧邻词的首字符组合、句法性质功能标记和该句法单位的尾字符组合;
16.s2:设计结构检索语言,用于支持书写检索表达式,实现语言结构数据的查询,结构检索语言书写的检索式由三部分内容构成:查询对象、限制条件和功能操作;
17.s3:检索时,对用户输入的检索表达式进行解析,解析出与索引单元对应的检索单元及检索单元之间的关系,查询按单链二叉树后序遍历的方式获取每个检索单元的结果并按解析出的各检索单元之间的关系进行合并,流程包括设置约束条件、查询、对查询结果执行功能操作、输出检索结果。
18.进一步的,步骤s1中,词性和该词性右紧邻词的首字符组合、词性和该词性左紧邻
词的尾字符组合、句法性质功能标记和该句法单位的尾字符组合,形式化分别表示为:|pos_hz、hz_pos|、$tag_hz;其中pos表示词性标记、hz表示任意一个字符、tag表示句法性质功能标记,符号“|”和“$”用于标识不同的索引单元类型,“_”用于分隔不同的索引元素。
19.所述|pos_hz用于检索右紧邻字符为hz且词性为pos的词语,支持指定词性右侧的字符串,实现以词性为起点,向右侧延伸查询;
20.所述hz_pos|用于检索左紧邻字符为hz且词性为pos的词语,支持指定词性左侧的紧邻字符串,实现以词性为起点,向左侧延伸查询;
21.所述$tag_hz表示的索引单元为“$属性标记_块尾字符”,其中属性标记包括了组块性质功能标记、小句标记和整句标记,用于检索属性标记为 tag且尾字符为hz的语言单元,属性标记所在的语言单元可能是短语、组块、小句或者整句,支持指定tag所在的语言单元的后缀串,查询与后缀串匹配的语言单元。
22.进一步的,步骤s1中,还包括五类复合索引单元,分别为:词性、句法性质功能标记及字符,形式化表示为:|pos、pos|、$tag、《hz、hz》,符号“《”和“》”同样用于标识不同的索引单元类型。
23.所述|pos表示的索引单元为“|词性”,用于检索右紧邻任意字符且词性为pos的词语,与“|pos_hz”类型的索引单元共用同一套索引数据;
24.所述pos|表示的索引单元为“词性|”,用于检索左紧邻任意字符且词性为pos的词语,与“hz_pos|”类型的索引单元共用同一套索引数据;
25.所述$tag表示的索引单元为“$属性标记”,用于检索属性标记为tag 所在的语言单元,与“$tag_hz”类型的索引单元共用同一套索引数据;
26.所述《hz表示索引单元为“《字符”,用于检索以该字符为首的词语,与“|pos_hz”类型的索引单元共用同一套索引数据;
27.所述hz》表示索引单元为“字符》”,用于检索以该字符为尾的词语,与“hz_pos|”类型的索引单元共用同一套索引数据。
28.进一步的,步骤s2中,所述查询对象是对基本检索内容的描述,用query 表示,由汉字串或者词串、词性标记符号、句法标记符号以及一些特殊符号组成,所述句法标记符号指句法结构树语料中的短语、组块或更高一级语言单元的句法标注信息。
29.进一步的,步骤s2中,所述限制条件分为三类:对默认变量的约束、语料区间约束和语料元信息约束;
30.所述对默认变量进行约束的限定条件包括:默认变量($1、$2、$b、 $e、$q)、比较运算符(》、《、=、!=)、内容限制操作符、长度限制操作符、输出控制符,用于对限定对象的范围、内容、长度、位置以及检索式的输出范围进行限制;
31.所述语料区间约束用于设置检索式的语料查询区间,设置0个或多个区间;
32.所述语料元信息约束中的“元信息”指的是构成语料的文档具有的元信息,或者是文本的位置段落信息。
33.进一步的,步骤s2中,所述功能操作的类型包括:实例检索、频次统计和历时统计,当检索式不指定窗口大小或者未指定功能操作类型时,默认进行实例检索并返回查询对象所在的整句实例。
34.进一步的,步骤s3中,所述设置约束条件的过程如下所述:语料库系统在接收到检
索表达式后,首先会分析出检索式中的查询对象query、限制条件和功能操作,然后将查询对象query解析成能够在索引库中直接进行查找的检索单元,在检索式解析结束后,如果检索式中包含了条件限制语句,则为当前的检索设置限制条件。
35.进一步的,步骤s3中,所述查询分为基本查询和组合查询,分别由getas 函数和joinas函数完成;getas函数用于定位并查找到一个检索单元在索引库中对应的索引数据信息,joinas函数用于按照给定的关系合并两个检索单元的索引数据,按后序遍历的路径顺序执行,最终得到匹配所有检索单元且符合检索单元之间关系的索引数据信息。
36.进一步的,步骤s3中,所述功能操作由context、freq和count 3个函数完成,分别表示获取检索结果的实例及其上下文、获取检索结果的实例及其统计频次、获取检索结果的实例及其历时统计频次。
37.进一步的,步骤s3中,输出检索结果由output、save等函数完成,output 表示通过网络形式输出,save表示将检索结果直接保存到本地文件。
38.所述语言结构大数据的快速检索方法,考虑到现阶段语料库语言学的研究需求及语言数据的特征,是一个能够利用语言结构数据中词法、句法及其结构信息的快速检索方法,通过设计合理的索引单元和索引内容,在控制索引数据规模的同时保证语料库的检索功能;通过检索流程的设计,在控制检索时间的同时压缩检索时的内存空间占用;通过检索语言的设计,在控制用户学习成本的同时保证检索语言的描述能力,发挥出语料库系统的检索功能。总体上,即利用语言结构数据的语法特征,设计索引单元,以提高检索效果;设计检索时的算法流程,降低大数据检索时的时空消耗;设计检索语言,降低用户学习成本并保证对检索功能的支持。
附图说明
39.图1是例句的句法结构树形图;
40.图2是“|d_认”索引数据组织形式示例图;
41.图3是“识_n|”索引数据组织形式示例图;
42.图4是“|d”索引数据组织形式示例图;
43.图5是“n|”索引数据组织形式示例图;
44.图6是“$np-obj_响”索引数据组织形式示例图;
45.图7是“$np-obj_响”索引数据组织形式示例图;
46.图8是“《认”索引数据组织形式示例图;
47.图9是“识》”索引数据组织形式示例图;
48.图10是检索式“打击(n){len($1)=1}”中默认变量对应图示;
49.图11是检索流程图;
50.图12是基本查询和组合查询的调用流程图;
51.图13是示例脚本执行流程图。
具体实施方式
52.所述语言结构大数据的快速检索方法,包括以下步骤:
53.s1:根据语言结构数据的类型,确定需要构建的基本索引单元及索引单元对应的
索引内容;
54.如果是分词词性标注语料,则以词性和该词性左紧邻词尾字符的组合为基本索引单元、以词性和该词性右紧邻词首字符的组合为基本索引单元,建立索引库;
55.如果是句法结构分析语料,则除以上两种基本索引单元以外,再以句法单位的句法性质功能标记和该句法单位尾字符的组合为基本索引单元,建立索引库。
56.s2:检索时,对用户输入的检索表达式进行解析,解析出与索引单元对应的检索单元及检索单元之间的关系,按单链二叉树后序遍历的方式获取每个检索单元的结果并按解析出的各检索单元之间的关系进行合并。
57.检索语言,根据索引单元的设计及语言结构数据的查询需求,设计了结构检索语言,检索语言支持以检索单元及表示检索单元之间关系的特殊符号来组装成任意的结构检索表达式。
58.本发明中,索引单元的设计能够利用语言数据本身的词法和句法信息,实现语言结构数据的多方位语言知识的检索需求,以三类基本索引单元,及与基本索引单元共享索引数据的5类复合索引单元,实现词、词性、句法结构及其任意组合的查询;单链二叉树后序遍历的检索流程能够在保证查询速度的同时,尽可能压缩检索时的内存占用,以支持语言结构大数据的快速检索。结构检索语言的设计,能够让用户以较低的成本学习检索语言并书写出规范且满足检索需求的检索表达式。下面具体进行描述。
59.s1索引单元设计
60.对于句法结构树语料,语料包含了字、词、短语、词性标记、句法属性标记以及不同语言单元之间的语法结构关系。为了对这些语料内容和形式特征实现快速查询,本方法设计了三种基本索引单元类型,分别为:词性和该词性右紧邻词的首字符组合、词性和该词性左紧邻词的尾字符组合、句法性质功能标记和该句法单位的尾字符组合,形式化分别表示为:|pos_hz、 hz_pos|、$tag_hz。其中pos表示词性标记、hz表示任意一个字符(英语等语种下表示一个单词)、tag表示句法单位的性质功能标记,符号“|”和“$”用于标识不同的索引单元类型,“_”用于分隔不同的索引元素,均没有实质意义。值得注意的是,在语料内容中出现的这些用于标识索引单元类型的特殊符号(“|”和“$”)都已转换为了对应的全角字符,因此,如需从语料库中检索这类字符,需使用全角形式进行查询。
61.其中,“|pos_hz”和“hz_pos|”基本索引单元的设计反映了语言模型的作用原理,即一个词的前后总是大概率出现某些词性的词,比如“我”的后面一般紧接着一个动词,这个时候“我”往往在句中充当主语,作为后面动词的施事,如果是对于获取所有以“我”作为施事的谓语动词的检索需求,则可以通过原子检索“我_v|”迅速得到目标结果。“|pos_hz”和“hz_pos|”两种基本索引单元类型的设计兼顾了语言前向、后向序列信息,其中“|pos_hz”携带索引单元后向的语言信息,“hz_pos|”携带索引单元前向的语言信息,以达到充分利用语言序列特征的效果。
[0062]“$tag_hz”的设计源自于汉语中名词性短语及除述补之外的谓词性短语大都中心语靠后的特点,以句法单位(短语是句法单位之一)的句法性质功能标记联合句法单位尾字符作为基本索引单元,以句法单位的尾词作为索引项,将每一种类型的句法性质功能标记按句法单位尾部的中心语进行区分,从而能够更加精准且快速地定位所要检索的块结构,减少后续研究的噪声处理工作。
[0063]
除三类基本索引单元外,还包括五类复合索引单元,分别为:词性、句法性质功能标记及字符,形式化表示为:|pos、pos|、$tag、《hz、hz》,符号“《”和“》”同样用于标识不同的索引单元类型,没有实质意义。
[0064]
五类复合索引单元可以支持更多检索功能。例如,检索词性“v”可以通过查找出连续存储的所有基本索引单元“|v_hz”来实现,其中hz可以是任意字符。同样,句法性质功能标记“vp”可以通过查找到所有基本索引单元“$vp_hz”的连续存储块区间来达到检索目的。在索引库中,同种类型的基本索引单元存储在连续分配的某个存储空间中,而复合索引单元指向其所对应的基本索引单元的地址区间,因此复合索引单元共用了基本索引单元的索引项和倒排项内容,这在很大程度上压缩了整个索引数据的规模。如图1所示,以example 1中的句子为例。原始句子:初步认识物质状态的影响。句法结构结构分析结果:
[0065]
[root[ip[vp-prd[null-mod[d初步]][vp-prd[v认识]]] [np-obj[n物质][n状态][u的][vn影响]][w[x。]]]]
[0066]
下表是以example 1为例,部分索引单元的具体形式及其功能。
[0067]
表1例句example 1的索引单元示例表
[0068][0069]
1)|pos_hz
[0070]
表示的索引单元为“|词性_该词性右紧邻词的首字符”。该类型索引单元可用于检索右紧邻字符为hz且词性为pos的词语,如索引单元“|d_认”检索右紧邻字符为“认”的副词实例,结果示例如下:
[0071]
《q》初步《/q》认识;《q》依法《/q》认定;《q》一经《/q》认定;
[0072]
《q》新《/q》认定;《q》已经《/q》认购;《q》进一步《/q》认清;
[0073]
《q》不《/q》认为;
[0074]
以上示例中,《q》与《/q》之间的粗体内容是“|d_认”的查询结果,即副词的实例,副词右侧的词都以字符“认”为首,这里列出来仅为了说明查询结果所处的上下文环境。
[0075]
在索引库内部,|pos_hz类型索引单元的索引数据内容为词性pos右侧的紧邻字符串,且这些字符串都按字符序,从左到右进行了排序。以“|d_ 认”为例,其索引数据的内容及组织形式如图2所示,索引数据内容都从“认”开始,从左到右进行了排序。基于这种内容和组织形式,该类型索引单元能够支持指定词性右侧的字符串,实现以词性为起点,向右侧延伸查询。如指定检索单元“|d_认”中副词d右侧的字符串为“认定”,此时的检索结果示例如下:
[0076]
《q》初步认定《/q》;《q》依法认定《/q》;《q》一经认定《/q》;
[0077]
《q》新认定《/q》;《q》已认定《/q》;《q》自认定《/q》;
[0078]
2)hz_pos|
[0079]
表示的索引单元为“左紧邻词的尾字符_词性|”,该类型索引单元可用于检索左紧邻字符为hz且词性为pos的词语。如“识_n|”检索左紧邻字符为“识”的名词实例,结果示例如下:
[0080]
辨识《q》设备《/q》;标识《q》信息《/q》;标识《q》标牌《/q》;
[0081]
标识《q》体系《/q》;常识《q》技能《/q》;认识《q》企业《/q》;
[0082]
知识《q》讲座《/q》;......
[0083]
《q》与《/q》之间的粗体内容是“识_n|”的查询结果,名词左侧的词都以字符“识”为尾。
[0084]
该类型索引单元的索引数据内容为词性pos左侧紧邻的字符串,这些字符串都按字符序,从右到左进行了排序。以“识_n|”为例,其索引数据的内容及组织形式如图3所示,索引数据内容都从“识”开始,从右到左进行了排序。该类型索引单元能够支持指定词性左侧的紧邻字符串,实现以词性为起点,向左侧延伸查询。如指定检索单元“识_n|”中词性n左侧的字符串为“充分认识”,此时的检索结果示例如下:
[0085]
《q》充分认识城市《/q》;《q》充分认识企业《/q》;《q》充分认识食品 《/q》;《q》充分认识农村《/q》;《q》充分认识自然《/q》;《q》充分认识外贸 《/q》;......
[0086]
3)|pos
[0087]
表示的索引单元为“|词性”。该类型索引单元可用于检索右紧邻任意字符且词性为pos的词语,如索引单元“|d”检索右紧邻任意字符的副词实例,结果示例如下:
[0088]
《q》真正《/q》实现;《q》必须《/q》按;《q》现《/q》提出;《q》重新《/q》 办理;《q》未《/q》按;《q》较《/q》多;......
[0089]
以上“|d”的查询结果,副词右侧可以是任意字符。
[0090]
在索引库内,该类型索引单元与“|pos_hz”类型的索引单元共用同一套索引数据。仍以“|d”为例,该索引单元与“|pos_hz”类型的索引单元之间的关系如图4所示。索引单元“|d”指向了所有词性为d的“|pos_hz”类型的索引单元。因此,“|pos”类型索引单元也支持指定词性右侧紧邻的字符串,实现以词性为起点,向右侧延伸查询。
[0091]
4)pos|
[0092]
表示的索引单元为“词性|”。该类型索引单元可用于检索左紧邻任意字符且词性
类型索引单元能够支持指定该语言单元的后缀串。
[0114]
7)《hz
[0115]
表示索引单元为“《字符”,用于检索以该字符为首的词语。该类型索引单元可用于检索左紧邻任意词性且首字符为“hz”的词语,如索引单元“《认”检索左紧邻任意词性,且首字符为“认”实例,结果示例如下:
[0116]
资格《q》认定《/q》;股东《q》认购《/q》;资质《q》认可《/q》;
[0117]
职权《q》认领《/q》;思想《q》认识《/q》;作用《q》认识《/q》;
[0118]
社会《q》认同《/q》;.....
[0119]
以上“《认”的查询结果,以“认识”为首字符的词语左侧可以是任意词性。
[0120]
在bcc语料索引库中,该类型索引单元与“|pos_hz”类型的索引单元共用同一套索引数据。索引单元“《认”与“|pos_hz”类型的索引单元之间的关系如图8所示。索引单元“《认”指向了左紧邻任意词性且首字符为“认”的“|pos_hz”类型的索引单元。“《hz”类型索引单元能够支持指定该字符右侧紧邻的字符串,实现以该字符为起点,向右侧延伸查询。
[0121]
8)hz》
[0122]
表示索引单元为“字符》”,用于检索以该字符为尾的词语。该类型索引单元可用于检索右紧邻任意词性且尾字符为“hz”的词语,如索引单元“识》”检索右紧邻任意词性,且尾字符为“识”实例,结果示例如下:
[0123]
《q》认识《/q》、;《q》认识《/q》发展;《q》认识《/q》计量;
[0124]
《q》认识《/q》和;《q》认识《/q》加强;《q》认识《/q》实施;
[0125]
《q》认识《/q》加快;....
[0126]
以上“识》”的查询结果,以“识”为尾字符的词语右侧可以是任意词性。
[0127]
在索引库中,该类型索引单元与“hz_pos|”类型的索引单元共用同一套索引数据。索引单元“识》”与“hz_pos|”类型的索引单元之间的关系如图9所示。索引单元“识》”指向了右紧邻任意词性且尾字符为“识”的“hz_pos|”类型的索引单元。“hz》”类型索引单元能够支持指定该字符左侧紧邻的字符串,实现以该字符为起点,向左侧延伸查询。
[0128]
s2结构检索语言设计
[0129]
为平衡用户友好性与检索功能之间的关系,本方法设计了一种结构检索语言来支持书写检索表达式,实现语言结构数据的查询。
[0130]
针对不同的语料形态,结构检索语言需满足不同的检索需求,对于生语料,需实现字符或字符串检索;对于分词、词性标注语料,需支持字符、词语、词性等基本语言单元和语言特征的检索;对于句法结构树语料,除了字符、词语、词性等基本内容特征,还需满足对句法属性、句法结构关系等内容和形式特征的查询。
[0131]
结构检索语言书写的检索式由三部分内容构成:查询对象、限制条件和功能操作,形如:query{condition1;condition2;...}operatio
[0132]
每一个检索式必须包含query,condition和operation则是可选部分。当想要指定operation,但不想添加condition时,需保留condition外层的花括号{},此时花括号内部可以为空。
[0133]
接下来将从查询对象、限制条件、功能条件三部分分别对结构检索语言的语法规则和功能进行说明。
[0134]
1)查询对象
[0135]
查询对象query是对基本检索内容的描述,主要由汉字串(或者词串)、词性标记符号、句法标记符号以及一些特殊符号组成。如,想要查询一个数词加一个量词后再紧接字符串“苹果”的语言实例,查询对象部分可写为:“m q苹果”,其中m是数词的词性标记,q是量词词性标记。
[0136]
其中,句法标记符号主要指句法结构树语料中的短语、组块或更高一级语言单元的句法标注信息,如短语结构标注语料中短语的句法属性标记vp、 np等。在query中,这类句法属性标记的描述方式与词性标记不同。此类标记符号书写形式为“标记符号[单元内部描述]”,单元内部描述方式与 query的描述规则一致。例如:检索一个动词后紧接着一个体词性组块,且该体词性组块由一个形容词和“体系”一词共同组成,检索式可写为:“v np[a 体系]”。
[0137]
查询对象部分还可以支持一些具有特殊含义的符号,用以表达更复杂的匹配模式,query中的特殊字符说明见表2。
[0138]
表2查询对象query中的特殊字符表
[0139]
[0140][0141]
2)限制条件
[0142]
花括号{}中的内容为条件限制语句,condition是对查询对象query的限制条件,多个限制条件之间用分号“;”分隔。
[0143]
限定条件可分为三类:对默认变量的约束、语料区间约束和语料元信息约束。
[0144]
(1)默认变量的约束
[0145]
query中用小括号()括起来的部分认为是被限定内容,一个query中被限定的成分只能有两处,即只能出现2个()。根据()出现的顺序,使用$(美元符)符号和序号指代,在限定语句中使用。即在query中使用$1表示第一个()括起来的内容,使用$2表示第二个()括起来的内容,在结构检索语言中,称为默认变量。
[0146]
除了用于指代query中限定内容的$1和$2外,还另有$q、$b、$e三个默认变量。其中,$q表示整个查询对象,也就是query;$b表示$q左侧的上下文;$e表示$q右侧的上下文。$q、$b、$e不依赖于query中是否有小括号限定,每个检索式都可以在条件限制语句中使用这三个默认变量。
[0147]
对默认变量进行约束的限定条件由:默认变量($1、$2、$b、$e、$q)、比较运算符(》、《、=、!=)、内容限制操作符、长度限制操作符、输出控制符等部分组成,用于对限定对象的范围、内容、长度、位置以及检索式的输出范围进行限制。
[0148]
例如检索“打击”后接一个单音节名词,检索式可以写为:“打击(n) {len($1)=1}”,图10是该检索式中各默认变量的图示。该检索式可用于研究“打击”后接单音节名词的语言现象。查询语言支持的限定条件类型见表 3。
[0149]
表3限定条件类型表
[0150][0151][0152]
说明:表中内容限制和长度限制的默认变量可由$1、$2、$b、$e和$q 中的任意一个进行替换。
[0153]
(2)语料区间约束
[0154]
语料区间约束用于设置检索式的语料查询区间,可以设置0个或多个区间。结构检索语言提供了addlimit和clearlimit两个保留关键词来设置语料检索区间的约束,约束使用的区间指标可通过语料库工具预先从索引数据中导出。语料区间限制的使用方式形如:“addlimit(区间下界指标,区间上界指标)”,其中区间上下界是一个整数值。使用“clearlimit()”即可取消所有的语料区间约束。例如:检索“发展”一词在1978年人民日报语料中出现情况的统计结果,这里假设这部分语料在索引数据中的上下界指标区间为
[10000,50000),则检索式可以写为“发展{addlimit(10000,50000)}freq”。
[0155]
(3)语料元信息约束
[0156]
语料元信息约束中的“元信息”指的是构成语料的文档具有的元信息,如作者、发表时间、出版时间等,或者是文本的位置段落信息,如标题、摘要、正文等。当对语言结构语料的文档属性信息构建了索引,在限制语句中即可设置属性约束条件,对查询对象query进行属性约束。例如:检索“青年”一词在1918年的鲁迅作品语料中出现情况的统计结果,检索式可以写为“青年{year=1918;author=鲁迅}freq”。对于语言结构语料,在索引阶段进行了索引的属性信息,均可作为限制语句中的限制条件使用。
[0157]
3)功能操作
[0158]
检索式的第三部分operation是功能操作,用于指定,基于前面的查询对象query和限制条件condition,将执行哪种类型的操作。功能操作类型有:实例检索、频次统计和历时统计,分别由context、freq和count三个关键词来实现。
[0159]
实例检索:
[0160]
例如检索双音节动词v的实例及其所在的上下文,检索式可写为: (v){len($1)=2}context。
[0161]
当功能操作类型为context时,可通过默认变量$winsize指定上下文的窗口大小。接上例,指定窗口最大为10个词,检索式为:“(v){len($1)=2; $winsize=10}context”。
[0162]
当检索式不指定窗口大小或者未指定功能操作类型时,默认进行实例检索并返回查询对象所在的整句实例。
[0163]
频次统计:
[0164]
例如对所有双音节动词实例的频次进行统计,检索式可写为: (v){len($1)=2}freq。
[0165]
历时统计:
[0166]
历时统计一般与限制条件中的“语料区间约束”一起使用。使用addlimit 关键词为检索设置历时区间。如果不设置该区间,count的功能将与freq一致,即对查询对象在所有语料中进行频次统计;如果设置了历时区间,count 将按照区间的划分,分区进行统计。
[0167]
如检索双音节动词分别在1990~1999和2000~2010年间出现情况的统计结果,这里假设1990~1999年语料的上下界区间为[100000,500000), 2000~2010年语料的上下界区间为[500000,1000000),则检索式可写为:
[0168]“(v){addlimit(100000,500000);addlimit(500000,1000000)}count”[0169]
这里的“历时”不只局限于时间概念,也可以按作者、文档分类等进行区间划分,只需知晓对应的语料区间上下界即可。如果把时间看做纵向的“历时”统计指标,那么其他维度,如作者、领域、篇章即可看做横向的“历时”统计指标,利用count可实现不同维度的“历时”分区统计。
[0170]
s3:检索流程设计
[0171]
由结构检索语言描述的每一个检索需求在语料库系统中整体检索流程如图11。
[0172]
整体检索流程图由四部分组成:约束条件设置、查询、功能操作、输出检索结果。由前往后顺序执行。
[0173]
语料库系统在接收到检索表达式后,首先会分析出检索式中的查询对象 query、
限制条件和功能操作。然后将查询对象query解析成可在索引库中直接进行查找的检索单元。
[0174]
在检索式解析结束后,如果检索式中包含了条件限制语句,则为当前的检索设置限制条件。约束条件设置主要由condition、addlimit、clearlimit、 setbase4个函数完成,分别用于设置不同类型的约束条件。其中,setbase 函数将前一个查询的检索结果设置为基点(图11左侧的查询过程),在同一个脚本中,接下来的查询将在前一个查询的结果基础上进行二次查询,执行二次查询时,可再次进行约束条件限制。
[0175]
设置完限制条件后,再根据检索式中解析出检索单元进行查询。查询分为基本查询和组合查询,分别由getas函数和joinas函数完成。getas函数用于定位并查找到一个检索单元在索引库中对应的索引数据信息,joinas 函数用于按照给定的关系合并两个检索单元的索引数据,整个查询过程按照图12“基本查询和组合查询的调用流程图”所示的虚线箭头方向,按后序遍历的路径顺序执行,最终得到匹配所有检索单元且符合检索单元之间关系的索引数据信息。
[0176]
获得所有符合所有检索单元的索引数据信息后,即可根据检索式中指定的功能操作获取对应的结果形式。功能操作由context、freq和count 3个函数完成,分别表示获取检索结果的实例及其上下文、获取检索结果的实例及其统计频次、获取检索结果的实例及其历时统计频次。基于查询阶段的索引数据信息,执行功能操作,得到最终的检索结果。
[0177]
得到最终检索结果后,即可根据指定的输出形式完成检索结果输出。输出检索结果由output、save等函数完成。output表示通过网络形式输出, save表示将检索结果直接保存到本地文件。
[0178]
每个有语料查询功能的脚本必须包含三个步骤:查询、功能操作以及输出,查询部分用于实现基础的原子查询及其组合查询,获取结果信息;功能操作根据结果信息获取目标结果形式,包括实例及其上下文、实例及其统计频次和实例及其历时统计频次;输出用于按照指定的方式输出最终检索结果,可以通过网络形式输出,也可以将结果直接保存到文件中,或对检索结果进一步进行处理分析。
[0179]
以具体的检索需求为例进行详细说明如下:
[0180]
检索需求描述:检索述宾结构并输出其所在的上下文,其中,述语是一个包含状语(null-mod)的复杂述语,宾语是以“工作”结尾的体词性短语,并限制述语和宾语的长度分别为2和4。
[0181]
检索式:
[0182]
(vp-prd[null-mod[]vp-prd[]])(np-obj[*工作]){len($1)=2;len($2)=4}context
[0183]
检索结果示例:
[0184]
我《q》先做《/q》《q》准备工作《/q》。
[0185]
而我的责编,就像《q》都是《/q》《q》他的工作《/q》。
[0186]
现在《q》很爱《/q》《q》我的工作《/q》,真的不想失去它。
[0187]
这个《q》再找《/q》《q》一份工作《/q》获取工资收入。
[0188]
因为生活拮据,我《q》去做《/q》《q》这份工作《/q》。
[0189]
前几天有去过上海《q》去做《/q》《q》拍摄工作《/q》。
[0190]
二是《q》敢做《/q》《q》群众工作《/q》。
[0191]
.....
[0192]
示例检索式在语料库系统中的执行流程图和数据流如图13所示,上述示例脚本的执行流程可分为四个部分:设置约束条件、查询、对查询结果执行功能操作、输出检索结果。四个步骤从下往上依次执行。
[0193]
设置约束条件:由condition函数完成,该检索式中设置的约束条件为:述语和宾语的长度分别为2和4。约束条件设置完成后将对该脚本接下来的执行过程有效。
[0194]
查询:主要包括基本查询和组合查询,分别由getas函数和joinas函数完成,脚本中的getas和joinas函数调用构成了一颗单支二叉树,整个查询按照二叉树后序遍历的过程执行,获得满足所有基本查询和组合查询的结果。
[0195]
对查询结果执行功能操作:查询过程执行完成后得到的结果并不是实际的语料内容,只是包含了能够获得真实语料内容的一些信息,该步骤根据这些信息可以获得结果的实例及上下文,或者获得结果的实例及其统计频次,或者是获取结果实例的历时统计频次。示例脚本中的context函数用于获得结果的实例及其上下文。
[0196]
输出检索结果:输出功能操作步骤产生的检索结果,该脚本中使用 output函数将检索结果以网络服务形式返回给语料库检索请求方。
[0197]
本发明通过设计合理的索引单元和索引内容,在控制索引数据规模的同时保证语料库的检索功能;通过检索流程的设计,在控制检索时间的同时压缩检索时的内存空间占用;通过检索语言的设计,在控制用户学习成本的同时保证检索语言的描述能力,发挥出语料库系统的检索功能。总体上,即利用语言结构数据的语法特征,设计索引单元,以提高检索效果;设计检索时的算法流程,降低大数据检索时的时空消耗;设计检索语言,降低用户学习成本并保证对检索功能的支持。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1