基于决策树梯度提升的文书格式自动验证技术
原文作者 Nail Nasyrov, Mikhail Komarov, Petr Tartynskikh, Nataliya Gorlushkina
摘要:本文介绍了 docx 文档元素的自动格式验证技术,这是开发在线服务的基础。在撰写各种研究论文、课程项目的说明和其他科学作品时,检查文档格式的正确性是一项重要任务。本文描述了识别文本文档元素设计特征的方法。还给出了模拟操作的服务的客户端-服务器交互的结构。诸如决策树 CatBoost 上的梯度提升之类的机器学习算法被选为多分类的主要工具。描述了提高其准确性的算法的经验改进参数。特别关注发达检查元素分类结果的方法,元素的顺序有不同的规律。这种方法使我们能够识别被分类器错误识别的 docx 文件元素的格式类别。有时,可以覆盖分类器的结果以提高检查 docx 文件中元素格式的准确性。
关键词:机器学习; 决策树上的梯度提升; 设计标准; 多种分类; docx;格式验证;模型;
1 介绍
在教育过程中,有必要培养学生的专业技能,其中最重要的一项是根据联邦和行业标准提交文书工作。根据国家标准,教育机构制定了自己的规范性文件,其中规定了学生证明其学术成就的文书工作要求 [1]。例如,作者包括论文、课程项目的说明、计算和图形作品、学生独立项目的报告。不同国家对文本文档设计的质量,无论是科学还是教育,都有严格的要求。例如,在美国,为不同的研究领域定义了某些风格的科学文献,例如APA (https://apastyle.apa.org)MLA(https://style.mla.org)CHICAGO(https://www.chicagomanualofstyle.org)等。既定的文档样式会不断更新。这显示了这些要求的重要性和意义。此外,降低文档格式的成本可为作者、出版商、读者和赞助商节省时间和金钱 [2]。
为了简化文书工作流程及其与公认标准的合规性,减少使样式合规所需的时间,已经创建了网络资源 [3-5],它允许优化创建主要类型文档的过程并促进自动 更正文档元素呈现(标题、图像、内容、文本等)。此类服务的一个示例是Citation Machine (https://citationmachine.net)。 工作 [6] [7] 中也给出了设计要求的自动化符合性评估的建议。 此类工作的重要性得到证实,因为专家们不断尝试寻找解决此问题的方法。
但是,所进行的分析无法确定可以全面验证是否符合以自动模式处理文本文档的要求的资源。
基于上述内容,用于检查文档正确性以及对适当流程建模的自动化资源的设计和创建如今非常重要。 本研究的目的是创建自动文档格式验证的方法,以使用机器学习工具符合设计要求。
- 检查文件是否符合正式要求
从合规主管的角度来看,工作中遇到的错误可以分为以下三种类型:
bull; 拼写、句法和标点符号错误
bull; 语义错误(在图表、绘图、过时的文献来源等内容中)
bull; 格式错误(与不正确的文本、缩进、标题等设置有关)
在检查语义错误的同时,可以使用多种服务(https://grammarly.com、https://languagetool.org、Microsoft Word 等)中的一种工具来实现对第一类错误的搜索 如果没有人工干预,往往很难实现。在创建用于检查文档错误的电子服务的上下文中,我们对查找第三类错误很感兴趣。 标准定义的文书工作要求是具体的、明确的;它们可以简化为一套正式的规则,而这些规则又被适当地记录在案。因此可以得出结论,可以自动检查是否符合文书工作要求。
早在 35 年前就曾尝试根据某些样式的现有要求创建和使用用于自动文本格式化的特殊软件。George L. Blaw [8] 指出这种自动化的原因在于以适合出版的形式格式化文本材料需要大量的机械工作。但这种方法是线性的,它意味着您必须使用特殊软件为每个段落手动配置适当的样式。
为了实现解决设计错误问题的自动化服务,有必要确定文档中最常见的错误。典型错误的分类在文章[9]中被认为是本研究的基础。该分类是在根据 GOST 7.32-2017 标准的要求组成的文件分析的基础上进行的。我们对已识别的错误进行了分析,以实现自动化验证的可能性。在开发的系统中自动验证的错误分类如图 1 所示。
图 1. 开发系统中自动验证的错误分类。
我们的研究提出了一种解决方案,用于根据结果分类查找元素格式(图 1,右分支)中的错误。
创建用于检查文档格式的自动化系统的复杂性必须通过文档中各种典型元素以及用于检查每个单独元素的多种设计和方法来证明。为了克服这个问题,我们设置了对文档的基本结构元素进行分类的任务,即属于基于验证算法的类的段落。我们将段落称为文档中一个段落的任何内容,无论是常规段落、图形、表格还是其他元素。对所考虑的文本文档的结构元素进行分类的方法的基础是为它们分配相应的指标的想法。此类类别通常是指规范性文件和标准。通过对选定的类进行分解,描述了设计差异的子类。表 1 给出了定义类、突出其特征并为其分配指标的示例。
表 1. 基于 GOST 7.32-2017 的文档元素类定义
所呈现的类用于文档段落分类器,该分类器的工作基于机器学习算法。 这些标识的类用于检查文档元素是否符合正式要求。
3. 服务结构的总体描述
客户端-服务器架构被用作自动化系统开发的基础,用于根据设计要求进行格式验证。 以下段落描述了其在工作上下文中的实施特征。
为了考虑到文档创建和验证过程的连续性,有必要提供架构实现。为此,系统的客户端模块之一是基于 Microsoft Office Add-In 技术开发的。
客户端与服务器通信,服务器使用 RESTful API 为文档格式执行所有验证工作。 根据识别出的问题分析设计如下服务架构
图 2. 客户端-服务器交互方案
服务工作的主要阶段和它们之间的数据流描述如下:
1.用户认证和授权
2.上传并保存新文件到服务器,格式验证,
2.1. 将文档保存在服务器上(输入:认证信息,docx 文档;输出:分配给用户的 docx,文档 ID),
2.2. 获取文档段落属性(输入:docx;输出:csv 文件格式的段落属性),
2.3. 段落分类(输入:csv 格式的段落属性;输出:表示类别的标签序列),
2.4. 使用各种类别的指标提高分类器的准确性(输入:指标序列;输出:修改后的指标序列),
2.5. 检查文档格式是否符合所选要求(输入:docx 文档、指标序列、所选要求的 ID;输出:带有检查结果的 json),
2.6. 保存文档的最后验证结果(输入:文档ID、验证结果、选定的需求;输出:更正ID、文档ID、带有验证结果的json),
3.保存现有文档的新版本,格式验证,
3.1. 更新现有文档的版本(登录:身份验证信息、docx 文档、
文件编号; 注销:分配给用户的docx,文档ID),
3.2. 重复步骤 2.2 - 2.6,
4.保存用户对验证结果的响应(输入:验证信息、更正标识、用户标记(同意/不同意/关闭消息)、评论)。
操作方案是一个线性过程 1-2-3-4,其中阶段 1 和 4,以及至少一个阶段:2 或 3 是强制性的。
- 格式验证系统的核心
Docx 文件格式基于 Office Open XML,是最流行的文档格式之一。这种格式的主要优点之一是它存储有关格式、设计和内容布局的所有信息。此数据是当前工作背景下文档格式分析的基础
文档在结构上是一系列元素,其中大部分是段落。 从这个意义上说,常见的段落、列表元素和图表都是“段落”。 在根据特定要求的符合性检查元素格式之前,必须对其进行分类。
对于手动进行格式验证的人来说,通常很容易将一个元素与另一个元素区分开来。
问题在于,在创建文档时,可以通过多种方式实现一种视觉表示。 因此,例如,可以使用 Word 功能(“标记”、“编号”、“多级列表”)和格式化多个连续段落以使其在视觉上满足要求来创建列表。 有必要考虑创建元素的所有可能方法,因为它们中的大多数需要开发不同的分析方法。
根据上述问题,以及传统算法方法实现该过程的复杂性,需要使用机器学习算法解决文档元素分类问题。使用 CatBoost 算法对决策树进行梯度提升被提出作为主要方法 [10]。 他们更详细的描述可以在下面看到。
因此,为了实现自动文档格式验证,必须解决几个任务:
bull; 文档元素的识别和分类并定义它们的位置
bull; 定义文档内指定的属性(位置、样式、格式)
bull; 根据选定的要求比较该类别的获得数据和参考数据
针对后两个任务的解决,本文作者基于.NET Core技术开发了DocxCorrector模块。 因此,DocxCorrector 模块在两种情况下被调用:
1. 获取段落的属性以进一步分类;
2. 检查文档格式是否符合所选要求。
调用顺序见图 2(步骤 2.2-2.5)。这些块分别标记为“属性提取器”和“校正器”。 接下来,我们更详细地描述这些步骤:
1. 文档的每个段落都有一组可以对其进行分类的属性(字体大小、对齐方式、行距等)。 使用 DocxCorrector (properties puller) 模块,这些数据被放置在一个 csv 文件中,该文件被传递给经过训练的分类器;
2. 分类器定义每个段落的类;
3.接下来,检查和改进使用“指标方法”(如下所述)的分类器的准确性;
4. 之后,labels-classes和docx文档的序列被传送到DocxCorrector(更正器)模块,在那里对这个文档进行格式验证。
通过对格式错误类型和docx文件操作工具的分析,文档格式验证的程序可以分为单独的子程序。 例如,段落格式验证、标题页格式验证、页脚、页眉、列表、表格、图形和其他元素的格式验证被突出显示。 这些过程彼此独立,因此可以并行执行。
图3展示了文档格式验证(DocxCorrector(corrector))的活动图。
图 3. DocxCorrector(校正器)模块工作的活动图
这里的输入数据是一个 docx 文件、一个选定的验证标准 (ModelID) 和段落类的标记序列。一旦所有并行进程完成,它们的工作结果就会合并为一个结果(JSON 对象)。这种架构允许显着加快系统操作的时间。
- 应用机器学习算法解决所描述的问题
为了解决所指出的问题,选择了决策树上的梯度提升方法。 如今,这种方法越来越受欢迎,并成为机器学习最流行的方法之一,例如构建人工神经网络和线性模型 [11]。
-
- 分类器描述
决策树上的梯度提升可用于解决机器学习问题,例如分类(多分类)。在这种情况下,文本文档中标识元素的输出数据最有可能属于预定义类之一。上文表1中给出了使用此类类的示例。
CatBoost 算法被选为主要的分类工具。
选择这个算法是由于以下几个原因的组合:
bull; 源自“类别”和“Boosting”两个词,CatBoost 是一个开源机器学习库。 它允许使用 Python 或 R 等编程语言进行数据处理
bull; 机器学习算法通常需要预处理步骤将分类数据转换为数字。 但是 CatBoost 只需要分类特征的索引 [12]。 它自动执行编码以将分类数据转换为数值数据 [13]
bull; 基于梯度提升算法的 CatBoost,广泛应用于不同的机器学习问题,如推荐系统、预测等。 [14]
bull; 与深度学习不同,CatBoost 不需要庞大的数据集来进行广泛的训练。 CatBoost 不需要对正则化、学习率、树的数量、树的深度等参数进行详尽的调整。此功能降低了过度拟合的可能性 [14]
在使用 CatBoost 作为元素识别工具之前,需要根据训练数据集创建模型,以确定文本文档元素属于哪个类。 我们需要创建一组属性来定义相应类的元素设计。 为此,我们应该标记文本文档。
其设计的各种类别和变体形成一个元组 TS = {v1, v2, hellip;, vm}, i = 1, hellip;, m,where
bull; vi 是一类元素的选择
bull; m 是 docx 文档中许多不同类别的元素
bull; vi = {f1, f2,hellip;, fn},fj 是 i 级设计变体
bull; n 是用于布局的元素数量
我们使用了一个解决方案 CatBoostClassifier 来解决分类问题,其中类别的数量等于 TS 元组中 vi 元素的不同类别的数量。
-
- 为 CatBoostClassifier 设置实验和训练参数选择
对以下数据样本进行了实验。 训练样本由 6754 个手动标记的文本文档元素组成。 测试样本包括914 个元素,属于相同的30 个类别。这些元素与训练样本中使用的元素不同。
选择以下参数作为使用 CatBoostClassifier 解决分类问题的可变参数:
bull;
剩余内容已隐藏,支付完成后下载完整资料
英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[595933],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。