一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向多版本非结构化数据语义信息的查询方法及装置

2022-12-06 19:34:21 来源:中国专利 TAG:


1.本发明涉及非结构化数据,人工智能,查询语言,数据库等领域,旨在提供一种面向多版本非结构化数据语义信息的查询方法及装置。


背景技术:

2.非结构化数据泛指长文本、图片,视频,音频等没有进行结构化的数据。非结构化数据通常以一串二进制代码的形式保存在计算机系统中,这类数据的普遍特点是,数据体积较大,计算机不可理解。用户关于非结构化数据的查询需求主要集中于对非结构化数据中信息的查询,这种信息应当是具有语义的、可被理解的信息,这种信息被称为语义信息。传统的数据查询技术无法针对非结构化数据的语义信息进行查询,但人工智能技术的进步,使非结构化数据的分析和查询技术的发展有了新的方向。目前人工智能技术已经可以实现较高准确率的人脸识别、对象识别,语音识别,情感分析等任务。因此,可以通过人工智能技术获取非结构化数据中的信息,进而推动非结构化数据查询技术的发展。
3.非结构化数据的语义信息查询本质上是对某个对象的某种状态,在某种规则下的查询。非结构化数据本质上是对某个对象的某种状态的描述,当对象状态发生变化,非结构化数据的内容也会发生变化,这可以被认为是该非结构化数据对象的版本变化。同时,语义信息抽取规则的变化,也会使语义信息发生版本变化。现有技术只能针对某一个非结构化数据对象的某一种或几种语义信息进行查询,而无法实现指定版本的非结构化数据对象和语义信息查询。
4.不仅非结构化数据中的语义信息受到计算规则的影响,会产生较多的版本。非结构化数据语义信息的版本查询还面临着版本间关系复杂,版本的关联查询等问题,这些问题对非结构化数据语义信息的版本查询提出了巨大的挑战。
5.因此,研究一种面向多版本非结构化数据语义信息的管理和查询方法非常重要。


技术实现要素:

