关于知识图谱构建

最近读到一篇不错的关于构建知识图谱的综述,做一下总结和读后感。

背景

在讲知识图谱前,首先得理解一下下游任务(诸如搜索技术)的难点。对于给定的输入query,如果检索系统中有较大的语料库(问答预料或文章数据),使用语义匹配查找近似query的历史FAQ或文章title,或许可以找到query的答案。但往往输入的query在语言描述上不够完备,那在这种情况下应该怎么办呢?

传统的搜索可能会先对query进行分词。对于检索系统中的语料,用倒排索引做好索引,再根据BM25等算法对分词结果中的词进行召回、排序。这一系列过程都会引入很多工程上的技巧,比如:建索引时过滤掉停用词;构建业务相关的词典加入分词器与索引中;改善排序算法的权重。

以上描述的搜索系统,都是基于关键词匹配的,也就是说只有语料中包含query的关键词,才会被系统检索到。显然这样基于关键字匹配的系统,会大大限制搜索的范围。换言之,仅使用分词后的query去匹配语料的系统,无法理解query所包含的语义信息。

要真正理解query所包含的语义信息,往往我们需要看到query所关联或者引申出的背后含义,而这一步则需要让系统有人类一样的抽象、总结、推理、改写、联想的能力。为了让机器拥有这样的能力,很重要的一点是让它们能接触到人类习以为常的背景知识,而这就是知识图谱能够发挥作用的地方。

概念

知识图谱本质上是一个语义网络,其中的节点代表实体或是概念,边代表实体(或概念)与另一个实体之间的语义关系。知识图谱在体系层面有三种组织分类:Ontology、Taxonomy和Folksonomy。

Ontology可以理解为:表示某个系统中实体以及其类型、属性、关系等的语义模型。Ontology定义的模型/规则,加上data,就构成了knowledge graph。

Taxonomy是一个具有层级结构(hierarchy)的分类,广泛地用来表示互联网上的网络结构,比如:文件列表(想象一下本地文件左侧展示的文本目录)、购物网站搜索的分类、百科网站的目录(含一级标题,二级标题等)。换言之,taxonomy中的节点,往往是以Hypernym-Hyponym关系构建的。

Folksonomy则是非层级(hierarchy)的结构,全部节点以标签分类。虽然灵活,但缺少了语义的精确性。

构建

构建知识图谱,第一部可以考虑从现有的半结构化、非结构化和公开的结构化数据库中获取数据。但整合数据时,需要做到概念消歧义、实体对齐等工作。

以维基百科为例,它就是高质量的半结构化数据,每个实体词都有丰富的context。段落的标题提供了结构化信息。为了抽取段落中的结构化信息,可能需要用到:命名实体识别、关系抽取、属性抽取、指代消解等技术。

Taxonomy可以理解为一个具有IsA关系的树状结构,但结构化目录所提供的IsA(或者说上下位关系)并不多,如何从非结构化数据或者半结构化数据的段落中抽取IsA关系就成了一个难点。

如段落中的某句话是:小明是一个运动员。如果和抽取小明IsA运动员就是一个典型的非结构化数据中关系抽取的问题。

Taxonomy构建技术

由于语料的篇幅、主题、内容、排版、质量存在巨大差异,通过模板设计抽取方式很难具有好的效果和迁移性。另一方面,语言多样性和跨领域消歧义也给这个任务带来了很大的挑战。

目前主流的方法包含两个步骤:

  • 利用模板或者分布式表示从文本中抽取IsA关系对
  • 从抽取的关系对中,推演出完整的taxonomy结构(taxonomy induction)

基于模板的方法(pattern-based)

通过设计类似于:“[C] such as [E]”,“[C] and [E]”的模板,可以从文本中找到符合这些句式的上下位关系对。模板方法一般召回率低,同时由于位置常用语、错误表达、抽取不全、歧义等问题,也可能导致模板抽取失败。

提高召回

第一类直观方法是,对模板进行扩展(pattern generalization),如给不同的实体类型设计不同的模板,通过冠词、助词的替换增加新的模板。也有一些自动学习模板的方法,比如通过句法依赖分析(dependency parsing),来查找可以作为模板的句法依赖路径。

为了提升自动学习的效率,可以考虑替换句子中的低频实体词,通过聚类的方法挑出general的pattern。类似的,也可以将depedency parsing中,随机替换path中的pos tag,ontological type或实体词。

第二类方法是迭代抽取。主要目的是防止一些general的pattern被重复多次抽取。

