《短文本数据理解》第4章 基于概念化的短文本理解 笔记

基于概念化的短文本理解

预备知识

Probase

Probase是一个概念知识图谱,包含数百万的词,每个词表示一个实体、一个概念,或者两者都是。同时,它包含两种最主要的关系,即isA关系(如Barack Obama isA President)和isAttributeOf关系(population isAttributeOf country)。

isA关系存在于实体与概念之间,可以通过下式来计算一个实体属于某个概念的典型性:
P ∗ ( c ∣ e ) = n ( e , c ) ∑ c n ( e , c ) ( 1 ) P^{*}(c \mid e)=\frac{n(e, c)}{\sum_{c} n(e, c)} (1) P(ce)=cn(e,c)n(e,c)1
其中,n(e, c)是在语料中“e is c”这样的句子出现的频率。

概念聚类

Probase包含数百万个概念,一个实体可以对应到很多概念。例如,“tiger”这个实体可以对应到animal、exotic animal、jungle animal等概念。将这些概念全部归纳为一个animal概念有助于降维,从而减轻计算负担,并且使得实体之间的相似度得到更好的衡量,进而为推断提供便利

作者采用k-Medoids聚类算法将这些概念聚为5000个簇,如animal、exotic animal、jungle animal等概念全部聚为一个animal概念簇。相应地,每一个实体被映射到概念簇,而不是原来的单个概念上。一个实体e对应到一个概念簇c的典型度定义为:
P ( c ∣ e ) = ∑ c ∗ ∈ c P ∗ ( c ∗ ∣ e ) ( 2 ) P(c \mid e)=\sum_{c^{*} \in c} P^{*}\left(c^{*} \mid e\right) (2) P(ce)=ccP(ce)(2)

属性

属性是根据如下的模板从语料中挖掘出来的:

the<attr>of(the/a/an)<term>(is/are/was/were/…)

此处<attr>表示待抽取的属性,<term>表示一个概念(如国家)或一个实体(如中国)

例如, “the capital of China”可以得到“capital”是“China”的一个属性,然后因为“China”是属于Country这个概念的,因此“capital”也是Country的一个属性。

属性的典型度如下式表示
P ( c ∣ a ) = f ( n c ∗ , a , n e 1 , a , ⋯   , n e k , a ) ( 3 ) P(c \mid a)=f\left(n_{c^{*}, a}, n_{e_{1}, a}, \cdots, n_{e_{k}, a}\right) (3) P(ca)=f(nc,a,ne1,a,,nek,a)(3)
其中,nc*,a表示属性a与一个概念c以上述句式出现的频率,nei, a表示属性a与一个实体ei以上述句式出现的频率,并且ei是属于概念c的一个实体

概念化

将短文本(如搜索引擎中的查询关键字)所包含的实体映射到概念空间上,从而支持机器进行进一步的计算。以一个搜索引擎中的查询来说,概念化就是要推断出该查询所包含的词最有可能对应的概念,如查询“watch harry potter”。“harry potter”可以指各种概念,包括book、movie和character等。但在该查询中,它最有可能对应的概念是movie。

概念化步骤

概念化分为两步,第一步为离线构建,第二步为在线查询。

  1. 首先构建出一个关于词汇的知识库,将非实体词,包括动词、形容词,以及实体和常见属性等对应到相关的概念上
  2. 将一个短文本中包含的词语、相关的概念,用步骤一种构建的词汇库将它们之间的关系用一个图模型来表示,然后采用基于随机游走的算法来得到对应的概念。

离线构建词汇知识库

词汇知识库的构建主要是为了得到如下两个概率:

P(z|t):这个概率表示,给定一个词语t,它的词性z(包括动词、形容词、实体或者实体的属性)出现的概率是多少。例如,当“watch”在一段语料中出现时,它有0.8374的几率是动词,P(verb|watch)=0.8374。

P(c|t, z):这个概率表示,当一个词语t以词性z出现时,它与概念c有关的概率是多少。例如,P(movie|watch, verb)这个概率指的是当watch作为一个动词出现时,它与movie相关的概率。

这两个概率主要通过统计网络上的文档得到,首先使用斯坦福的自然语言处理工具Stanford Parser对文档进行分词和词性标注,然后从中提取出动词和形容词,再根据解析出的依赖关系,与Probase相结合,找出这些动词和形容词作用的对象,以及它们在Probase中对应的实体或概念。

P(z|t) 由下式得到

P ( z ∣ t ) = n ( t , z ) n ( t ) ( 4 ) P(z \mid t)=\frac{n(t, z)}{ n(t)} (4) P(zt)=n(t)n(t,z)4

