OpenAI研究 发现实体消歧的类型
我们已经建立了一个系统,通过让神经网络确定该词是否属于大约 100 种自动发现的“类型”(非排他性类别)中的每一种,来自动确定该词指的是哪个对象。
例如,给出“猎物看到美洲虎穿过丛林”这样的句子,而不是试图直接推理美洲虎是指汽车、动物还是其他东西,系统会使用预先选择的集合播放“20 个问题”类别。这种方法大大提高了几个实体消歧数据集的最新水平。
我们在CoNLL (YAGO)上达到了 94.88% 的准确率 (之前的技术水平: 91.50 %、 91.70 %),在TAC KBP 2010 挑战中达到了 90.85% (之前的技术水平: 87.20 % 和 87.70 %)。以前的方法使用 分布式表示。类型几乎可以在这些任务中发挥作用,因为完美的类型预测可以提供 98.6-99% 的准确率。
高级概述
我们的系统使用以下步骤:
- 提取每个维基百科内部链接,以确定每个单词可以指代的可想象实体集。
[jaguar](https://en.wikipedia.org/wiki/Jaguar)
例如,当遇到维基百科页面中的 链接时 ,我们得出结论,这https://en.wikipedia.org/wiki/Jaguar
是 jaguar 的含义之一。 - 遍历维基百科类别树(使用 维基数据 知识图谱)以确定每个实体所属的类别集。例如,在 Jaguar cars Wikipedia 页面的底部有以下类别(它们本身有自己的类别,例如 Automobiles):“英国品牌 | 汽车品牌 | 捷豹汽车 | 捷豹汽车。”
- 选择约 100 个类别的列表作为您的“类型”系统,并优化此类别选择,以便它们紧凑地表达任何实体。我们知道实体到类别的映射,因此给定一个类型系统,我们可以将每个实体表示为一个约 100 维的二进制向量,指示每个类别的成员资格。
- 使用每个维基百科内部链接及其周围上下文,生成将单词加上上下文映射到相应实体的约 100 维二进制表示的训练数据,并训练神经网络来预测此映射。这将前面的步骤链接在一起:维基百科链接将一个词映射到一个实体,我们从第 2 步知道每个实体的类别,第 3 步在我们的类型系统中选择类别。
- 在测试时,给定一个词和周围的上下文,我们的神经网络的输出可以解释为该词属于每个类别的概率。如果我们知道类别成员的确切集合,我们将缩小到一个实体(假设类别选择得当)。但是相反,我们必须玩一个概率性的 20 题:使用 贝叶斯定理 来计算单词消除歧义到它的每个可能实体的机会。
更多例子
以下是我们系统运行的其他一些示例:
这黑莓是一种可食用的果实,由蔷薇科悬钩子属的许多物种生产,悬钩子亚属中这些物种的杂交种,以及悬钩子属和 Idaeobatus 亚属之间的杂交种。
无线手持设备和服务系列
悬钩子的果实。悬钩子
加拿大电信和无线设备公司
清理数据
Wikidata 的知识图谱可以转化为训练数据源,用于将细粒度实体映射到类型。我们 instance of
递归地应用它的关系来确定任何给定实体的类型集——例如, 人类 节点的任何后代节点都具有人类类型。维基百科还可以通过其 category link
.
维基百科内部链接统计数据可以很好地估计特定短语指代某个实体的可能性。然而,这是有争议的,因为维基百科通常会链接到一个类型的特定实例而不是类型本身(照应 ——例如 英格兰的国王 → 查理一世)或从昵称(转喻)链接。这导致关联实体的爆炸式增长(例如 国王 有 974 个关联实体)和扭曲的链接频率(例如 女王链接到女王 乐队 4920 次, 伊丽莎白二世 1430 次,而 君主 只有 32 次)。
最简单的方法是 修剪 稀有 链接,但这会丢失信息。我们改为使用维基数据属性图来启发式地将链接转换为它们的“通用”含义,如下图所示。
在此过程之后, 国王从 974 个关联实体增加到 14 个,而从女王 到 君主 的链接数量 从 32 个增加到 3553 个。
学习一个好的类型系统
我们需要选择最佳类型系统和参数,以使消歧精度最大化。有大量可能的类型集,使得精确的解决方案变得棘手。相反,我们使用启发式搜索或随机优化(进化算法)来选择类型系统,并使用梯度下降来训练类型分类器来预测类型系统的行为。
接受者操作特征曲线 (ROC) 描绘了真阳性(实际检测到的实际事件)数量的增加相对于误报数量(因触发快乐而导致的误报)的增加情况。这里曲线的 AUC 为0.75.
随机行为的分类器将偶然有一条直线 ROC 曲线(虚线)。
我们需要选择具有辨别力的类型(这样可以快速减少可能的实体集),同时又易于学习(因此周围的上下文可以为神经网络提供信息以推断出适用的类型)。我们通过两种启发式方法来告知我们的搜索:可学习性( 经过训练以预测类型成员资格的分类器的曲线下面积 [AUC] 分数的平均值)和预言准确性(如果我们完美地预测所有类型,我们将如何消除实体歧义)。
类型系统演化
在给定上下文窗口的情况下,我们训练二元分类器来预测我们数据集中 150,000 种最常见类型中每一种的成员资格。分类器的曲线下面积( AUC) 成为该类型的“可学习性分数”。高 AUC 意味着很容易从上下文中预测这种类型;性能不佳可能意味着我们的训练数据很少,或者单词窗口不是很有用(这对于像ISBN这样的非自然类别来说往往是正确的 )。我们的完整模型需要几天的时间来训练,所以我们使用一个更小的模型作为我们的“可学习性分数”的代理,它只需要 2.5 秒来训练。
我们现在可以使用这些可学习性分数和统计数据来估计给定类型子集作为我们的类型系统的性能。您可以在下面运行 交叉熵方法 来发现浏览器中的类型。请注意更改样本大小和惩罚如何影响解决方案。
优化已关闭。100将在优化的每个步骤中取样。更多样本使优化更精确,但需要更长的时间。
0.00目标J=0.00%神谕的准确性・1.00易学性-0.00007惩罚λ・0解决方案规模
为了更好地可视化类型系统设计的哪些部分容易哪些困难,我们邀请您在下面尝试自己设计。选择高级域后,您可以开始查看不明确的示例。可能的答案显示为顶行的圆圈,正确答案是彩色圆圈(悬停以查看其名称)。底行包含您可以使用的类型。连接顶行和底行的线是继承关系。选择你想要的关系。一旦你有足够的关系将正确的答案与其他答案分开,这个例子就消除了歧义。
神经类型系统
使用我们的类型系统优化的最佳解决方案,我们现在可以使用类型系统生成的标签来标记来自维基百科的数据。使用此数据(在我们的实验中,英语和法语各有 400M 个标记),我们现在可以训练 双向 LSTM 来独立预测每个单词的所有类型成员。在维基百科源文本中,我们仅对维基内部链接进行监督,但这足以训练深度神经网络预测 F1 超过 0.91 的类型成员 资格 。
我们的一个类型系统是通过集束搜索发现的,包括诸如 Aviation
、 Clothing
和 Games
(以及令人惊讶的特定类型,例如—— 1754 in Canada
在它所训练的 1,000 篇维基百科文章的数据集中,表明 1754 年是令人兴奋的一年);您还可以查看 完整的 类型系统。