第三类方法是上位词推断(hypernym inference)。这类方法的主要思想是,语义相近的词,是否会具有相同的关系对。比如y是x的上位词,且x与x'意思相近,那y可能也是x'的上位词。有工作通过训练HMM模型,来预测句子迁移的预测。

提高准确率

通常可以用基于统计的方式来衡量抽取的准确率。如给定(x,y),系统可以计算它们的互信息;或者用似然概率表示y是x的上位的概率,通过最大似然估计得到这个概率值;也可以通过贝叶斯分类的预测结果、外部数据验证等方式。

基于分布式表示(distributional representation)的方法

NLP中常说的分布式表示一般是指词向量、句向量等表示学习的结果。这类方法大致有两个步骤:

  • 获得种子数据集(key term)
  • 用无监督或者有监督方法扩充关系对
key terms的抽取

种子数据集可以通过设计严格的pattern得到,这种方法可以在数据量较大时使用。但当数据量小时,由于pattern的局限性,只能抽取到少量数据,不利于后续训练。类似地,也可以使用序列标注或NER进行抽取,再加上规则过滤。对于垂直领域的taxonomy,可以结合某些统计数据进行过滤,如TF,TF-IDF,领域权重等。

扩充关系对

第一类方法是聚类,核心是如何设计距离评价指标。对于某个关系对(x,y),可以使用cosine,Jaccard,Jensen-Shannon divergence来衡量它们的距离。抽取的feature可以是两个词在语料中的共现频数、点互信息等。

第二类方法是有监督学习,比如classification或ranking。常见的做法是,将(x,y)关系对中的词输入预训练好的word embeddings(或单独的embedding layer)中,再将它们的word embedding拼接在一次,送入SVM或logistic regression中作二分类预测。然而这类模型很容易学习到semantic similarity(语义相似性),而非上下位关系。

除了分类器,也可以构建ranking model,称为上位词生成(hypernym generation):寻找与向量x的上位词最接近的向量y。

taxonomy induction

在抽取得到关系对后,下一步jiu是如何把它们进行整合,得到完整的taxonomy。常规方法是增量学习(incremental learning):初始化一个seed taxonomy,然后将新的关系对补充到其中。这个构建的方法也可以看成是聚类。比如有很多关系对先组成子树,再通过聚类将子树合并。

也可以从图结构出发,寻找入度为0的节点,这有很大可能是taxonomy的顶部(root);找到出度为0的节点,它们大概率是底部instance;再通过最长路径找到root到instance的path。

最后还需要对taxonomy进行清理,删去错误的关系对。一个典型的特征是观察是否存在环状结构。另一个问题是语义消歧,尤其当关系对是通过传递性扩充出来时,可能由于实体词指代或语义不清,导致传递发生错误。作者还给出了一些工业界上的方法,比如包括收集用户的搜索、点击日志,解析UCG内容,从中获取信息帮助消岐,并且反哺给知识图谱。

作者接下来举了两个例子中英文图谱构建的例子。

Probase构建

Probase强调probabilistic taxonomy,通过统计每个上下位词关系对的共现频数,来表示它们的确信度。构建过程大致分为两步:

  • 利用Hearst Patterns获得原始语料中的上下位词候选对
  • 根据上下位关系合并关系对,形成树状结构。根据横向或纵向合并原则,将子树合并成完成的图谱。横向合并的原则时,当两颗子树的儿子们非常相似;纵向合并则发生在,当某个节点y的子树,与x的某个节点z的子树相似时。
中文图谱构建

中文更为灵活,往往单纯的模板抽取召回率很低,因此需要考虑映射模型与模板相结合的方法。作者介绍了论文“Predicting hypernym-hyponym relations for Chinese taxonomy learning”中的方法。

记一个taxonomy为T=(V,R),其中V是实体向量,R表示关系。现在从外部数据源中抽取了一些关系对U,需要学习一个算法,将U中的关系对补充到T中。步骤如下:

  • 将taxnomy中已有的关系对作为训练集,映射到词向量空间
  • 根据词向量,训练线性映射模型(piecewise linear projection)
  • 将模型应用到外部数据U上,加上规则筛选出新的关系对
  • 将关系对补充到训练集中,迭代训练。

由于单一线性映射模型效果有限,作者先根据与训练的词向量,通过k-means将上下位词关系对聚类到不同的cluster中,对于不同类别的关系对,采用不同的线性映射模型。

参考:
https://zhuanlan.zhihu.com/p/69360094
Predicting hypernym-hyponym relations for Chinese taxonomy learning, Wang et.al. Knowledge and Information Systems

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343