6.针对上述问题,本发明公开了一种面向多版本非结构化数据语义信息的查询方法及装置,在现有图数据库的基础上,通过对查询语言,非结构化数据对象指定版本语义信息的获取方法,多版本语义信息的缓存和索引,语义信息的版本化计算等技术的研究、设计和实现,实现可以管理并查询多版本的非结构化数据语义信息。
7.本发明的技术内容包括:
8.一种面向多版本非结构化数据语义信息的查询方法,所述方法包括:
9.获取各版本的非结构化数据;
10.针对每一版本的非结构化数据,基于提取语义信息使用的人工智能模型,获取所述语义信息的版本;
11.基于各人工智能模型之间的修改关系,构建并保存非结构化数据的语义信息版本树;其中,所述语义信息版本树中的每一节点表示一版本的语义信息;
12.依据所述语义信息版本树的存储方式,建立所述语义信息版本树中父节点与子节点之间的表达方式;
13.查询非结构化数据的语义信息时,基于查询过滤条件与所述表达方式,对所述语义信息版本树进行检索,得到语义信息的查询结果。
14.进一步地,所述查询过滤条件包括:待查询层级和待查询语义信息对应的非结构化数据对象的id、待查询语义信息对应的非结构化数据对象的版本号、待查询语义信息的名称以及待查询语义信息的实际内容中的一种或多种。
15.进一步地,所述存储方式包括:将所述语义信息版本树保存在硬盘或所述语义信息版本树保存在key-value数据库。
16.进一步地,将所述语义信息版本树保存在硬盘的情况下,所述依据所述语义信息版本树的存储方式,建立所述语义信息版本树中父节点与子节点之间的表达方式,包括:
17.使用三向指针保持父节点与子节点之间的关联;其中,所述三向指针包括:指向父版本的指针、指向语义信息实际内容的指针和指向所有子节点的指针。
18.进一步地,所述查询非结构化数据的语义信息时,基于查询过滤条件对所述语义信息版本树进行检索,得到语义信息的查询结果,包括:
19.基于所述待查询语义信息对应的非结构化数据对象的id、待查询语义信息对应的非结构化数据对象的版本号、待查询语义信息的名称或待查询语义信息,得到指向待查询语义信息的三向指针的指针;
20.根据指向语义信息实际内容的指针,得到目标节点的语义信息实际内容;
21.利用目标节点中指向父版本的指针和/或指向所有子节点的指针,并根据所述待查询层级,得到相应的父节点和/或子节点;
22.基于该父节点和/或子节点中指向语义信息实际内容的指针,得到父节点和/或子节点的语义信息实际内容;
23.综合获取的语义信息实际内容,得到语义信息的查询结果。
24.进一步地,将所述语义信息版本树保存在key-value数据库的情况下,所述依据所述语义信息版本树的存储方式,建立所述语义信息版本树中父节点与子节点之间的表达方式,包括:
25.将具有同一类语义信息名称的节点存储在一个kv数据库中;
26.基于父节点与子节点之间的关联,得到任一kv数据库中各版本的key值。
27.进一步地,所述查询非结构化数据的语义信息时,基于查询过滤条件对所述语义信息版本树进行检索,得到语义信息的查询结果,包括:
28.找到符合该过滤条件的语义信息的版本,获取该版本的语义信息实际内容;
29.根据该版本的key值与所述待查询层级,得到父节点和/或子节点的版本;
30.获取父节点和/或子节点的版本的语义信息实际内容;
31.综合获取的语义信息实际内容,得到语义信息的查询结果。
32.进一步地,在所述语义信息版本树中删除一版本的语义信息,包括:
33.将该版本及其全部子版本的相应节点从所述语义信息树中删除;
34.或,
35.将该版本的相应节点从所述语义信息树中删除,且将该版本的直接子节点的父节
点设置为该版本的相应节点的父节点。
36.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述面向多版本非结构化数据语义信息的查询方法。
37.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行上述面向多版本非结构化数据语义信息的查询方法。
38.与现有技术相比,本发明提出的方法具有以下优点及效果:
39.针对现有技术不支持对非结构化数据语义信息的版本化管理的问题,本发明根据语义信息的版本关系,将其组织成“语义信息版本树”,使语义信息之间的版本关系得以保留,用户可以根据版本之间的父子关系快速检索。在此基础上提出了一种语义信息版本树的存储和索引方法,并给出了基于本地文件系统和kv存储的两种实现,这提升了语义信息版本树的存储和检索效率。
附图说明
40.图1本发明的方法流程图。
41.图2非结构化数据语义信息版本树的示意图。
具体实施方式
42.下面将结合附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明特定实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
43.本发明为更好地对语义信息版本间关系进行管理,对该关系进行如下定义:
44.定义非结构化数据的版本:对于一个非结构化数据对象,每次对其内容的更新,都会产生一个新的版本。
45.定义语义信息:非结构化数据中包含的,可被人类理解的信息,称之为语义信息。
46.定义非结构化数据版本之间的关系:对于一个非结构化数据对象,基于某一版本a修改得到版本b,将a称为b的父版本,b称为a的子版本。如图2所示,v-b2是在v-b1的基础上修改得到的,因此v-b1是v-b2的父版本,v-b2是v-b1的子版本。
47.定义非结构化数据语义信息的版本:本发明使用人工智能模型抽取非结构化数据中的语义信息。人工智能模型的版本与语义信息的版本一一对应。
48.定义非结构化数据语义信息版本之间的关系:对于一个非结构化数据对象的某一个语义信息,基于版本为v-m1的模型抽取得到的语义信息的版本号记作v-sp1;在v-m1的基础上对模型进行修改,得到v-m2版本的模型;基于v-m2抽取得到的语义信息的版本号记作v
‑ꢀ
sp2。此时称v-sp1为v-sp2的父版本,v-sp2为v-sp1的子版本。
49.为了维护语义信息版本之间的关系,本发明基于上述定义的关系,提出了一种面向多版本非结构化数据语义信息的查询方法,通过构建“语义信息版本树”,完成多版本非结构化数据语义信息的查询。
50.如图1所示,所述方法包括:
51.步骤1:获取各版本的非结构化数据。
52.步骤2:针对每一版本的非结构化数据,基于提取语义信息使用的人工智能模型,获取所述语义信息的版本;基于各人工智能模型之间的修改关系,构建并保存非结构化数据的语义信息版本树;其中,所述语义信息版本树中的每一节点表示一版本的语义信息。
53.通过将语义信息的所有版本视为树结构,构建一种“语义信息版本树”。语义信息版本之间的父子关系被一对一地映射为树中的父子关系。则语义信息的任何一个版本均可对应于树中的一个节点。具体为:
54.1)对于某一个版本的语义信息,查找其子版本的操作,转化为在语义信息版本树上查找该版本所对应的节点的所有子节点。其返回值为语义信息版本树中的一棵子树。
55.2)对于某一个版本的语义信息,查找其父版本的操作,转化为在语义信息版本树上查找该版本所对应的节点到根节点的路径上所经过的所有节点。其返回值为语义信息版本树中的一条路径。
56.3)对于某一个版本的语义信息的删除操作,支持两类删除操作,一种是强制删除,一种是合并删除。强制删除某个版本的语义信息时,将该版本及其全部子版本从语义信息树中删除。合并删除某个版本的语义信息时,将该版本从语义信息树中删除,并将该版本的直接子节点的父节点,全部设置为该版本的父节点。
57.4)更新语义信息版本时,新增的版本被视为语义信息版本树上的一个叶子节点。
58.一示例中,假设初始时系统仅有左边的非结构化数据版本树,如图2所示,没有右边的语义信息版本树。本例解释用户怎样的操作会得到图2中的非结构化数据语义信息版本树。
59.1)首先用户指定一个版本号为v-m1的人工智能模型,用于抽取face信息。用v-m1处理版本号为v-b4的二进制大对象(binary large object,blob),得到版本号为v-sp1的face 信息。
60.2)在v-m1的基础上,升级人工智能模型,新的人工智能模型为v-m2。用v-m2处理版本号为v-b4的blob,得到版本号为v-sp2的face信息。因为v-m2的父版本是v-m1,所以v
‑ꢀ
sp2的父版本是v-sp1.
61.3)同理,v-sp3的父版本也是v-sp1.
62.4)在v-m3的基础上,升级人工智能模型,新的人工智能模型为v-m4。用v-m4处理版本号为v-b4的blob,得到版本号为v-sp4的face信息。因为v-m4的父版本是v-m3,所以v
‑ꢀ
sp4的父版本是v-sp3。
63.5)同理,v-sp5的父版本是v-sp1.
64.6)根据上述步骤,可以得到图2中的非结构化数据语义信息(face)的版本树。
65.这样设计的目的是保证非结构化数据语义信息版本之间的关系与这些版本的创建时间无关,仅与抽取该版本语义信息的ai模型与其父模型之间的关系有关。
66.步骤3:依据所述语义信息版本树的存储方式,建立所述语义信息版本树中父节点与子节点之间的表达方式。
67.本发明提出了一种语义信息版本树的存储和索引方法,用于实现对语义信息版本树的存储和高效查询。本发明对语义信息版本树的存储和索引提供两种方法,分别为native法和kv 法,对内容分别阐述如下:
68.方法1:navive法。
69.1)基于硬盘存储语义信息版本树。
70.2)在互为父子关系的两个版本间,使用“三向指针”保存关联。指针的作用在于在磁盘上快速找到指针指向的数据。
71.3)“三向指针”的数据结构为:prev*/version-content*/next-file*。其中prev*指向该语义信息版本的父版本的“三向指针”,version-content*指向该版本的语义信息的实际内容,next-file*指向一个文件,该文件中保存着指向当前版本的所有子节点的指针。
72.4)三向指针中的三个部分,即prev*、version-content*、next-file*,均为定长,且长度为16个字节(byte)。
73.5)语义信息的实际内容被存储在磁盘的文件中,这些文件被统一称为content file。在 content file中,每一条信息的实际存在格式为: blobid/blobversionnum/semname/semcontent/pointer*。其中blobid和blobversionnum分别指该条语义信息对应的非结构化数据对象的id和版本号;semname指该语义信息的名称,如:face,platenum;semcontent指该语义信息的实际内容。pointer*为指向该语义信息的“三向指针”的指针。
74.一示例中,使用native法存储和管理图2中版本树的方法:
75.1)针对v-sp1构建“三向指针”,该三向指针中,prev*的值为null,因为v-sp1是版本树的根节点,它没有父节点。version-content*的值取决于$v-sp1的大小,若$v-sp1小于16 个字节,则version-content*的值即为$v-sp1;若$v-sp1大于16个字节,则version
‑ꢀ
content*的值为一个指向保存着$v-sp1真实值的文件的指针。
76.2)对于1)中的“三向指针”,即v-sp1的三向指针,其next-file*的值为一个指向文件的指针,这个文件中保存着所有指向v-sp1子节点的指针,即v-sp2,v-sp3,v-sp5的“三向指针”。
77.3)对于图中的v-sp3,它的“三向指针”中,prev*的值为指向v-sp1的三向指针的指针。它的version-content*的值为$v-sp3的值,或指向该值的指针。它的next-file*的值为指向v-sp4的“三向指针”的指针。
78.4)其余节点的指针维护情况同理。
79.方法2:kv法。
80.1)基于key-value数据库存储语义信息版本树。
81.2)将具有同一类语义信息名称的语义信息存储在一个kv数据库中,如所有的face信息存储在一个库中,所有的platenum数据存储在另一个库中。
82.3)在一个kv数据库中,数据按key-value的形式组织,该kv数据库的名称对应为语义信息的名称。在该数据库中,key的值为:vercode。其意义为该版本号的哈夫曼编码(公知技术)。value的值为blobid/blobversionnum/semcontent,其中blobid和blobversionnum 分别指该条语义信息对应的非结构化数据对象的id和版本号;semcontent指该语义信息的实际内容。
83.一示例中,使用kv法存储和管理图2中版本树的方法:
84.假设版本号为v-b4的blob的id为id(v-b4),则使用kv法存储和管理图2中版本树的方法如表1所示,图中每行数据对应一个版本的语义信息(表头除外)。从上到下依次为v-sp1,v
‑ꢀ
sp2,v-sp3,v-sp5,v-sp4。
85.keyvalue
0id(v-b4)/vb4/$v-sp10-00id(v-b4)/vb4/$v-sp20-01id(v-b4)/vb4/$v-sp30-10id(v-b4)/vb4/$v-sp50-01-0id(v-b4)/vb4/$v-sp4
86.表1
87.步骤4:查询非结构化数据的语义信息时,基于查询过滤条件与所述表达方式,对所述语义信息版本树进行检索,得到语义信息的查询结果。
88.方法1:navive法。
89.在navive法中,用户进行与语义信息版本相关的查询时,首先需要提供过滤条件,过滤条件中可能包括blobid/blobversionnum/semname/semcontent中的一个或几个。然后查询与该版本信息相关的版本信息,如其父版本或子版本的内容。系统在接收到这样的请求后,首先遍历content file,找到符合过滤条件的语义信息的版本,然后根据pointer*的值找到该条语义信息的“三向指针”,然后根据“三向指针”的值递归地查找相关版本的信息,直至“三向指针”中prev*或next-file*的值为null。
90.一示例中,在以native方法管理的版本化语义信息中进行查询的示例。
91.假设用户需要查找值为$v-spx所对应的版本的所有子版本:
92.1)系统首先过滤系统中每个“三向指针”所指向的文件,从中找出值为$v-spx的语义信息的版本,假设该版本为v-sp1.
93.2)找到v-sp1的“三向指针”,从中取出next-file*的值,并据此找到next-file*所指向的文件,从中取出所有的“三向指针”。
94.3)在2)中取出了三个“三向指针”,分别是v-sp2,v-sp3,v-sp5的“三向指针”。先将v
‑ꢀ
sp2,v-sp3,v-sp5加入到结果列表中。
95.4)递归地按照2)中的方法,分别处理v-sp2,v-sp3,v-sp5的“三向指针”,直至所有新找到的“三向指针”的next-file*的值均为null。在此过程中找到v-sp4,将v-sp4加入到结果列表中。
96.5)返回结果。
97.方法2:kv法。
98.在kv法中,用户进行与语义信息版本相关的查询时,首先需要提供过滤条件,过滤条件中可能包括blobid/blobversionnum/semname/semcontent中的一个或几个。然后查询与该版本信息相关的版本信息,如其父版本或子版本的内容。系统在接收到这样的请求后,首先根据过滤条件,找到符合该过滤条件的语义信息的版本,然后根据该版本的vercode,找到其他相关版本的语义信息。
99.以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献