n(t, z)表示在语料中词语t以词性z出现的次数,n(t)是词语t出现的总次数

P(c|t, z)时,由于词性z可能是实体、属性、动词或形容词,需分别对这几种情况进行讨论:

  1. 当z是实体时,P(c|t, z=instance)就退化成P(c|e),就可以用式(2)求概率了:

P ( c ∣ t , z = i n s t a n c e ) = P ( c ∣ e ) ( 5 ) P(c \mid t,z=instance)=P(c \mid e) (5) P(ct,z=instance)=P(ce)5

  1. 当z是属性时,P(c|t, z=attribute)就退化成P(c|a),就可以用式(3)求概率了:

P ( c ∣ t , z = a t t r i b u t e ) = P ( c ∣ a ) ( 6 ) P(c \mid t,z=attribute)=P(c \mid a) (6) P(ct,z=attribute)=P(ca)6

  1. 当z是动词或形容词在这种情况下,首先挖掘出动词/形容词与实体之间的关系,再通过实体作为桥梁(如下图所示),得到动词/形容词和概念之间的联系
    图片1
    同样根据共现关系来求得在词语t在词性为z时的概率,具体式7所示
    P ( e ∣ t , z ) = n z ( e , t ) ∑ e ∗ n z ( e ∗ , t ) ( 7 ) P(e \mid t, z)=\frac{n_{z}(e, t)}{\sum_{e^{*}} n_{z}\left(e^{*}, t\right)} (7) P(et,z)=enz(e,t)nz(e,t)(7)

通过实体作为桥梁就可以得到最终想要的概率,如式8和式9所示

P ( c ∣ t ,  verb  ) = ∑ e ∈ c P ( c , e ∣ t ,  verb  ) = ∑ e ∈ c P ( c ∣ e , t ,  verb  ) × P ( e ∣ t ,  verb  ) = ∑ c ∈ c P ( c ∣ e ) × P ( e ∣ t ,  verb  ) ( 8 ) \begin{aligned} P(c \mid t, \text { verb }) &=\sum_{e \in c} P(c, e \mid t, \text { verb }) \\ &=\sum_{e \in c} P(c \mid e, t, \text { verb }) \times P(e \mid t, \text { verb }) \\ &=\sum_{c \in c} P(c \mid e) \times P(e \mid t, \text { verb }) \end{aligned} (8) P(ct, verb )=ecP(c,et, verb )=ecP(ce,t, verb )×P(et, verb )=ccP(ce)×P(et, verb )(8)

P ( c ∣ t ,  adjective  ) = ∑ c ∈ c P ( c ∣ e ) × P ( e ∣ t ,  adjective  ) ( 9 ) P(c \mid t, \text{ adjective })=\sum_{c \in c} P(c \mid e) \times P(e \mid t, \text { adjective }) (9) P(ct, adjective )=ccP(ce)×P(et, adjective )(9)

其中P(c|e)由式(2)给出,P(e|t, verb)和P(e|t,adjective)由式(7)给出。

在计算完以上概率之后,就可以得到一个语义网络了,其中顶点代表词,包括实体、概念、属性、动词、形容词。下图显示了语义网络中围绕“watch”的一个子图。

图片2

语义网络中的顶点可以分为两种,一种是概念词(以矩形表示),另一种是非概念词(以椭圆表示)。顶点之间包含三种关系:①实体与概念之间的isA关系,②动词/形容词/属性与概念之间的关联关系,以及③概念之间的关联关系。
这三种关系的权重确定可分为两种情况。第一种情况是非概念词和概念词之间的关系,用P(c|t)表示,对应前两种关系, 计算方式如式10。第二种情况,对应第三种关系,体现了两个概念之间的相关程度,如product和company就是两个紧密联系的概念,用P(c1|c2)表示,计算方式如式11。

P ( c ∣ t ) = ∑ z P ( c ∣ t , z ) × P ( z ∣ t )   ( 10 ) P(c \mid t)=\sum_{z} P\left(c \mid t,z\right) \times P(z \mid t) \text { } (10) P(ct)=zP(ct,z)×P(zt) (10)

P ( c 2 ∣ c 1 ) = ∑ e i ∈ c 1 , e j ∈ c 2 n ( e i , e j ) ∑ c ∈ C ∑ e i ∈ c 1 , e j ∈ c n ( e i , e j ) ( 11 ) P\left(c_{2} \mid c_{1}\right)=\frac{\sum_{e_{i} \in c_{1} , e_{j} \in c_{2}} n\left(e_{i}, e_{j}\right)}{\sum_{c \in C} \sum_{e_{i} \in c_{1} , e_{j} \in c} n\left(e_{i}, e_{j}\right)} (11) P(c2c1)=cCeic1,ejcn(ei,ej)eic1,ejc2n(ei,ej)(11)

