CN111506608B - 一种结构化文本的比较方法和装置 - Google Patents
一种结构化文本的比较方法和装置 Download PDFInfo
- Publication number
- CN111506608B CN111506608B CN202010300523.3A CN202010300523A CN111506608B CN 111506608 B CN111506608 B CN 111506608B CN 202010300523 A CN202010300523 A CN 202010300523A CN 111506608 B CN111506608 B CN 111506608B
- Authority
- CN
- China
- Prior art keywords
- key
- key value
- list
- value pair
- current
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种结构化文本的比较方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:分别获取第一结构化文本和第二结构化文本的键值对,判断键值对的键值的数据类型;如果键值的数据类型为对象,则将归属于第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于第二结构化文本的键值作为第二对象存储到第二对象列表;分别计算第一对象列表中至少一个第一对象与第二对象列表中至少一个第二对象的匹配度,以根据匹配度,为至少一个第一对象分别确定第一目标匹配组合;将第一目标匹配组合中第一对象所包括的键值对与第二对象所包括的键值对进行比较,得到对象比较结果。该方法能够准确评估两份结构化文本的匹配情况。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种结构化文本的比较方法和装置。
背景技术
结构化文本一般由键名(Key)和键值(Value)组成,能够表达结构化信息(即Key-Value对组成的信息),这种文本既易于人阅读和编写,也易于机器的生成和解析。典型的结构化文本是JSON(JavaScript Object Notation,JS对象简谱)格式文本和XML(ExtensibleMarkup Language,可扩展标记语言)格式文本。其中,JSON是一种轻量级的数据交换格式,其键值对的键值包含的数据类型有:数字、字符串、布尔类型、对象、数组、空。
在保险、银行业的很多场合中,经常需要比较两份结构化文本内容的一致性,例如各种单据、票据的双录工作中,需要比较录入的两份文本内容,以校验录入结果。现有技术中在比较两份结构化文本时,通常以Key为索引,查找到对应的Value后进行对比。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
对于对象和数组来说,由于两份结构化文本中的元素顺序和元素个数可能不同,使用传统的数组顺序比较方法,会存在错序比较,以及找到的匹配组合并非最佳匹配组合的问题。
发明内容
有鉴于此,本发明实施例提供一种结构化文本的比较方法和装置,对于第一结构化文本的每个对象,分别计算其与第二结构化文本的每个对象之间的匹配度,根据匹配度确定第一目标匹配组合,进而将第一目标匹配组合中的两个对象进行进一步比较,使得本申请在对象元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度。
为实现上述目的,根据本发明实施例的一个方面,提供了一种结构化文本的比较方法。
本发明实施例的一种结构化文本的比较方法,包括:分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型;如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表;分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合;将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。
可选地,所述第一对象和所述第二对象的匹配度为:所述第一对象所包括的至少一个键值对与所述第二对象所包括的至少一个键值对之间的匹配分值之和;所述第一对象的当前键值对与所述第二对象所包括的至少一个的键值对之间的匹配分值的计算方式如下:以所述当前键值对的键名为索引,在所述第二对象中进行查询;如果所述第二对象中不存在与所述键名相同的键名,或者所述第二对象中存在与所述键名相同的键名,但对应的两个键值的数据类型不同,则所述匹配分值为第一标识;如果所述第二对象中存在与所述键名相同的键名,且对应的两个键值的数据类型相同,则所述两个键值相等时,所述匹配分值为第二标识;所述两个键值不相等时,根据所述数据类型确定所述匹配分值。
可选地,根据所述数据类型确定所述匹配分值,包括:如果所述两个键值的数据类型均为数字或者布尔类型,则所述匹配分值为所述第一标识;如果所述两个键值的数据类型均为字符串类型,则所述匹配分值为所述两个键值的相似度。
可选地,根据所述匹配度,为当前第一对象确定第一目标匹配组合,包括:判断当前第一对象与所述第二对象列表的至少一个所述第二对象的最大匹配度是否满足设定条件;如果所述最大匹配度满足所述设定条件,则判断使得当前第二对象与至少一个所述第一对象的匹配度最大的第一对象是否为所述当前第一对象;其中,所述当前第二对象为所述最大匹配度对应的第二对象;如果使得当前第二对象与至少一个所述第一对象的匹配度最大的第一对象是所述当前第一对象,且最大匹配度满足所述设定条件,则所述当前第一对象与所述当前第二对象构成第一目标匹配组合。
可选地,将所述第一目标匹配组合中所述第一对象所包括的当前键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果,包括:如果所述第二对象中不存在与当前键值对的键名相同的键名,则记录所述当前键值对与所述第二结构化文本不匹配的比较结果;如果所述第二对象中存在与所述当前键值对的键名相同的键名,但相同键名对应键值与所述当前键值对的键值的数据类型不同,或者数据类型均为数字或者布尔类型,取值不同,则记录所述当前键值对与所述第二结构化文本的键名匹配,键值不匹配的比较结果;如果所述第二对象中存在与所述当前键值对的键名相同的键名,且相同键名对应键值与所述当前键值对的键值的数据类型相同,取值相同,则记录所述当前键值对与所述第二结构化文本的完全匹配的比较结果;如果所述第二对象中存在与所述当前键值对的键名相同的键名,且相同键名对应键值与所述当前键值对的键值的数据类型均为字符串,但取值不相等,则计算两个键值的相似度,记录所述当前键值对与所述第二结构化文本的键名匹配,键值部分匹配的比较结果。
可选地,所述方法还包括:如果所述键值的数据类型为目标类型,则将归属于所述第一结构化文本的键值对存储到第一键值对列表,将归属于所述第二结构化文本的键值对存储到第二键值对列表;其中,所述目标类型为除所述对象和数组之外的数据类型;将所述第一键值对列表的至少一个所述键值对与所述第二键值对列表的至少一个键值对分别进行比较,得到键值对比较结果。
可选地,所述方法还包括:如果所述键值的数据类型为数组,则将归属于所述第一结构化文本的数组中的键值对存储到第三键值对列表,数组中的对象存储到第三对象列表,将归属于所述第二结构化文本的数组中的键值对存储到第四键值对列表,数组中的对象存储到第四对象列表;将所述第三键值对列表的至少一个所述键值对与所述第四键值对列表的至少一个键值对分别进行比较,得到数组中键值对的比较结果;分别计算所述第三对象列表中至少一个所述对象与所述第四对象列表中至少一个所述对象的匹配度,以根据所述匹配度,为所述第三对象列表中至少一个所述对象分别确定第二目标匹配组合;将所述第二目标匹配组合中两个对象所包括的键值对依次进行比较,得到数组中对象的比较结果。
为实现上述目的,根据本发明实施例的另一方面,提供了一种结构化文本的比较装置。
本发明实施例的一种结构化文本的比较装置,包括:判断模块,用于分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型;存储模块,用于如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表;确定模块,用于分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合;比较模块,用于将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。
可选地,所述第一对象和所述第二对象的匹配度为:所述第一对象所包括的至少一个键值对与所述第二对象所包括的至少一个键值对之间的匹配分值之和;所述确定模块,还用于:以所述当前键值对的键名为索引,在所述第二对象中进行查询;如果所述第二对象中不存在与所述键名相同的键名,或者所述第二对象中存在与所述键名相同的键名,但对应的两个键值的数据类型不同,则所述匹配分值为第一标识;如果所述第二对象中存在与所述键名相同的键名,且对应的两个键值的数据类型相同,则所述两个键值相等时,所述匹配分值为第二标识;所述两个键值不相等时,根据所述数据类型确定所述匹配分值。
可选地,所述确定模块,还用于:如果所述两个键值的数据类型均为数字或者布尔类型,则所述匹配分值为所述第一标识;如果所述两个键值的数据类型均为字符串类型,则所述匹配分值为所述两个键值的相似度。
可选地,所述确定模块,还用于:判断当前第一对象与所述第二对象列表的至少一个所述第二对象的最大匹配度是否满足设定条件;如果所述最大匹配度满足所述设定条件,则判断使得当前第二对象与至少一个所述第一对象的匹配度最大的第一对象是否为所述当前第一对象;其中,所述当前第二对象为所述最大匹配度对应的第二对象;如果使得当前第二对象与至少一个所述第一对象的匹配度最大的第一对象是所述当前第一对象,且最大匹配度满足所述设定条件,则所述当前第一对象与所述当前第二对象构成第一目标匹配组合。
可选地,所述比较模块,还用于:如果所述第二对象中不存在与当前键值对的键名相同的键名,则记录所述当前键值对与所述第二结构化文本不匹配的比较结果;如果所述第二对象中存在与所述当前键值对的键名相同的键名,但相同键名对应键值与所述当前键值对的键值的数据类型不同,或者数据类型均为数字或者布尔类型,取值不同,则记录所述当前键值对与所述第二结构化文本的键名匹配,键值不匹配的比较结果;如果所述第二对象中存在与所述当前键值对的键名相同的键名,且相同键名对应键值与所述当前键值对的键值的数据类型相同,取值相同,则记录所述当前键值对与所述第二结构化文本的完全匹配的比较结果;如果所述第二对象中存在与所述当前键值对的键名相同的键名,且相同键名对应键值与所述当前键值对的键值的数据类型均为字符串,但取值不相等,则计算两个键值的相似度,记录所述当前键值对与所述第二结构化文本的键名匹配,键值部分匹配的比较结果。
可选地,所述装置还包括:键值对比较模块,用于如果所述键值的数据类型为目标类型,则将归属于所述第一结构化文本的键值对存储到第一键值对列表,将归属于所述第二结构化文本的键值对存储到第二键值对列表;其中,所述目标类型为除所述对象和数组之外的数据类型;将所述第一键值对列表的至少一个所述键值对与所述第二键值对列表的至少一个键值对分别进行比较,得到键值对比较结果。
可选地,所述装置还包括:数组比较模块,用于如果所述键值的数据类型为数组,则将归属于所述第一结构化文本的数组中的键值对存储到第三键值对列表,数组中的对象存储到第三对象列表,将归属于所述第二结构化文本的数组中的键值对存储到第四键值对列表,数组中的对象存储到第四对象列表;将所述第三键值对列表的至少一个所述键值对与所述第四键值对列表的至少一个键值对分别进行比较,得到数组中键值对的比较结果;分别计算所述第三对象列表中至少一个所述对象与所述第四对象列表中至少一个所述对象的匹配度,以根据所述匹配度,为所述第三对象列表中至少一个所述对象分别确定第二目标匹配组合;将所述第二目标匹配组合中两个对象所包括的键值对依次进行比较,得到数组中对象的比较结果。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种结构化文本的比较方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种结构化文本的比较方法。
上述发明中的一个实施例具有如下优点或有益效果:对于第一结构化文本的每个对象,分别计算其与第二结构化文本的每个对象之间的匹配度,根据匹配度确定第一目标匹配组合,进而将第一目标匹配组合中的两个对象进行进一步比较,使得本申请在对象元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度;基于键值的数据类型确定对应的匹配分值,便于评估两份结构化文本的对象之间的匹配程度;将两份结构化文本中满足匹配条件的对象筛选出来,构成第一目标匹配组合,能够在两份顺序不同、数量不同的结构化文本中自动查找最优对象进行匹配,提高后续比较的准确性。
上述发明中的一个实施例具有如下优点或有益效果:根据两份结构化文本中第一目标匹配组合中两个对象的键值对依次进行比较,能够准确评估两份结构化文本不匹配、部分匹配、完全匹配的情况;将目标类型的键值对存储到键值对列表,便于统计每个键值对的匹配情况;将数组中的键值对、对象分别存储到数组下的键值对列表和对象列表,使得本申请在数组元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例一的结构化文本的比较方法的主要步骤的示意图;
图2是根据本发明实施例二的结构化文本的比较方法的主要流程示意图;
图3是本发明实施例的结构化文本的比较方法中获取并解析两份结构化文本的主要流程示意图;
图4是本发明实施例的结构化文本的比较方法中比较第一至第二键值对列表中键值对的主要流程示意图;
图5是本发明实施例的结构化文本的比较方法中比较第一至第二对象列表中Object的主要流程示意图;
图6是本发明实施例三的结构化文本的比较方法的主要流程示意图;
图7是根据本发明实施例的结构化文本的比较装置的主要模块的示意图;
图8是本发明实施例可以应用于其中的示例性系统架构图;
图9是适用于来实现本发明实施例的电子设备的计算机装置的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例的结构化文本包括结构化数据交换文本,该文本指一种特殊格式的、用于存储和交换信息的数据交换格式文本。JSON格式文本是典型的结构化数据交换文本,所有的数据由逗号分隔,其使用以下几种格式和类型来表示数据:
(1)JSON键值对(Key-Value pairs):Key-Value对用于保存JSON对象。Key-Value对中的键名写在前面,并用半角双引号""括起,然后使用半角冒号:分隔,后面跟一个值。例如"name":"XX"。
(2)对象(Object):使用花括号括起来的一个或多个Key-Value对,例如:
"XX":
{
"name":"XX",
"age":16,
"number":"123456789"
};
(3)数组(Array):使用方括号括起来的一个或多个Key-Value对或者Object,例如:
在比较两份结构化文本时,对于两个Key-Value对来说,如果Key匹配的同时Value也完全匹配,那么这两个Key-Value对是匹配的。对于两个Object来说,如果它其中的每一个元素(例如Key-Value对)都能够匹配,那么认为这两个Object能够完全匹配;如果只有部分元素能够匹配,那么认为这两个Object部分匹配。对于两个Array来说,如果它其中的每一个元素(例如Key-Value对或者Object)都能够匹配,那么认为这两个Array能够完全匹配;如果只有部分元素能够匹配,那么认为这两个Array部分匹配。
现有技术在比较两份结构化文本时,一般通过以下方式:
(1)将两个待比较的结构化文本分别作为文本1和文本2,读取文本1和文本2的内容并解析;
(2)读取文本1中的当前Key和Value,将该Key作为Key1并使用其为关键字,查找文本2中是否存在该Key,如果存在,则将文本2的该Key作为Key2,读取文本2中Key2对应的Value;然后比较Key1的Value和Key2的Value是否相等,如果相等,则认为两个Key-Value对匹配,否则认为不匹配;
(3)将文本1的下一个Key作为当前Key,重复步骤(2),直至文本1中所有Key全部被遍历。
上述比较方式,对于某个Value是Object类型的元素来说,Object内部包含有多个Key-Value对。由于生成它们的程序可能不同(例如,比较两个图像文字结构化识别引擎对于发票信息的结构化识别结果时),Object元素的Key可能不同,但内容相似,因此期望将这两个Object进行比较。使用现有技术通过Key进行索引,将无法完成Key不同的两个Object的比较任务。
对于某个Value是Array类型的元素来说,Array中可以包含有多个Object。由于数组中的Object没有Key,因此无法使用Key进行查询。现有技术中主要依靠各个Object在数组中出现的顺序进行比较,例如,Array1中的第1个Object与Array2中的第1个Object进行比较,Array1中的第2个Object与Array2中的第2个Object进行比较,……,依此类推。由于生成它们的程序可能不同,因此两个Array中期望比较的Object的顺序和个数也可能不同,现有技术无法完成Object的顺序和个数不同的Array类型数据比较。
另外,待比较的结构化文本中,有时会包含错误(例如使用一个图像文字结构化识别引擎自动对发票信息进行结构化识别时,发票代码、校验码、购买方等等信息会出现错误)。现有技术中在比较两份结构化文本时,并未考虑Value中的容错,导致比较结果的准确性低、鲁棒性差,不适应用于Array和Object元素部分匹配的场景。
基于现有技术的上述缺陷,在本发明实施例中提供了一种结构化文本比较方法,具有快速、通用性、可扩展性和鲁棒性好的特点,能够用于常见的结构化文本格式,包括JSON和XML。能够用于Array和Object元素存在错序、个数不同的场景,能够用于Array和Object元素部分匹配的场景,从而达到快速地、最优化模糊比较的目的,并能够给出用于评估两份结构化数据交换文本是否匹配、以及匹配程度的匹配分值。
图1是根据本发明实施例一的结构化文本的比较方法的主要步骤的示意图。如图1所示,本发明实施例一的结构化文本的比较方法,主要包括如下步骤:
步骤S101:分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型。读取并解析第一结构化文本和第二结构化文本的每一个键值对,该键值对包括键名和键值。键值的数据类型有:数字、字符串、布尔类型、数组、对象、空(null),数字包括整数、浮点数,布尔类型的取值为true(正确)或false(错误),数组设置在方括号中,对象设置待花括号中。根据每种数据类型的特点,判断解析出的每个键值的数据类型。
步骤S102:如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表。如果键值的数据类型为对象,则将归属于第一结构化文本的全部键值作为第一对象存储到第一对象列表;将将归属于第二结构化文本的全部键值作为第二对象存储到第二对象列表。经过该步骤处理,无论第一结构化文本和第二结构化文本中包含多少对象,都会被统一存储到对应的第一对象列表和第二对象列表。
步骤S103:分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合。计算当前第一对象所包括的至少一个键值对与当前第二对象所包括的至少一个键值对之间的匹配分值之和,将和值作为当前第一对象与当前第二对象之间的匹配度。按照上述方式即可计算出第一对象列表中每个第一对象与第二对象列表中每个第二对象之间的匹配度。根据匹配度和设定条件,将满足匹配条件的第一对象和第二对象提取出来,构成第一目标匹配组合。
步骤S104:将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。将第一目标匹配组合中的第一对象所包括的每个键值对与第二对象所包括的全部键值对依次进行比较。在比较过程中,可以以第一对象的当前键值对的键名为索引,查找第二对象中是否存在该键名,如果存在,则根据相同键名对应的两个键值的数据类型是否相同、取值是否相同,来确定当前键值对与第二结构化文本的比较结果;如果不存在,则说明当前键值对与第二结构化文本不匹配。
图2是根据本发明实施例二的结构化文本的比较方法的主要流程示意图。如图2所示,本发明实施例二的结构化文本的比较方法,主要包括如下步骤:
步骤S201:获取并解析第一结构化文本和第二结构化文本,以按照键值的数据类型,将第一结构化文本和第二结构化文本的键值对分别对应存储到第一至第四键值对列表和第一至第四对象列表。该步骤用于读取两份结构化文本,并解析两份结构化文本的内容。解析的作用是将结构化文本中的结构化信息转换为计算机语言类型表示的结构化信息,以方便处理。
其中,第一键值对列表用于存储第一结构化文本的键值类型为目标类型的键值对;第二键值对列表用于存储第二结构化文本的键值类型为目标类型的键值对;第三键值对列表用于在第一结构化文本的键值类型为数组时,存储数组中包含的键值对;第四键值对列表用于在第二结构化文本的键值类型为数组时,存储数组中包含的键值对。其中,目标类型即除对象和数组之外的数据类型。
第一对象列表用于存储第一结构化文本的键值类型为对象的键值对;第二对象列表用于存储第二结构化文本的键值类型为对象的键值对;第三对象列表用于在第一结构化文本的键值类型为数组时,存储数组中包含的对象;第四对象列表用于在第二结构化文本的键值类型为数组时,存储数组中包含的对象。
由于结构化文本的生成源可能各不相同,例如有的是人工标注数据,有的是计算机程序生成的,因此同一个值有时会以不同的数据类型存储在结构化文本中。例如对于数字来说,有的结构化文本以浮点数表示,有的结构化文本将其放在引号中以字符串形式表示。因此在比较时可以结合数据类型和取值的相似度评估两份结构化文本。该步骤的具体实现见关于图3的描述。
经过该步骤的处理,无论两份结构化文本中包含有多少个Object和Array,它们都会被统一存储到第一至第二对象列表、Array下的第三至第四键值对列表和Array下的第三至第四对象列表中。同时所有的普通Key-Value对也存储到了第一至第二键值对列表中。如果上述解析过程发生错误,则可以认为结构化文本中包含错误的JSON格式,停止解析操作,报告异常。
步骤S202:将第一键值对列表中的每个键值对与第二键值对列表的键值对分别进行比较,得到第一比较结果。在解析的过程中,已经将第一结构化文本和第二结构化文本的所有的普通Key-Value对分别存储到了对应的键值对列表中。为了便于描述,实施例中将第一键值对列表简称为列表1,将第二键值对列表简称为列表2。
在比较的过程中,首先从列表1中取出第一个Key-Value对,读取其Key、Value的数据类型和取值,实施例中将其称为Key1和Value1。然后使用Key1作为索引,在列表2中进行查询,判断是否存在Key1。如果不存在Key1,则认为Key1-Value1在第二结构化文本中不存在匹配。如果存在Key1,则读取其具体内容,实施例中将其称为Key2和Value2,之后对比Value1和Value2是否匹配。
至此Key1-Value1、Key2-Value2已经完成了比较。接下来从列表1中取出第二个Key-Value对,并依据该Key查找列表2中对应的Key-Value对,继续进行比较。循环上述过程,直至列表1中的所有Key-Value对完成了比较,同时将列表2中所有未比较过的Key-Value对进行标记。列表2中未比较过的Key-Value对相对于列表1来说,是多出来的Key-Value对。该步骤的具体实现见关于图4的描述。
步骤S203:将第一对象列表中的每个对象分别与第二对象列表的对象进行比较,得到第二比较结果。在解析的过程中,已经将第一结构化文本和第二结构化文本中所有的Object分别存储到了对应的对象列表中。为了便于描述,实施例中将第一对象列表简称为列表3,将第二对象列表简称为列表4。
在比较的过程中,首先计算列表3中每个Object与列表4中每个Object的匹配度;之后基于匹配度,在列表4中为列表3的每个Object分别寻找第一目标匹配组合,并在每次比较之后,将列表3和列表4中已经比较过的Object标记为已访问。当列表3中所有的Object都完成了第一目标匹配组合的寻找,则将列表4中所有未访问过的Object进行标记。列表4中未访问过的Object相对于列表3来说,是多出来的Object。该步骤的具体实现见关于图5的描述。
步骤S204:将第三键值对列表中的每个键值对分别与第四键值对列表的键值对进行比较,得到第三比较结果。在解析的过程中,已经将第一结构化文本和第二结构化文本中所有Array下的Key-Value对分别存储到了对应的键值对列表中。为了便于描述,实施例中将第三键值对列表简称为列表5,将第四键值对列表简称为列表6。使用与步骤S202相同的方式,比较列表5和列表6的每个Key-Value对,即可得到数组中键值对的比较结果,即第三比较结果。
步骤S205:将第三对象列表中的每个对象分别与第四对象列表的对象进行比较,得到第四比较结果。在解析的过程中,已经将第一结构化文本和第二结构化文本中所有Array下的Object分别存储到了对应的对象列表中。为了便于描述,实施例中将第三对象列表简称为列表7,将第四对象列表简称为列表8。使用与步骤S203相同的方式,比较列表7和列表8的每个Object,即可得到数组中对象的比较结果,即第四比较结果。相应的,在列表8中为列表7每个对象分别寻找第二目标匹配组合。
步骤S206:输出第一至第四比较结果。在两份结构化文本完成Key-Value对比较、Object比较和Array比较之后,输出比较结果。第一比较结果即键值对比较结果,第二比较结果即对象比较结果,第三比较结果和第四比较结果构成数组比较结果。比较结果可以包含如下内容:
(1)第一结构化文本和第二结构化文本中包含的所有Key-Value对、Object和Array元素个数;
(2)第一结构化文本和第二结构化文本中完全相同(即匹配)的Key-Value对、Object和Array元素个数,以及Object和Array元素中Key能够匹配,但Value不能匹配的元素个数;
(3)第一结构化文本和第二结构化文本中不完全相同,但满足设定条件进行比较的Object和Array元素比较情况;
(4)第一结构化文本中未找到符合匹配条件的Key-Value对和Object、Array元素,以及第二结构化文本中多余的Key-Value对和Object、Array元素;
(5)其他比较过程中生成的信息、结论。
上述处理过程中为Object、Array的对象寻找目标匹配组合,能够在两份顺序、数量不同的结构化文本中自动查找最优的匹配组合进行一一匹配,以进行后续比较。同时,能够计算两个字符串类型、数字、布尔类型的Value的匹配分值,并且能够扩展到两个Object、Array的匹配度计算。
图3是本发明实施例的结构化文本的比较方法中获取并解析两份结构化文本的主要流程示意图。如图3所示,本发明实施例的获取并解析两份结构化文本(即步骤S201)的实现过程,主要包括如下步骤:
步骤S301:分别获取第一结构化文本和第二结构化文本的键值对。读取两份结构化文本的每一个Key-Value对。
步骤S302:判断键值的数据类型,如果为目标类型,则执行步骤S303;如果为对象类型,则执行步骤S304;如果为数组类型,则执行步骤S305。
步骤S303:将归属于第一结构化文本的键值对存储到第一键值对列表,将归属于第二结构化文本的键值对存储到第二键值对列表,结束本流程。如果Value类型为数字或者布尔类型,则直接将Key-Value对存储到对应的键值对列表。如果Value类型为字符串类型,且字符串为数字,则将字符串转换为数字后,以Key-Value对存储到对应的键值对列表。如果Value类型为字符串类型,且字符串为非数字,则以字符串形式的Key-Value对存储到对应的键值对列表。
第一结构化文本的键值对存储到第一键值对列表,即列表1。第二结构化文本的键值对存储到第二键值对列表,即列表2。
步骤S304:将归属于第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于第二结构化文本的键值作为第二对象存储到第二对象列表,结束本流程。第一结构化文本的全部对象存储到第一对象列表,即列表3。第二结构化文本的全部对象存储到第二对象列表,即列表4。
步骤S305:遍历数组中的元素,将归属于第一结构化文本的数组中的键值对存储到第三键值对列表,数组中的对象存储到第三对象列表,将归属于第二结构化文本的数组中的键值对存储到第四键值对列表,数组中的对象存储到第四对象列表,结束本流程。第一结构化文本的数组中的键值对存储到第三键值对列表,即列表5;数组中的对象存储到第三对象列表,即列表7。第二结构化文本的数组中的键值对存储到第四键值对列表,即列表6;数组中的对象存储到第四对象列表,即列表8。
图4是本发明实施例的结构化文本的比较方法中比较第一至第二键值对列表中键值对的主要流程示意图。如图4所示,本发明实施例的比较第一至第二键值对列表中键值对(即步骤S202)的实现过程,主要包括如下步骤:
步骤S401:获取第一键值对列表中的当前键值对,以当前键值对的键名为索引,在第二键值对列表中进行查询。当前键值对的初始值为列表1的第一个键值对。即从列表1中取出第一个Key-Value对,称为Key1和Value1;之后以Key1为索引在列表2中进行查询。
步骤S402:判断第二键值对列表中是否存在当前键值对的键名,如果存在,则执行步骤S403;如果不存在,则执行步骤S407。仍旧以当前键值对为Key1-Value1为例,此处即判断列表2中是否存在Key1。如果列表2中存在Key1,则读取其具体内容,即Key2和Value2。如果列表2中不存在Key1,则认为Key1-Value1在第二结构化文本中不存在匹配,此时匹配分值为第一标识,实施例中为0。
步骤S403:判断当前键值对的键值与第二键值对列表中与当前键值对相同键名所对应的键值的数据类型是否相同,如果相同且均为数字或者布尔类型,则执行步骤S404;如果相同且均为字符串类型,则执行步骤S405;如果不同,则执行步骤S408。仍旧以当前键值对为Key1-Value1为例,此处即判断Value1和Value2的数据类型是否相同。如果Value1和Value2的数据类型不同,则认为这两个键值对的Key匹配,Value不匹配,匹配分值为第一标识。
步骤S404:比较两者是否相等,如果相等,则执行步骤S409;如果不相等,则执行步骤S408。仍旧以当前键值对为Key1-Value1为例,如果Value1和Value2均为数字或者布尔类型,则比较两者的值是否相等,如果相等,则认为这两个键值对匹配,匹配分值为第二标识,实施例中为1.0;如果不相等,则认为这两个键值对不匹配,匹配分值为第一标识。
步骤S405:判断两个字符串是否完全相同,如果完全相同,则执行步骤S409;如果不完全相同,则执行步骤S406。仍旧以当前键值对为Key1-Value1为例,如果Value1和Value2均为字符串,则比较两个字符串是否完全相同,如果两个字符串完全相同,则认为两者完全匹配,即匹配分值为第二标识。
步骤S406:计算两个字符串的相似度,将相似度作为匹配分值,执行步骤S410。实施例中,可以使用编辑距离(Edit Distance)、余弦相似度、欧式距离等计算两个字符串的相似度。编辑距离对应的相似度的计算公式可以如下:
式中,SK为相似度,ED为两个字符串的编辑距离,L1为当前元素的键值长度,L2为第二结构化文本的第一键值对列表中与当前元素同一键名所对应的键值的长度,L1和L2均不为0。
步骤S407:记录第一结构化文本的当前键值对与第二结构化文本不匹配的比较结果,执行步骤S411。
步骤S408:记录第一结构化文本的当前键值对与第二结构化文本的键名匹配,键值不匹配的比较结果,执行步骤S411。
步骤S409:记录第一结构化文本的当前键值对与第二结构化文本的键值对完全匹配的比较结果,执行步骤S411。
步骤S410:记录第一结构化文本的当前键值对与第二结构化文本的键名匹配,键值部分匹配的比较结果,执行步骤S411。
步骤S411:判断第一键值对列表中是否存在下一键值对,如果存在下一键值对,则执行步骤S412;如果不存在下一元素,则执行步骤S413。
步骤S412:将下一键值对作为当前键值对,执行步骤S402。循环步骤S402-步骤S412,直至列表1中的所有Key-Value对均完成比较。
步骤S413:将第二结构化文本中未比较过的键值对进行标记,执行步骤S203。
图5是本发明实施例的结构化文本的比较方法中比较第一至第二对象列表中Object的主要流程示意图。如图5所示,本发明实施例的比较第一至第二对象列表中Object(即步骤S203)的实现过程,主要包括如下步骤:
步骤S501:计算第一对象列表中的每个对象与第二对象列表中的每个对象的匹配度。两个Object的匹配度的计算公式为:
式中,SO为第一对象列表中第i个对象与第二对象列表中目标对象的匹配度。
由上式可知,两个Object的匹配度是Object中每个Key-Value对的匹配分值之和。多余或缺少的Key-Value对的匹配分值为0,对整体匹配度并无影响。因此,对于列表3的每个Object来说,都会存在其与列表4中的每一个Object的匹配度。
对于列表3的第i个对象Object(i)来说,在列表4中存在一个Object(j),使得其是列表4的所有Object中匹配度最大,同时该匹配度满足设定条件。同时,对于列表4的第j个对象Object(j)来说,在列表3中存在一个Object(k),使得其是列表3的所有Object中匹配度最大,同时该匹配度满足设定条件。此处的设定条件可以自定义设置,比如为0.6*Object元素个数。
步骤S502:根据匹配度,在第二对象列表中为第一对象列表中的当前对象寻找第一目标匹配组合。对于列表3的Object(i)来说,如果列表4的Object(j)是其目标匹配结果,并且对于列表4的Object(j)来说,列表3的Object(i)也是其目标匹配结果,则认为列表3的Object(i)与列表4的Object(j)满足匹配条件,构成第一目标匹配组合(即k=i)。
步骤S503:按照步骤S202中键值对的比较方式,比较第一目标匹配组合的每个键值对。如果当前对象Object(i)存在第一目标匹配组合Object(j),那么将Object(i)和Object(j)的每个键值对,按照键值对的比较方式进行比较,并输出比较结果。
步骤S504:将第一对象列表和第二对象列表中已经比较过的对象标记为已访问。
步骤S505:判断第一对象列表是否存在未比较过的下一对象,如果存在,则执行步骤S506;如果不存在,则执行步骤S507。
步骤S506:将下一对象作为当前对象,执行步骤S502。
步骤S507:将第二对象列表中未访问过的对象进行标记。如果列表3中不存在未比较过的下一对象,说明列表3中所有Object完成了目标匹配组合的寻找以及比较,此时将列表4中所有未访问过的Object进行标记,这些被标记的Object对列表3来说是多出来的Object。
实施例三
在保险行业中,经常需要结构化处理一些客户理赔上传的图像资料,例如住院费用明细(即住院中发生的耗材、器械、药品等明细),随着光学字符识别(Optical CharacterRecognition,OCR)技术的发展,一些OCR引擎已经具备表格的结构化识别能力,即能够以结构化方式,输出图像中的表单内容(例如:姓名:XXX,年龄:48,……)。为了评估OCR引擎的结构化识别准确度,需要比较OCR引擎输出的结构化文本,与人工标记的真实结构化文本的差异,作为评估OCR引擎性能的重要指标。
根据本发明实施例所述的技术方案,一个具体实施例是使用C++编程语言,编写一个计算机程序,执行两份结构化文本的比较过程。
例如,一张客户理赔资料的人工标注内容(label.json文件)和OCR引擎结构化输出的内容(test.json文件)分别为:
下面结合实施例三对两份结构化文本的比较过程进行进一步说明。
图6是本发明实施例三的结构化文本的比较方法的主要流程示意图。如图6所示,本发明实施例三的结构化文本的比较方法,主要包括以下步骤:
步骤S601:读取label.json文件和test.json文件中的内容并进行解析,以按照Value的数据类型,将文件中的Key-Value对存储进相应列表中。即,遍历两个文件中的所有Key-Value对,按照Value的数据类型将其存储进相应列表中。该步骤的实现原理与步骤S201相同,此处不再赘述。
在本实施例中,将label.json文件中的"图像名称"、"影像类型"、"姓名"、"年龄"、"身份证号"这几个Key及其Value作为普通Key-Value对,存储到label.json文件的第一键值对列表(即列表1)中;将test.json文件中的"图像名称"、"影像类型"、"姓名"、"年龄"、"身剾号"这几个Key及其Value作为普通Key-Value对,存储到test.json文件的第二键值对列表(即列表2)中。
将label.json文件中"诊断信息"的值作为Object,存储到label.json文件的第一对象列表(即列表3)中;将test.json文件中"诊断信息"的值作为Object,存储到test.json文件的第二对象列表(即列表4)中。
label.json文件和test.json文件的Array中只存在Object,不存在Key-Value对,故可以将label.json文件中"用药信息"下的所有Object元素存储到label.json文件的Array元素下的第三对象列表(即列表7)中;将test.json文件中"用药信息"下的所有Object元素存储到test.json文件的Array元素下的第四对象列表(即列表8)中。
在解析过程中,程序会将所有字符串类型的数值,转换为真实数值以方便后续处理。
步骤S602:比较列表1和列表2中的所有的Key-Value对,得到第一比较结果。依次访问label.json文件下的列表1中的每个Key-Value对,并使用Key作为索引,检索test.json文件下是否存在此Key,以及如果存在Key的情况下,其Value的取值是多少。
例如,遍历到"姓名"这一项的Key时,label.json文件中对应的Value为"XX",test.json文件中对应的Value为"XXX",二者不相同,因此可以得出比较结果为:label.json文件下存在"姓名"这一项Key,但是Value错误。
步骤S603:比较列表3和列表4中的所有的Object,得到第二比较结果。label.json文件和test.json下的Object为Key"诊断信息"及其花括号内的Value信息。
使用本发明实施例的方法,计算出这两个Object的匹配度为3.0,并且该匹配度超过了4*0.6=2.4。其中,4为Object下的元素个数。因此这两个Object属于目标匹配组合,依次对这两个Object下的Key-Value对进行比较。由于这两个Object的"入院病情"对应Value不相同,因此程序会报告该Key-Value对不相同。
步骤S604:比较所有的数组,得到第四比较结果。与Object的比较类似,依次比较label.json文件下的第三对象列表和test.json文件中Array下的第四对象列表,即比较列表7和列表8中的所有的Object,得到第四比较结果。
步骤S605:输出比较结果。实施例中可以用加粗字体表示两份格式文件有差异的部分。比如,label.json文件和test.json文件内容的比较结果如下所示:
为了更直观可视化地显示两份结构化文本的Key-Value对比较、Object比较和Array比较结果,可以使用不同颜色背景文字输出两个文件的比较差异。例如,使用红色背景文字表示在label.json文件中存在一个Key,但在test.json文件中未检索到此Key的情形;使用橙红色背景文字表示label.json文件和test.json均包含一个Key,但Value不匹配的情形;使用浅蓝色背景文字表示在test.json文件多余的Key的情形。
通过本发明实施例的结构化文本的比较方法可以看出,对于第一结构化文本的每个对象,分别计算其与第二结构化文本的每个对象之间的匹配度,根据匹配度确定第一目标匹配组合,进而将第一目标匹配组合中的两个对象进行进一步比较,使得本申请在对象元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度;基于键值的数据类型确定对应的匹配分值,便于评估两份结构化文本的对象之间的匹配程度;将两份结构化文本中满足匹配条件的对象筛选出来,构成第一目标匹配组合,能够在两份顺序不同、数量不同的结构化文本中自动查找最优对象进行匹配,提高后续比较的准确性。
通过本发明实施例的结构化文本的比较方法可以看出,根据两份结构化文本中第一目标匹配组合中两个对象的键值对依次进行比较,能够准确评估两份结构化文本不匹配、部分匹配、完全匹配的情况;将目标类型的键值对存储到键值对列表,便于统计每个键值对的匹配情况;将数组中的键值对、对象分别存储到数组下的键值对列表和对象列表,使得本申请在数组元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度。
图7是根据本发明实施例的结构化文本的比较装置的主要模块的示意图。如图7所示,本发明实施例的结构化文本的比较装置700,主要包括:
判断模块701,用于分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型。读取并解析第一结构化文本和第二结构化文本的每一个键值对,该键值对包括键名和键值。键值的数据类型有:数字、字符串、布尔类型、数组、对象、空,数字包括整数、浮点数,布尔类型的取值为true或false,数组设置在方括号中,对象设置待花括号中。根据每种数据类型的特点,判断解析出的每个键值的数据类型。
存储模块702,用于如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表。如果键值的数据类型为对象,则将归属于第一结构化文本的全部键值作为第一对象存储到第一对象列表;将将归属于第二结构化文本的全部键值作为第二对象存储到第二对象列表。经过该步骤处理,无论第一结构化文本和第二结构化文本中包含多少对象,都会被统一存储到对应的第一对象列表和第二对象列表。
确定模块703,用于分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合。计算当前第一对象所包括的至少一个键值对与当前第二对象所包括的至少一个键值对之间的匹配分值之和,将和值作为当前第一对象与当前第二对象之间的匹配度。按照上述方式即可计算出第一对象列表中每个第一对象与第二对象列表中每个第二对象之间的匹配度。根据匹配度和设定条件,将满足匹配条件的第一对象和第二对象提取出来,构成第一目标匹配组合。
比较模块704,用于将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。将第一目标匹配组合中的第一对象所包括的每个键值对与第二对象所包括的全部键值对依次进行比较。在比较过程中,可以以第一对象的当前键值对的键名为索引,查找第二对象中是否存在该键名,如果存在,则根据相同键名对应的两个键值的数据类型是否相同、取值是否相同,来确定当前键值对与第二结构化文本的比较结果;如果不存在,则说明当前键值对与第二结构化文本不匹配。
另外,本发明实施例的结构化文本的比较装置700还可以包括:键值对比较模块和数组比较模块(图7中未示出)。其中,键值对比较模块用于如果所述键值的数据类型为目标类型,则将归属于所述第一结构化文本的键值对存储到第一键值对列表,将归属于所述第二结构化文本的键值对存储到第二键值对列表;其中,所述目标类型为除所述对象和数组之外的数据类型;将所述第一键值对列表的至少一个所述键值对与所述第二键值对列表的至少一个键值对分别进行比较,得到键值对比较结果。
数组比较模块,用于如果所述键值的数据类型为数组,则将归属于所述第一结构化文本的数组中的键值对存储到第三键值对列表,数组中的对象存储到第三对象列表,将归属于所述第二结构化文本的数组中的键值对存储到第四键值对列表,数组中的对象存储到第四对象列表;将所述第三键值对列表的至少一个所述键值对与所述第四键值对列表的至少一个键值对分别进行比较,得到数组中键值对的比较结果;分别计算所述第三对象列表中至少一个所述对象与所述第四对象列表中至少一个所述对象的匹配度,以根据所述匹配度,为所述第三对象列表中至少一个所述对象分别确定第二目标匹配组合;将所述第二目标匹配组合中两个对象所包括的键值对依次进行比较,得到数组中对象的比较结果。
从以上描述可以看出,对于第一结构化文本的每个对象,分别计算其与第二结构化文本的每个对象之间的匹配度,根据匹配度确定第一目标匹配组合,进而将第一目标匹配组合中的两个对象进行进一步比较,使得本申请在对象元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度。
图8示出了可以应用本发明实施例的结构化文本的比较方法或结构化文本的比较装置的示例性系统架构800。
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如管理员利用终端设备801、802、803发送的结构化文本进行处理的后台管理服务器。后台管理服务器可以读取并解析结构化文本的内容,进行数据类型判断、匹配度计算、键值对比较等数据处理,并将处理结果(例如比较结果)反馈给终端设备。
需要说明的是,本申请实施例所提供的结构化文本的比较方法一般由服务器805执行,相应地,结构化文本的比较装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
根据本发明的实施例,本发明还提供了一种电子设备和一种计算机可读介质。
本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的一种结构化文本的比较方法。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的一种结构化文本的比较方法。
下面参考图9,其示出了适用于来实现本发明实施例的电子设备的计算机系统900的结构示意图。图9示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有计算机系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文主要步骤图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括判断模块、存储模块、确定模块、和比较模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,判断模块还可以被描述为“分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型;如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表;分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合;将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。
从以上描述可以看出,对于第一结构化文本的每个对象,分别计算其与第二结构化文本每个对象之间的匹配度,根据匹配度确定第一目标匹配组合,进而将第一目标匹配组合中的两个对象进行进一步比较,使得本申请在对象元素存在错序、个数不同时,也能够快速地进行最优化模糊比较,准确评估两份结构化文本是否匹配以及匹配程度。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种结构化文本的比较方法,其特征在于,包括:
分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型;
如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表;
分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合;其中,计算当前第一对象所包括的至少一个键值对与当前第二对象所包括的至少一个键值对之间的匹配分值之和,将和值作为当前第一对象与当前第二对象之间的匹配度;
将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。
2.根据权利要求1所述的方法,其特征在于,所述第一对象和所述第二对象的匹配度为:所述第一对象所包括的至少一个键值对与所述第二对象所包括的至少一个键值对之间的匹配分值之和;
所述第一对象的当前键值对与所述第二对象所包括的至少一个的键值对之间的匹配分值的计算方式如下:
以所述当前键值对的键名为索引,在所述第二对象中进行查询;
如果所述第二对象中不存在与所述键名相同的键名,或者所述第二对象中存在与所述键名相同的键名,但对应的两个键值的数据类型不同,则所述匹配分值为第一标识;
如果所述第二对象中存在与所述键名相同的键名,且对应的两个键值的数据类型相同,则所述两个键值相等时,所述匹配分值为第二标识;所述两个键值不相等时,根据所述数据类型确定所述匹配分值。
3.根据权利要求2所述的方法,其特征在于,根据所述数据类型确定所述匹配分值,包括:
如果所述两个键值的数据类型均为数字或者布尔类型,则所述匹配分值为所述第一标识;
如果所述两个键值的数据类型均为字符串类型,则所述匹配分值为所述两个键值的相似度。
4.根据权利要求1所述的方法,其特征在于,根据所述匹配度,为当前第一对象确定第一目标匹配组合,包括:
判断当前第一对象与所述第二对象列表的至少一个所述第二对象的最大匹配度是否满足设定条件;
如果所述最大匹配度满足所述设定条件,则判断使得当前第二对象与至少一个所述第一对象的匹配度最大的第一对象是否为所述当前第一对象;其中,所述当前第二对象为所述最大匹配度对应的第二对象;
如果使得当前第二对象与至少一个所述第一对象的匹配度最大的第一对象是所述当前第一对象,且最大匹配度满足所述设定条件,则所述当前第一对象与所述当前第二对象构成第一目标匹配组合。
5.根据权利要求1所述的方法,其特征在于,将所述第一目标匹配组合中所述第一对象所包括的当前键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果,包括:
如果所述第二对象中不存在与当前键值对的键名相同的键名,则记录所述当前键值对与所述第二结构化文本不匹配的比较结果;
如果所述第二对象中存在与所述当前键值对的键名相同的键名,但相同键名对应键值与所述当前键值对的键值的数据类型不同,或者数据类型均为数字或者布尔类型,取值不同,则记录所述当前键值对与所述第二结构化文本的键名匹配,键值不匹配的比较结果;
如果所述第二对象中存在与所述当前键值对的键名相同的键名,且相同键名对应键值与所述当前键值对的键值的数据类型相同,取值相同,则记录所述当前键值对与所述第二结构化文本的完全匹配的比较结果;
如果所述第二对象中存在与所述当前键值对的键名相同的键名,且相同键名对应键值与所述当前键值对的键值的数据类型均为字符串,但取值不相等,则计算两个键值的相似度,记录所述当前键值对与所述第二结构化文本的键名匹配,键值部分匹配的比较结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述键值的数据类型为目标类型,则将归属于所述第一结构化文本的键值对存储到第一键值对列表,将归属于所述第二结构化文本的键值对存储到第二键值对列表;其中,所述目标类型为除所述对象和数组之外的数据类型;
将所述第一键值对列表的至少一个所述键值对与所述第二键值对列表的至少一个键值对分别进行比较,得到键值对比较结果。
7.根据权利要求1至6的任一项所述的方法,其特征在于,所述方法还包括:
如果所述键值的数据类型为数组,则将归属于所述第一结构化文本的数组中的键值对存储到第三键值对列表,数组中的对象存储到第三对象列表,将归属于所述第二结构化文本的数组中的键值对存储到第四键值对列表,数组中的对象存储到第四对象列表;
将所述第三键值对列表的至少一个所述键值对与所述第四键值对列表的至少一个键值对分别进行比较,得到数组中键值对的比较结果;
分别计算所述第三对象列表中至少一个所述对象与所述第四对象列表中至少一个所述对象的匹配度,以根据所述匹配度,为所述第三对象列表中至少一个所述对象分别确定第二目标匹配组合;
将所述第二目标匹配组合中两个对象所包括的键值对依次进行比较,得到数组中对象的比较结果。
8.一种结构化文本的比较装置,其特征在于,包括:
判断模块,用于分别获取第一结构化文本和第二结构化文本的键值对,判断所述键值对的键值的数据类型;
存储模块,用于如果所述键值的数据类型为对象,则将归属于所述第一结构化文本的键值作为第一对象存储到第一对象列表,将归属于所述第二结构化文本的键值作为第二对象存储到第二对象列表;
确定模块,用于分别计算所述第一对象列表中至少一个所述第一对象与所述第二对象列表中至少一个所述第二对象的匹配度,以根据所述匹配度,为至少一个所述第一对象分别确定第一目标匹配组合;其中,计算当前第一对象所包括的至少一个键值对与当前第二对象所包括的至少一个键值对之间的匹配分值之和,将和值作为当前第一对象与当前第二对象之间的匹配度;
比较模块,用于将所述第一目标匹配组合中所述第一对象所包括的键值对与所述第二对象所包括的键值对依次进行比较,得到对象比较结果。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010300523.3A CN111506608B (zh) | 2020-04-16 | 2020-04-16 | 一种结构化文本的比较方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010300523.3A CN111506608B (zh) | 2020-04-16 | 2020-04-16 | 一种结构化文本的比较方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506608A CN111506608A (zh) | 2020-08-07 |
CN111506608B true CN111506608B (zh) | 2023-06-16 |
Family
ID=71877685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010300523.3A Active CN111506608B (zh) | 2020-04-16 | 2020-04-16 | 一种结构化文本的比较方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111506608B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112712866A (zh) * | 2020-12-25 | 2021-04-27 | 医渡云(北京)技术有限公司 | 一种确定文本信息相似度的方法及装置 |
CN113190220A (zh) * | 2021-06-30 | 2021-07-30 | 南京冰鉴信息科技有限公司 | Json文件差异化对比方法及装置 |
CN113806310A (zh) * | 2021-09-13 | 2021-12-17 | 上海商汤科技开发有限公司 | 对比方法和相关产品 |
CN116910631B (zh) * | 2023-09-14 | 2024-01-05 | 深圳市智慧城市科技发展集团有限公司 | 数组对比方法、装置、电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188113A (zh) * | 2019-05-09 | 2019-08-30 | 厦门市美亚柏科信息股份有限公司 | 一种利用复杂表达式进行数据比对的方法、装置及存储介质 |
CN110955714A (zh) * | 2019-12-03 | 2020-04-03 | 中国银行股份有限公司 | 一种将非结构化文本转化为结构化文本的方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440231A (zh) * | 2013-09-02 | 2013-12-11 | 北京网秦天下科技有限公司 | 用于比较文本的设备和方法 |
CN105653554B (zh) * | 2014-11-14 | 2019-07-16 | 卓望数码技术(深圳)有限公司 | 一种文件数据比对方法和系统 |
US10489463B2 (en) * | 2015-02-12 | 2019-11-26 | Microsoft Technology Licensing, Llc | Finding documents describing solutions to computing issues |
US10552847B2 (en) * | 2017-03-23 | 2020-02-04 | International Business Machines Corporation | Real-time pattern matching of database transactions and unstructured text |
CN108733689B (zh) * | 2017-04-18 | 2020-12-22 | 北京京东尚科信息技术有限公司 | 一种json文本的比对方法和装置 |
EP3588324A1 (en) * | 2018-06-26 | 2020-01-01 | Tata Consultancy Services Limited | Methods and systems for performing a model driven domain specific search |
CN110162509A (zh) * | 2019-04-26 | 2019-08-23 | 平安普惠企业管理有限公司 | 文件比对方法、装置、计算机设备及存储介质 |
-
2020
- 2020-04-16 CN CN202010300523.3A patent/CN111506608B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110188113A (zh) * | 2019-05-09 | 2019-08-30 | 厦门市美亚柏科信息股份有限公司 | 一种利用复杂表达式进行数据比对的方法、装置及存储介质 |
CN110955714A (zh) * | 2019-12-03 | 2020-04-03 | 中国银行股份有限公司 | 一种将非结构化文本转化为结构化文本的方法及装置 |
Non-Patent Citations (1)
Title |
---|
非结构化病理文本的结构化信息抽取方法;张盈利;夏小玲;;医学信息学杂志(第04期);54-58 * |
Also Published As
Publication number | Publication date |
---|---|
CN111506608A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506608B (zh) | 一种结构化文本的比较方法和装置 | |
US10169337B2 (en) | Converting data into natural language form | |
WO2022088672A1 (zh) | 基于bert的机器阅读理解方法、装置、设备及存储介质 | |
US9244991B2 (en) | Uniform search, navigation and combination of heterogeneous data | |
WO2021164425A1 (zh) | 数据处理方法、装置、电子设备及存储介质 | |
US20220342921A1 (en) | Systems and methods for parsing log files using classification and a plurality of neural networks | |
US20220004878A1 (en) | Systems and methods for synthetic document and data generation | |
US11423072B1 (en) | Artificial intelligence system employing multimodal learning for analyzing entity record relationships | |
US10089411B2 (en) | Method and apparatus and computer readable medium for computing string similarity metric | |
CN109033385A (zh) | 图片检索方法、装置、服务器及存储介质 | |
US20170109697A1 (en) | Document verification | |
JP2022031625A (ja) | 情報をプッシュするための方法および装置、電子機器、記憶媒体並びにコンピュータプログラム | |
CN111651552B (zh) | 结构化信息确定方法、装置和电子设备 | |
CN113760839A (zh) | 日志数据压缩处理方法、装置、电子设备和存储介质 | |
CN110704432A (zh) | 数据索引的建立方法和装置、可读存储介质、电子设备 | |
CN109739554A (zh) | 防止代码重复提交方法、系统、计算机设备和存储介质 | |
CN113761185A (zh) | 主键提取方法、设备及存储介质 | |
CN113760891A (zh) | 一种数据表的生成方法、装置、设备和存储介质 | |
US11195115B2 (en) | File format prediction based on relative frequency of a character in the file | |
US20180285342A1 (en) | Identifying propaganda in global social media | |
CN114579580A (zh) | 存储数据的方法、查询数据的方法和装置 | |
CN110083817B (zh) | 一种命名排歧方法、装置、计算机可读存储介质 | |
CN116127053B (zh) | 实体词消歧、知识图谱生成和知识推荐方法以及装置 | |
US11893048B1 (en) | Automated indexing and extraction of multiple information fields in digital records | |
CN113255369B (zh) | 文本相似度分析的方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |