写点什么

李飞飞团队最新提出 OpenTag 模型:减少人工标注,自动提取产品属性值

2018 年 6 月 26 日

AI 前线导读:

提取缺失属性值是指从自由文本输入中找到描述兴趣属性的值。过去大多数关于提取缺失属性值的工作都是在封闭的假设下进行,即事先已知一组可能的属性值,或者使用属性值字典和手工提取的特征。那么怎样才能发现新的属性值?能用有限的人工标注或监督来做到这一点吗?

AI 前线第 37 篇论文解读,给大家带来的是李飞飞团队最新提出的 OpenTag 模型论文。OpenTag 是目前第一个端到端的开放式属性值提取框架,在这项工作中,李飞飞团队利用产品配置文件信息,如标题和描述,来提取缺失的产品属性值。他们开发了一种新的深度标注模型 OpenTag,从建模、推断和学习三个方面解决了现实生活中属性值提取面临的挑战。

正文:

这篇论文有以下贡献:

(1)将问题形式化为序列标注任务,并提出利用递归神经网络(双向LSTM)捕获上下文和语义的联合模型,并且利用条件随机场(CRF)来约束标注连贯性;

(2)提出了一种新的注意力机制,为我们的模型决策提供了解释;

(3)提出了一种新的采样策略,利用主动学习来减少人类标注的负担。与以前的工作不同的是, OpenTag 不使用任何字典或手动提取的特征。作者在不同领域的真实数据集做了大量实验,证明具有主动学习策略的 OpenTag 仅从 150 个标注样本中就可以发现新的属性值(减少了 3.3 倍的标注工作量),并且 F 分数高达 83%,优于目前最先进的模型。

背景介绍

产品目录是电子商务零售商的宝贵资源,他们可以通过产品目录来组织、规范并且发布信息给客户。然而,这个目录信息经常是嘈杂的、不完整的,有很多缺失的产品属性值。一个有趣而重要的挑战就是从产品描述和其他相关产品信息中补充目录中缺失的属性值,特别是我们以前从未见过的属性。

非正式问题 1:给定一组目标属性(例如,品牌、味道、气味)和非结构化的产品配置信息(如标题、描述和要点):如何从文本中提取属性值?如果一些属性值是新的,比如新兴品牌,该如何做?

图 1

图 1 给出了一张亚马逊网站上一款狗粮的产品配置信息。产品标题“多包菲力牛柳和 T 骨牛排狗粮(12 小包)”中包含了两个属性:尺寸和味道,我们想提取这些属性对应的值,例如“12 包”(尺寸)、“菲力牛柳”(味道)和“T 骨牛排”(味道)。

这一问题提出了如下挑战:

(1)开放性预测(Open World Assumption,OWA)。之前的属性值提取研究都是封闭式估测,使用有限的、预定义的属性值词典。因此无法发现新发布产品的新的属性值。

(2)属性叠加与不规则结构。标题和描述中的产品配置信息通常是非结构性的,与产品细节紧密排列在一起。因此,鉴别和分割特定的属性值是很困难的。除此之外,有些产品信息十分简略。数据集中 75% 的产品标题不超过 15 个词,而超过 60% 的重点内容不超过 10 个词。

(3)有限的标注数据。现有的基于神经网络的属性值提取方法需要大量的标注样例,因此不能扩展至某些只有数百个标注样例的领域。这也引出了第二个非正式问题。

非正式问题 2:我们是否可以开发只需要有限的人工注释的监督模型?另外,我们能开发出对其决策能给出完整解释的模型吗?

论文贡献

在这篇论文中,我们提出了几个新的技术来解决上述问题。我们将问题表述为序列标注任务,与命名实体识别(named entity recognition,NER)任务类似。命名实体识别的任务目标是从非结构化文本中识别人、组织或位置的名字。

论文提出的新技术总结如下:

  • 模型:我们将属性值提取建模为序列标注任务,满足开放性预测(OWA)并且适用于产品配置文件中的非结构化文本和稀疏文本。我们提出 OpenTag 模型,利用条件随机场(CRF)和 LSTM,并且增加了一个注意力机制来解释模型的预测结果。
  • 学习:探索了主动学习和新的采样方法来减少对人工标注的依赖。
  • 实验:我们在不同领域的真实场景数据集上进行了大量实验来验证 OpenTag 的有效性。它可以仅从 150 个标注样例中发现新属性,并且 F 分数高达 83%,超过了目前最好的方法。

问题定义

给定一组以非结构的文本数据形式出现的产品配置信息(标题、描述和要点),以及一组预定义的目标属性值(例如品牌、口味、尺寸),我们的目标是从非结构的文本数据中提取对应的属性值。

例如输入为:

  • 目标属性:品牌、口味和尺寸
  • 产品标题:“5 包装塞萨尔犬类美食多样包菲力牛柳和 T 骨牛排狗粮(12 小包)”
  • 产品描述:“多样包装包括:6 盘菲力牛排味”

我们想提取的是“塞萨尔”(品牌),“菲力牛柳”和“T 骨牛排”(口味)以及“6 盘”(尺寸)作为对应的模型输出。

正式问题定义:开放式属性值提取。给定一系列产品 I,对应的产品配置文件 X={xi:i 属于 I},以及属性值 A={a1, a2, …, am},用开放式估测提取所有的属性值 Vi=<{vi,j,1, …, vi,j,lij }, aj>。我们用 vij 来表示第 i 个产品的 aj 属性的值。产品配置文件(标题、描述、重点)由单词或词条序列组成:xi={wi,1, wi,2, …, wi,n}。

序列标注方法

传统的方法将这个任务视为多分类问题,将任意目标属性值作为一个类标,会产生以下问题:(1)标注扩展问题;(2)封闭式估测;(3)标注独立估测。基于以上的观察,我们采用序列标注来对该任务建模。

1. 序列标注

为了更好的对属性和属性值之间的依赖关系建模,我们采取序列标注的方法。我们将给定的标注集中的一个标注与输入序列的每个词条进行关联。目标是联合预测输入序列中的所有标注。在命名实体识别(NER)中,目标是标注给定输入序列中实体的名字。我们的问题可以视作是 NER 的一种特殊场景,我们要做的是给定输入词条序列,标注属性值。我们的想法是利用分布式语义,即相似的词条标注序列能够识别相似的概念。

2. 序列标注方法

“BIOE”是最常用的序列标注方法。“B”代表一个属性的开始,“I”代表属性的内部,“O”代表属性的外部,“E”代表属性的结尾。其他的方法包括“UBIOE”和“IOB”。“UBIOE”的“U”代表单元词条标注,区分一个词的属性和多个词的属性。而对于“IOB”标注,由于“B”和“I”已经足以表达一个属性的边界,所以省略了“E”。

表1

表1 给出了上述标注方法的示例。给定一个序列,“鸭肉、菲力牛排和牧羊羔口味”(duck, fillet mignon and ranch raised lamb flavor),由9 个单词组成(包括逗号),BIOE 标注方法提取出了3 个味道属性的值,“鸭肉”、“菲力牛排”和“牧羊羔”,分别由“B”、“BE”和“BIE”表示。

3. 序列标注的优势

序列标注方法有以下三个优点:

(1) 开放式预测和标注扩展。一个标注与一个词条相关,而不是一个特定的属性值,因此可以很好的扩展至新的属性值。

(2) 发现多词属性值。上述方法可以提取词条序列(多词属性值),而不是只能识别单个词属性值。

(3) 发现多个属性值。如果多个属性值分别根据对方进行了不同标注,标注方法可以同时发现多个属性值。

我们将原始的开放式属性值提取问题简化为如下序列标注任务:

假设 Y 是包含所有标注的标注集。如果我们选择 BIOE 作为标注方法。那么 Y={B, I, O, E}。我们的目标是学习一个标注模型 F(x) —> y,能够将第 i 个产品配置的输入序列 xi 的每个词条 wij 映射到一个对应的标注 yij。该监督分类任务的训练集为 S={xi, yi}。这是一个全局性的标注模型,能够捕捉标注之间的关系,并且将整个序列作为一个整体建模。我们将这个模型称作 OpenTag。

OpenTag 模型:通过序列标注提取属性值

OpenTag 模型基于最先进的命名实体识别系统,使用双向 LSTM 和条件随机场,但是我们没有使用任何字典和手动设计的特征。在下面的章节中,我们首先回顾这些模块,以及我们如何改进它们以适应属性值提取任务。随后,我们介绍了使用注意力机制的端到端的 OpenTag 结构,以及主动学习来减少对标注数据的依赖。

双向 LSTM 模型

双向 LSTM 模型能够分别通过前馈和反馈状态来捕捉之前时间点和未来时间点的特征。在序列标注任务中,我们通常需要联合考虑左边和右边的文本以得到更好的预测模型。使用从前向和反向 LSTM 中获得的隐矢量表示,以及非线性变换,我们可以创建一个新的隐矢量。最后,我们通过增加一个 softmax 函数来预测输入序列 x 中每个词条 xt 的标注。

虽然双向 LSTM 考虑了输入序列的序列特性,但是没有考虑输出标注的性质。因此,该模型在预测时不能考虑标注的连贯性。每个标注是独立于其他标注完成预测的。为了解决这个问题,作者使用 CRF 来约束预测标注的序列特性。

条件随机场和双向 LSTM(BiLSTM)标注序列建模

在 NER 任务中,传统的 CRF 模型使用人为定义的语义特征。我们将 LSTM 和 CRF 结合起来,利用类似于分布式词表示的语义特征。我们将 BiLSTM 模型产生的隐状态作为 CRF 模型的输入特征。我们加入一个非线性层来计算隐状态的权重,从而捕捉不同状态对于最终决策的重要性。

BiLSTM-CRF 网络可以利用(1)之前和之后时间点的特征,(2)经由 BiLSTM 模型编码入隐状态的输入序列的语义信息,(3)通过 CRF 约束的标注连续性,考虑了输出标注之间的依赖性。

注意力机制

引入注意力机制的目的是让模型强调重要的信息,而不是关注所有的信息。使用这种机制,我们可以强调输入序列中对于模型的预测和进行特征选择有重要性的词条。

在自然语言处理领域,注意力机制在神经机器翻译(Natural Language Processing, NMT)中广泛使用。NMT 系统包括一个序列到序列的编码解码器。引入注意力机制后,解码器可以将源序列的不同部分作不同处理。更重要的是,我们让模型基于输入序列和当前输入来学习需要注意的部分。

在我们的模型设置中,解码器是 BiLSTM,产生隐状态表示。我们引入一个注意力层,用注意力矩阵来计算输入序列中任意词条与所有相邻词条的相似性。这使得模型可以根据词条的重要性来产生最终的标注决策。

词嵌入(Word Embedding)

神经词嵌入是将在相似上下文中出现的单词映射到内嵌空间的相近点。这一操作形成了 OpenTag 的第一层。我们以属性标签为条件学习词表示,并且为不同的属性产生不同的词表示。

OpenTag 结构

图2

图2 给出了OpenTag 的整体结构。第一层是词嵌入层,为输入序列x 的每个词条xt 产生一个内嵌矢量。该矢量作为双向LSTM 层的输入,产生其对应的隐状态表示,作为前向和后向LSTM 状态的连接。BiLSTM 的输出作为注意力层的输入,学习需要特别关注的状态,随后产生带有注意力关注的隐状态表示。这些表示作为CRF 层的输入特征,来约束标注的连续性,以捕捉输出标注和词条隐状态表示在每个时间点的依赖性。

主动学习

主动学习适用于有大量无标注数据的场景,我们可以让学习器从无标注数据池中选择样本,然后再进行标注。学习器用一个很小的标注实例集作为初始训练集L。随后学习器使用某种搜索策略Q 不断的从未标注数据池中选择数据进行标注。主动学习的挑战在于如何设计一个好的搜索策略Q,能够从无监督实例集中选择出信息增益最高的样本。

我们采用的基线方法是最小置信度法(Least Confidence, LC)。它选择出分类器给的置信度最低的样本。在我们的序列标注任务中,CRF 的置信度通过条件概率得到。然而这一方法有以下两个缺点:(1)整个序列的条件概率与产品的连续标注转换率成比例,因此任意词条标注的错误置信度都会降低整个序列的概率,从而无法实现有价值的搜索,(2)尽管这个方法能够反应词条标注的置信度,但是只能影响少数几个标注,对整个序列的影响较小。

标注跳跃方法(Tag Flip)

根据上述局限性,我们提出了一个新的搜索策略,将标注分给一个序列的不同词条的困难程度来判断这个序列的信息增益。

我们模拟一个OpenTag 学习器的集群来代表与标注数据集L 一致的不同假设。信息增益最高的样本便是与集群成员分歧最大的样本。在训练过程中,对于每一个epoch,OpenTag 学习一组不同的模型和参数,来模拟学习器集群的一个成员。每一个epoch 之后,我们将学到的模型和参数应用于未标注样本池,然后记录下系统给每个样本分配的最佳标注序列。我们定义一次“跳跃”为连续的epoch 中给定序列的词条标注变化的次数。如果样本序列词条的标注在连续的epoch 之间不停地变化,则说明OpenTag 对于这个样本不能确定,模型也是不稳定的。因此,我们将标注跳跃次数(TF)作为衡量样本的不确定性和模型不稳定性的标准,然后搜索标注跳跃次数最高的样本进行标注。

下图给出了利用标注跳跃作为搜索策略的主动学习算法。

表2 给出了不同采样策略:最小置信度和标注跳跃选择的序列结果。

表2