式11中n(ei, ej)是概念c1和概念c2包含的无歧义实体的共现次数,分母用来进行归一化。

查询理解

查询概念化的算法包括三个组成部分:第一部分对查询进行分词,第二部分利用分好的词构建语义子图,第三部分执行迭代算法找出各个词最可能对应的概念。

1.分词。首先将一个查询分为一组词,记为T={t1, t2, …}。把Probase作为词典,可以识别出一个查询中出现的词,并且只考虑最长子串,也就是说,如果一个词完全包含在另一个词中,那么只取最长的那个子串作为一个词。在某些情况下,得到的词会有部分重叠,如“new york times square”可以解析为“new york”和“times square”的组合,也可以解析成“new york times”与“square”的组合,在这种情况下,两种分词都被认为是有效的,在下文构建语义子图时,两种分词产生的结果都将作为顶点包含在图中。 分完词后,同时去掉连词和介词,因为对概念化不重要。

  1. 构建语义子图。 步骤一中得到的词可以对应到离线构建好的语义网络中的一些顶点,每个顶点又与一些概念相关联,把这些词、相关概念和相互之间的边从整个大的语义网络中抽取出来,就成为该查询对应的语义子图。下面显示了查询“new york times square”和“cheap disney watch”对应的子图

图片3

  1. 执行迭代算法,使用多轮随机游走的方法来为每一个词找到最可能对应的概念,每一轮随机游走中又包含若干次迭代。

    在第一轮随机游走中,用向量E表示边的权重,向量Vn表示在随机游走的第n次迭代时顶点的权重。也就是说,在一轮随机游走的若干次迭代过程中,边的权重是不变的,而顶点的权重会随着传播而改变。具体来说,边的权重被初始化为
    E [ e ] = { P ( c ∣ t ) e : t → c P ( c 2 ∣ c 1 ) e : c 1 → c 2 ( 12 ) \boldsymbol{E}[e]=\left\{\begin{array}{ll} P(c \mid t) & e: t \rightarrow c \\ P\left(c_{2} \mid c_{1}\right) & e: c_{1} \rightarrow c_{2} \end{array}\right. (12) E[e]={P(ct)P(c2c1)e:tce:c1c212

    其中P(c|t)和P(c2|c1)分别由式(10)和式(11)得到。

​ 顶点的权重被初始化为:
V 0 [ v ] = { 1 / ∣ T ∣ v  是一个词  0 v  是一个概念  ( 13 ) \boldsymbol{V}^{0}[v]=\left\{\begin{array}{ll} 1 /|T| & v \text { 是一个词 } \\ 0 & v \text { 是一个概念 } \end{array}\right. (13) V0[v]={1/T0v 是一个词 v 是一个概念 13
​ 其中|T|是该查询中词个数。

每一轮随机游走采用带重启的随机游走[149]来传播权重, 采用下式来更新迭代过程中的参数:
V n = ( 1 − α ) E ′ × V n − 1 + α V 0 ( 14 ) \boldsymbol{V}^{n}=(1-\alpha) \boldsymbol{E}^{\prime} \times \boldsymbol{V}^{n-1}+\alpha \boldsymbol{V}^{0} (14) Vn=(1α)E×Vn1+αV014
其中E′是将向量E写为矩阵的形式,由式(12)得到

完成一轮随机游走之后,顶点的权重就变为新的向量,再根据下式更新由词指向概念的各条边的权重
E [ e ] ← ( 1 − β ) × V n [ c ] + β × E [ e ] e : t → c ( 15 ) \boldsymbol{E}[e] \leftarrow(1-\beta) \times \boldsymbol{V}^{n}[c]+\beta \times \boldsymbol{E}[e] e: t \rightarrow c (15) E[e](1β)×Vn[c]+β×E[e]e:tc15
调整完边的权重之后,又开始新一轮随机游走。上述过程将重复若干次,直到算法收敛, 算法收敛时,通过下式计算词t对应的概念
p ( c ∣ t , q ) = E ( t → c ) ∑ c i E ( t → c i ) t ∈ q ( 16 ) p(c \mid t, q)=\frac{\boldsymbol{E}(t \rightarrow c)}{\sum_{c_{i}} \boldsymbol{E}\left(t \rightarrow c_{i}\right)} \quad t \in q (16) p(ct,q)=ciE(tci)E(tc)tq16

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值