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

从文本文档进行数据驱动的结构提取的制作方法

2021-12-07 21:59:00 来源:中国专利 TAG:

背景技术
::1.人类的各种各样的事业都依赖于文档。随着年度的流逝,数据库规模不断扩大,并继续渗透到新的应用中。数据库技术的许多方面都伴随着这种发展而有所改进,但是将文档内容(非结构化)捕获到数据库(结构化)中的基本问题仍然是一个挑战。光学识别有助于将人类可读文档转换为机器可读形式,但并不寻求识别或组织文档文本的内容。在某些领域,例如在标准化的测试答题纸、银行支票或纳税申报单中,将人类可读的文档强制为标准格式,以便可以将机器可读的字符准确地分配给预定义的文档字段。在其他应用中,常规技术可以解决简单的任务,例如解析单个句子的语法或识别单个固定文档格式的字段。但是,根据文档提供者,随着时间的流逝或由于其他因素,单个类别的文档的格式可能会有很大差异。另外,常规技术可能难以识别最简单表之外的结构,或者难以管理单个标记(token)可能与对等标记或较大实体具有多种关系的情况。因此,利用常规技术,即使是简单的问题也可能需要大量的人工来进行数据输入,或者可能需要针对每种不同的文档样式进行自定义的自动化。因此,仍然需要用于从文档可靠、灵活、自动地提取结构化内容的改进技术。技术实现要素:2.总而言之,详细描述针对用于确定文本文档中的结构的各种创新技术。在示例中,可以训练神经网络以评估文档中标记的所有成对组合的相应关系状态。向神经网络的输入可以是表示文本文档的各个标记的向量序列。来自神经网络的输出可以是标记的向量的相应序列,第i向量的第j个分量指示第i标记和第j标记之间的关系状态。可以使用多层神经网络在层级结构中构建文档结构。从文档中提取的结构可用于将输入文档的标记映射到数据库的列,从而允许将非结构化文档内容自动转换为数据库中的结构化表示形式。3.在某些示例中,所公开的技术可以被实现为存储指令的计算机可读介质,该指令在由一个或多个硬件处理器执行时使硬件处理器执行以下动作。在训练时,针对相应的文本文档获得了多个训练记录。每个训练记录都具有一个或多个输入特征,这些输入特征表示相应文本文档的非结构化内容,并且训练标签是一个或多个训练图。训练图描述了各个文本文档的非结构化内容之间的关系。根据训练记录对机器学习分类器进行训练。在运行时,获得表示输入文档的非结构化内容的记录。该记录被输入到经训练的机器学习分类器,以确定输入文档的结构图表。给定层级的经训练的机器学习分类器具有表示输入文档的n个标记的输入和表示n·(n‑1)/2个n标记的成对组合的输出。一个或多个输出定义结构图表的相应边。4.在一些示例中,获得输入文档记录可以包括通过将输入文档中的至少一个字段识别为命名实体并将输入文档中识别的字段替换为输入实体,来预处理输入文档的原始形式。命名实体。获得输入文档记录可以包括用位置编码信息标记该记录。结构图表的边可以包括指示第一对标记之间的键值关系的第一有向边,以及指示第二对标记之间的对等关系的第二无向边。结构图表的边可以包括三个或更多个形成循环的无向边。5.在附加示例中,给定训练记录的训练图可以描述各个文本文档的实体的两个或更多个层级之间的关系层次。这些层级可以包括第一和第二层级。在训练期间,可以使用第一损失函数来训练机器学习分类器的给定层级,以识别第一层级的关系。与第一损失函数不同的第二损失函数可以用于训练机器学习分类器以识别第二层级的关系。机器学习分类器可以是其输出是第一结构图表的第一分类器。在另外的示例中,第二机器学习分类器可以被训练以在由其识别出的第一层级关系分组的第一合成标记中,在该级的第二层级上识别关系。在运行时,可以识别可以表示基于第一结构图表的一组标记的第一层级复合标记。标记组可以替换为第一层级复合标记以获得第二层级记录。可以将第二层级记录输入到经训练的第二机器学习分类器,以确定输入文档的第二结构图表。第一结构图和第二结构图可以合并以形成输入文档的多级图。6.在其他示例中,操作还可以包括将结构图表的多个顶点映射到数据库的各个列,为输入文档向数据库添加一个或多个记录,并且对于每个映射的顶点,存储一个值在添加的记录的相应列中表示输入文档的内容。7.在某些示例中,所公开的技术可以被实现为用于提取文本文档的图表结构的计算机实现的方法。对该文本文档进行预处理以生成初始输入记录,该初始输入记录包括表示文本文档的各个标记的一系列输入向量。在多个层级的每个层级上,使用各自的神经网络处理各自的输入记录,以生成一部分图表结构。初始层级的输入记录是初始输入记录。对于除了初始层级之外的每个层级,从该层级的前一层级以及在前一层级生成的图表结构的一部分的输入记录中得出相应的输入记录。图表结构被输出。8.在一些示例中,图表结构的每个顶点可以表示单个标记或一组多个相关标记。所表示的标记可以定义一个值。图表结构的每个边可以表示由该边连接的一对顶点之间的关系。文本文档的记录可以添加到数据库表中。对于多个顶点中的每个顶点,可以标识数据库表的一列。每个顶点表示的标记定义的值可以存储在记录中的标识列中。9.在附加示例中,给定层级的神经网络可以输出用于各个标记的输出向量序列。每个输出向量的分量可以标识该输出向量的各个标记与其他输出向量的各个标记之间的关系。输出向量的序列可以在给定层级上定义图表结构的一部分。第一层级可以紧接第二层级之前。在第一层级定义的图表结构的部分可以包括连接图表结构的第一和第二顶点的边,分别表示第一和第二标记。可以通过将表示第一标记和第二标记的并集的并集向量合并到用于第二层级的输入记录中来得出第二层级的输入记录。10.在某些示例中,所公开的技术可以被实现为具有一个或多个硬件处理器,其上联接有存储器,以及计算机可读介质的系统,该计算机可读介质存储用于通过执行以下操作来响应请求的可执行指令。使用经训练的机器学习分类器提取接收到的文本文档的结构图表。结构图包括具有各自值的多个顶点,这些值由接收的文本文档的内容定义。顶点映射到数据库的列。对于每个顶点,该顶点的相应值存储在数据库中。11.在一些示例中,系统可以包括存储数据库的数据库管理系统。经训练的机器学习分类器可以是多级分类器。可以将多级分类器的每个层级配置为生成结构图表的相应层级。给定层级的多级分类器可以包括变换器神经网络。变换器神经网络可以配置为接收表示接收到的文本文档的n个标记的输入,还可以配置为生成表示n个标记的n·(n‑1)/2对组合的输出。输出中的至少一个可以定义结构图表的边。12.通过以下参考附图进行的详细描述,本发明的前述和其他目的,特征和优点将变得更加明显。附图说明13.图1是根据所公开的技术的用于确定文本文档的结构的第一示例方法的流程图。14.图2是根据所公开技术的示例的数据流程图。15.图3a‑3d是示出根据所公开的技术的示例的第一文档的处理的图。16.图4是示出根据所公开的技术的示例的标记的映射的图。17.图5是示出根据所公开的技术的用于提取文档的图表结构的第二示例方法的混合图。18.图6是示出适合于实现所公开技术的示例的变换器神经网络的图。19.图7a至图7d是示出根据所公开的技术的示例的第二文档的处理的图。20.图8a‑8b是示出根据所公开的技术的示例的第三文档的处理的图。21.图9是示出根据所公开技术的示例的数据库的三个表的图。22.图10是根据所公开的技术的用于将非结构化文档内容变换成结构化数据库内容的第三示例方法的流程图。23.图11是示意性地描绘适合于实现所公开的技术的计算环境的图。24.图12是示意性地描绘结合计算云进行操作以实现所公开的技术的计算设备的图。具体实施方式25.概述26.所公开的技术通过将分类技术应用于文档中的文本标记的成对组合来实现内容提取。也就是说,给定n个标记,分类器可以有向地针对所有成对组合(即n·(n‑1)个有向对(directedpair)或n·(n‑1)/2个无向对(undirectedpair))进行分类。也就是说,对于输入到所公开的分类器的每个标记,可以生成不同的输出标签,以指示与其他每个输入标记是否存在关系。每个关系可以看作是对应结构图表的一条边,它连接表示对应相关标记的两个顶点。如本文进一步所述,简单的分类可以是存在或不存在关系,但是也可以有利地采用更复杂的关系分类。这种方法,即对标记的成对组合进行分类,与现有的序列标记或寻求将分类符(例如,名词、动词、介词、形容词)分配给标记本身的其他解析技术不同。27.此外,所公开的方法可以使用提取的图表(graph)将内容映射到可以为文档预定义的特定字段(例如,文档日期、提供者名称、表标题)。例如,可以将日期字符串(例如“01/01/2020”)和关键字(“日期(date)”)之间的关系识别为日期的键值对,然后可以将其映射到“文档日期”。即,所公开的方法支持使用图表结构化内容范例(paradigm)来发现结构化内容。这也与会使用结构化内容图表相反范例的现有技术形成不同。即,在常规方法中,结构化内容(例如,主语名词、动词、宾语名词)可以首先被确定,并用于构建图表(例如,谓词=动词→宾语;句子=主语→谓词)。28.因为评估o(n2)个组合的计算问题固有地是二次的,所以所公开的技术可以应用多种技术来获得计算效率。作为一个示例,可以看出,给定标记可以是多达n‑1个标记对的成员,因此可以与多达n‑1个输出标签关联。可以将这些n‑1个输出标签分组为给定标记的输出向量,并且可以为每个其他标记形成类似的输出向量。也就是说,可以将o(n2)个单独的标签聚合为n个输出向量。由于通常针对每个标记将文本输入表示为一个向量(例如使用词嵌入),因此用于成对分类任务的神经网络可以具有n个输入向量和n个输出向量,并且可以始终保持统一的宽度(n)。因此,权重矩阵可以缩放为n×n,而不是n×n2或n2×n2,如果n·(n‑1)个输出标签是独立生成的,则可能需要缩放为n×n2或n2×n2。如本文中进一步描述的,可以通过将关系合并为n·(n‑1)/2个成对组合的来实现进一步的效率,这可以将所需的计算直接减少一半。29.所公开的技术还可以以层级的方式进行组织,首先识别相关标记的低级组,然后再识别低级标记组的其他组。也就是说,可以在多个层级上执行图表提取,其中,将在一个层级处确定的结构作为输入馈入到分类器的下一个更高层级。在表的示例中,表字段的词可以在第一层级处被识别为一组相关标记,表字段可以在第二层级处与其行的其他字段一起分组为行式项目(lineitem),而几个行式项目可以在第三层级处与表标题分组在一起,以根据原始文档将完整的表识别为结构化内容。30.如本文进一步所述,多个层级的存在提供了额外的计算益处,从而允许在相对短(即,比原始文档的n个标记少得多)的输入记录上执行更高(更后)的层级。同时,更高层级的存在意味着并非所有关系(特别是长距离关系)都需要在第一层级甚至第二层级处提取。在评估的成对组合的数量上可以限制较低的层级,而多级分类器可以保留确定n个标记的所有成对组合的输出标签的能力。输出结构图表和分类器的多级组织还可以提供训练益处,因为可以独立、高效且精确地训练多级分类器的每个层级以针对其给定层级执行图表提取任务。31.所公开的技术在输入和输出方面允许先前无法实现的灵活性。给定的机器学习(ml)分类器可以在各种各样不同的文档类型(过程日志、网络日志、制造路线单、机票、发货单、报纸文章等)中的任一个上被训练。可以主要将人力限制为为不同类别的文档提供适度的训练数据语料库。需要最少的软件重新配置,例如用于诸如设置文档中标记的最大数量,或为给定应用选择正确的命名实体库或词嵌入本体(ontology)之类的操作。分类器本身可以“开箱即用”运行,而无需自定义分类器代码。此外,根据应用,在分类器的第一层级的输入标记不同地可以是字符、词、句子或文档的部段。关于输出,结构图表不限于平面图表或树。所公开的技术可以支持内容结构的多级层级结构,同时平面子图表在给定层级内将标记相关。此外,在某些情况下,单个标记(第一层级的简单标记或较高层级的复合标记)可以不受限制地是多个较高层级结构的成员。32.此外,所公开的技术可以完全是数据驱动的,并且可以在无需创建规则的情况下捕获文档内的各种各样的关系。规则可能需要领域专业知识来配置,可能限于具有特定内容组织的文档,因此可能难以维护。通过避免硬编码的规则,所公开的技术可以提供稳健的结构提取,并且通过适当的训练,可以准确地评估以前看不见的格式的文档。所公开技术的示例可以具有嵌入在结构提取工具内的预处理模块,并且可以以原始文本文档作为输入并且以结构图表作为输出来端到端地进行训练。即,所公开的结构提取工具的能力可以完全由训练数据驱动。33.通过关注结构图表,并且明确地获知标记之间的关系,所公开的技术已经成功地提高了来自文本文档的语义理解的准确性和质量。利用所公开的技术,训练神经网络以提取覆盖文档的多个层级上的标记和组的丰富数据结构可能是实用的。34.总而言之,所公开的技术在以下方面提供了对现有技术的改进。第一,可以在文档的所有标记上确定任意图表结构。这使得能够提取复杂的关系和结构,而与任何给定标记所处的位置无关。常规技术可能仅限于针对其它们被设计的特定结构(例如,句子语法),或者可能仅限于被约束在相应的预定义位置中的特定字段。第二,可以在单个文档上提取多个图表。特别地,多级提取被高效地支持并且非常适合于具有固有层级结构的文档。第三,标记的分组不限于空间邻域,因为图表方法可以将任何标记与输入记录的任何其他标记相关。为了说明,使用输入‑输出‑开始(input‑output‑beginning,iob)标记或边界框的常规方法无法处理具有交联记录的常见表。也就是说,一个内容结构的边界框可能包含来自不同内容结构的外来文本。本方法没有这种限制,并且可以容易地检测跳过行、从页面的顶部到底部或甚至跨页面的关系。也就是说,复合标记的组成部分可以分散在整个文档中。第四,所公开的方法很容易适用于任何语言的任何文档类型。所公开的技术支持对任何特定或通用键值对、表或预定义文档字段或结构的提取或识别。35.所公开的技术不限于特定的实施方式。简而言之,本公开的示例涉及确定文档的标记之间的图表的任务。本文根据变换器神经网络描述了一些示例,这些变换器神经网络在某些方面非常适合此任务。然而,其他分类器,例如卷积神经网络或循环神经网络,也可以沿本文公开的思路配置。在进行一些软件修改的情况下,甚至可以对线性序列标记器进行配置或训练,以生成成对分类而不是单个标记分类。36.术语37.除非另有明确说明或与上下文相抵触,否则本节中所有引用术语的用法和含义适用于本公开所有内容。下面的术语扩展到相关的词形。38.术语“添加”是指将一个或多个项目与一个或多个类似的项目结合在一起,或将一个或多个项目合并到此类项目的组中。该组最初可以为空。特别地,可以将顶点或边添加到图表中,可以将记录添加到记录集合或数据表中,可以将字段添加到记录中,可以将列添加到表中,可以将数据表添加到数据库中,诸如此类。可以将两个集合或其他组的项目添加到一起,以形成更大的项目集合或组。[0039]“注意力(attention)”是ml工具中的一种机制,用于识别与查询的各个部分具有相关性的输入的各个部分。“自注意力(self‑attention)”是查询和输入相同的变体。也就是说,自注意力可以识别输入的具有与同一输入的其他部分的相关性的部分。[0040]“分类器”是用于将一个或多个类别(称为“标签”)分配给有限数据输入的工具或规则。输入到分类器的数据可以是单个数据项目或数据项目的集合,例如文档、文档页面或从中提取的特征。特征可以是表示文档标记的向量序列。本文描述的一些分类器是机器学习(ml)分类器,并且可以被实现为深度神经网络(dnn),包括变换器神经网络(tnn)、卷积神经网络(cnn)或循环神经网络(rnn)。[0041]“客户端”是使用由另一称为“服务器”的硬件或软件计算实体提供的资源的硬件或软件计算实体。[0042]术语“内容”是指文档中传达语义含义的一个或多个标记。内容可以是结构化的,也可以是非结构化的。“非结构化内容”可以以文档的原始形式存在,通常适合于视觉呈现,其中存在内容标记,但它们之间的关系不明确。非结构化内容的标记可以具有位置或其他属性,其可以帮助人类读者辨别这样的关系。这样的属性可以包括接近度(例如,与“载片”相邻的“玻璃”被理解为“玻璃载片”);文档内的位置(例如,页面底部的“2”可以理解为页码,而表中的“2”可以是行号的指示符;或字体(例如,粗体可以理解为小节标题或表标题)。所公开技术的示例涉及提取内容标记之间的这样的关系,例如,以图表的形式。这样的图表可用于将非结构化内容转换为结构化内容。“结构化内容”是(非结构化)内容标记及其之间的关系的组合。结构化内容可以呈图表的形式,其中顶点表示内容标记,而顶点之间的边表示关联标记之间的关系。结构化内容还可以包括具有预定字段(例如,文档日期或提供者名称)的标记的标识,并且可以适合于自动合并到数据库中。[0043]术语“数据库”是指维护在计算机可读介质上并且可以通过在一个或多个处理器处执行指令来访问的数据的有组织的集合。数据库可以是关系数据库,存储器中或盘上的数据库,分层数据库或非分层数据库或任何其他类型的数据库。在本公开中感兴趣的一些数据库被组织为“记录”,每个记录是具有相应值的字段的集合。两个记录的字段可以相同,而对应的值可以相同,也可以在记录之间不同。在一些示例中,记录可以被组织为表的行,其中记录的相似字段形成数据表的对应列。在不同的示例中,表的具体组织可以不同,例如行和列可以交换,或者表可以组织为多维阵列(array)。无论记录或表的物理或逻辑组织如何,“行”表示一个记录,而“列”表示在一个或多个记录的集合上类似字段(可以具有不同值)的集合。[0044]如果两个项目或操作不是相同的项目或操作,即使如果它们是相同的,也被认为是“不同的”。如果一个数据项目的内容不能与另一个数据项目的内容区分开,则将这两个数据项(包括文档)视为“相同”。两个相同的数据项目可以具有可区分的元数据,例如文件名、存储位置或时间戳。如果在任何情况下都无法将一个操作的动作与另一个操作的动作区分开,则这两个操作被视为相同。如果两个项目或操作不相同,则它们被视为“不同”。[0045]“图表”是两个或多个顶点的集合以及连接相应的顶点对的一个或多个边的集合。边可以是有向的或无向的。有向边可以但不限于指示一个顶点依赖于另一顶点的一部分或另一顶点的属性,并且可以指示可以用单端箭头表示的方向关系。无向边可以但不限于指示彼此具有对等关系的两个顶点(无论是相同还是不同类型),并且可以指示可以用双向箭头或无箭头线表示的双向关系。表示文档中的内容结构的图表可以称为文档的“结构图表”。每对顶点之间都存在路径的图表是“连接图表”。其中至少一对顶点没有连接路径的图表是“不相交图表(disjointgraph)”。本文所述的图表通常是不相交图表。在本文的一些示例中,文档的不相交子图表可以表示文档中存在的各种顶级实体。每个这样的顶级实体都可以连接到表示整个文档的根顶点,以形成文档的连接结构图表。由边连接的一对顶点可以描述为“直接联接”。其中所有顶点对直接联接的顶点集合被“完全连接”。沿着从一个顶点到另一个顶点的连续边返回到原始顶点而不穿越任何顶点或边多于一次的路径为“循环”。如果存在不同的有向边v1→v2和v1←v2,则两个顶点v1、v2可以形成循环;否则,循环需要三个或更多个顶点和三个或更多个边。图表是一种逻辑结构,其可以使用各种类型的数据结构中的任何一种来跟踪顶点和边(例如,阵列或链表)来实现。图表或图表数据结构可以是文档的模型,并且可以指示其中的内容标记之间的关系。[0046]术语“层级结构(hierarchy)”是指按层级组织的数据项目或操作的结构,其中较低层级的数据项目或操作馈入或链接到较高层级的数据项目或操作。如本文所述,可以将从文档中提取的结构组织为具有低级简单标记和高级复合标记的层级结构。除了与其他层级的项目的关系之外,层级结构的给定层级在其自身之间也可以具有关系(链接、边)。因此,虽然层级结构可以是树(所有边连接不同层级的顶点),但本文中遇到的某些常见的文档结构的层级结构确实具有相同层级的边,而不是树。[0047]如本文所使用的,术语“层级(level)”是指连续的分类阶段,特别是在从文档进行结构提取的情况下。如本文中进一步描述的,可以使用第一层级分类器从简单标记中提取结构的第一层级。可以使用第二层级分类器从简单标记和复合标记中提取结构的第二层级,对于相继的更高层级也是类似。术语层级可以应用于分类器、分类过程或相应的输入或输出。给定的分类层级可以由对应的神经网络执行,该神经网络可以是一层或多层神经元。因此,尽管术语“层级”和“层”被不同地地使用,但是在一些示例中,分类器的一个层级可以恰好具有一层神经元。[0048]“损失函数”是ml工具的实际输出与期望输出(例如,所谓的正确答案)之间的距离的量度。也就是说,损失函数将ml工具的输出标签和对应的训练标签作为输入,并根据输出标签和训练标签之间的距离或差返回数值结果。通常,结果为零指示实际输出与训练标签之间完美匹配,损失函数的增加的(正)值指示实际输出与训练标签之间的距离更大,但这不是要求,可以使用其他数值标度。数值结果可以是标量或多维量。例如,在输出标签是向量的情况下,损失函数可以返回结果的向量,其中一个结果针对输出向量的每个相应分量。在输出标签是向量序列的情况下,损失函数也可以是向量序列。损失函数可以与优化函数结合使用,以计算对神经网络或其他ml工具的权重(系数)的调整(例如,通过反向传播)。此外,给定的损失函数可以针对层级结构分类器的给定层级,而不影响其他层级的权重。损失函数甚至可以针对分类器给定层级内的特定层。也就是说,可以使用多个损失函数或优化函数来训练所公开的神经网络的相应层级。在所公开技术的一些示例中,可以使用交叉熵损失函数。特别地,利用反向传播,可以使用多类交叉熵损失函数来同时训练变换器神经网络的多头自注意力层的多个头。[0049]术语“机器学习”(ml)用于表征在计算环境中由软件实现的工具,该工具具有可以从经验中改善其表现而无需用任何逻辑上的伴随改进对其进行显式编程的特定任务。“训练数据”通常包括输入以及对应的正确或期望的输出,指的是ml工具可以通过其改进特定任务的表现的数据语料库,而“训练”是指用于改善ml工具的执行的过程。修饰语“经训练”指示ml工具已经过训练,至少达到了阈值水平的表现,但不排除对ml工具的进一步训练。本公开中的一般ml工具可以是分类器,并且可以被实现为神经网络,但是这些不是必需的。其他ml工具可以执行其他任务,例如回归、预测或因子分析;对于分类器甚至还存在许多其他ml实施方式‑包括但不限于序列标记器、随机森林、k最近邻和支持向量机。ml工具的输入可以称为“特征”。在本文描述的一些示例中,特征可以是表示文本文档的标记的向量或其他数据结构,并且ml工具的输入可以是被称为“输入记录”的这样的特征(向量)的序列。分类器的输出可以称为“标签”。在本文描述的一些示例中,分类器可以生成多达n·(n‑1)个输出标签,这些输出标签指示n个输入标记中的每对之间的相应关系状态。可以将这些输出标签组织为本文所述的n个输出向量,用于与输入到分类器的n个向量的1:1对应关系。[0050]术语“映射”作为动词,是指在实体之间形成关联。在本文描述的一些示例中,标记(例如,“def实验室”)可以被映射到文档或文档类别的预定义字段(例如,providername(提供者名称))。在其他示例中,可以将结构图表的顶点(例如,对于提供者名称的顶点)映射到数据库表的对应列。作为一个名词,“映射”是指这样的关联的集合。通常,映射中关联的项目可以具有不同的类型,例如标记、文档的字段和数据库的列。[0051]术语“合并”指的是对两个或更多个图表的操作,该操作组合被合并的图表的顶点和边。也就是说,如果对于i=1:n,gi=(vi,ei),其中vi、ei分别是图表gi的顶点和边,而n是要合并的图表的数量,则产生的图表go=(vo,eo)具有vo=v1∪v2∪…vn,eo=e1∪e2∪…en,其中∪是集合并操作。合并可以等效地表示为go=g1∪g2∪…gn。[0052]“命名实体(namedentity)”是
技术领域
:的术语,指的是在知识领域中具有特定含义的词或词序列。在本公开中感兴趣的知识领域包括各种商业、制造或科学领域,以及其中遇到的各类文件。在所公开技术的一些示例中,可以从文档中的标记识别命名实体。具有特定含义的命名实体不排除其在同一知识领域中具有其他不同的特定含义。即,给定知识域中的多个命名实体可以由同一文本表示。命名实体可以与其他命名实体或标记聚合为“复合命名实体”。“实体(entity)”一词的其他用法根据其直白的英语含义。[0053]“神经网络”是“单元”(或“神经元”)的人工网络,其具有以生物神经元的行为为模型的链接,并且可以由计算机上的软件程序实现。本文所述的一些神经网络是“深度神经网络”(dnn),其在输入层和输出层之间具有两个或更多个中间层。本文描述的一些dnn可以具有12个或更多个的中间(或“隐藏”)层。本文所述的一些神经网络可以是“变换器神经网络”(tnn),其可以确定输入特征任何对之间的分类,即,与输入特征之间的间隔无关。相比之下,具有l个层的循环神经网络(rnn)和卷积神经网络(cnn)的一般实施方式限于评估由输入序列的最多约l或2l个位置间隔开的对。可以堆叠两个神经网络以形成(更深的)神经网络。相反,神经网络的层的连续子集也是神经网络。[0054]“识别”是指将标记或其他对象识别为预定义字段或其他对象的实例。在结构图表中,可以将标记(例如键值对“日期”和“01.01.20”或对等组“def实验室”)识别为预定义字段(例如文档日期或提供者名称)。识别的另一种形式是命名实体识别,其是指将标记(例如“01.01.2020”或“john”)识别为预定义的命名实体(例如日期或男性姓名)。[0055]术语“成对组合(pairwisecombination)”是指选自对象集合的对。在某些示例中,一对可以是一个集合,在其中顺序无关紧要,因此(a,b)和(b,a)是相同的。在其他示例中,对可以是元组,在其中顺序很重要,因此(a,b)和(b,a)是不同的对。[0056]“位置编码”是指用被呈现以供查看的文档中的空间位置的指示符标记文档的标记。空间位置可以是一维的、二维的或多维的。一维位置可以沿着标记的线性序列,这样,例如,如果给定行上的最后一个标记被分配#50,则下一行上的第一标记可以为#51。二维位置可以包括在文档页面的二个维维度上的坐标。例如,水平位置可以由距页面左边缘的距离(例如2.5英寸)表示,而垂直位置可以由距离或行号表示。坐标可以指示标记的质心的位置、或标记的右上角或其他基准。对于复合标记,质心的使用可能是有利的。多维位置可以包括例如页码作为第三坐标,或卷号作为第四坐标。多维编码也可以用于被组织为章节的文档。为了说明,章节(i)(c)(2)可以具有用于章节编号的连续深度的相应坐标1、3、2。[0057]“预处理”是指应用于接收的文本文档以为分类器准备输入记录的操作。示例性预处理操作可以包括但不限于光学字符识别(ocr)、标记提取、词嵌入、命名实体识别(ner)、位置编码或其他元数据编码。预处理操作还可以包括丢弃文档中的某些项目,包括非文本项目(例如图片或分隔线)或某些文本项目(例如徽标、页眉或页脚文本或停用词)。[0058]在查询和对应的响应的上下文中,术语“接收”和“发送”是指通过网络的通信,其可以是消息的形式。通信可以是电磁的,例如通过有线、无线或光学介质,但这不是要求。[0059]术语“记录”是指具有相应值的数据字段的集合,并且在不同的上下文中使用。在分类器的上下文中,记录可以是输入记录(例如要分类的一系列特征)或输出记录(例如一个或多个输出标签)。在一些示例中,分类器的一个层级或层的输出记录可以是该分类器的下一个层级或层的输入记录。在训练的上下文中,训练记录可以包含输入记录和期望的(一个或多个)输出标签。在数据库的上下文中,记录可以是数据库表的行,其中记录的字段包含数据库表各列的相应值。[0060]在文档结构的上下文中,“关系”是一对标记或其他数据项目的属性,指示该对之间的直接关联性。关系可以是有向的或无向的。无向关系可以是对等关系,例如标记“大”和“街”,其是较大标记(例如提供者地址“23大街”)的组成部分;或连续文档页面的页码“1”、“2”、“3”。有向关系可以指示键值对,例如“发货单号”和“12345”,或组成关系,其中“23”、“大”和“街”中的每一个是提供者地址“23大街”的一部分。“关系状态”可以指示是否存在关系或检测到关系。即,一对标记在没有关系的情况下可以具有关系状态。在一些示例中,关系状态可以是二进制变量(例如,“存在”或“不存在”;或者替代地,“检测到”或“未检测到”),而在其他示例中,可以从多个值中选择关系,其甚至可以为该关系指示精确的代码。例如,关系状态“0”可以表示没有关系,“11”可以表示对等关系,“20”可以表示通用键值关系,“21”可以表示作为表标题键的值的关系,“22”可以表示文档日期对象的键‑值关系,诸如此类。支持多个关系状态的关系代码(除了不存在关系之外)被称为“多值关系代码”。[0061]“序列”是数据项的有序集合。在本文描述的一些示例中,分类器可以接收向量的序列(例如,表示文档的标记)作为输入,并且可以生成向量的另一序列(例如,表示文档标记的关系)作为输出。[0062]“软件”是指计算机可执行程序或指令以及相关的数据结构。软件可以处于启用或静止状态。在启用状态下,软件可以被加载到存储器中或由一个或多个处理器执行。在静止状态下,软件可以存储在计算机可读介质上,等待发送或执行。[0063]如果在文本主体的表示中考虑了输入文本的除了属于某些被丢弃的标记类的那些标记以外的所有标记,则称该表示“跨”输入文本。该表示可以是图表的形式(例如结构图表)或文本的形式(例如原始文本),但这不是必需的。分类器的输入记录(可以是输入文档的预处理版本)也可以跨文档。[0064]“表”是组织成行(例如记录)和列(例如字段)的二维阵列。表可以是数据库表,也可以是源文档中内容的表格式阵列。通常,行可以是与表中表示的某类对象的实例有关的记录,而列可以与那些对象的特定属性有关。第m行的第k列处的字段可以存储第m个对象的第k个属性的值。然而,尽管这样的表组织可以用于说明,但是这不是所公开技术的要求,并且可以将其他组织和表示用于数据库和文档两者。数据库表可以具有与其他表的关系链接,例如共享列。在示例中,数据库表可以是通过关联的索引结构访问的行存储表,或者是列存储表。文档表可以具有其他组织形式(例如以大纲格式呈现,或者每行(row)分布在多行(line)上,或者不规则形式)。[0065]术语“标记(tag)”作为动词,是指将限定符(qualifier)或属性与数据项目关联。作为名词,“标记(tag)”是与数据项目关联的限定符或属性。在各种示例中,标记可以包含在数据项目内,附加到数据项目或存储为元数据。元数据标记可以与数据项目存储在一起,或者可以存储在单独的数据结构或存储位置中。[0066]“文本文档”是包括传达语义含义的词(例如,“显微镜”)或可打印字符(例如,“01.01.2020”)的表示的文档。文档可以是物理纸张、另一有形介质或电子文档。电子文档可以采用专有或标准格式,例如便携式文档格式(pdf)、文档的传真或扫描副本、文字处理器文件、数据库条目或纯文本文件。电子文档可以使用适当的编码存储在存储器中或存储在存储设备上,并且还可以被加密。文本文档可以包括非文本内容,例如除文本图像之外的图像,但是本文描述的技术通常涉及文档的文本内容。文本文档可以被视为属于一个类。一些示例性类别可以包括:实验室记录、发货单或天气报告。所公开的技术的示例可以是适合于特定类别的文档的分类器,其可以与用于其他类别的文档的分类器共存。[0067]“标记(token)”是表示文本主体(例如文档)的一个或多个部分的数据项目。通常,“简单标记”可以表示词或其他由空白或标点符号分隔的可打印字符序列,但这不是必需的。某些标记(例如日期或带连字符的名称)可以表示包含某些标点符号的字符串。一些标记可以表示在文档文本中识别的命名实体。一些标记可以表示词或其他较小标记的组合。在一些示例中,如本文进一步所述,可以将两个或更多个词标记(例如“def”和“实验室”)聚合以形成表示完整提供者名称(“def实验室”)的“复合标记”。可以以层级结构的方式连续地聚合标记,以表示文档中结构化内容的较大部分,例如行式项目或表。复合标记还可以表示文档的章节或页面,甚至整个文档。标记可以具有基于或等效于该标记表示的原始文本的值。复合标记可以具有派生自其组成标记的值或包含其组成标记的值的值。由于复合标记通常映射到文档的预定义字段(例如,在文档模式(documentschema)中),因此术语字段通常与复合标记可互换地使用。[0068]“向量”是数据项目的一维阵列。无条件地使用的术语“分量(component)”是指向量中的单个数据项目,但是有条件的术语可以在其他上下文中使用,例如硬件或软件组件。在本文所述的一些示例中,文本文档的标记可以使用例如词嵌入技术来表示为向量。该向量还可以包括位置编码信息或其他描述标记的元数据,它们作为向量的附加分量,也可以叠加在向量的其他分量上或与向量的其他分量组合。[0069]“词嵌入(wordembedding)”是指用于基于词或其他简单标记的语义含义将词或其他简单标记表示为向量(或其他数据结构)的过程、工具或技术。即,具有相似含义的一对词(例如“big”、“large”)在嵌入向量空间中将比具有不同含义的一对词(例如“pickle”、“car”)更接近。词嵌入可以有利地提供适合于训练ml工具的词的相对紧凑的表示,从而使工具更易于训练以为含义紧密相关但拼写可以完全不相关的输入词提供相同或相似的输出。在一些示例中,“上下文”词嵌入还可以用于基于上下文来解析几种含义中的哪一种适合于给定词(例如,“lead”作为动词,或者“lead”作为金属材料)。在所公开技术的各种示例中,词嵌入可以被实现为单独的工具,或者被实现为用于文档结构提取的神经网络分类器内的一个或多个层。[0070]“词”是人类语言的基本单位,具有一个或有限数量的语义含义,这些含义在词的更小部分中不存在。[0071]第一示例方法[0072]图1是用于确定文本文档的结构的第一示例方法的流程图100。在该方法中,在训练数据语料库上训练ml分类器,并使用经训练分类器来提取结构图表,该结构图表具有文档标记对之间的成对关系的指示。[0073]在过程框110处,可以获得针对相应文本文档的多个训练记录。每个训练记录可以具有表示相应文本文档的非结构化内容的两个或更多个输入特征,以及作为输出标签的一个或多个图表。这些图表可以描述相应文本文档的非结构化内容之间的关系。也就是说,这些图表可用于训练神经网络或其他分类器,以从文本文档的非结构化内容中提取结构。在过程框120处,可以在训练记录上训练ml分类器。框110、120可以是训练阶段102的一部分。[0074]随后,在运行时,可以在过程框130处获得表示输入文档的非结构化内容的记录。例如,客户端可以请求从输入文档中提取结构化内容,并且可以对输入文档进行预处理以获得表示文档的非结构化内容的输入记录。该记录可以在过程框140处输入到经训练的分类器,以确定输入文档的结构图表。给定n作为输入到经训练的分类器的给定层级的标记数量,给定层级的输出可以表示n个标记的n·(n‑1)/2个成对组合。输出可以限定结构图表的一个或多个边。框130、140可以在运行时阶段104期间执行,例如,在接收到输入文档时执行。[0075]图1的插图101示出了给定层级的输入和输出的示例。ml分类器160被示出为具有一个或多个层级,包括给定层级160c。分类器160的其他可选层级以虚线轮廓示出。即,在不同示例中,层级160c可以是分类器160的唯一层级,或者可以在一个或多个层级之前,或者可以在一个或多个层级之后。分类器层级160c的输入161可以是长度为n的记录,表示输入文档的n个输入标记。在一些示例中,记录161的n个位置中的每一个可以是对关联标记的词嵌入以及位置编码或其他标记元数据进行编码的向量。来自分类器层级160c的输出169可以是包括n‑1个或n个向量的记录,其中第j个向量的第i个位置指示第i个标记与第j个标记之间的关系状态。如图所示,输出向量可以具有(n‑1) (n‑2) (n‑3) …2 1 0=n·(n–1)/2个位置,表示n个输入标记的所有成对组合。在标记之间具有有向关系的其他示例中,第j个向量的第i个位置可以表示从标记i到标记j的关系(表示为i→j),而第i个向量的第j个位置可以表示关系j→i,并且对于n个标记的n·(n‑1)个方向组合,可以保留输出阵列169的上和下三角形。[0076]可以实现多种变型或扩展。可以将训练语料库中的文档图表(称为“训练图表”)组织为层级的层级结构,以促进对在运行时被评估的文档中的结构进行分层级的检测。ml分类器可以针对每个层级单独进行训练。例如,第一损失函数可以用于训练分类器以在训练图表中识别第一层级结构或关系。在成功进行第一层级训练之后,可以使用第二损失函数来训练分类器,以进一步识别训练图表中的第二层级结构或关系,对于其他层以此类推。可以将一个或多个分类器层级(例如160c)实现为变换器神经网络。[0077]在一些部署中,可以针对相应类别的文档(例如,制造跟踪单、库存报告、订单、运输日志、质量检验报告等)训练多个ml分类器,并且可以将接收的文档确定为属于特定类别,并且可以调用适当的ml分类器。在其他示例中,可以在阶段102或之前定义给定类别的字段模式(schemaoffield),并在阶段104使用该字段模式以将输入文档的标记识别为相应预定义字段的实例。识别的字段可用于使用来自输入文档的内容填充一个或数据库记录。替代地或附加地,可以存储结构图表,或者将其返回给请求的客户端。[0078]示例数据流程图[0079]图2是根据所公开的技术的示例的数据流程图200。该图从输入210、220进行到输出270、280。数据项目210可以是训练语料库,而数据项目220可以是特定应用的配置数据。对于训练文档集合中的每一个,训练语料库210可以包括与文本标记对应的输入特征和限定结构图表的输出标签。配置数据220可以指定试图在文档内识别的字段或关系,或者ml分类器的参数。参数可以包括限定神经网络的结构、输入或输出的格式化或用于训练的损失函数的参数。输出270可以是指示输入文档250的标记之间的关系的图表的表示。输出280可以是数据库的一个或多个记录,其中填充有由输入文档250的标记限定的值。在图2中,虚线205将活动的训练阶段(线205以上)与运行时阶段(线205以下)分开。[0080]可以将配置数据220和训练语料库210作为输入提供给过程框225,以获得经训练的神经网络230。过程框225可以类似于本文所述的框120。过程框225可以包括:当将相应的输入特征(例如,训练文档的标记)作为输入提供给神经网络时使用一个或多个损失函数通过反向传播来训练神经网络,以最小化预测训练语料库210的输出标签(例如结构图表)时的误差。可以存储经训练的神经网络230,并可以将其用于文本文档250的后续分析。[0081]在运行时,可以将原始文档250输入到过程框255,以获得预处理的文档260。原始文档250可以是物理纸张或电子文档,其格式例如为便携式文档格式(pdf)、文档的传真或扫描副本、文字处理器文件、数据库条目或纯文本文件。在各种示例中,预处理可以包括光学字符识别(ocr)、标记提取、词嵌入、命名实体识别(ner)、位置编码或其他元数据编码。这些功能中的某些功能可以从框255省略,或者可以合并到经训练的神经网络230中。预处理文档260可以包括原始文档250的相应标记的向量序列形式的输入记录。在一些示例中,过程框255可以类似于在此描述的框130的操作。[0082]预处理的文档250和经训练的神经网络230可被输入到框265,其中神经网络230可评估文档250以生成文档图表270。框265可类似于本文所述的框140。还可以将文档260和图表270输入到框275以更新数据库280。在框275处,可以将图表270用于将文档260或250的内容与数据库280的列进行桥接,从而可以将输入文档250的记录添加到数据库中,并根据结构图表270用输入文档250的内容适当地对其进行填充。[0083]可以实现多种变型或扩展。在一些示例中,词嵌入可以被包括在分类器神经网络的层中。在另外的示例中,文档图表270可以被存储在存储库中,或者被返回到从其接收原始文档250的客户端。在另外的示例中,框265处的文档评估结果可以用于动态地更新经训练的神经网络230以进行持续学习。[0084]第一文档示例[0085]图3a‑3d是示出根据所公开技术的示例的文档310的处理的示图301‑304。为了避免混乱,在图301‑304中没有重复用于相同项目的参考标记。图3a的示图301图示了原始文档310,其可以是从提供者“abc供应”购买科学器材的发货单,在该情况下科学器材为两个玻璃载片和一个显微镜。可以针对文本提取单个标记,例如“abc”、“供应”、“说明”、“玻璃”、“载片”等。此外,可以使用命名实体识别工具将某些文本标记(例如“日期”/“价格”)识别为命名实体。辅助表可用于存储<命名实体,原始文档文本>对,以允许在文档处理的后续阶段检索原始文档文本。[0086]图3b的图示302示出了在预处理和一级图表提取之后的文档310。为了说明的目的,命名实体在文本字段前带有前缀“f:”(例如“f:日期:”),或者在数字字段前带有前缀“n:”(例如“n:01/01/2020”)。图3b中的各个箭头说明了可以在此阶段确定的一些关系。许多单向箭头标识键‑值关系。这些包括日期标记“n:01/01/2020”作为键“f:日期”的值,“12345”作为键“f:发货单号:”,“1”和“2”作为同一键“f:数量”的不同值,“$22”和“$100”作为键“f:价格”的不同值,“显微镜”作为键“f:说明”的值,并且“$122”作为键“f:总计”的值。另外,几个双向箭头标识相应对字段之间的对等关系。这些包括将简单标记“abc”和“供应”标识为较大的复合标记的组成部分,并且“玻璃”和“载片”也是类似。几个对等关系扩展到循环或完全连接的组,例如“f:数量”,“f:说明”和“f:价格”。另一个循环由“1”、“显微镜”和“$100”形成,它们是单个行式项目记录的组成部分。最终,提供者地址标记“101”、“海森堡”、“路”、“家”和“乡”可以被确定为完全连接,为简化说明,在示图302中用点划线指示。单向和双向箭头或关系可以与结构图表的有向和无向边对应。[0087]基于这些关系,图3c的示图303示出了可以在文档310中识别的几个复合标记。这些包括提供者名称331,提供者地址332,文档日期333,文档标识符334,表标题335,描述标记336,表行式项目337和表总计338。使用复合标记331‑338作为输入文档310的附加标记,可以在连续的层级上重复识别关系和识别新的复合标记的过程,以构建文档310的结构图。[0088]转到图3d的示图304,可以在图表提取的第二层级识别以下关系。提供者地址332可以识别为提供者名称331的属性,如单向箭头所示,而行式项目336可以识别为键表标题335的值。同时,原始标记“2”、复合标记“玻璃载片”和原始标记“$22”可以识别为另一行式项目341。在图表提取的第三层级,行式项目341也可以识别为键表标题335的另一值。然后,可以将表标题335与其两个行式项目341、336分组在一起,以形成第三层级的复合标记,表342。最后,在图表提取的第四层级,可以将表总计338链接为表342的属性。[0089]示例映射[0090]图4是示出标记的映射的图400。在此图中,文本文档的标记被映射到先前定义的字段。[0091]文本文档410包括一系列标记420,包括标记“日期”422和“01.01.2020”424。这些标记可以在与本文所述的块255类似的过程块处通过对输入文档的预处理来确定。[0092]另外,可以在给定的应用中预定义多个文档字段440。一组这样的字段被示为名为x的键‑值对450(“k‑v对”)。该对包括键x.键452和值x.值454的字段。文档字段可以被预定义为类似于本文描述的220的配置数据的一部分。在一些示例中,字段440可以是文档字段的非结构化集合,而在其他示例中,字段440可以可选地被组织为如图所示的模式430的一部分。[0093]可以实现多种变型或扩展。在一些示例中,可以以类似于在图3的上下文中讨论的文档字段之间的关系的方式以层级结构方式组织模式430。为了说明,模式430可以包括具有属性为“表总计”338和“表标题”335的表(与表342对应)以及表的作为行式项目337、341的组成标记的层级结构。行式项目可以具有其他组成部分:数量(与“2”对应)、说明(例如336)和价格(与“$22”对应)。[0094]第二示例方法[0095]图5是示出了用于提取文档的图表结构的第二示例方法的混合图500。在对文档进行预处理之后,图表提取将在多个层级进行,最终导致文档的合并图表。[0096]原始文档510作为输入被提供到过程块511用于标记提取。参考图3a,诸如“abc”或“玻璃”的词或诸如“12345”的数字可以被识别为标记。在标记提取之后,可以在过程块513、515、517处执行附加的预处理操作。块513可以对文档510的标记执行命名实体识别。例如,诸如“发货单号”的文本字段或诸如“01.01.2020”的日期字段可以被识别为命名实体。因此,字符串标记“01.01.2020”可以由对应命名实体的标识符代替,为了易读起见,在此表示为“n:01.01.2020”。在过程块515处,可以使用词嵌入来对标记进行编码,以使用诸如word2vec的工具或等效工具来获得每个词标记的相应向量。在块517处,可针对每个标记得出位置编码,以指示该标记在原始文档510中的空间位置。为了说明,图3a中的标记“abc”的位置编码可指示其质心位置具有距页面的左边的水平坐标0.7”和距页面的顶部的垂直坐标为0.5”。[0097]然后,可以组合一个或多个预处理器511、513、515、517的输出以获得分类器523的第一层级的输入记录520。可选地,还可以使用来自原始文档中的某些数据以构建输入记录520。为了说明,记录520可以是向量序列,每个向量表示文档510的对应标记。记录520的每个输入向量可以包括对应标记的词嵌入表示,以及位置编码信息,和可选的其他元数据,例如字体大小、样式或颜色。对于一维位置编码(即,将文档510表示为标记的线性序列),可以将位置编码信息加(叠加)在词嵌入向量上,或者可以与词嵌入向量级联。然而,对于二维或三维位置编码,可以优选级联,以避免在词嵌入向量内映射多维位置信息时出现间断或其他问题。[0098]输入记录520可以由第一级别图表提取块523处理以提取第一级别图表524。图表提取块523可以是神经网络,例如变换器神经网络。作为说明,输出的第一层级图表524可以包括图3b中标识的那些关系的边。在一些示例中,可以由实体识别模块525评估第一级别图表524,以识别图表524中的预定义文档字段,并且这些识别出的字段可以用于标记图表524的对应顶点或对其打标签。[0099]然后,可以使用第一层级的输入记录520和第一层级图表结构524来构造第二层级输入记录530。在一些示例中,可以将图表524中识别的复合标记作为新标记附加到输入记录520。在其他示例中,复合标记可以替换其组成的简单标记。为了说明,提供者名称标记(其值为“abc供应”)可以替换两个单独的标记“abc”和“供应”。[0100]第二层级输入记录530的处理可以类似于先前的层级进行。也可以是神经网络的第二层级图表提取模块533可以提取第二层级图表534,并且模块535可以识别其他实体,并且可以相应地对图表534的顶点打标签。[0101]可以类似地构造第三层级输入记录540,其中来自图表534中的分组标记的新标记以任意组合用于扩展第二层级输入记录530,或用于替换每组的组成标记。[0102]第三层级输入记录540的处理可以类似于前一层级进行。也可以是神经网络的第三层级图表提取模块543可以提取第三层级图表544。模块545可以识别其他实体,并且可以相应地对图表544的顶点打标签。[0103]最后,可以将图表524、534、544合并以形成合并的图表550,该合并的图表550可以并入多个层级的结构。[0104]总而言之,可以通过预处理输入文本文档510以生成第一层级输入记录520来获得第一层级输入,其可以包括表示文档510的相应标记的输入向量序列。在每个层级523、533、543处,可以用相应的神经网络处理相应的输入记录520、530、540,以生成文档的图表结构的一部分524、534、544。对于第一层级523之后的层级,即在后续层级533、543,可以从先前层级的输入记录520、530和先前层级的输出图表部分524、534得出对应的输入记录530、540。最后,可以形成并输出可以包括图表部分524、534、544的合并图表结构550。[0105]可以实现多种变型或扩展。例如,尽管图5说明了图表提取的三个层级,但这不是必需的,并且可以使用其他层数,范围从2到10个层级,或者有时是3到5个层级。在不同示例中,图表550可以存储在存储器中或持久性存储装置中,通过网络发送到从其接收文档510的客户端,或者如本文进一步所述,用于将文档510的内容存储在数据库中。尽管图5示出了图表提取的分离阶段,其中每个提取块523、533、543可以由不同的神经网络来实现,但这不是必需的。在一些示例中,可以在单个(较大)神经网络内组合两个或更多个提取块。可选地,预处理块511、513、515、517或实体识别块525、535、545中的一个或多个也可以被嵌入在以虚线轮廓示出的神经网络、混合或其他分类器560内。在一些示例中,可以使用作为输入文档510提供的原始训练文档和作为输出训练标签的训练图表550来端对端地训练完整的多级分类器560。[0106]示例变换器神经网络[0107]图6是图示适合于在公开的实施例中使用的变换器神经网络610(“变换器”)的一组图601‑603。类似于610的所示神经网络可被不同地用于实现分类器160、160c,230、510、523、533、543或本文所述的其他分类器的至少一部分。[0108]图610示出了变换器610在应用中的整合,变换器610联接成接收输入记录605并输出输出记录695。输入记录605可以类似于本文所述的输入记录161、260、510、520、530或540中的任何一个,而输出记录695可以类似于本文所述的输出记录169、270、510、524、534或544中的任何一个。在一些示例中,输入记录610可以包括表示源文本文档的多个标记的相应特征,或者当添加复合标记或从先前层级的输入记录去除较低层级的标记时,包括数量更多或更少的特征。输入记录605中标记的数量在图601中表示为n。在一些示例中,变换器可以具有统一宽度的数据路径,并且输出615、695也可以被组织为n个向量。[0109]附加输出层690可以联接到变换器610的输出615,以将输出615格式化为期望的分类标签。输出层690可以执行三角形和矩形输出阵列之间的变换或阈值化,以便可以在输出记录695中将输出615中阈值以下的加权输出分量设置为零(无关系)。[0110]描述转向图602,该图示出了作为编码器612、614,…618的序列的变换器610的一种可能的结构。在不同示例中,编码器的数量可以从6到24,从9到18变化,或大约是12。[0111]图603又示出了编码器614的一种可能的结构。图602的其他编码器可以具有类似的结构。自注意力层621(将在下面进一步描述)接收输入631a‑631z,其可以为n宽以匹配输入记录605。加‑标准化层623可将自注意力层621的输出加至输入631a‑631z的旁路副本,并且可以标准化产生的记录。前馈层625可以从层623接收输入635a‑635z。第二加‑标准化层627可以将前馈层的输出加到如图所示的前馈输入635a‑635z的旁路副本,并且可以对结果进行标准化。层627的输出是记录639a‑639z,其形成编码器614的输出。自注意力层621和前馈层625包含权重系数矩阵,其可以在训练阶段(例如102)或过程块(例如225)期间学习。[0112]自注意力矩阵操作[0113]作为第一例示,描述了单头自注意力函数(single‑headedself‑attentionfunction)。输入记录631a‑631z可以是n个向量的序列。在不同的应用中,根据特定文档类别的最大预期大小,n的范围可以从约25=32到约219=524288。在此例示中使用了n=512。每个向量可以具有e个分量,其可以包括长度为20‑1000(通常为50‑500或100‑200)的词嵌入向量以及用于位置编码或元数据的可选附加分量。附加分量的数量可以从0到大约10,通常具有2个位置编码分量和0‑1个元数据分量。在此例示中,e可以为120,因此输入记录605是512个向量的序列,每个向量的长度为120个分量。可以类似地设置在层之间传送的其他记录(例如631a‑631z、635a‑635z、639a‑639z)的大小。[0114]自注意力层621可以包括键矩阵和值矩阵k1、v1,以匹配被称为矩阵q1的输入记录631a‑631z的大小512×120。为了减少自注意力层621内的计算,可以使用权重矩阵wq、wk、wv来将输入的维数从e=120减小到例如e′=60。然后,可以将大小为n×e′的较小矩阵q2、k2、v2计算为q2=q1×wq、k2=k1×wk、v2=v1×wv,其中,矩阵wq、wk、wv中的每一个可以具有大小e×e′。然后,可以将示例自注意力函数计算为z3=softmax{c2·(q2×k2t)}×v2,其中,c2是缩放常数,并且z3的大小为n×e′。最后,可以使用大小为e×e′的另一个权重矩阵wz,使用z4=z3×wzt来恢复输出z4633a‑633z的大小。[0115]描述了具有多头自注意力层621的第二例示。多个注意力头可以提供不同的识别能力。作为示例,一个经训练的头可以支持对水平链接标记的检测,而另一个经训练的头可以支持对列字段的检测,第三经训练的头可以支持对在语法上相关的文本标记的识别,并且第四经训练的头可以支持对文档中的键‑值对的识别。通常,可以使用4‑20个注意力头,通常使用6‑12个头,或大约8‑9个头。对于每个注意力头,可以针对每个头定义单独的q1、k1、v1矩阵。与单头注意力函数相比,可以使用较小的e′值,这可以认为原因是由于多个头中的每个需要学习的知识量较小。反过来,这可以显著减少计算负担。在所示的示例中,可以使用8个头并且e′=30。因此,对于h=1:8中的每一个,可以如上所述计算z3,z3h=softmax{c2·(q2h×k2ht)}×v2h。最后,z4=[z31z32…z38]×wzt可用于将8个头合并为单个输出记录,其中,方括号表示z3h矩阵的水平级联,并且wz表示大小为e×(8e′)的权重矩阵,并恢复输出z4633a‑633z的期望大小n×e。[0116]除了设置变换器610及其组成部分的大小变化之外,还可以实现多种变化或扩展。除软性最大值(softmax)以外的判别式也可用于自注意力计算。还可以引入其他层或函数,例如整流线性单元(relu)或旁路。变换器610可以支持中间输出用于诊断目的。[0117]第二文档示例[0118]图7a‑7d是示出示例文档的处理的图701‑704。在该示例中,文档可以是实验室执行的过程的报告。图701‑704示出分类器输出编码文档标记之间的关系(图表边),以及将标记组组成为复合标记。[0119]图7a示出了原始文档710,其中标记711‑714、721‑723和731‑733用虚线轮廓标记。标记711‑712是提供者名称的片段,标记713‑714是文档日期的组成部分,标记721‑723是表标题的组成部分,并且标记731‑733是表行式项目的组成部分。在该示例中,大写(例如,providername(提供者名称))用于表示已经为文档预定义的字段,例如作为诸如220的配置数据的一部分。为了清楚说明,这样的字段在说明中被一致地使用;但是,这些标记中的一些或全部将仅在图表提取期间或之后映射到它们各自的字段。[0120]图7b示出了针对文档710从第一层级分类器输出的图表的一部分702。该图表被表示为每个标记711‑714、721‑723、731‑733的列向量的阵列720。阵列720的每一行还与列向量可能与之具有关系的相应标记711‑714、721‑723、731‑733对应。在所示的编码中,零指示列标记与行标记没有关系。阵列720中的非零值可以指示标记之间的关系,并且可以限定文档的结构图表的边。[0121]作为关系的一个示例,标记714的列(或简称为列714)在标记713的行(简称为行713)中具有条目“22”,指示标记714(“01/01/2020”)与标记713(“日期:”)有关系。由于列713在行714中具有“0”,因此这两个标记之间的关系是方向性的,可以表示为713←714。代码“22”可以指示键‑值关系,即“01/01/2020”是“日期:”键的值。键‑值关系是有向关系的示例,并且边713←714的代码“22”可以表示图表720的有向边。[0122]作为关系的另一示例,列711、712在彼此的行中具有条目“11”,指示可以被表示为的对称关系。代码“11”可以指示对等关系,即“def”和“laboratory(实验室)”是彼此的对等。(这些标记随后可以标识为providername(提供者名称)。)对等关系是无向关系的示例,并且边的代码“11”可以指示图表720的无向边。[0123]在图7b的例示中,所有列向量都具有相同的长度,并且在对角线上方和下方的镜像位置支持方向性关系。然而,这不是必需的,并且在其他示例中,可以保留阵列720内的仅上三角矩阵或仅下三角矩阵。在一些示例中,仅可以支持无向关系,并且可以仅使用三角形矩阵之一。在其他示例中,编码可以指示方向性关系的方向,例如,列714行713处的“22”可以指示关系713←714,而“‑22”可以用于指示相反的关系714←713。仅使用三角矩阵(另请参见图1的输出169)的优势是减少了实现分类器层的神经网络的大小,并伴随着需要较少的存储和需要较少的计算的运行时的益处。在一些示例中,使用三角矩阵可能需要大约或最多保留整个矩阵的计算的一半。[0124]作为关系的其他示例,标记731‑733具有彼此对等关系的循环,在阵列720的对角线的上方和下方都被编码为“11”。这些标记是随后可能被识别为表行式项目的内容的字段。类似地,标记721‑723具有彼此对等关系的循环,因为它们是随后可能被识别为表标题的内容的标记。(三个或更多个标记之间的对等关系通常可以形成循环。)此外,行式项目标记731‑733与表标题标记721‑723可以具有“是其值(is‑a‑value‑of)”关系(代码“22”),如在阵列位置721←731、722←732、723←733中由关系码“21”所指示。[0125]为了说明清楚起见,以阴影线示出了阵列720中的对角位置(例如,列711,行711;列712,行712;等等),但是实际上这些位置可以被编码为“0”以指示标记与其自身之间或与另一个值之间没有关系。[0126]转到图7c,图703是文档701的表示,示出了对图7b的图表表示(阵列720)中或来自该表示的某些字段的识别。实线轮廓(例如标记711、712)指示输入分类器的第一层级的标记,并且连接它们的箭头表示在图720中确定的关系,例如虚线轮廓指示可能被识别为第一层级图表提取的一部分的复合标记。这些复合标记(例如,providername(提供者名称)741或lineitem(行式项目)744)可以作为复合标记添加到输入记录(例如,类似于记录530)中,以用于一个或多个进一步层级的图表提取。[0127]在一些示例中,可以在神经网络内(例如,在过程块523处)确定复合标记,而在其他示例中,可以在图表提取之后确定复合标记,例如,在过程块525处。在其他示例中,可以在这些或其他过程块之间分割实体识别。可以在图7a‑7c的情景中描述几种不同的情况。[0128]在第一示例中,经训练的分类器可以识别文档右上角附近的日期(标记714)属于文档日期742。也就是说,阵列720中返回的代码22不仅可以指示“是[键]的值”,而且可以进一步指示“是[键]的文档日期值”。在第二示例中,分类器可以简单地识别713←714是键‑值对,并且类似于块525的实体识别块可以针对预定义字段评估键‑值对以识别该特定键‑值对是文档日期742。在第三示例中,可以通过诸如513的预处理块来辅助实体识别,其中可以将标记“日期:”识别为命名实体,如在图3b的情景中所述。[0129]在第四示例中,可以将之间的对等关系与721←731、722←732、723←733之间的键‑值关系的组合一起用于推断731‑733是行式项目744。其他第一层级字段提供者名称741和表标题743的识别可以类似地进行。[0130]图7c还示出了更高层级的关系和字段,更高层级的字段由虚线轮廓指示。在第二层级,可以将行式项目744识别为键表标题743的值,如箭头743←744所示。一起地,相关复合标记743、744可以被识别为表745。在一些示例中,在确定所有标记关系之后,可以通过将每个顶级别标记741、742、745链接到根标记750,来将图表的不相交部分连接在一起,从而涵盖整个文档710。[0131]图7d示出了具有部分720、728、782、788的阵列704,其中新复合标记的引入将相应的行和列添加到图7b的阵列720中。标记711和712两者被编码为具有关系代码“31”的提供者名称741的组成部分。类似地,标记731、732、733被编码为具有关系代码“51”的表标题743的组成部分。关系代码还可以区分复合标记的不同组成部分。通过不同的关系代码“41”(键)和“42”(值)分别将标记713、714指示为文档日期742的键和值。类似地,标记731‑733可以用关系代码61‑63编码,以分别指示行式项目744的步骤、说明和时间值。最后,复合标记之间的关系也可以填充到阵列740中。当行式项目744被确定为表标题743的值时,关系743←744可以被编码为“21”,如图所示。类似地,表标题743和行式项目744可以用如图所示的相应代码71、72分别被表示为表745的标题和成员。[0132]为了清楚说明,分解地示出了阵列704的部分720、728、782、788,但是它们可以被收集或合并为单个阵列704。可以在图表提取过程的不同层级或过程块确定各个部分720、728、782、788。例如,阵列720可以由第一层级分类器在过程块523处输出,阵列部分782可以由实体识别在过程块525处确定,而阵列部分788可以在图表提取的更高层级确定。阵列的单个部分可以在图表提取的两个或更多个层级的每个层级中部分确定。[0133]可以实现多种变型。尽管示出阵列部分728没有关系(全零),但这不是必需的。在其他示例中,稍后确定的字段(例如,行式项目)可以与先前确定的字段(例如,表标题)具有有向关系。如果行式项目的结构比之前识别的表标题更复杂,则可能会出现这种情况。在另外的示例中,列向量的每个分量可以是具有多个组成部分而不是单个数字的数据结构。例如,元组可用于传达关系类型(例如键‑值)、临时匹配字段(例如文档日期)、进行确定的置信度或其他元数据。[0134]第三文档示例[0135]图8a‑8b是示出作为实验室记录的第三文档810的结构提取的图。图8a示出了文档810的相关部分,展示了对样品执行的一系列操作。执行两个操作循环,每个循环包括浸泡操作821、822;干燥操作831、832和烘焙操作841、842,时间以小时列出:每个操作的分钟数(20分钟、40分钟等)。在文档的底部,小节记录823、833、843分别计算了浸泡所花费的总时间(0:20 0:40=1:00),干燥所花费的总时间(0:45 0:53=1:38),以及烘焙的总时间(1:15 2:25=3:40)。最终记录853计算了总过程时间(1:00 1:38 3:40=6:18)。[0136]在浸泡记录821‑823周围绘制边界824。必要地,此边界包含干燥时间记录831‑832,烘焙时间记录841‑842,或者甚至是总干燥记录833的一部分。浸泡记录821‑823、干燥记录831‑833和烘焙记录841‑843的边界矩形之间没有明确的分隔。这样的文档组织非常普遍,可能会对于使用文档区域的几何区分来提取结构的方法提出了挑战。[0137]图8b示出了相同的文档810,其具有由所公开的技术处理的浸泡时间字段。为了清楚说明起见,尽管仍存在于文档810中,但从图8b中省略了干燥时间记录831‑833和烘焙时间记录841‑843的文本。如虚线轮廓所示,在图表提取的第一层级,相邻标记(例如,“浸泡”和“时间”)的对可以被识别为具有对等关系,并且可以用复合标记825、826、827和855代替,类似于文档310、710和本文所述的其他示例的处理。在图表提取的第二层级,可以将复合标记825识别为时间值“0:20”的键,继而导致形成整个记录821的复合标记,并且对于记录822、823、853也是类似。在图表提取的第三层级,可以确定记录812、822的标记之间的对等关系861,并且可以从标记812、822到823中的每个标记确定方向性部分关系(directionalis‑a‑part‑ofrelationships)。因此,可以基于在第三层级识别的关系来识别整个浸泡时间表824。另外,可以识别从标记823到853的另一部分关系(anotheris‑a‑partofrelationship)(箭头865)。[0138]干燥时间和烘焙时间记录831‑833、841‑843可以与浸泡时间记录821‑823并行地被处理,从而导致类似于浸泡时间表824的相应表(未示出),以及另外的从记录833、843到总计记录853的部分方向性关系。因此,在第三层级之后,可以识别包含记录823、833、843、853的另一个结构。在此例示中,单个标记(复合标记823)可以直接是分别表示浸泡表824和小节表854的两个不同文档字段824、854的一部分。也就是说,彼此不属于一部分的文档字段824、854可以共享公共组成标记823。这种识别具有公共标记的多个互锁结构的能力超出了限于确定树图表的常规技术的能力。[0139]示例数据库[0140]图9是示出根据所公开的技术的示例的关系数据库的三个表910、920、930的图,并且在图7的文档710的上下文中对其进行描述。表910、920、930可以存储在存储器中或存储设备上。为了图示清楚起见,示出了相应的标题914、927、934,但是不必与存储在存储器中或存储设备上的相应表910、920、930包括在一起。在处理每个文档710时,可以将提取的结构化内容作为记录添加到这些表910、920、930中的一个或多个中。数据库表910、920、930可以存储在数据库管理系统中。[0141]表910可以是与数据库中的文档关联的提供者的表,并且对于多个文档提供者中的每一个可以具有一个记录(行)915。表910被示为具有三个示例性列,提供者键911(“p.002”),其可用于链接其他表中的提供者记录;提供者名称912(“def实验室”),其与从文档710中提取的提供者名称复合标记741匹配;以及提供者地址913,其也与文档710内容匹配。[0142]表920可以是列出组织在数据库内的各种文档的表,并且针对数据库中的每个文档可以具有一个记录(行)928。示出的示例性列包括:文档键921“(d.006”),其可用于将文档链接到其他关系表;和提供者键925“(p.002”),其可链接回到提供者表910中的对应记录915中。表920的其他列可以包括从文档710获得的文档日期923(“01.01.2020”);存储文档的文档文件名924(“def53322.log”);和分配给在文档710中检测到的特定表标题743的table_id926(“0035”)。另一列文档类型922(“日志”)可以将表分类为日志(例如,对样品执行的过程的日志)。在不同示例中,文档类型可以从结构提取中确定,例如,基于识别的表标题743;可以基于文件扩展名(“.log”)或文档内容中未包含的其他元数据确定;或可以与特定的经训练的分类器(例如560)关联。也就是说,在给定计算环境中,单个数据库可以存储各种文档类别的数据(例如日志、发货单、生产路线单、质量保证证书),并且每个文档类别可以具有相应的分类器,以提取该文档类别的结构化内容。[0143]表930可以是存储从文档710提取的表745的结构化内容的数据库表。示出的示例性列931‑933可以与表标题743的字段对应,并且行914‑915可以存储从文档710的行式项目提取的内容。[0144]第三示例方法[0145]图10是用于将非结构化文档内容变换成结构化数据库内容的第三示例方法的流程图1000。在该方法中,从文档中提取图表并将其映射到数据库列,并且将结构化内容存储在数据库中。[0146]在过程块1010,可以使用经训练的ml分类器从文档中提取结构图表。该图表可以包括多个顶点,这些顶点具有由文本文档的内容限定的相应值。在不同示例中,过程块1010可以通过在图1‑3或图7的上下文中描述的一种或多种技术或其变型来执行。[0147]在过程块1020,可以将结构图表的一个或多个顶点映射到数据库的列。在图7和9的上下文中,从文档710提取的提供者名称复合标记741可以被映射到数据库表910的提供者名称列912。在一些情况下,两个或更多个图表顶点(例如,提供者名称和提供者地址)可以被映射到单个数据库表910的列,而在其他情况下,可以将两个或更多个图表顶点(例如,行式项目744的提供者名称、文档日期或步骤值“2”)映射到不同的表910、920、930。被映射到不同表的两个顶点(例如,文档日期742的值714和行式项目744的步骤值731)有时可以是文档710的结构图表704中不同的更高级字段(顶点)的组成部分。[0148]在过程块1030,可以将映射的顶点的相应值存储在数据库中。例如,提供者名称741的值可以是从文档710中提取的“def实验室”,并且该相同的值可以存储在表910中的记录915的对应列912处。对于诸如文档日期741的键‑值对,值714可以存储在表920中,而键715“日期:”可以省略,因为隐含在列“文档日期”中。在其他示例中,键‑值对的键可以与数据库表的列标签匹配。[0149]可以实现多种变型或扩展。例如,映射到数据库列的顶点可以具有作为命名实体的值。在某些情况下,命名实体(例如,图3b中的日期“n:01/01/2020”)可以保留在数据库内,而在其他情况下,可以将命名实体解码为原始文档内容(“01/01/2020”)或等效内容(例如“01.01.2020”或日期的整数表示)。在某些示例中,可以维护辅助数据结构以允许从复合标记追溯到其组成的简单标记或从命名实体追溯到原始文档文本。[0150]可以将记录(例如915)添加到文本文档710的数据库表(例如910)中。对于结构图表(例如704)的多个顶点(例如提供者名称741或提供者地址),可以识别表910的相应列(例如912、913)。由顶点(例如提供者名称741或提供者地址)表示的标记限定的值(例如“def实验室”、“薛定谔大街101号,科学城”)可以存储在记录915的所识别列处,如图9所示。[0151]在其他示例中,可以将另一个记录(例如927)添加到关系数据库环境(例如图9中所示)的第二数据库表(例如920)中。顶点文档日期742表示的标记(例如714)的值(例如“01.01.2020”)可以存储在第二表(920)的对应列(例如923)处,如图9所示。[0152]附加示例特征[0153]1.字符级输入[0154]本文描述的一些示例以表示词或命名实体的特征的形式向图表提取分类器提供输入;但是,这不是必需的,也可以使用其他标度的输入。例如,可以以诸如在空间上标记的字符阵列(例如,二维字符阵列,称为“字符网格”)的形式在字符级提供输入,并且相邻字符之间的第一层级关系可以用于识别词。这在字母和数字混合而没有空格分隔符的文档(例如,标记“v2”作为“版本2”的缩写)中可能很有利,用于处理拼写错误、用于处理标点符号不规则(例如量及其单位之间缺少的空格,诸如温度和时间量的“70f”或“10s”)、用于识别不常用的复合词(例如,“cabdriver”)、用于混合语言文档、用于除词之外还具有有意义的文本的文档(例如,机票上的代码)。在其他示例中,可以以较大的单位(例如句子,段落或表格行)提供输入,并且图表提取工具的初始任务可以是将句子或表格行解析为简单标记。初始解析还可以解析这些标记之间的某些关系。[0155]2.计算的分布[0156]本文描述的一些示例利用层级结构的结构提取来从文档内容中渐进地识别或构建更大的结构。一旦针对给定较低层级标记确定了所有关系,就可以从较高层级的图表提取中省略这样的标记。例如,一旦已经识别出供应商地址332,后续层级就可以省略各个简单标记“100号”、“海森堡”等。以这种方式,在较高层级的图表提取处的输入记录的长度可以显著短于原始文档中简单标记的数量。[0157]在较低层级的图表提取中,可能希望保留所有简单标记。然而,可以采用其他技术来减少较低层级的计算量,例如通过减少较低层级处神经网络中权重矩阵中非零权重系数的数量。在一些示例中,每个简单标记可以具有用于识别第一层级甚至第二层级关系的受限范围。受限范围可以基于位置编码。为了说明,参考图3b,数字“2”可以与第一层级处的表格列标题“f:数量”以及第二层级处的“玻璃载片”关联,但是“2”与例如“f:价格”或“n:01/01/2020”之间的直接关系的可能性很小,并且可以将对于“2”的关系评估限制为标记“2”的位置周围的垂直和水平带。在其他示例中,受限范围可以基于字体、其他元数据或部分或页面边界。[0158]因为评估n个标记之间的关系通常需要o(n2)次计算,所以调整可以在其上识别关系的空间(例如距离标度)可以在减少较低层级的结构提取的图表提取计算方面具有有效性。计算可以更均匀地分布在图表提取的几个层级之间,以全面提高计算效率。[0159]3.所公开的实施例的用法[0160]在一些示例中,所公开的技术可以被部署在客户端‑服务器架构中,其中客户端发出对给定文本文档的结构提取的请求。该请求可以伴随文本文档或文本文档的链接。服务器可以接收请求并根据请求采取动作,以从文本文档中提取结构化内容的图表。在不同示例中,结构化内容可以以任何组合以图表的形式返回给进行请求的客户端,可以存储为在存储库中的图表,或者可以分布存储在数据库环境中一个或多个数据库表的列之间。服务器可以向进行请求的客户端返回通知,指示成功完成请求,或者可以返回异常,指示对该类别的文本文档支持不足。在其他示例中,服务器可以将所公开的技术实现为saas(软件即服务)模型中的服务,可以从远程或客户端侧应用调用该模型。[0161]在另外的示例中,公开的技术可以从控制台进行操作,并且可以被引导为处理一组文件,例如文件夹或其他存储库中的所有文件(可选地匹配过滤条件)。[0162]所公开的技术的训练和运行时部分可以分开部署。因此,在另外的示例中,所公开的技术可以被部署为用于在给定文档类别的训练语料库上训练ml分类器的服务。该服务可以包括确定最佳超参数和配置参数,以利用尽可能少的矩阵、编码器层、词嵌入长度等来提供高效的计算,以满足期望的性能目标。经训练的分类器可以通过网络传输,以在客户端控制或可访问的一个或多个位置进行后续实现。[0163]一般计算机环境[0164]图11示出了合适的计算系统1100的一般示例,在其中可以根据所公开的技术来实现所描述的示例、方法和技术,包括文档结构提取管线或其软件组件的构造、部署、操作和维护。由于可以在各种通用或专用计算系统中实现本发明,因此计算系统1100无意于暗示对本公开的使用范围或功能的任何限制。[0165]参考图11,计算环境1110包括一个或多个处理单元1122和存储器1124。在图11中,该基本配置1120包括在虚线内。处理单元1122执行计算机可执行指令,诸如用于实现本文描述的用于提取文档的结构化内容的任何方法或对象,或者本文描述的各种其他架构、软件组件、处理程序、管理器、模块或服务。处理单元1122可以是通用中央处理单元(cpu)、专用集成电路(asic)中的处理器或任何其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。计算环境1110还可以包括图形处理单元或协处理单元1130。有形存储器1124可以是处理单元1122、1130可访问的易失性存储器(例如,寄存器、高速缓存或ram);非易失性存储器(例如,rom、eeprom或闪存)或它们的某种组合。存储器1124以适于由(一个或多个)处理单元1122、1130执行的计算机可执行指令的形式存储实现本文所述的一个或多个创新的软件1180。存储器1124还可以存储权重矩阵、输入、输出或中间记录;命名实体库;词嵌入数据集;预定义的文档字段或这样字段的模式;其他配置数据、数据结构,包括数据表、工作表、更改日志、输出结构、数据值、索引或标志,以及其他操作数据。[0166]计算系统1110可以具有其他特征,例如存储装置1140、输入设备1150、输出设备1160或通信端口1170中的一个或多个。互连机构(未示出),例如总线、控制器或网络,互连计算环境1110的硬件组件。通常,操作系统软件(未显示)为在计算环境1110中执行的其他软件提供操作环境,并协调计算环境1110的硬件和软件组件的活动。[0167]有形存储装置1140可以是可移动的或不可移动的,并且包括磁盘、磁带或盒、cd‑rom、dvd或任何可用于以非暂时性方式存储信息并且可以在计算环境1110内访问的其他介质。存储装置1140存储实现本文所述的一个或多个创新的软件1180(包括指令和/或数据)的指令。[0168](一个或多个)输入设备1150可以是机械的、触摸感测的或接近感测的输入设备,诸如键盘、鼠标、笔、触摸屏、轨迹球、语音输入设备、扫描设备或将输入提供到计算环境1110的另一设备。(一个或多个)输出设备1160可以是显示器、打印机、扬声器、光盘写入器或提供来自计算环境1110的输出的另一设备。[0169](一个或多个)通信端口1170使得能够通过通信介质与另一计算设备进行通信。通信介质在调制数据信号中传达诸如计算机可执行指令或其他数据的信息。调制数据信号是使其一个或多个特性以在信号中编码信息的方式被设置或更改的信号。作为示例而非限制,通信介质可以使用电、光、rf、声或其他载体。[0170]在一些示例中,计算机系统1100还可以包括计算云1190,在该计算云1190中执行实现全部或部分所公开的技术的指令。存储器1124、存储装置1140和计算云1190的任何组合可以用于存储所公开技术的软件指令或数据。[0171]可以在一般计算机可执行指令的上下文中描述本发明,计算机可执行指令诸如包括在程序模块中的计算机可执行指令,其在目标实体或虚拟处理器上的计算系统中执行。通常,程序模块或软件组件包括执行任务或实现特定抽象数据类型的例程、程序、库、软件对象、类、数据结构等。在各种实施例中,程序模块的功能可以根据需要在程序模块之间进行组合或拆分。用于程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。[0172]术语“系统”、“环境”和“设备”在本文中可互换使用。除非上下文另外明确指出,否则这些术语均不暗示对计算系统、计算环境或计算设备的类型进行任何限制。通常,计算系统、计算环境或计算设备可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件和/或虚拟化硬件的任意组合,以及实现本文所述功能的软件。虚拟处理器、虚拟硬件和虚拟化设备最终体现在硬件处理器或物理计算机硬件的另一种形式中,因此既包括与虚拟化关联的软件,又包括底层硬件。[0173]示例云计算环境[0174]图12描绘了其中可以实现所描述的技术的示例云计算环境1200。云计算环境1200包括包含资源并提供服务的计算云1290。计算云1290可以包括各种类型的云计算资源,例如计算机服务器、数据存储库、联网资源等。计算云1290可以是位置集中的(例如,由企业或组织的数据中心提供)或是分布式的(例如,由位于不同位置(例如,不同数据中心和/或位于不同城市或国家)的各种计算资源提供)。[0175]计算云1290可以操作性地连接到各种类型的计算设备(例如,客户端计算设备),诸如计算设备1212、1214和1216,并且可以向其提供一系列计算服务。计算设备1212、1214和1216中的一个或多个可以是计算机(例如,服务器、虚拟机、嵌入式系统、台式计算机或膝上型计算机);移动设备(例如,平板计算机、智能电话或可穿戴设备);或其他计算设备的类型。计算云1290与计算设备1212、1214和1216之间的通信链接可以是有线、无线或光链接或者它们的任意组合,并且可以是寿命短或持久的。通信链接可以是连续的,或者是零星的。这些通信链接可以是固定的,也可以随着时间的推移而移动,通过变化的路径实现,并且在每个端具有不同的附接点。计算设备1212、1214和1216也可以彼此连接。[0176]计算设备1212、1214和1216可以利用计算云1290获得计算服务并执行计算操作(例如,数据处理、数据存储等)。特别地,用于执行所描述的创新技术的软件1280可以在计算云1290中;在计算设备1212、1214和1216中;或在云和计算设备的分布式组合中驻留或执行。[0177]一般注意事项[0178]如在本公开中使用的,单数形式“一”、“一个”和“该”包括复数形式,除非上下文的语言另外明确指出。另外,术语“包含”和“合并”的意思是“包括”。此外,术语“联接”或“附接”涵盖将项目联接在一起的机械、电、磁、光学以及其他可行方式,并且不排除在联接项目之间存在中间要素。此外,如本文所使用的,术语“或”和“和/或”是指短语中的任何一个项目或项目的组合。[0179]尽管为了方便呈现,以特定的依序顺序描述了一些所公开的方法的操作,但是应当理解,这种描述方式包括重新布置,除非下文阐述的特定语言要求特定的顺序。例如,顺序描述的操作在某些情况下可以重新布置或同时执行。而且,为了简单起见,附图可能未示出可以将所公开的事物和方法与其他事物和方法结合使用的各种方式。此外,描述有时会使用诸如“添加”、“聚合”、“分析”、“附加”、“应用”、“计算”、“调用”、“分类”、“组合”、“组成”、“计算”、“级联”、“配置”、“合并”、“构建”、“解码”、“得出”、“确定”、“显示”、“嵌入”、“编码”、“评估”、“执行”、“提取”、“形成”、“生成”、“分组”、“识别”、“并入”、“输入”、“联接”、“打标签”、“学习”、“链接”、“列出”、“循环”、“映射”、“匹配”、“合并”、“标准化”、“获得”、“输出”、“执行”、“填充”、“预测”、“预处理”、“处理”、“提供”、“接收”、“识别”、“去除”、“替换”、“请求”、“返回”、“检索”、“选择”、“发送”、“设置”、“存储”、“标记”、“测试”、“训练”、“变换”、“传输”或“使用”之类的术语来指示计算机系统中的计算机操作。这些术语表示计算机执行的实际操作。与这些术语对应的实际操作将根据特定的实施方式变化,并且本领域的普通技术人员可以容易地辨别。[0180]本文中参考本公开的装置或方法而呈现的操作理论、科学原理或其他理论描述是出于更好地理解的目的提供的而不是旨在限制范围。所附权利要求中的装置和方法不限于以由这样的操作理论描述的方式起作用的装置和方法。[0181]任何公开的方法可以被实现为存储在一个或多个计算机可读存储介质(例如有形的、非暂时性计算机可读存储介质)上的计算机可执行指令或计算机程序产品,并在计算设备(例如,任何可用的计算设备,包括平板计算机、智能电话或其他包含计算硬件的移动设备)上执行。有形计算机可读存储介质是可以在计算环境中访问的任何可用有形介质(例如,一个或多个光学介质盘,例如dvd或cd;易失性存储组件(例如dram或sram);或非易失性存储组件(例如闪存或硬盘驱动器))。举例来说,参考图11,计算机可读存储介质包括存储器1124和存储装置1140。术语计算机可读存储介质不包括信号和载波。另外,术语计算机可读存储介质不包括通信端口(例如1170)或通信介质。[0182]用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据都可以存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用或通过网络浏览器访问或下载的软件应用或其他软件应用(例如远程计算应用)的一部分。这样的软件可以在例如单个本地计算机(例如,任何合适的商用计算机)上或使用一个或多个网络计算机在网络环境(例如,通过互联网、广域网、局域网、客户端‑服务器网络、云计算网络或其他这样网络)中执行。[0183]为了清楚起见,仅描述了基于软件的实施方式的某些选择的方面。省略了本领域公知的其他细节。例如,应当理解,所公开的技术不限于任何特定的计算机语言或程序。例如,可以通过用abap、adobeflash、angular、c、c 、c#、curl、dart、fortran、go、java、javascript、julia、lisp、matlab、octave、perl、python、r、ruby、sas、spss、webassembly、它们的任何派生语言或任何其他合适的编程语言;或者在某些示例中是诸如html或xml的标记语言;或者合适的语言、库和包的任何组合编写的软件来实现所公开的技术。同样,所公开的技术不限于任何特定的计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。[0184]此外,任何基于软件的实施例(例如,包括用于使计算机执行任何公开的方法的计算机可执行指令)都可以通过适当的通信手段上传、下载或远程访问。这样的合适的通信手段包括例如因特网、万维网、内联网、软件应用程序、缆线(包括光缆)、磁通信、电磁通信(包括rf、微波、红外和光通信)、电子通信或其他此类通信手段。[0185]所公开的方法、装置和系统不应解释为以任何方式进行限制。而是,本公开单独地并且以彼此的各种组合和子组合涉及各种公开的实施例的所有新颖的和非显而易见的特征和方面。所公开的方法、装置和系统不限于任何特定方面或特征或其组合,所公开的实施例也不要求存在任何一个或多个特定优点或解决问题。任何示例中的技术都可以与其他示例中任何一个或多个中描述的技术结合使用。[0186]鉴于可以将所公开的发明的原理应用于其的许多可能的实施例,应当认识到,示出的实施例仅是本发明的优选示例,而不应被视为限制本发明的范围。而是,本发明的范围由所附权利要求书限定。因此,申请人要求将落入这些权利要求的范围和精神内的所有内容作为申请人的发明。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献