从表中可以看出,标注跳跃算法选择的序列S2 有许多错误标注,对该次搜索进行标注的为学习器调整参数带来的影响要明显大于对S1 进行标注带来的影响。

实验

数据集

我们对3 类产品进行试验:(1)狗粮,(2)和(3)照相机。表3 给出了不同数据集的描述和实验设置。

表3

属性值提取表现

基线模型:我们首先考虑了BiLSTM 作为第一个基线模型。第二个是采用BiLSTM 和CRF 用于NER 的序列标注模型。

标注方法:我们采用{B, I, O, E}标注方法。

属性值提取结果:

表4

我们对比了OpenTag 和上述两个基准模型在判断来自不同产品配置文件、不同属性组在不同领域的属性值的效果。表4 给出了对比结果。我们发现OpenTag 的F 分数连续高于其他方法,达到了82.8%。在产品描述上,OpenTag 比BiLSTM-CRF 的表现有最大提高,提高了5.3%。

开放式预测发现新属性值实验结果:

表5

在这个实验中,我们测试了OpenTag 发现新属性值的效果。我们将测试数据和训练数据完全分开,确保它们不共享任何属性值。从表5 中可以看到,OpenTag 在非联合设置下表现良好,在发现新属性值的实验中F 分数为82.4%。

联合提取多属性值:

OpenTag 能够通过改变标注策略联合提取多属性值。在实验中,我们从狗粮产品标题中联合提取了品牌、味道和容量这三个属性值。从表 4 可以看出,OpenTag 相比于 BiLSTM-CRF 基线的 F 分数提高了 2%。

表6

由于联合提取多属性值能够利用他们的分布式语义信息,因此比单独提取的效果要好,如表6 所示。尽管品牌和容量这两个属性值的联合提取分数提高了,但是味道属性的提取分数略有下降。

注意力机制与可解释性

利用注意力给出解释:

图3

图3 给出了OpenTag 在训练过程中学习生成的注意力矩阵A 的热图。热图中的每个元素代表了一个词对于相邻上下文的重要程度,以及它是如何影响最终决策的。例如图中心4 个白色的方块,它们表明对应的“with”和“and”对于词条“beef”和“liver”的标注决策是很重要的,因为这些连接词连接了两个相邻的味道属性值。

这个例子表明我们的模型学习到了连接词的语义,以及它们对于属性值提取的重要性。

更好的概念聚类:

图4 OpenTag 取得了更好的概念聚类结果。

子图按顺序显示了注意力对输入数据的操作得到了更好的概念聚类结果。图4(a)显示了在引入注意力之前词语嵌入表示的分布。每一个点代表一个词条,它的颜色代表一个标注{B, I, O, E}。我们发现不同标注的词语最开始在内嵌空间随机分布。

我们通过累积对应的注意力权重为每个词计算两个重要性度量:(1)它对属性词的重要程度(估测属性值内词条的{B, I, E}标注);(2)它对外部词的重要程度(估测属性值外部词条{O}的标注)。对于每一次计算,我们采样前200 个最重要的单词,图4(b)给出了它们的分布。我们发现语义相关的词在位置上也比较相近。

图4(c)显示了注意力机制如何将隐矢量投射到新的空间。图中的每一个蓝点代表原始隐空间的一个单词。红点表示注意力机制将这个单词投影到一个新空间。同样,我们发现类似的概念在投射之后变得更近了。

图4(d)给出了经过注意力机制的操作后词向量的分布。与图4(a)对比发现,使用注意力机制之后,类似的概念(标注)有了更好的聚类和区分度。

主动学习

用保留测试集进行主动学习:

图5

为了对主动学习框架进行严格的评估,我们使用一个保留测试集来验证主动学习的效果。我们以少量的标注实例(50 个随机采样的实例)作为初始标注集L。图5 给出了两个任务的结果:(1)从调味品的产品标题中提取气味属性值;(2)从狗粮产品标题中提取多属性值(品牌、容量和味道)。采用标注跳跃采样策略的OpenTag 将单属性值提取的精度从59.5% 提高到91.7%,召回率从70.7% 提高到91.5%。我们也发现,标注跳跃方法比最小置信度方法对于单属性值提取的F 分数提高了5.6%,对于多属性值提取的F 分数提高了2.2%。

没有保留数据的主动学习:

图6

下面我们探索主动学习在多大程度上可以减轻人为标注的负担。我们用很少的标注实例(50 个)作为初始训练集L。我们想发现需要多少轮主动学习才能匹配初始训练集大小为500 的OpenTag 的表现。如图6 所示,我们仅用了大概150 个训练实例就达到了类似的表现水平。这一结果表明,OpenTag 结合采用TF 策略的主动学习可以大量减少对标注数据的需求。

