我们的客户经常要处理大都非常相似却又不尽相同的大型文档流。鉴于每年处理如此之多的信息日益显得繁琐,我们提出了一个将此任务高精度自动化的技术解决方案。
不妨设想一下,有来自数百家合同方的数万张发票等待处理。按以前的做法,要实现信息的分类和提取的自动化,必须创建一个供应商数据库,再为每个类型的文档手动创建一个具体描述(设置各字段相对于彼此的线性关系信息)。过去客户实现这样一套解决方案要用去 3 到 6 个月的时间。
为简化并加快此项任务的完成,从总体上方便客户的工作,我们制定了一套新的聚类机制并开发出了 FastML 技术,再将这些工作整合为一体。
该解决方案中聚类的出现让供应商数据库维护成为了过去式,且 FastML 还具备基于用户学习工作的能力:此技术会将文档流划分为各个特定的组,再根据每个组学习不同的搜索模式。因此,新解决方案能更好地适应文档的外部差异,处理速度亦提高数倍。
但仍兼顾流程之先后缓急。
哪些情况会用到聚类
我们首先了解一下文档处理过程中分类与聚类的区别。
若某公司一直同少量(如十个)供应商合作,也清楚其文档类型和差异,则需要分类。这种情况下,分类器中的识别模型已经过充分训练且将正确进行处理。
若公司合作的对象不是十个、而是成千上万,则要用到聚类。 这类客户也不能准确掌握文档的内容和结构,不清楚其中类别的类型和数量。
聚类会让该客户轻松许多:无需维护供应商数据库,无需不停地更新它并更改设置 - 通过相似性函数实现一切工作的自动化。
相似性函数是量化两个对象之间相似性的函数。这种测量方法是相似对象取大值,而极不相似的对象取零或负值。聚类任务中的相似性函数会将新文档与现有聚类中的文件进行对比,从而决定将其划分至对应组还是创建一个新类。
例如,若某供应商更改了公司名,文档类型仍与之前相同,则将自动继续由现有聚类中的相同模型进行处理。若该供应商随名称一道更改了文档类型,则该技术将自动创建一个新聚类,而文档处理过程不会中断。
聚类算法
回到该客户的问题上来:它有一个非结构化文档和图像均以文件夹和子文件夹形式进行组织的庞大资料库。对其内容完全不得而知。该客户需要对大量文件进行聚类:确定对应内容从属于哪份文件。
聚类可解决此问题。以下即解决此问题的一种大致算法。
1. 首先,构建一个相似性函数。函数机制即返回一个反映一对文档之间相似程度的范围在 [0; 1] 内的值。这个在稍后将文档划分到聚类中时还要用到。顺便提一下,该函数本身还有几种不同的实现方式:分类器(如梯度分箱)、神经网络等。
- 该相似性函数既可解析式表达,亦可内置于算法。网格、SVD(奇异值分解)、图像等以及其组合均可作为功能使用。
- 将文档划分为类似网格的区域来创建网格,并找出每个单元格的属性和值。再将新文档的每个单元格的属性同聚类文档中对应单元格的属性进行匹配。
SVD 是对具有相应出现频率的文字矩阵进行的奇异值分解。每份文档均可由其中使用的文字集及其出现频率表征。因此,文档的形式可以是左栏为文字(或其出现次数)而右栏为其在文档中各位置出现的次数(或仅出现次数)的矩阵。这样的矩阵会很大,也可以缩减为将其元素值作为属性的较小矩阵。 - 图像是表示卷积神经网络处理文档的结果的一组值。构建了图像(嵌入)的矢量表示。向网络中输入的是文档图像,而输出则是以某种方式对该图像编码的数组。
2. 完成相似性函数构建后,我们可利用聚类法将所有文档分解成组。有两种截然不同的方案:统合(图 1)与分割(图 2)。
合并方法是查找两个相似元素并将其合而为一。反复执行此任务,直到所有项目都归于一个共有聚类中。我们需要挑选特定阈值,指明文档的最优分割方式。得到满意的分割结果后,我们将所需的聚类程度固定、保存,然后开始使用。
聚类的分割方法遵循一样的原则,只是方向相反 - 从多到少。
我们的技术选定的是一种统合方案。于是开始训练聚类以确定新文档是属于此组还是彼组。
作为一种初步解决方案,我们可从某个组中随机抽取两个文件,使用第 1 步的方法与新文档进行对比,取平均分,确定纳入该组所需的一个给定阈值,再通过计算聚类质心并与之对比来进行替换。
质心即聚类之重心。每个质心是一个向量,其元素代表相应特性的平均值,由所有聚类条目计算得出。
未来可针对相似类别构建二级差分分类器(如 SVM - 支持向量机),以在聚类结构发生变化时重新训练。
3. 然后,我们调用一个返回文档归入不同组的概率的排名函数(称之为反向索引),并为后续按第 2 步方法将文档归入该组之假设的详尽测试选择最合适的组。
下面来详细讲讲。 要确定新文档属于哪一类(供应商),我们需要搜索并找到最接近、最相似的聚类。为此,我们应用反向索引机制(图 3)。
反向索引 - 一种数据结构,可将出现了文档集合中每个文字的集合中的所有文档列出。它用于文本搜索。该索引可能只包含每个文字所在文档的列表,也可能还包括该文字在每份文档中的位置。
这就要提取出文档中的所有文字,再为字典中的每个文字分配一个编号。此机制搜索相同文字还在其他哪些文档中出现。若大多数文字均见于同一聚类的多个文档中,则认为该新文件也归属于同一聚类。
4. 若文档不属于任何组,则由该文档创建一个新组。排名函数索引会重新构建以纳入该新组。
5. 若文档被错置于所属组之外(我们实际上是在用户进行纠正时发现的,但本例是通过供应商的标记),则会修复错误并继续第 4 步。
若遵循此算法,也就意味着每个组仅包含属于一个供应商的代表项。同时也可以根据文档的属性为一个供应商创建多个组。
接下来,您要尽量减少第 5 步中出现的错误,并缩减组别本身的数量。选择最佳参数值和阈值可实现错误最少化。比如说,若为一个供应商设立了多个组,则可通过组合并实现组数量的最小化(若需要)。
因此,只要相似性函数和属性集选择得当,就有可能将文档划分到超大量(数万)的组别中去。寻常的分类器对此类任务无能为力,但聚类机制可以。
FastML - 用于搜索文档中字段的客户端新学习机制
我们已将新开发成果 - FastML - 添加到了聚类机制。它取代了敏捷描述训练,较前一种方法速度更快,能更好地适应各种文档结构,还有将于本节中详述的数项其他优势。
我们在之前的一篇文章中讲到过使用视觉文字字典提取文档中的数据,其中就应用了聚类机制。我们利用创建的这种机制,作为处理无锚文本(即,无“名称”、“日期”、“总计”等字段名称)文档的一种原型。
FastML 技术将视觉与文本方案结合起来,让我们能够在任何类型的文档中实现更高的文本识别精确度。
FastML 算法
FastML 是一种可搭配高效文档聚类机制的全新客户端学习技术:聚类根据相似性将新文档分为若干组,反过来 FastML 又通过相似文件得到很好的训练,从而为客户端提供精准的搜索并提取所需数据。
FastML 的处理工作可分为两个阶段:根据某个特定聚类训练模型,再于该聚类的文档中运行此模型。值得注意的是,每个聚类都有自己的训练模型。
其工作方式如下:
第 1 阶段。用户先要在训练阶段独立(全部或有选择地)标记文档中的必要字段 - 需要从整个文件集中选出 3-5 份不同类型的文档。针对每个标记字段,探测出其他字段(热图)与不同关键(频率)字相互排列的可能稳定组合。字段的相互排列可通过绝对或相对位置,或通过特定字段或关键字的可接受分布区来确定。所有找到的字段被分为三组:
• 稳定且很可能正确加了标签的(那些已找到其他字段与关键字稳定组合的字段,且对于这些字段这些组合在不同的文档中有重复或相关);
• 错误标记或单一方式标记的(那些未找到稳定模式的字段);
• 在不同的文档集中有不同稳定模式/组合的同一类型字段(如“总计”),或被视为不一致(若此类文档属于同一聚类或供应商),或表明其所处文档内的不相似性。
这种技术组合有助于解决标记校验等问题。
完成训练后,将模型应用于同一聚类来探测新文档字段。
第 2 步。应用新模型的流程可分为三步:
A) 有新文档进入聚类时,此模型会找到其中的参考元素,并据其构建每个字段位置的概率图。热图中最亮的区域表示您要寻找的字段的可能位置。这些就是模型将寻找用户要找的信息的地方。
B) 一旦模型界定了搜索区域,从中提取所有找到的文字以建立字段假设。这可以是一种文字格式、一种用户定义的参考、字段中的文字数量,字与字间的排列顺序等。假设本身的建立则是基于训练期间模型习得的知识。亦于第一阶段接受训练的一种专用分类器会为每个假设生成分数。
C) 一旦所有字段假设和“自信”预估均已形成,即会启动假设队列。它会选择一个不彼此重叠、不相互矛盾的字段聚合集变体,会选择聚合得分最高的已发现字段的最大数量。此为客户将能看到的所需字段搜索的最终版本。
敏捷描述与 FastML 的对比
学习敏捷描述与 FastML 的最初理念类似 - 两种技术都是通过上传的文档学习,但其工作原理(和结果)却不同。通过下表可清楚了解。
文档处理的阶段 | 敏捷描述 + 数据库 | FastML + 聚类 |
载入文档 |
技术效果取决于我们学习过的客户文档量。 弊端:该模型更适于少量文档。 |
对任何数量的下载文档处理都同等有效。 |
将文档编排成组。 |
基于数据库的按供应商逐个细分 弊端:积累数据库耗时巨大 |
利用聚类技术分散(无需维护数据库)。 |
在标记的 1-2 份文档中训练模型的过程。 |
该模型会告知各元素彼此间的几何关系。 弊端:对字段相互排列的几何学表示的复杂程度有限制。 |
该模型根据找到字段的概率分布进行训练,该方法中不存在冲突。 |
运行经过训练的模型以处理某特定聚类中新文档的流程(供应商)。 |
该模型会找到关键字并检查其几何关系。 弊端:耗时颇长,不一定准确,且训练中存在因大量异构文档造成错误的风险。 |
在找到关键词和其他参考元素后,该模型会构建一个字段概率分布,然后确定潜在的字段位置区域。由于搜索区域小,该流程要比灵活描述快得多。
接下来,此算法会根据给定的规则(和格式)检查文字是否匹配。 |
正如该对比表所示,新技术 FastML 与聚类的结合(图 4)比灵活描述效率更高,无需数据库供应商的强制性积累与扩展,同时提升数据检索质量。
结语
我们精心打造出了一套可进行大批文档处理的全新解决方案。FastML 搭配聚合,造就了较以往该领域内任何开发项目都更快、质量也更高的尖端技术。此外,它还可以内置到当下各公司中非常热门的低代码/无代码系统中。
顺便说一下,FastML 已经运行于我们的新型低代码/无代码平台。依靠该技术,我们的客户可训练解决方案学会探测并识别必需文档类型的能力。
但也要提醒大家,FastML 还只是客户端学习的第一步。目前我们正致力于研究 FastML 与神经网络双管齐下持续学习的可能性。
电子邮件订阅
您的订阅成功!
您已成功訂閱!
請檢查信箱並確認您的訂閱。若您在幾分鐘內都未看見電子郵件,請檢查垃圾郵件資料夾。