什么是知识图谱?

前言

知识图谱这一概念最早有Google 提出,它是结构化知识库结合语义网络的产物,在表示形式上跟语义网络相似,但语义网络偏向描述概念之间的关系,而知识图谱偏向实体之间的关联。

举个例子:

  • 语义网络
    用相互连接的节点和边来表示知识。节点表示对象、概念,边表示节点之间的关系。比如下面这样
    在这里插入图片描述

  • 知识图谱
    知识图谱的节点代表实体,边代表两个实体之间的关系,其中实体也可以是属性值,这两个实体之间的边也称之为属性。如下图就是实体“周杰伦”的知识图谱示例(这只是其中一部分),图中黄色节点表示真实世界中的实体,比如人名、组织名、地名等,绿色节点代表属性值,黄色节点与黄色节点之间的边称为实体关系,黄色节点与绿色节点之间的边称为属性。从图中不难看出,知识图谱具有很明显的结构化特征以及语义网络的特征,节点的值一般是一个命名实体或者数字、日期、地点等。
    在这里插入图片描述

一般知识图谱使用 RDF(Resource Description Framework,资源描述框架) 数据格式进行存储,它的基本单位形如<主语,谓语, 宾语>,被称之为 SPO 三元组,S 表示主语(Subject),P 表示谓语(Predicate),O 表 示宾语(Object),一个知识图谱往往包含百万条以上的三元组,一个三元组就表示一个知识,“周杰伦-妻子-昆凌”这一条知识,用三元组表示就是<周杰伦,妻子,昆凌>。 知识图谱根据构建的方式分为两大类,一类是以 Freebase、DBpedia、 CN-DBpedia 等为代表的垂直领域知识图谱,它们以百科词条为基础抽取出大量的实体和关系构建三元组,这类知识图谱的知识来源清晰、真实性可靠, 但是相比于整个互联网,百科词条的知识只能算是冰山一角。另一类是开放抽取式知识图谱 , 这 类知识图谱以 OpenIE(Open Information Extraction) 、 NELL(Never-Ending Language Learning)等技术为基础,从整个互联网上的网页中抽取三元组,与垂直领域知识图谱相比,这类知识图谱的知识更为丰富多样,但噪声会更大,且实体和关系的描述偏向自然语言的形式。

语言的表示方式

在NLP中,语言的表示方式大致分为下面三种:

one-hot向量模型

若有个字典或词库里有个N单词,则每个单词可以被一个N维的one-hot向量代表。假如词库中只有三个单词:苹果、葡萄、榴莲。

苹果 = [1 0 0]
葡萄 = [0 1 0]
榴莲 = [0 0 1]

One-hot编码可以将类别性数据转换成统一的数字格式,方便计算机进行处理及计算,同时固定维度的向量也有利于线性代数计算

词袋模型

词袋模型就是将所有词语装进一个袋子里,不考虑其词法和语序的问题。

小明想去成都旅游
小红想去北京旅游

比如上面两句话构成一个词袋,袋子里包括小明、小红、想、去、成都、北京、旅游。假设建立一个数组(或词典)用于映射匹配。

[小明, 小红,想,去,成都,北京,旅游]

那么上面句子就可以转成两个向量表示,对应的下标与映射数组的下标相匹配,其值为该词语出现的次数。

小明想去成都旅游 = [1, 0, 1, 1, 1, 0, 1]
小红想去北京旅游 = [0, 1, 1, 1, 0, 1, 1]

可以很明显的看到两个词频向量,语序关系已经完全丢失。

词向量模型

词向量模型是考虑词语位置关系的一种模型。通过大量语料的训练,将每一个词语映射到高维度(几千、几万维以上)的向量当中,通过求余弦的方式,可以判断两个词语之间的关系,例如例句中的小明和小红在词向量模型中,他们的余弦值可能就接近1,因为这两个都是人名,北京和小明的余弦值可能就接近0,因为一个是人名一个是地名。

在词向量模型中,词向量与词向量之间有着非常特殊的特性。例如现在存在国王、男生、女人、皇后四个词向量,那么理论上一个完备的词向量模型,就存在“国王-男人+女人=皇后”这样的关系。

小结

目前基本上都采用词向量来训练神经网络模型。那么词向量怎么来的呢,就要说到word2vec了。

word2vec

本质是将稀疏矩阵降维至稠密矩阵。

词嵌入

NLP 里面,最细粒度的是词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要拿词语开刀。

