这是以软件2.0设计方式重构隐私安全信息提取系统的第二篇,着重介绍了论文中的一些具体实现和想法。

    原论文地址: 软件2.0设计改进隐私安全信息提取系统

    背景:
    Juicer是一个信息提取系统,在Gmail中运行在企业对消费者(B2C)电子邮件上。我们之前已经描述了系统的设计(系统设计介绍),重点是模型选择,以及我们如何为诸如账单提醒、服务和酒店预订等垂直行业执行新的附加任务。我们在这里提供了一个简短的总结-在描述迁移遗留纵向市场的任务和它们带来的挑战之前。
    绝大多数B2C电子邮件是机器生成的,因此,预先定义的模板的实例化。Jucker引入了这些模板,或者至少是通过将共享相似结构的电子邮件聚集在一起进行最佳猜测。这是通过将传入的电子邮件[28]基于对位置敏感的散列进行聚类来实现的,我们使用Minhash[5]-它们的一组xpath组成了每个电子邮件的HTML DOM树。一个至少有k个唯一接收者的电子邮件的集群,遵守k-匿名性约束,被认为是模板归纳的可行方法。
    一旦一个集群形成,榨汁机标签在集群中的每个电子邮件使用一套预先训练的垂直分类。一旦对所有电子邮件进行分类,模板将根据群集中所有电子邮件的多数票分配一个单独的垂直标签。然后,这个标签确定要提取的垂直规格字段集。下面,我们将介绍两种从这些电子邮件中提取现场信息的方法。
    2.1基于规则的提取
    传统的基于规则的系统使用了传统的基于规则的体系结构[6,16]。多年来,工程师们利用内部用户为此目的捐赠的电子邮件,为每个垂直领域制定了若干规则。
    这些规则的作用域是在特定的电子邮件子集上以及在电子邮件中使用正则表达式的特定上下文中触发。例如,考虑从采购确认中提取订单号字段。提取规则是使用正则表达式编写的,用于标识需要出现的关键文本短语(如“order”、“number”、“order no.”等),以及与实际订单号匹配的正则表达式。
    这些规则是通过限制其作用域来管理的。例如,可以定义一个范围,以便可以应用rule。例如,某些规则只能应用于主题行中的内容。其他有效的范围界定策略包括要求目标字段出现在电子邮件的可变区域中,或禁止从某些类型的HTML元素(如URL)中提取。最后,每个规则还可能需要额外的验证条件。例如,在酒店预订中,签出日期应始终在签入日期之后。
    2.2机器学习提取
    在软件2.0方法中,提取规则是机器学习的。每个字段都有一个对应的字段分类,该分类应用于电子邮件中的一组候选字段,以确定目标字段值。
    应聘者被定义为文本的所有跨度,文本中带有特定类型的特定符号,例如,酒店入住日期的应聘者由电子邮件中的所有日期和符号组成,而酒店地址的应聘者由所有地址注释组成。我们依赖一个注释器库,它使用各种技术(如正则表达式、启发式和知识图查找)来注释电子邮件中的日期、电子邮件地址、数字、价格、广告、城市等。这个库是多年来为谷歌的各种搜索和提取任务开发的。
    一个现场分类员被训练来预测一个候选人是否在垂直方向对一个现场做出反应。然后,在模板归纳过程中,在模板被指定为垂直模板后,将适当的字段分类应用于集群所有电子邮件中的所有候选。字段分类分数通过观察注释的每个XPath的电子邮件进行平均。如果平均得分高于指定的阈值,则会将提取规则添加到该XPath的模板中。图1详细描述了这个过程。
    这些模板以及它们的标签和字段附加规则都存储在键值存储中。当一封新邮件到达时,Juicer计算邮件的最小哈希值,并为模板建立一个查找表。如果找到,则通过遍历电子邮件中的XPath并提取与该XPath中的注释相对应的文本来执行任何提取规则。如果一个场地有多个规则,

    一旦我们归纳出一个模板,我们就可以确定模板的哪些部分是样板文本(fixed),而哪些部分在电子邮件中各不相同(variable),它们按区域分类得分的降序执行,并使用第一次成功提取。

    2.3评价
    提取是通过检查从底层模板生成的合成电子邮件并突出显示来自遗留系统或机器学习规则的结果来评估的。由于电子邮件数据是私有的,因此没有人可以查看任何真实的数据。相反,电子邮件是从模板的固定文本合成的,模板通过k-匿名限制[27]。此文本在模板中的所有电子邮件中共享,不包含任何个人信息。电子邮件的可变部分由屏蔽字符串(如“XXXX”)标识。
    为了确保高精度提取,我们维护了一个高质量模板的白名单,这样只有与白名单中的模板匹配的电子邮件才会触发提取。任何被评估为在syn-thetic生成的电子邮件上具有准确提取的模板都会在生产中被白名单提取。由于每个垂直方向每周可能有数千个新模板,因此,如果每周一批模板的随机子集的计算精度高于90%,则整个批次都将被白名单。

    三 系统迁移
    基于基于规则的体系结构和手工创建的规则的遗留系统自2013年开始投入生产。在本文中,我们主要关注两个纵向迁移:事件确认(如约会、票务事件等)和购买(如订单确认、发货通知等)。
    改进启发式规则是一个很长的开发周期。工程师首先在观察捐赠的电子邮件后编写提取逻辑,在一组更大的待处理电子邮件上评估该逻辑,然后重复该过程,试图找出错误案例。通常,错误案例会导致错误案例的出现。工程师们最终花费了大量的时间迭代许多开发评估周期,以产生高精度的启发式方法。随着时间的推移,我们开发了sophisti-cated基础设施来支持更具表现力的规则,这将成为一个越来越大的维护负担。这是基于规则的提取系统的常见模式,已经被一些实践者观察到了[22,29]。
    我们迁移这些垂直领域的主要目标是用更简单的机器学习系统重新放置现有的基于规则的提取系统。在这样做的过程中,我们希望能够通过收集额外的培训数据,而不是编写越来越复杂和难以维护的规则,来保证对垂直行业的持续增量改进。

    3.1挑战
    我们训练的第一个模型只能替换启发式规则中6%的抽取。为了缩小这一差距,并用新的基于ML的系统完全取代基于规则的系统,我们在管理我们的训练数据方面遇到了挑战:构建高覆盖率候选生成器,维护高精度标签,获得高质量的领域数据真实感。在处理电子邮件时,这些任务变得特别具有挑战性,因为在处理这些任务时必须附加维护完全隐私的限制。

    3.1.1建立高覆盖率候选生成器

    这里存在巨大差异的不同领域的类型和格式。
    在为采购订单编号字段构建候选生成器时,我们首先使用电子邮件中注释为数字的所有文本跨度。我们通过第4节中描述的分析和工具发现,由于缺少包含字母字符的序号,因此此注释器的覆盖范围不足以取代基于规则的提取。我们能够通过合并字母数字注释来增加覆盖率。
    其他领域,如活动地点,需要做更多的工作。我们开始时只使用地址注释作为can-didates(例如“123 e.Monument Pkwy,Mountain View,CA”),然而,许多电子邮件可能不包含其活动的完整地址,而只是简短的版本,例如场馆名称(例如“Cinemark 16”)。因此,我们必须考虑许多类型的注释来生成事件位置的准确日期,包括地址模式或来自内部知识图的建筑物或站点的注释[4]。
    3.1.2保持高精度标签
    我们的下一个挑战是将候选人与生成标记训练数据的基本事实进行匹配。例如,假设一个活动场地的基本情况是“123 East Monument Parkway,Mountain View,California 94043-1234”。但与基本事实最为相似的候选人可能只有稍微不同的格式(如“123 e.Monument Pkwy,Mountain View,CA”),仅包含完整地址的一部分(如“瑜伽工作室”),大小写不同,甚至可能单独注释每个地址组成部分(号码、街道、城市等)。
    在这种情况下,我们可能需要使用多种方法将候选人与现有的基本事实相匹配。一些sim-ple字段类型(如日期)可以在比较之前转换为规范格式。但如果信息缺失,比如年份,我们可能仍然需要从上下文中猜测。
    对于更复杂的领域,我们使用了更先进的匹配机制。例如,对于事件位置字段,我们通过候选人在电子邮件中的相对有效设置位置(当两者都有这样的信息时)来匹配候选人,或者使用字符串匹配和基于知识的方法【20】。复杂区域的近似匹配是一个研究得很好的问题,有许多复杂的解决方案[10]。
    在我们的经验中,没有一个大小全规则适用于每个领域。相反,我们必须努力在高精度和高召回率之间取得平衡。如果等式函数太严格,我们可能会遗漏很多有用的正标签,但如果它太宽松,我们可能会创建一个噪声标签数据集,模型无法从中学习。
    3.1.3获得高质量的领域真相**
    除了从基于规则的遗留系统提取数据外,初始培训数据还来自电子邮件中发件人提供的标记。当我们发现并白名单新的tem板提取通过ML系统,那些太多的贡献额外的训练数据。对于事件和pur-chase垂直,用作基本事实来源的大多数提取都是从遗留的基于规则的系统中派生出来的。虽然这些提取方法非常有用,但在许多情况下,数据都是错误的,很可能是由于过去某个时候可能已经投入生产的错误规则,而没有被人类发现当时的评估者。小容量模板特别容易受到这些问题的影响。识别从传统系统中获取错误提取的模板,并防止它们对训练数据造成干扰,是改进分类的关键。

    比如以下生成器接口示例:
    template
    class CandidateGenerator {
    // Called once per email by the FieldExtractor. virtual std::vector GetCandidates(
    const AnnotatedEmail& e) = 0;
    };
    template
    class CandidateLabeler{
    // Called once after initialization and before
    // calling GetLabelForCandidate().
    virtual void Start(const AnnotatedEmail& e) {}
    // Called once for each candidate produced by the
    // CandidateGenerator linked via the
    // FieldExtractor.
    virtual Label GetLabelForCandidate(
    const CandidateType& candidate) = 0;
    };
    Figure 2: Interfaces for a CandidateGenerator and CandidateLabeler.

    **
    四。管理训练数据
    我们生成训练数据的底层电子邮件是加密存储的。只有运行二进制文件的特定角色帐户才有读访问权限,这些二进制文件的代码由工程师重新查看并签入我们的源代码管理系统。所有访问都经过审核,以保证隐私,并确保数据的唯一用途是培训模型,而不允许任何工程师检查数据。
    4.1现场分类人员的培训数据**
    我们构建了两个核心抽象来为每个领域生成训练数据:候选生成者和候选标记者,它们的接口如图2所示。候选者生成器实现必要的逻辑,将一封标记的电子邮件转换为一组候选者,以用于模型训练或字段规则生成的推理。CandidateLabeler实现了将每个can-didate标记为阳性、阴性或未知的逻辑,以用于模型训练。回想一下第2.2节中的讨论,可以-didates是从现有的基本类型的注释器(如日期、数字、电子邮件和依赖于知识图的实体注释器)派生出来的[4]。
    考虑酒店确认登记日期字段。为了生成该字段的培训数据,我们实现了一个通用的DateCandidateGenerator,它重写GetCandidates方法以发出电子邮件中的所有日期。为了给这些候选者贴上标签,我们实现了HotelCheckinDateLabeler。回想一下,单个字段的训练数据是从电子邮件中提取的,这些电子邮件包含手写的解析器和启发式方法。提取成功后,电子邮件将使用酒店确认对象进行批注。我们对Start方法的实现将提取的签入值存储在一个ground truth成员变量中。如果candi-date与提取的基本事实匹配,则GetLabelForCandidate的重写只返回正数;如果匹配,则返回负数不匹配,或在无法解析基础真值开始时未知。
    然后,这两个类类型使用FieldExtractor绑定在一起,FieldExtractor为该字段生成训练数据:

    类似HotelCheckinDateGenerator
    :FieldExtractorHotelCheckinDateLabeler>{}

    4.1.1标准计数器
    考虑到电子邮件的私密性,如果不能通过真实的电子邮件样本查看结果,就很难深入了解候选代的质量或标签逻辑。但是,通过将候选标记器和候选标记器链接到StandardFieldExtra-tor中,我们可以生成一组标准计数器,帮助为调试提供统计信息。这些计数器帮助我们首先了解候选生成器的覆盖范围,并进一步提供通过检查示例模板来了解如何改进它的方法,我们将在下面的第4.2节中进一步讨论。我们在表1中突出显示了一些特别有用的计数器,这些计数器跟踪为生成培训数据而忽略的电子邮件数量。例如,如果忽略的电子邮件-由于没有候选人产生计数是一个重要比例的电子邮件数量与现有的提取规则为基础的系统,我们知道,我们应该首先集中精力增加候选人覆盖面。第4.2节描述了我们用来提高覆盖率的工具。
    这些计数器还帮助我们调试有问题的标记逻辑。例如,如果仅因负面原因而忽略的电子邮件-候选邮件占我们生成候选邮件总数的很大一部分,我们知道我们的候选标记逻辑与这些电子邮件中的基本事实不匹配,并且表明我们需要集中精力改进标记逻辑。
    在迁移的最初阶段,每个工程师都独立地编写一份工作,为给定的领域生成培训数据。工程师们对何时将特定电子邮件中的数据包含在培训中做出了独立的选择。考虑这样一个情况,在电子邮件中没有一个候选人被标记为阳性。对于一些领域,工程师们选择使用这些数据作为反面例子,而在其他领域,工程师们则选择将其视为贴标机在近似匹配方面过于严格的迹象,并放弃这些培训示例,而不是污染培训数据。
    这意味着每一个字段提取器,以及它们生成、标记、计数和返回候选对象的方法都必须单独理解。由于只有少数工程师在几十个领域工作,在单个领域提取器上增加的开销变得过于昂贵。
    FieldExtractor通过为上述所有操作提供标准抽象来消除此开销:候选生成、候选标记、计数和一致逻辑。因此,工程师们能够很快地在任何一个领域跟上速度。标准化各领域的计数器使工程师能够快速、轻松地推断出某一领域的问题是否在于候选代的覆盖范围、标签逻辑或基本事实的质量。
    此外,如果没有一个候选人被标记为阳性,FieldExtractor会在各个字段中一致地选择是否包含电子邮件中的数据。更多关于下面的设计选择。
    **

    emails-ignored-due-to-
    no-candidates-produced The number of emails for which no candidate annotations are available. This is a good
    indication to spend more effort to increase the coverage of the CandidateGenerator.
    only-negative-candidates The number of emails ignored due to having only negative labels. If it is expected that
    a positive example should exist whenever a ground-truth extraction is present, then this indicates that the CandiateLabeler’s matching logic needs more attention.
    only-unknown-candidates The number of emails ignored due to having only unknown labels. This usually indicates
    that the labeler was unable to parse the ground truth, which may indicate that the ground truth itself is unavailable for this example.

    Table 1: A sample of standard counters provided by the FieldExtractor that are particularly helpful when debugging training data generation for private data.



    4.1.2一致的训练数据生成**
    一个高质量的现场分级者需要有效的培训数据来区分现场的阳性和阴性反应。回想一下,我们使用的是从遗留的基于规则的系统中提取的现有内容,以及使用捐赠的电子邮件作为我们的培训数据手工制作的其他解析器。由于在不同的垂直方向,不同的牵引场的标准化程度略有不同,因此我们必须依靠近似匹配来分配标签。FieldExtractor的设计目的是丢弃潜在的噪声示例,从而产生比我们对近似labeler的信心所暗示的更高质量的训练数据集。
    考虑这样的情况,我们有一个现有的提取,所有的候选人都被分配了一个否定的标签。这可能有两个原因。近似的拉贝尔可能过于严格(例如,不等同于“Am-Phithatre Pkwy”和“圆形公园道”),或者直接候选人可能没有被Candi-dateGenerator和labeler识别,正如预期的那样,所有其他候选人都被标记为阴性。如果不查看邮件样本,很难知道不符合事实的原因。FieldExtractor的设计目的是丢弃任何领域的此类电子邮件中的培训数据,并在所有领域中一致地做出此选择。这使得工程师能够专注于现场特定的匹配逻辑,并依赖于提供高质量培训数据的基础设施。经验性地,我们观察到在排除低质量例子的数据上接受训练的分类者在坚持集的精度方面表现更好。
    将候选生成逻辑与标记逻辑分离,允许共享相同底层类型的字段重用候选生成程序。例如,hotel check-in、hotel check-out和bill due date字段都可以共享相同的基础DateCandidateGenerator。这通过删除重复的实现来降低代码基的复杂性。

    4.2评估工具
    上面描述的计数器可以识别启发法成功提取的模板,但是ML系统无法处理,因为CandidateGenera-tor的覆盖率不够(表1中没有生成候选项)或者CandidateLabeler太硬(表1中只有阴性候选项)。我们扩展了第2.3节中描述的可视化检查工具,以突出显示所有候选对象以及从遗留的基于规则的系统中提取的内容。此工具允许我们在垂直购买迁移期间发现,订单号字段的候选生成器需要使用来自alphanu的注释-

    除了数字注释器之外,还可以使用meric注释器。我们还能够识别从基于规则的遗留系统中提取的内容不正确的情况,并将其删除。
    4.3管理领域真相数据
    同样的合成电子邮件生成系统也用于获取和管理新的高质量领域真实数据。一旦模板被归类为属于特定的垂直模板,并且为该模板生成所需的字段提取规则,我们将为该模板综合生成电子邮件,并请求对垂直标签和字段提取进行人工评估。这些评估相当便宜,因为它们只需要回答“这是酒店确认书吗?”?“,”是否提取了正确的签入日期?”等。
    垂直标记问题的答案存储在每个模板中,用于在垂直模型的周期性重新训练期间标记训练数据。这些标签在两种情况下尤为重要。首先,当人类的标签偏离了基本的真值注释,从而纠正了错误的基于启发式或基于解析器的提取,提高了我们的训练数据的整体质量。其次,当评估新发现的模板时,它们提供了额外的培训数据。请注意,负面评估同样重要,如果不是更重要的话,因为这些是当前分类错误的情况,因此是有价值的样本,可用于在下一次再培训中调整决策边界。
    通过评估模板垂直分类和周期性再训练,我们可以随着时间的推移不断改进我们的模型,而不会产生重大的工程影响。


    5相关工作
    这项工作借鉴了数十年来从数据管理、数据挖掘和机器学习社区中提取信息的研究成果。我们关注的是将抽取处理为给定模式的文献,而不是将自由文本中的关系抽取为知识库的三元组的开放式IE[3]。
    有大量的工作涉及包装归纳法的思想。假设HTML格式的数据是通过用数据库中的值填充模板生成的,并且给出了几个示例,挑战在于恢复数据库中的底层对象。大多数算法都是为web设计的(就像电子邮件一样),并且每个站点都需要注释,并且对页面布局的更改很敏感。
    基于规则的提取系统在为窄类型编写高精度提取程序的上下文中工作得很好,特别是在为已知实体类型生成候选注释的类型方面,像DI-ADEM[9]和jucker这样的系统作为更大的可伸缩解决方案的一部分依赖这些候选注释。然而,众所周知,显式规则很快变得非常复杂[29]。
    NLP通信中的序列标记和时隙填充任务与我们处理的信息提取问题密切相关。递归神经结构[12]在这些任务中产生了接近最先进的性能。利用机器学习的这些进步,最近已经建立了高质量的提取系统。Snorkel[22]认为获取训练数据是关键的技术挑战。作者主张将数据编程作为一种解决方案策略,同时利用多任务模型和弱监管等技术来最大化训练数据的价值。Ceres[18]表明远程监控可以有效地应用于网络上的关系牵引任务。
    以下是最近大量研究隐私保护的工作-使用不同的隐私保护ML培训[13]。研究表明,在发布数据集时使用k-匿名性是有缺点的[19,21]。本文讨论了在隐私约束下训练数据管理面临的挑战。培训数据不可用于培训所述模型以外的任何目的。事实上,数据是加密存储的,读取权限只授予运行基于重新查看和签入代码构建的培训二进制文件的角色帐户。培训程序,虽然不是本文的重点,但可以使用现有的技术使其不同程度地私有化[1]。
    我们的工作加强了这样一种观点,即现实世界中软件2.0方法的一个关键组成部分是管理培训数据。与解决从头提取问题相比,我们专注于用易于理解和改进的完全机器学习系统取代复杂的基于启发式的生产提取系统。我们认为,任何此类工作的关键组成部分是管理培训数据的系统,包括获取、调试、版本控制和转换培训数据。

    6。总结和结论
    从启发式规则提取系统到软件2.0系统的事件和购买垂直迁移带来了一些好处。发现和发现不正确的遗留提取导致精度提高了8到9个点。其次,迁移允许我们删除启发式规则和执行它们的代码。这包括各种作用域规则、白名单、黑名单、关键短语词典等。这使附加系统代码库缩减了45K以上,代表了一个非常大的长期维护胜利。第三,该系统通过收集更多的培训数据和改进模型,使覆盖率和召回率稳步提高成为可能。在几周内,ML模型发现了一些额外的模板和规则,导致提取量的增加-3.3%用于购买,32.6%用于活动。表2总结了这两个垂直行业的改进。相比之下,基于启发式的提取系统的覆盖范围已经持续了几个月,因为它太脆弱,无法在不引入错误的牵引的情况下进行改进。第四,或许最重要的是,这种缺失使我们能够处理跨语言抽取。尽管我们最初的训练数据只有英文,

    Table 2: Precision and extraction volume improve- ments after migration.

    Event Purchase
    Heuristics ML Heuristics ML
    Precision Extraction volume 90.0 100.0 95.3 132.6 90.0 100.0 97.5 107.1

    我们能够利用最先进的跨语言单词嵌入技术[26],学习跨多种语言工作的领域和垂直模型。据我们所知,这在传统的基于规则的技术中是不可能的。
    通过诸如主动学习等技术来继续提高训练数据质量和获取更多训练数据的系统是未来研究的领域。