总结

这篇论文介绍了OpenTag——一个端到端的标注模型,利用了BiLSTM、CRF 和注意力机制,从产品配置信息例如标题、描述和重点内容中提取缺失属性值。OpenTag 不使用任何字典或者手工提取的特征。它对数据结构也不做任何预估,因此可以用于任意一种文本数据。

OpenTag 其他的优势在于:

(1)开放式估测(OWA):它可以发现系统未见过的新属性,并且可以提取多词属性值以及多属性提取;

(2)不规则结构和稀疏文本:它可以处理非结构文本,例如产品配置信息这种缺乏规则语法结构、只是属性值堆叠的文本,以及稀疏文本;

(3)有限标注数据:与其他有监督模型和神经网络不同,OpenTag 所需训练数据较少。它利用主动学习来减轻人工标注的负担;

(4)可解释性:OpenTag 利用注意力机制来解释它的决定。论文在不同领域的真实数据集上进行了实验,实验证明 OpenTag 可以仅从 150 个标注样本中发现新的属性值(降低了 3.3 倍的人工标注量),F 分数高达 83%,超过了当前最先进的模型。

论文原文链接:

https://arxiv.org/abs/1806.01264v1

感谢蔡芳芳对本文的审校。

2018 年 6 月 26 日 15:122753
用户头像

发布了 51 篇内容, 共 22.3 次阅读, 收获喜欢 60 次。

关注

评论

发布
暂无评论
发现更多内容

发达国家加紧数字货币政策布局

CECBC区块链专委会

数字货币

分布式唯一ID解决方案-雪花算法

JavaPub

Java 分布式

Deno 双周刊 #1 - Deno 获 2020 JS 开源年度突破奖

hylerrix

typescript deno Node 周刊 V8

【计算机组成原理】01 - 计算机系统概述

brave heart

计算机组成原理 28天写作

夜莺二次开发指南-用户资源中心

秦叶宁

滴滴夜莺 夜莺监控

一文学会Java死锁和CPU 100% 问题的排查技巧

AI乔治

Java 架构 死锁 cpu 100%

线程池是怎么回收空闲线程的?如果你认为有定时任务,那你就错了!

看点代码再上班

Java 程序员 后端 开发

【Mysql-InnoDB 系列】关于一致读

程序员架构进阶

MySQL 架构 innodb 28天写作

JFR定位线上问题实例 - JFR导致的雪崩问题定位与解决

AI乔治

Java 架构 线程

未来五年数字经济九大技术趋势,区块链成数字时代刚需!

CECBC区块链专委会

人工智能

小马哥刷力扣 - LeetCode 9. 回文数

小马哥

LeetCode 算法和数据结构 28天写作

外行话之不玩游戏,怎么做好游戏?

游戏 28天写作 外行话

读《百度不需要用户》,我似乎懂得了领导者的无奈

李忠良

AI 企业

聚焦目标,团队工作不再一盘散沙(上)

一笑

管理 敏捷 目标管理 28天写作

一次慢查询暴露的隐蔽的问题

AI乔治

Java sql 架构 SQL优化

从零开始打造企业运营管理系统 (2)

dowell87

28天写作

28天瞎写的第二百一六天:LumaQQ 和 luma 二三事

树上

28天写作

关于时间管理的思考

.

28天写作

一文带你快速入门Canal,看这篇就够了!

大数据老哥

大数据 实时数仓 canal

夜莺二次开发指南-资产设备管理

秦叶宁

滴滴夜莺 夜莺监控

僵尸进程的成因以及僵尸可以被“杀死”吗?

AI乔治

Java 架构 进程

【Mysql-InnoDB 系列】事务模型

程序员架构进阶

MySQL 架构 innodb 事务 28天写作

读书笔记:《Remote》

lidaobing

28天写作 Remote

CSS13 - 定位

桃夭十一里

html/css

测试用文档

王德文

如何让开发人员接受DevSecOps

啸天

DevOps 开发者 DevSecOps 升职加薪 应用安全

程序员如何变富

陆陆通通

赚钱 程序员赚钱 28天写作

28 天带你玩转 Kubernetes-- 第五天(玩转Docker)

Java全栈封神

Docker Kubernetes k8s 28天写作

时间之外的颜色「幻想短篇 5/28」

道伟

28天写作

夜莺二次开发指南-监控系统(3)

秦叶宁

滴滴夜莺 夜莺监控

项目管理系列(1)-如何开好一个周会

Ian哥

项目管理 28天写作

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

李飞飞团队最新提出OpenTag模型:减少人工标注,自动提取产品属性值-InfoQ