举个简单例子,判断一个词的词性,是动词还是名词。用机器学习的思路,我们有一系列样本(x,y),这里 x 是词语,y 是它们的词性,我们要构建 f(x)->y 的映射,但这里的数学模型 f(比如神经网络)只接受数值型输入,而 NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等),所以需要把他们转换成数值形式,或者说嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding)。

Word2vec 就是词嵌入( word embedding) 的一种,但它的最终目的,不是要把 f 训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做——词向量。

我们来看个例子,如何用 Word2vec 寻找相似词:

  • 对于一句话:『她们 夸 吴彦祖 帅 到 没朋友』,如果输入 x 是『吴彦祖』,那么 y 可以是『她们』、『夸』、『帅』、『没朋友』这些词
  • 现有另一句话:『她们 夸 我 帅 到 没朋友』,如果输入 x 是『我』,那么不难发现,这里的上下文 y 跟上面一句话一样
  • 从而 f(吴彦祖) = f(我) = y,所以大数据告诉我们:我 = 吴彦祖(完美的结论)

word2vec总共分为两种模型:

  • 如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』
  • 而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』

网络模型

假设 y 是 x 的上下文,当 y 是上下文里一个词语的时候,语言模型就变成:

用当前词 x 预测它的下一个词 y。

word2vec的输入是one-hot向量。假设输入向量为 X,输出 Y’ 是在V个词的词典中的输出概率,最终目标是希望输出 Y’ 跟真实的 Y 一样。

首先说明一点:隐层的 激活函数 其实是线性的,相当于没做任何处理,我们要训练这个神经网络,用**反向传播算法**(链式求导),感兴趣可以点进去阅读。

当模型训练完后,最后得到的其实是神经网络的权重,比如现在输入一个 x = [1,0,0,…,0],对应词语『吴彦祖』,则在输入层到隐含层的权重里,只有对应 1 这个位置的权重被激活,这些权重的个数,跟隐含层节点数是一致的,从而这些权重组成一个向量 V(x) 来表示 x,而因为每个词语的 one-hot 向量中的 1 的位置是不同的,故这个向量 V(x) 就可以用来唯一表示 x。

输出 y’ 也是用 V 个节点表示的,对应V个词语,所以其实,我们把输出节点置成 [1,0,0,…,0],它也能表示『吴彦祖』这个单词,但是激活的是隐含层到输出层的权重,这些权重的个数,跟隐含层一样,也可以组成一个向量 V(y’),跟上面提到的 V(x) 维度一样,并且可以看做是词语『吴彦祖』的另一种词向量。而这两种词向量 V(x) 和 V(y’),也就是『输入向量』和『输出向量』,一般我们用『输入向量』。

{ X 1 × V × W V × N = H 1 × N H 1 × N × W N × V ′ = Y 1 × V \left \{\begin{matrix} X_{1\times V}\times W_{V\times N} = H_{1\times N} \\ H_{1\times N}\times W'_{N\times V} = Y_{1\times V} \end{matrix}\right. {X1×V×WV×N=H1×NH1×N×WN×V=Y1×V

上述模型可以转化为这样的矩阵运算,其中两个权重矩阵随着输入和输出的不同一直调整。当模型训练完成后,每个输入的one-hot向量只会在对应1的位置激活权重矩阵
H 1 × N H_{1\times N} H1×N
这个输入向量对应的词向量。

一般情况下,这个词向量的维度(与隐含层节点数一致)要远远小于词语总数 V 的大小,所以 Word2vec 本质上是一种降维操作——把词语从 one-hot 向量形式的表示降维到 Word2vec 形式的表示。

其他概念

命名实体识别(NER)

识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,以及时间、数量、货币、比例数值等文字。

实体消歧

判断两条数据记录(可能来自一个数据源也可能来自不同数据源)是否是同一语义,从另一个角度说也会把不同语义的数据区分开。

实体融合

通过对齐关系形成的同一语义的数据子图,我们称之为一个“连通图”。把一个连通图内的所有SPO数据合并起来,形成一个统一的实体,这个过程称为实体融合。

参考文档

词袋模型(BOW,bag of words)和词向量模型(Word Embedding)概念介绍

语义网络,语义网,链接数据和知识图谱

知识图谱里的知识表示:RDF

[NLP] 秒懂词向量Word2vec的本质

反向传播算法

NLP实战-中文命名实体识别

中文命名实体识别NER的原理、方法与工具

关系提取

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值