为您推荐:
精华内容
最热下载
问答
  • 5星
    21.37MB weixin_43959833 2021-03-27 15:06:27
  • 5星
    15.33MB zuoan1993 2021-05-10 10:36:55
  • 5星
    43.47MB goodxianping 2021-07-15 14:45:23
  • 53.58MB u013479095 2018-03-27 20:39:26
  • 901KB weixin_38675777 2020-03-09 17:58:19
  • 5星
    947KB q6115759 2021-03-10 08:50:33
  • 3.75MB bruce__ray 2021-02-16 14:44:40
  • 1.27MB weixin_39333120 2020-09-10 14:38:12
  • 本篇博客主要基于微软亚洲研究院段楠老师的《智能问答》第四章 知识图谱问答 进行整理。 知识图谱问答,又称 Knowledge-based QA 或 KBQA,是一种基于结构化知识库(即知识图谱)的智能问答方法。给定自然语言问题,...

    本篇博客主要基于微软亚洲研究院段楠老师的《智能问答》第四章 知识图谱问答 进行整理。

    知识图谱问答,又称 Knowledge-based QA 或 KBQA,是一种基于结构化知识库(即知识图谱)的智能问答方法。给定自然语言问题,该类方法基于知识图对问题进行理解,并根据问题理解的结果从知识图谱中查找或推理出问题对应的答案。

    知识图谱问答分为**基于语义分析的方法(Semantic Parser)和基于答案排序的方法(Information Retrieval)**两类。基于语义分析的方法是首先将输入问题转化为知识图谱能够理解和执行的结构化查询(即语义表示),然后在知识图谱上直接执行该结构化查询得到问题对应的答案。基于答案排序的方法是首先基于输入问题从知识图谱中快速找到少量答案候选,然后采用排序模型对不同答案候选进行打分,并选择得分最高的答案候选集合作为问题对应的答案。

    基于语义分析的方法(Semantic Parser)

    给定知识图谱和自然语言问题,基于语义分析的知识图谱问答方法通过如下两步完成问答任务:①使用语义分析器将问题转化为机器能够理解和执行的语义表示。②使用该语义表示作为结构化查询语句查询知识图谱,并将查询得到的实体集合作为答案返回。由于语义表示结果的正确与否直接决定答案的对错,因此该类问答方法的核心任务就落在语义分析任务上,即如何生成自然语言问题对应的语义表示。

    这里把语义分析方法分为基于文法的语义分析方法和基于神经网络的语义分析方法两类。

    基于文法的语义分析方法通过三步完成语义分析任务:第一步,从带有语义表示的标注数据中抽取符合特定文法的语义分析规则集合。该集合中每条规则至少包含自然语言和语义表示两部分对应的信息;第二步,采用基于动态规划的解析算法(例如CYK 算法和 ShiftReduce算法)产生输入句子对应的语义表示候选集合。该类算法按照自底向上(CYK)或自左向右(Shift-Reduce)的方式,合并相邻两个短语对应的语义表示生成较长短语对应的语义表示,直至覆盖全句时终止;第三步,基于标注数据训练排序模型,对不同语义表示候选进行打分,并返回得分最高的语义表示候选作为结果。

    基于神经网络的语义分析方法将语义分析任务看做是一个端到端的序列生成任务,并采用类似神经机器翻译(NMT)的方法,完成从自然语言(源语言)到语义表示(目标语言)的转换任务。

    接下来将介绍四种不同的语义分析方法,前三种方法分别基于三种不同的文法:CCG、SCFG和DCS,最后一种方法基于NMT技术。

    终结符与非终结符:
    终结符,通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导/分解。不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。

    1 基于CCG的语义分析

    组合范畴文法(combinatory categorial grammar,CCG)[1,2]是一种类型驱动的文法。本小节将从三个方面介绍基于CCG的语义分析方法,包括 CCG语义分析规则、CCG语义分析算法以及CCG语义分析的模型训练。

    CCG语义分析规则由词汇部分、句法类型和语义类型三部分信息构成。这里使用一个例子说明上述三部分信息的含义和作用:
    在这里插入图片描述
    border是CCG语义分析规则中的词汇部分。该部分信息对应一个自然语言单词或短语,用于在语义分析中匹配输入的自然语言句子。

    (S\NP)/NP是CCG语义分析规则中的句法类型。该部分信息由五种句法类型(S、N、NP、ADJ和PP)和两种连接符(/和\)组成。其中,S表示句子,N表示名词,NP 表示名词短语,ADJ表示形容词,PP表示介词短语,/和\用于判断相邻两个句子片段是否能够合并以及如何进行合并。例如,(S\NP)/NP 表示当前片段需要先从右边(由/指示)合并一个类型为NP的短语,再从左边(由\指示)合并另一个类型为NP的短语,才能完成分析任务并生成全句对应的分析结果。

    λ x . λ y . B o r d e r ( x , y ) \lambda x.\lambda y.Border(x,y) λx.λy.Border(x,y)是CCG语义分析规则中的语义类型。该部分信息通常使用 λ − \lambda- λ算子表示词汇部分对应的语义表示。

    Zettlemoyer和 Collins提出一种基于统计的CCG语义分析规则获取方法[3]。该方法首先定义函数 GENLEX(S,MR),该函数负责返回从句子S及对应语义表示MR中抽取出来的 CCG 语义分析规则候选集合: { x : = y ∣ x ∈ W ( S ) , y ∈ C ( M R ) } \{x := y|x\in W(S),y\in C(MR)\} {x:=yxW(S),yC(MR)}.其中,W(S)表示S中包含的连续单词序列集合,C(MR)表示从MR 中抽取出来的语义表示片段集合。如果W(S)中包含n 个元素,C(MR)中包含m个元素,那么抽取出来的CCG语义分析规则候选数目就是 n × m n\times m n×m个。这里,下表给出C(MR)的从MR中抽取类型部分用到的全部十条规则:
    在这里插入图片描述
    例如,给定句子 Utah borders Idaho 及语义表示 borders(utah,idaho),根据上表中的规则能够抽取得到如下类型部分:
    在这里插入图片描述
    由于上述语义表示并未包含单个参数部分(双参数谓词),因此规则2、3、6、9、10并未被使用。

    在组合x:=y的过程中,由于x和y是通过枚举方式进行配对的,因此会产生大量不合理的规则候选。针对上述问题,该工作采用一种迭代优化方法对规则候选集合进行过滤和选择,该方法通过在标注数据上循环执行PARSE函数和ESTIMATE 函数 T轮完成。

    • P A R S E ( S i , M R i ) PARSE(S_i,MR_i) PARSE(Si,MRi)函数基于规则集合 λ = Λ 0 ∪ G E N L E X ( S i , M R i ) \lambda = \Lambda_0 \cup GENLEX(S_i,MR_i) λ=Λ0GENLEX(Si,MRi) θ ˉ t − 1 \bar{\theta}^{t-1} θˉt1 S i S_i Si进行语义分析,并返回能够正确生成 M R i MR_i MRi所用到的规则子集 λ i \lambda_i λi。其中, Λ 0 \Lambda_0 Λ0表示一个少量高质量的初始CCG语义分析规则集合, θ ˉ t − 1 \bar{\theta}^{t-1} θˉt1表示第t-1轮训练得到的规则权重向量。当对标注数据集中每个 ( S i , M R i ) (S_i,MR_i) (Si,MRi)标注对都完成上述操作后,更新生成第t轮迭代对应的规则集合 Λ t = Λ 0 ∪ ( ⋃ i = 1 n λ i ) \Lambda_t = \Lambda_0 \cup (\bigcup\limits_{i=1}^n\lambda_i) Λt=Λ0(i=1nλi)
    • E S T I M A T E ( Λ t , θ ˉ t − 1 , D ) ESTIMATE(\Lambda_t,\bar{\theta}^{t-1},D) ESTIMATE(Λt,θˉt1,D)函数基于 Λ t \Lambda_t Λt θ ˉ t − 1 \bar{\theta}^{t-1} θˉt1,使用随机梯度下降(SGD)算法在标注数据上最大化下述似然函数 O ( θ ˉ ) O(\bar{\theta}) O(θˉ),从而更新生成第t轮的权重向量 θ ˉ t \bar{\theta}^{t} θˉt.
      在这里插入图片描述
      T表示能够正确生成 M R i MR_i MRi的CCG 语义分析树, P ( M R i , T ∣ S i ; θ ˉ ) P(MR_i,T|S_i;\bar{\theta}) P(MRi,TSi;θˉ)可以进一步分解为:
      在这里插入图片描述
      f ˉ ( M R i , T , S i ) \bar{f}(MR_i,T,S_i) fˉ(MRi,T,Si)函数将每个 ( M R i , T , S i ) (MR_i,T,S_i) (MRi,T,Si)三元组映射到一个特征向量。 该方法将CCG语义规则被用到的次数作为特征,因此 θ ˉ \bar{\theta} θˉ中对应位置的值可以看成是该特征的权重。当T轮训练迭代完成后,返回 Λ T \Lambda_T ΛT θ ˉ T \bar{\theta}^T θˉT作为最终的CCG语义分析规则集合。

    CCG语义分析算法采用自底向上的CYK算法,对输人句子进行语义分析。该过程中,下述四类基本操作用于完成相邻片段的语义表示合并任务。

    1. 应用(application)操作。该操作包含下述两条合并规则:
      在这里插入图片描述
      第一条规则表示如果左右两个相邻短语片段对应的CCG 类型分别是B:g和A\B:f,那么二者能够进行合并,合并后短语对应的CCG类型为A:f(g).第二条规则与第一条规则类似,只是方向不同;(:前是句法类型,后是语义类型)

    2. 组合(composition)操作。该操作包含下述两条合并规则:
      在这里插入图片描述
      和应用操作不同,组合操作合并的是两个函数类型语义表示,而应用操作合并的是一个函数类型语义表示和一个实体类型语义表示;

    3. 类型转化(type shifting)操作。该操作通过在语义分析过程中添加或减少信息来保证语义分析能够顺利完成。例如,句子 flights boston to new york(从波士顿到纽约的航班)省略了单词from,其省略的语义信息可以通过 type shifting方式扩展生成回来。
      在这里插入图片描述
      上例中使用的type shifting 规则是 N P : c ⟹ N N : λ f . λ x . f ( x ) ∧ p ( x , c ) NP:c \Longrightarrow N\N:\lambda f.\lambda x.f(x) \land p(x,c) NP:cNN:λf.λx.f(x)p(x,c)。句子American Airlines from New York 对应的CCG语义分析过程如下:
      在这里插入图片描述
      上例中使用的type shifting 规则是KaTeX parse error: Undefined control sequence: \lambdax at position 27: …rightarrow N:f(\̲l̲a̲m̲b̲d̲a̲x̲.true).该规则将函数f(x)从短语 from New York 对应的语义表示中移除了。

    4. 并列(coordination)操作。该操作采用交操作或并操作,对满足并列关系的相邻短语片段进行合并。

    本小节介绍了一种最基本的 CCG语义分析方法[3]。该研究方向在近年来出现很多相关工作,分别从不同角度推进基于CCG的语义分析研究。Kwiatkowski等人提出改进的规则抽取方法用于抽取规则模板[4],能够提升CCG句法分析器的鲁棒性。Zhang、Clark 等人使用基于 Shift-Reduce 的语义分析算法[5-7],能够提升CCG语义分析器的处理速度。Artzi 等人使用AMR(abstract meaning representation)替换 λ − \lambda- λ算子表示 CCG语义分析规则中的语义类型[8].Reddy等人基于CCG分析结果提出一种基于图的语义分方法[10],用于知识图谱问答任务。

    2 基于SCFG的语义分析

    基于同步上下文无关文法(synchronous context-free grammar, SCFG)的语义分析规则具有如下形式:
    X → ⟨ α , β ⟩ X \rightarrow \langle \alpha,\beta\rangle Xα,β
    α \alpha α表示自然语言部分, β \beta β表示 α \alpha α对应的语义表示部分,X表示当前规则的类型和 α , β \alpha,\beta α,β均允许包含非终结符,并且满足如下三个条件:① α \alpha α β \beta β中的非终结符数目相同② α \alpha α中每个非终结符对应一个规则类型③ α \alpha α β \beta β中的非终结符存在一一对应的关系。下面通过四条 SCFG语义分析规则实例进行具体说明。

    1. PERSON → \rightarrow <Tom Hanks,/m/0bxtg>。 该规则将自然语言短语 Tom Hanks 映射到语义表示/m/0bxtg,并指明规则类型是 PERSON.
    2. FILM → \rightarrow <movies, λ x . T y p e ( x , F i l m ) \lambda x.Type(x,Film) λx.Type(x,Film)>。该规则将自然语言短语 movies 映射到语义表示 λ x . T y p e ( x , F i l m ) \lambda x.Type(x,Film) λx.Type(x,Film),并指明规则类型是 FILM.
    3. FILM → \rightarrow <starred by P E R S O N 1 PERSON_1 PERSON1, λ x . S t a r r e d B y ( x , # 1 ) \lambda x.StarredBy(x,\#_1) λx.StarredBy(x,#1)>.该规则将自然语言短语 starred by P E R S O N 1 PERSON_1 PERSON1映射到语义表示 λ x . S t a r r e d B y ( x , # 1 ) \lambda x.StarredBy(x,\#1) λx.StarredBy(x,#1)并指明规则类型是FILM. P E R S O N 1 PERSON_1 PERSON1 # 1 \#_1 #1是(对应的)非终结符,脚注表示非终结符之间的对应关系。在使用SCFG规则进行语义分析的过程中,如果某个规则的自然语言部分包含一个非终结符并且该非终结符(的类型)和另一个规则的类型相同,那么这两个规则可以进行合并(比如规则3和规则1)。
    4. FILM → \rightarrow < F I L M 1 F I L M 2 FILM_1FILM_2 FILM1FILM2, # 1 ∧ # 2 \#_1 \land \#2 #1#2>。给定两个相邻的 FILM类型非终结符(规则2、3的自然语言部分),该规则通过交操作( ∧ \land )对二者对应的语义表示进行合并(规则2、3的语义表示部分)。

    给定上述四条规则,这里用一个简单的例子介绍基于SCFG的语义分析是如何工作的。给定自然语言问题 movies starred by Tom Hanks(Tom Hanks主演的电影),首先使用规则1 和规则2将问题中的短语 Tom Hanks 和 movies分别映射到语义表示/m/0bxtg 和 λ x . T y p e ( x , F i l m ) \lambda x.Type(x,Film) λx.Type(x,Film)。由于规则1的类型是 PERSON,规则3中自然语言部分包含相同类型(PERSON类型)的非终结符,因此可以对规则1和规则3进行合并,生成短语 starred by Tom Hanks对应的语义表示 λ x . S t a r r e d B y ( x , / m / 0 b x t g ) \lambda x.StarredBy(x,/m/0bxtg) λx.StarredBy(x,/m/0bxtg)。在这个合并过程中,使用规则1中(自然语言部分)Tom Hanks对规则3中(自然语言部分)非终结符 P E R S O N 1 PERSON_1 PERSON1进行替换,使用规则1中(语义表示部分)/m/0bxtg对规则3中(语义表示部分)非终结符 # 1 \#_1 #1进行替换。最后,规则4通过合并 movies和starred by Tom Hanks 的语义表示,生成整个问题的语义表示 λ x . T y p e ( x , F i l m ) ∧ S t a r r e d B y ( x , / m / 0 b x t g ) \lambda x.Type(x,Film) \land StarredBy(x,/m/0bxtg) λx.Type(x,Film)StarredBy(x,/m/0bxtg).下图给出上述过程的图形化描述:
    在这里插入图片描述
    和CCG语义分析方法类型一样,SCFG 语义分析方法也包含下述三个任务:SCFG语义分析规则获取、SCFG语义分析的算法以及SCFG 语义分析的模型训练。

    常见的规则获取方法分为如下两类:

    第一类方法基于知识图谱(结构化)和文本形式的语料(非结构化)抽取短语级SCFG语义分析规则。首先,基于给定知识图谱中的一个谓词p和所有满足该谓词的实体对,对语料中的句子进行实体回标,并保留至少包含一个实体对的句子。然后,对每个保留下来的句子,将回标实体对之间的上下文c看作是谓词p对应的自然语言表示。该过程基于如下假设:如果满足谓词p的两个实体同时出现在一个句子中,那么该句子的上下文c很有可能在描述该谓词p.例如,给定谓词 FounderOf 和 满足该谓词的一个实体对<Bill Gates,Microsoft>,首先对句子 Bill Gates is the founder of Microsoft 进行实体回标,并抽取出谓词 FounderOf 对应的上下文短语(自然语言表示)is the founder of.然后,根据谓词和上下文短语的对应关系以及回标实体的类型,生成如下四条SCFG语义分析规则。

    1. PERSON → \rightarrow <Bill Gates,Bill Gates>
    2. ORGANIZATION → \rightarrow <Microsoft,Microsoft>
    3. PERSON → \rightarrow <is the founder of O R G A N I Z A T I O N 1 ORGANIZATION_1 ORGANIZATION1, λ x . F o u n d e r O f ( x , # 1 ) \lambda x.FounderOf(x,\#_1) λx.FounderOf(x,#1)>
    4. ORGANIZATION → \rightarrow < P E R S O N 1 PERSON_1 PERSON1 is the founder of, λ x . F o u n d e r O f ( # 1 , x ) \lambda x.FounderOf(\#_1,x) λx.FounderOf(#1,x)>

    最后,基于全部抽取结果对应的统计信息,对每个(c,p)对进行置信度打分,并基于置信度较高的 { ( c i , p i ) } \{(c_i,p_i)\} {(ci,pi)}集合生成带有权重信息的SCFG语义分析规则。

    第二种方式基于搜索引擎查询日志抽取句子级 SCFG 语义分析规则。首先,使用知识图谱对日志中的查询问题进行实体链接,并保留仅包含一个实体(提及)的查询问题。然后,将保留下来问题中的实体替换为对应的非终结符(即该实体在知识图谱中的类型,如把Bill Gates替换为Person),生成句子级问题模板。最后,对高频问题模板进行人工谓词标注,得到句子级SCFG语义分析规则。例如,给定查询问题 who is founder of Microsoft,按照上述过程能够抽取出来的SCFG规则是:PERSON → \rightarrow <who is founder of O R G A N I Z A T I O N 1 ORGANIZATION_1 ORGANIZATION1, λ x . F o u n d e r O f ( x , # 1 ) \lambda x.FounderOf(x,\#_1) λx.FounderOf(x,#1)>.

    上述两种规则抽取方法各具特点:方法一通过自动的方式进行规则抽取,抽取结果是短语粒度的规则。从不同句子中抽取出来的SCFG规则能够通过组合的方式对未见过的问句进行语义分析,因此基于该类规则构建的语义分析器鲁棒性更好。但由于该类方法抽取得到的规则中包含噪音并且数目通常很大,因此无法直接进行人工标注;方法二通过自动加人工的方式进行规则抽取,抽取结果是句子粒度的规则。每个规则都来自于一个完整的查询问题,一旦和输入问题匹配成功,对应生成的语义表示质量很高,因此在实际产品中这类规则的使用最多。不过,该类规则一旦和输入问题匹配失败,整个语义分析就失败了。

    和基于CCG的语义分析算法相同,基于 SCFG的语义分析算法采用自底向上的 CYK 算法进行语义分析,并将每个SCFG语义分析树对应的模型得分表示成一组特征的加权求和。不同特征的权重通过在标注数据上使用梯度下降算法得到[10-12]

    3. 基于DCS的语义分析

    依存组合语义(dependency-based compositional semantics,DCS)[13]是由斯坦福提出的一种语义表示方法。

    DCS拥有和 λ − \lambda- λ算子类似的表示能力,但该形式语言的定义更贴近知识图谱的存储结构。关于DCS相关的部分概念(包括连接、交、并、否定和特殊的高阶函数操作)再上一篇博客中已经介绍过了,这里再介绍一种特殊的操作--桥接。

    桥接(bridging)操作把两个独立的语义表示片段连接起来。在语义分析过程中,句子中不同片段对应的语义表示可能无法直接进行合并。为了保证语义分析能够尽量完成,需要尽可能连接这些离散的语义表示片段,这就是引入桥接操作的目的。当然,并不是任意两个语义表示片段都能够通过桥接操作建立联系,对于那些在知识图谱中存在谓词关联并满足上述类型约束的语义表示片段,可以采用桥接操作将二者连接起来。该操作主要针对语义分析中经常遇到的表达省略问题。DCS采用三种桥接技术:

    • 第一种桥接操作作用于一个一元语义表示u(实体),将其转化为类型为t的语义表示b.u。该操作中谓词b需要满足的条件是:其右端的宾语实体类型必须是t.
    • 第二种桥接操作作用于两个类型分别为 t 1 t_1 t1 t 2 t_2 t2的一元语义表示 u 1 u_1 u1 u 2 u_2 u2,将其转化为类型为 t 1 t_1 t1的语义表示 u 1 ⊓ b . u 2 u_1\sqcap b.u_2 u1b.u2。该操作中谓词b需要满足的条件是:其左右两端的两个实体类型必须是 t 1 t_1 t1 t 2 t_2 t2,这是因为只有类型相同的两个一元语义表示才能够通过交操作( ⊓ \sqcap )进行合并。
    • 第三种桥接操作作用于两个语义表示 b 1 . b 2 . u ′ b_1.b_2.u' b1.b2.u和u,将其转化为语义表示 b 1 . ( b 2 . u ′ ⊓ b . u ) b_1.(b_2.u'\sqcap b.u) b1.(b2.ub.u).该操作需要满足的条件是:①谓词b左右两端的两个实体类型必须是t和 t 1 t_1 t1②u的类型必须是t ;③谓词 b 2 b_2 b2的类型必须是 ( ∗ , t 1 ) (*,t_1) (,t1)、*表示 u’的类型。下图给出采用桥接操作进行语义分析的例子。
      在这里插入图片描述
      语义表示 Type.University ⊓ \sqcap Education.BarackObama中的谓词Education 在输入问题 Which college did Obama go to?中并没有显示的对应。由于 Type.University 对应的类型是 University,BarackObama 对应的类型是 Person,而谓词 Education 左右两端的实体类型分别为Person 和 University,可以应用第二类桥接操作引入谓词 Education 对 Type.University 和 BarackObama 进行合并,生成类型为University 的语义表示。

    与基于CCG和SCFG的语义分析算法类似,基于DCS的语义分析算法采用自底向上的CYK算法生成输入问题对应的语义表示候选集合。

    基于DCS的语义分析模型采用对数线性形式对不同语义表示候选进行打分:
    在这里插入图片描述
    该模型的训练采用弱监督(weak supervision)的方式。该方法基于训练数据中每个问题的答案从该问题对应的语义表示候选中进行正例选择,即保证每个正例(语义表示)都能基于知识图谱推导出正确答案。然后,基于该类标注出来的正例和余下的负例进行特征权重更新,使得每个问题的正例语义表示候选对应的得分尽可能比负例候选对应的得分高。

    DCS语义分析器用到的特征包含下述几类:对齐特征,包括自然语言短语 r 1 r_1 r1在抽取中对应的实体对数目 F ( r 1 ) F(r_1) F(r1)、谓词 r 2 r_2 r2在知识库中对应的实体对数目 F ( r 2 ) F(r_2) F(r2) F ( r 1 ) F(r_1) F(r1) F ( r 2 ) F(r_2) F(r2)交集中包含的实体对数目;词汇特征,表示 r 1 r_1 r1 r 2 r_2 r2作为对齐对的可能性;文本相似度特征,表示 r 1 r_1 r1是否是 r 2 r_2 r2的前缀、子集、后缀或者完全相等;跳词特征,DCS 允许语义分析过程中跳过一些停用词或系统无法识别的单词或短语。跳词特征用来表示生成某个语义表示究竟忽略了多少问题中出现的单词。直观上,该特征值越大,说明对应的语义表示候选越不可靠,因为它忽略了问题中出现的很多单词;问题词特征,该特征基于规则方式,将一些经常出现的问题词短语映射到对应的知识库谓词上面去。例如,where 可以映射到 Type.Location上去、how many可以映射到Count 上去等;操作特征,该特征表示在生成当前语义表示候选过程中,使用到的交操作、合并操作和桥接操作的数目。

    总体来说,基于CCG、SCFG 和DCS 的语义表示方法具有相同的系统模块,包括语义规则的抽取、语义分析算法和语义分析模型训练。三种方法最大的不同在于使用的形式语言表示各具特点。这三类方法都需要借助特定的文法作为桥梁连接自然语言和语义表示。

    4. 基于NMT(神经机器翻译)的语义分析

    如果把自然语言对应的语义表示看成是一种特殊的语言,那么语义分析任务可以看成是一个翻译任务:将自然语言序列(源语言)翻译到对应的语义表示序列(目标语言)。

    本小节介绍基于神经机器翻译(neural machine translation,NMT)技术的语义分析方法。给定自然语言问题 q = x 1 , . . . , x ∣ q ∣ q=x_1,...,x_{|q|} q=x1,...,xq,基于 NMT的语义分析方法使用“编码器-解码器”框架将q转化为对应的语义表示 a = y 1 , . . . , y ∣ a ∣ a=y_1,...,y_{|a|} a=y1,...,ya:
    在这里插入图片描述
    y t y_t yt表示第t时刻生成的语义表示单元, y < t = y 1 , . . . , y t − 1 y_{<t}=y_1,...,y_{t-1} y<t=y1,...,yt1表示到第t时刻前已经生成的语义表示序列, P ( y t ∣ y < t , q ) P(y_t|y_{<t},q) P(yty<t,q)表示基于问题q和 y < t y_{<t} y<t生成 y t y_t yt的概率。编码器(encoder)负责将输入问题q转化为向量表示,解码器(decoder)负责将q的向量表示转化为对应的语义表示a.

    编码器采用一个 RNN 网络,将问题q中每个单词 x i x_i xi都转化为一个隐状态向量 h i h_i hi,该过程对应的数学描述如下:
    在这里插入图片描述
    上式给出基于 LSTM的编码器实现(这些式子对应LSTM单元中各种门的计算过程), x k x_k xk表示问题q中第k个单词, f k , i k , o k f_k,i_k,o_k fk,ik,ok分别表示第k个LSTM单元对应的遗忘门、输入门和输出门, c k c_k ck表示第k个编码单元对应的信息, h k h_k hk表示 x k x_k xk对应的隐层向量表示, W f , W i , W o , W , U f , U i , U o , U W_f,W_i,W_o,W,U_f,U_i,U_o,U Wf,Wi,Wo,W,Uf,Ui,Uo,U对应不同参数矩阵。

    解码器采用另一个RNN网络,基于问题q的向量表示进行语义表示序列的生成,该过程对应的数学描述如下:
    在这里插入图片描述
    y ∣ q ∣ + t y_{|q|+t} yq+t表示输出序列a中生成的第t个符号, h ∣ q ∣ + t h_{|q|+t} hq+t表示 y ∣ q ∣ + t y_{|q|+t} yq+t对应的隐向量, ∣ q ∣ + t |q|+t q+t代表隐向量表示的索引从输入端开始, c ∣ q ∣ + t c_{|q|+t} cq+t表示上下文向量,它在解码过程中根据当前已经生成的内容不断变化,其由 h ∣ q ∣ + t − 1 h_{|q|+t-1} hq+t1和编码器中的全部隐向量共同决定(注意力机制, h ∣ q ∣ + t − 1 h_{|q|+t-1} hq+t1作为query,编码器中的全部隐向量作为key和value,query和key计算分数,再通过softmax转换为权重,再和value做一个加权求和,得到上下文向量。解码过程中,每一时刻的query是变化的,所以生成的上下文向量也是再不断的变化)。(下面的式子就是attention机制的计算过程)
    在这里插入图片描述
    解码器中在第t时刻输出的语义表示单元由下述方式决定:
    在这里插入图片描述
    上述操作基于 h ∣ q ∣ + t h_{|q|+t} hq+t W o W_o Wo参数矩阵,使用softmax操作从词汇表中选择概率最大的单元作为第t时刻的输出。每个语义表示序列的前后端分别对应两个特殊符号,用来表示起始和结束位置。解码器一旦在某一时刻生成,则生成过程结束。

    上述过程是端到端的序列-序列(Seq-to-Seq)生成模型,该模型也是神经机器翻译的典型做法。但对于语义分析任务来说,语义表示中往往存在层次化概念(例如括号可以表示一个谓词的作用范围等),而Seq-to-Seq模型并没有任何机制保证输出(生成)序列具有层次化的特性。

    Seq-to-Tree模型对上述问题进行了改进,在该模型中,语义表示序列不是按从左到右的方式进行的(依次生成),而是按照从左向右加上自顶向下二者相结合的方式进行的。

    下图给出一个Seq-to-Tree 的具体示例。 在编码器完成问题编码后,解码器会按照逐层的方式进行语义表示序列的生成。 对于每层生成的语义表示序列,其中允许包含一个或多个非终结符,每个非终结符表示此处需要进一步解码,生成一个语义表示子序列。该解码过程一直执行到没有任何非终结符生成为止。在上述层次化生成过程中,每个非终结符对应的向量表示会被作为条件,用于生成其对应的语义表示子序列。
    在这里插入图片描述

    展开全文
    sdu_hao 2020-05-06 19:29:47
  • 本篇博客主要基于微软亚洲研究院段楠老师的《智能问答》第四章 知识图谱问答 进行整理。 知识图谱问答,又称 Knowledge-based QA 或 KBQA,是一种基于结构化知识库(即知识图谱)的智能问答方法。给定自然语言问题,...

    本篇博客主要基于微软亚洲研究院段楠老师的《智能问答》第四章 知识图谱问答 进行整理。

    知识图谱问答,又称 Knowledge-based QA 或 KBQA,是一种基于结构化知识库(即知识图谱)的智能问答方法。给定自然语言问题,该类方法基于知识图对问题进行理解,并根据问题理解的结果从知识图谱中查找或推理出问题对应的答案。

    知识图谱问答分为**基于语义分析的方法(Semantic Parser)和基于答案排序的方法(Information Retrieval)**两类。基于语义分析的方法是首先将输入问题转化为知识图谱能够理解和执行的结构化查询(即语义表示),然后在知识图谱上直接执行该结构化查询得到问题对应的答案。基于答案排序的方法是首先基于输入问题从知识图谱中快速找到少量答案候选,然后采用排序模型对不同答案候选进行打分,并选择得分最高的答案候选集合作为问题对应的答案。

    基于答案排序的方法(Information Retrieval)

    绝大多数基于语义分析的知识图谱问答需要带有语义(表示)标注的问题集合作为训练数据。这类数据需要花费的时间和成本很高,而且要求标注人员对语义表示有一定程度的理解。使用答案作为弱监督训练语义分析模型[10,13],能够在一定程度上缓解数据标注难度高、开销大和标注量有限问题,但按照答案选择出夹的正例语义分析(语义表示)候选存在一定的噪音,这在一定程度上也会对语义分析模型的质量造成影响。

    基于答案排序(answer ranking)的知识图谱问答将该任务看成一个信息检索任务,即给定输入问题Q和知识图谱KB,通过对KB中实体进行打分和排序,选择得分最高的实体或实体集合作为答案输出。

    具体来说,该类知识图谱问答方法主要包含下述四个模块:

    1. 问题实体识别。问题实体是指问题Q中提到的知识库实体,例如在Who founded Microsoft 这个问题中,Microsoft在知识图谱中对应的实体是该问题的问题实体。每个问题可能对应多个问题实体,该类实体的识别通常采用实体链接技术(把问题中的实体提及 链接到知识图谱中对应的实体上)完成。
    2. 答案候选检索。根据识别出来的一个问题实体,从知识图谱中查找与之满足特定约束条件的知识库实体集合,作为该问题的答案候选。最常用的约束条件是:在知识图谱中,与问题实体最多通过两个谓词相连(两条边)的知识库实体。该做法假设问题对应的答案实体和问题实体在知识图谱中的距离通常不会很远。
    3. 答案候选表示。由于每个答案候选无法直接与输入问题进行比较,该模块基于答案候选所在的知识图谱上下文,生成答案候选对应的向量表示。这样,输人问题和答案候选之间的相关度计算就转化为输入问题和答案候选对应的向量表示之间的相关度计算。具体方法的不同主要体现就在如何生成答案的向量表示上。
    4. 答案候选排序。 使用排序模型对不同答案候选进行打分和排序,并返回得分最高的答案候选集合作为输出结果。

    下图给出基于答案排序的知识图谱问答方法的工作流程示意图,按照对答案候选的不同表示方法,本博客将介绍五种具体的方法,包括特征工程方法、问题生成方法、子图匹配方法、向量表示方法和记忆网络方法。
    在这里插入图片描述

    1. 基于特征的答案排序

    基于特征工程的方法首先从问题中识别出问题实体(将问题中的实体提及链接到知识图谱中对应的实体),并根据问题实体在知识图谱中的位置,抽取与之通过不超过两个谓词(两条边)连接的实体作为答案候选集合。然后,使用一个特征向量表示每一个答案候选。最后,基于特征向量对答案候选集合进行打分排序,并输出得分最高的答案候选集合(答案可能是一个实体,也可能是多个实体(实体集合))。

    每个答案候选对应的特征向量由N个特征组成,每个特征反映了输入问题与该答案候选在某个维度上的匹配程度,并通过组合问题特征和答案特征得到。

    常用的问题特征包括:

    • 疑问词特征(用 Q w o r d Q_{word} Qword表示)。该特征对应的特征值是问题中包含的疑问词。英文问句中常见的疑问词包括 Who、When、Where、What、Which、Why、Whom、Whose 和 How.疑问词特征通常指明了问题对应答案的类型,例如,以Who开头的问题对应的答案(类型)往往是人,以Where开头的问题对应的答案往往是地点。
    • 问题实体特征(用 Q e n t i t y Q_{entity} Qentity表示)。该特征对应的特征值是问题中提到的问题实体,问题实体能够帮助问答系统在知识图谱中定位并抽取答案候选。一个问题中可能包含多个实体提及,因此对应的问题实体特征也可能是多个。
    • 问题类型特征(用 Q t y p e Q_{type} Qtype表示)。该特征对应的特征值是问题中的一个名词单词或短语,用来指明问题答案的类型。该类特征通常采用基于规则的方式从问题对应的句法分析树中抽取得到。
    • 问题动词特征(用 Q t y p e Q_{type} Qtype表示)。该特征对应的特征值来自问题的核心动词,用来指明问题提到的语义关系,该语义关系通与知识图谱中的谓词联系紧密。
    • 问题上下文特征(用 Q c o n t e x t Q_{context} Qcontext表示)。该特征对应的特征值是问题中出现的除了上述特征之外的单词或n元组(即 n-gram).

    下表给出从问题 What is the name of Justin Bieber brother中抽取出来的一组问题特征及对应特征值。
    在这里插入图片描述
    常用的答案特征包括:

    • 谓词特征(用 A p r e d A_{pred} Apred表示)。该特征对应的特征值是知识图谱中连接答案候选实体和问题实体的谓词路径。该谓词路径是判别答案候选是否是问题对应答案的最关键因素。该特征通常与问题特征中的 Q v e r b Q_{verb} Qverb Q c o n t e x t Q_{context} Qcontext对应。
    • 类型特征(用 A t y p e A_{type} Atype表示)。该特征对应的特征值是答案候选实体在知识图谱中对应的类型。该特征通常与问题特征中的 Q w o r d Q_{word} Qword Q t y p e Q_{type} Qtype对应。
    • 上下文特征(用 A c o n t e x t A_{context} Acontext表示)。该特征对应的特征值是和答案候选实体在知识图谱中直接相连的谓词以及实体集合。该特征通常与问题上下文特征 Q c o n t e x t Q_{context} Qcontext对应。

    下表给出基于问题实体 Justin Bieber在知识图谱中出现的位置(如下图所示),抽取出来的答案实体候选Jaxon Bieber对应的答案特征及答案特征值。
    在这里插入图片描述
    在这里插入图片描述
    对问题特征和答案特征分别抽取完成之后,可以将二者中的特征进行两两组合,这样就生成一个特征向量。Yao 和 Durme 基于该特征向量训练二分类器[14], 用于判断该答案候选是否可以当做答案。Yao从问题中抽取1-gram和2-gram作为问题特征[15],从答案中选择 A p r e d A_{pred} Apred作为答案特征,并组合生成特征向量训练打分器,并取得了很好的效果。

    2. 基于问题生成的答案排序

    基于问题生成的方法在完成问题实体识别和答案候选检索后,采用文本生成技术为每个答案候选(实体)生成一个自然语言问题,作为该答案候选对应的表示,通过计算输入问题和每个答案候选对应的生成问题之间的相似度,可以对答案候选集合进行打分和排序。由于问题生成本身是一个非常重要的研究课题,之后有机会会对该任务做详细的介绍。本小节以 Berant和 Liang提出的方法为例,介绍基于模板的问题生成方法在知识图谱问答中的应用[16],任何问题生成方法都可以替换基于模板的方法套用在该问答框架下。

    给定输入问题Q和从Q中识别出来的问题实体e,将答案候选 e a n s w e r e_{answer} eanswer分为如下五类:

    1. 与问题实体e通过一条边(即谓词p)直接相连的答案候选。用p.e表示该答案候选对应的语义表示,例如,who directed Top Gun (谁执导的《Top Gun》)这个问题的某个答案候选对应的 λ − D C S \lambda-DCS λDCS语义表示为 Directed.TopGun。
    2. 与问题实体e通过两条边(即谓词 p 1 p_1 p1 p 2 p_2 p2)相连的答案候选。用 p 1 . p 2 . e p_1.p_2.e p1.p2.e表示该答案候选对应的语义表示,例如,where does Steve Balmer work 个问题的某个答案候选对应的 λ − D C S \lambda-DCS λDCS语义表示为 Employment.EmployerOf.SteveBalmero
    3. 与问题实体 e 1 e_1 e1通过两条边(即谓词 p 1 p_1 p1 p 2 p_2 p2)相连,并且和另一个问题实体 e 2 e_2 e2通过另外两条边(即谓词 p 1 p_1 p1 p 3 p_3 p3)相连的答案候选。用 p 1 . ( p 2 . e 1 ⊓ p 3 . e 2 ) p_1.(p_2.e_1 \sqcap p_3.e_2) p1.(p2.e1p3.e2)表示该答案候选对应的语义表示,例如,who did Brad Pitt play in Troy (布拉德·皮特在《特洛伊》中扮演的谁)这个问题的某个答案候选对应的 λ − D C S \lambda-DCS λDCS语义表示为 C h a r a c t e r . ( A c t o r . B r a d P i t t ⊓ F i l m . T r o y ) Character.(Actor.Brad Pitt \sqcap Film.Troy) Character.(Actor.BradPittFilm.Troy).
    4. 属于上述三类答案候选之一并且具有类型t的答案候选。用 T y p e . t ⊓ z Type.t \sqcap z Type.tz表示该答案候选对应的语义表示,其中z表示上述三类答案候选对应的语义表示之一,例如,what composers spoke French这个问题的某个答案候选对应的 λ − D C S \lambda-DCS λDCS语义表示为Type.Composer ⊓ \sqcap SpeakerOf.French.
    5. 计数类型的答案候选。用count(z)表示该答案候选对应的语义表示,count在答案候选集合的基础之上返回该集合中包含的实体数目。例如,how many ships were designed by Nat Herreshoff这个问题的某个答案候选对应的 λ − D C S \lambda-DCS λDCS语义表示为 C o u n t ( B o a t D e s i g n e r . N a t H e r r e s h o f f ) Count(BoatDesigner.Nat Herreshoff) Count(BoatDesigner.NatHerreshoff).除计数操作外,其他一些特殊操作符,例如最大/最小、第一/第二、最高/最低等,也可以通过类似的方式生成问题。

    在给定一个答案候选对应的语义表示后,Berant和 Liang采用基于模板的方式将答案候选的语义表示转化(生成)为一个自然语言问题[16]. 下表给出语义表示为p.e的答案候选对应的问题生成规则。
    在这里插入图片描述
    上表中,d(t)表示答案候选在知识图谱中对应的实体类型,d(e)表示问题实体,d§表示连接问题实体和答案候选的谓词。为了便于说明,这里给出 一个例子,问题 which city was Barack Obama born 对应的一个问题实体是 Barack Obama,基于该问题实体定位的一个答案候选是 Honolulu,由下图可见,该答案候选对应的语义表示为p.e,并且谓词p=PlaceOfBirth 对应的词性是 NP.因此可以采用上表中的第一条规则生成问题 what city is the place of birth of Barack Obama,其中d(t)=city,d(e)=Barack Obama。

    在为每个答案候选生成对应的自然语言问题后,该方法使用关联模型(association model)和向量空间模型(vector space model)计算输入问题和生成问题之间的相似度[16]。
    在这里插入图片描述
    在这里插入图片描述
    ϕ a s ( Q , Q g e n ) T θ a s \phi_{as}(Q,Q_{gen})^T\theta_{as} ϕas(Q,Qgen)Tθas表示关联模型,该模型将输入问题Q和生成问题 Q g e n Q_{gen} Qgen之间的每一个短语对看成是一个复述短语对,并通过训练数据学习复述短语对对应的权重向量 θ a s \theta_{as} θas. M v s ( Q , Q g e n ) = ∑ i , j = 1 k w i j v i Q v j Q g e n M_{vs}(Q,Q_{gen})=\sum\limits_{i,j=1}^{k}w_{ij}v_i^Qv_j^{Q_{gen}} Mvs(Q,Qgen)=i,j=1kwijviQvjQgen表示向量空间模型,其中 v i Q v_i^Q viQ表示输入问题Q中第i个词对应的词向量, v j Q g e n v_j^{Q_{gen}} vjQgen表示生成问题 Q g e n Q_{gen} Qgen中第j个词对应的词向量, w i j ∈ W ∈ R k × k w_{ij}\in W\in R^{k\times k} wijWRk×k,W是待学习的参数矩阵。

    3. 基于子图匹配的答案排序

    基于子图匹配的知识库/知识图谱问答方法为每个答案候选(实体)从知识库/知识图谱中抽取一个子图(sub-graph),通过计算输入问题和每个答案候选对应子图之间的相似度,对答案候选集合进行打分和排序。

    Yih等人首先从输入问题Q中定位问题实体[17].在下图中,问题 who was Barack Obama married to in 1992中提到的Barack Obama被抽取出来当做问题实体。
    在这里插入图片描述
    然后,答案候选抽取模块以该问题实体为起点,按照如下规则从知识库中选择答案候选:①和问题实体通过一个谓词(一条边)直接相连的实体可以作为一个答案候选;② 和问题实体通过两个谓词(两条边)相连,并且两个谓词之间是一个CVT节点的实体可以作为一个答案候选。上述答案候选抽规则基于如下假设:问题对应的答案实体在知识库中的位置应该和问题实体在知识库中的位置相隔不远(一跳或
    两跳)。例如,下图中基于 Barack Obama这个问题实体能够抽取出来的答案候选包括:Honolulu、Politician、1961.08.04、Person、Chicago、1992. 10.03 和 Michelle Obama.前四个答案候选来自和问题实体相隔一跳的实体,后三个答案候选来自和问题实体相隔两跳的实体。
    在这里插入图片描述
    接下来,答案子图生成模块为每个答案候选实体从知识库中抽取出一个子图,作为对该答案实体的一种表示。每个答案子图通常包含如下几类信息。①问题实体和答案实体之间的谓词路径;②答案实体对应的实体类型;③和答案实体相连或者和谓词路径上的 CVT节点相连的实体。例如,答案候选Michelle Obama对应的子图如下所示:
    在这里插入图片描述
    如上图所示,1992.10.03这个节点之所以被加到子图中来,是因为问题中提到了 1992.

    最后,答案候选排序模块计算输入问题和每个(候选)答案(实体对应)子图之间的相似度,用来对子图对应的答案候选进行打分。这背后的思路是:如果一个答案候选所在的知识库上下文(即答案子图)和问题的相似很高,那么该答案候选极有可能就是问题对应的答案。不同的特征可以用来计算问题和对应答案子图之间的相关度。例如,问题和核心路径之间的相似度特征。核心路径在这里特指问题实体
    和答案候选实体之间的谓词路径。例如上图中是问题实体 Barack Obama 和答案候选实体 Michelle Obama 对应的核心路径。该相似度可以采用类似 CDSSM 方法[18-20]进行计算。此外,与核心路径上的实体直接连接并且出现在问题中的实体数目也是一个非常重要的特征,例如上例中的 1992. 一个子图中越多的实体出现在问题中,该子图对应的答案候选就越有可能是问题对应的答案。

    4. 基于向量表示的答案排序

    基于向量表示的方法[21,22]将输人问题Q和答案候选A分别表示为两个向量f(Q)和g(A),并在向量空间上计算Q和A的距离S(Q,T),用于对不同的答案候选进行打分。
    在这里插入图片描述
    f ( Q ) = W T ϕ ( Q ) f(Q)=W^T\phi(Q) f(Q)=WTϕ(Q)表示问题向量, g ( A ) = W T ϕ ( A ) g(A)=W^T\phi (A) g(A)=WTϕ(A)表示答案向量, W T ∈ R k × N W^T\in R^{k\times N} WTRk×N表示转化矩阵(模型参数),用于将问题Q和答案候选A转化为对应的向量表示,k表示问题或答案向量的维数,该参数在训练模型之前预先设定好, N = N W o r d + N E n t i t y + N p r e d N=N_{Word}+N_{Entity}+N_{pred} N=NWord+NEntity+Npred表示全部单词、知识库实体和知识库谓词的总数,W中的第i行表示某个元素(单词、知识库实体或知识库谓词)对应的向量表示。 ϕ ( Q ) ∈ R N \phi(Q)\in R^N ϕ(Q)RN表示问题对应的稀疏向量,该向量中每个位置的值表示对应的单词是否在Q中出现:出现设置为该词在Q中出现的次数(或者1),否则设置为0. ϕ ( A ) ∈ R N \phi(A)\in R^N ϕ(A)RN表示答案对应的稀疏向量,该向量可以采用如下三种方式表示:

    • 单一实体表示法。该方法将 ϕ ( A ) \phi(A) ϕ(A)中答案候选实体A对应位置的值设定为1,其他都是0.
    • 路径表示法。该方法将 ϕ ( A ) \phi(A) ϕ(A)中问题实体、答案候选实体以及连接问题实体和答案候选实体的谓词对应位置上的值设定为1,其他都是0.
    • 子图表示法。该方法除了使 ϕ ( A ) \phi(A) ϕ(A)包含路径表示法对应的信息外,还将知识图谱中和答案候选实体A直接相连的实体对应位置上的值设定为1.

    上述三种不同的向量表示对应了答案候选在结构知识库中的上下文信息的不断增加,该上下文信息和输入问题能够匹配上的越多,那么该答案候选就越可能是正确答案。

    给定训练数据 D = { ( Q i , A i ) } i = 1 ∣ D ∣ D=\{(Q_i,A_i)\}_{i=1}^{|D|} D={(Qi,Ai)}i=1D该类问答方法通过最小化下述基于Margin的损失函数来学习模型中需要的参数(如上面的转化矩阵):
    在这里插入图片描述
    其中, ( Q i , A i ) (Q_i,A_i) (Qi,Ai)表示训练数据中的一个问题及其对应的正确答案, A ˉ \bar{A} Aˉ表示 Q i Q_i Qi对应的一个错误答案。该损失函数表达的含义是:问题 Q i Q_i Qi和正确答案 A i A_i Ai之间的向量距离应该比 Q i Q_i Qi和任意一个错误答案 A ˉ \bar{A} Aˉ之间的向量距离至少差m,m是预先设定好
    的Margin.

    Dong等人在上述工作的基础上[23],从三个不同的维度生成三个不同的答案向量,用于问题答案匹配:
    在这里插入图片描述
    g 1 ( A ) = W p a t h ϕ p a t h ( A ) g_1(A)=W_{path}\phi_{path}(A) g1(A)=Wpathϕpath(A)表示A对应的答案路径(answer path)向量,每个答案候选对应的路径由答案候选实体和问题实体之间的谓词路径表示; g 2 ( A ) = W c o n t e x t ϕ c o n t e x t ( A ) g_2(A)=W_{context}\phi_{context}(A) g2(A)=Wcontextϕcontext(A)表示A对应的答案上下文(answer context)向量,每个答案候选对应的上下文由和该答案候选、答案路径之间相连的全部实体和谓词组成; g 3 ( A ) = W t y p e ϕ t y p e ( A ) g_3(A)=W_{type}\phi_{type}(A) g3(A)=Wtypeϕtype(A)表示A对应的类型(answer type)向量,每个答案候选对应的类型由知识库提供。

    5. 基于记忆网络的答案排序

    基于记忆网络(memory networks)的问答模型[24-28]由记忆模块和问答模块两部分构成:记忆模块负责读取外部数据并将其转化为向量化的记忆单元集合;问答模块负责基于给定问题从记忆模块中存储的记忆单元集合中寻找与问题相关的信息,进而生成最终的答案。按照是否支持推理机制,记忆网络又分为单层(single-layer)和多层(multi-layter)记忆网络两类。

    从单层记忆网络开始介绍,在单层记忆网络中,记忆模块负责读取一组输入数据 { x i } i = 1 N \{x_i\}_{i=1}^{N} {xi}i=1N并将每个输入数据 x i x_i xi转化为对应的输入记忆单元向量 m i m_i mi和输出记忆单元向量 c i c_i ci。(输入数据可以理解为知识图谱中的三元组的集合;也可以理解为段落上下文中的句子集合)。
    在这里插入图片描述
    每个 x i = x i , 1 , . . . , x i , n x_i=x_{i,1},...,x_{i,n} xi=xi,1,...,xi,n表示第i个输入句子, x i , j x_{i,j} xi,j表示 x i x_i xi中的第j个单词。A和C分别表示一个 R d × V R^{d\times V} Rd×V的参数矩阵(词嵌入矩阵),V表示记忆网络使用词汇表中包含的单词总数,d表示记忆单元向量的维数。词汇表中每个单词x对应一个整数标识符/索引 I D x ∈ [ 1 , V ] ID_x\in [1,V] IDx[1,V],不同单词对应的标识符不同,这样就可以将每个单词x表示为一个稀疏向量 v x ∈ R V × 1 v_x\in R^{V\times 1} vxRV×1,该向量在维度等于 I D x ID_x IDx(单词x在词汇表中的位置索引)上的值是1,其他维度上的值是0(one-hot表示).这里,将每个输入数据分别表示为一个输入记忆单元和一个输出记忆单元的目的是将信息查找过程和答案生成过程分开对待。

    在记忆模块完成对输入数据的读取和存储后,给定输入问题Q,神经网络模块通过如下步骤从记忆模块中搜寻问题对应/相关的信息并生成答案(工作流程示意图如下图所示)。

    • 问题表示,将问题 Q = Q 1 , . . . , Q l Q=Q_1,...,Q_l Q=Q1,...,Ql转化为对应的向量表示u:
      在这里插入图片描述
      和A、C类似,B表示一个 R d × V R^{d\times V} Rd×V的参数矩阵(词嵌入矩阵), v Q j v_{Q_j} vQj表示单词 Q j Q_j Qj对应的稀疏向量(one-hot)。
    • 问题证据查找,计算u和记忆模块中每个输入记忆单元向量 m i m_i mi之间的相关度,并通过 softmax操作将该相关度(相似度得分)转化为一个概率 p i p_i pi(其实就是一个attention机制,输入问题的向量表示作为query,每个输入记忆单元向量作为key,query和每个key一次做计算(最简单的方式是直接做内积,如下式所示)得到分数,在通过softmax得到每个记忆单元对应的权重(概率)):
      在这里插入图片描述
      这步骤对应信息查找过程:从全部记忆单元中查找和问题相关的证据/信息。
    • 输出向量生成,基于问题在输入记忆单元上的相关度概率/权重分布计算输出向量表示o:
      在这里插入图片描述
      该步骤对应答案生成过程:基于问题在全部输入记忆单元上的相关度概率/权重分布,在输出记忆单元上计算一个输出向量用于答案生成。(每个输出记忆单元向量作为value,和对应的权重进行加权求和,得到一个输出向量)
    • 答案生成,假设每个问题对应的答案一定来自输入数据 { x i } i = 1 N \{x_i\}_{i=1}^{N} {xi}i=1N,通过在词汇表上进行 softmax 操作就可以得到最终的答案输出:
      在这里插入图片描述
      W表示一个 R V × d R^{V\times d} RV×d的参数矩阵,每行向量对应一个答案候选。

    下图给出单层记忆网络的工作流程示意图。单层记忆网络对记忆单元仅进行一次查找操作,因此适用于回答单关系的问题。对于更复杂的多关系问题,则需要进行多次信息查找才能达到“推理”的效果。这就是多层记忆网络。
    在这里插入图片描述
    基于单层记忆网络的问答模型对记忆单元中存储的数据仅进行了一次查找操作,因此只适用于回答单关系的问题。对于更复杂的多关系问题,需要对知识数据进行多次查找才能达到推理效果,这就对应了多层记忆网络。

    基于多层记忆网络的问答模型通过迭代的方式执行多次单层(记忆)神经网络:在第k次输出向量表示 o k o_k ok生成后,对第k+1次输入问题向量表示 u k + 1 u^{k+1} uk+1进行更新:
    在这里插入图片描述
    上面这个向量相加相当于使用上一次从记忆模块中查找出来的信息更新问题(表示),从而从记忆模块中找到更多的证据/信息用来完成推理。在最后一次迭代完成后,答案输出是:
    在这里插入图片描述
    下图给出基于多层记忆网络的问答模型工作流程示意图:
    在这里插入图片描述
    Miller等人提出基于“键值记忆网络”(key-valye memory network)的问答模型[29] (如下图所示).和记忆网络相比,键值记忆网络最大的特点是将外部输人数据分为“键”和“值”两部分 { ( k i , v i ) } i = 1 N \{(k_i,v_i)\}_{i=1}^N {(ki,vi)}i=1N,拿知识图谱为例,每个三元组 { s i , p i , o i } \{s_i,p_i,o_i\} {si,pi,oi}中主语实体和谓词 s i + p i s_i+p_i si+pi对应 k i k_i ki,宾语实体 o i o_i oi对应 v i v_i vi.输入记忆单元向量 m i m_i mi和输出记忆单元向量 c i c_i ci不再基于同一个输入数据计算,而是分别基于 k i k_i ki v i v_i vi计算:
    在这里插入图片描述
    如何定义 k i k_i ki v i v_i vi的向量表示Φ(·)有很多种不同的方法,这里就不再做过多介绍。
    在这里插入图片描述

    总结

    这两篇博客系统介绍了两类知识图谱问答方法:基于语义分析的方法和基于答案排序的方法。

    在基于语义分析的方法中,将自然语言转化成机器能够理解和执行的语义表示是最核心的任务。由于带有语义标注的数据集非常有限,再加上现有知识图谱的覆盖度还很低,目前的语义分析系统还无法在开放领域数据上取得令人满意的效果。因此,如何有效地构建带有语义分析的数据集,以及如何自动抽取高质量、高覆盖度的知识图谱,成为语义分析研究的关键。

    在基于答案排序的方法中,计算输入问题和答案实体候选之间的相关性是最核心的任务。采用<问题,答案>对数据集直接训练该类问答模型能够在现有数据集上取得很好的效果,但这种方法需要较强的约束条件,并不像语义分析方法那样具有普适性。此外,在深度学习快速发展的今天,大多数知识图谱问答方法都采用神经网络进行黑箱式模型训练。如何使模型具有可解释性,如何在模型中加入推理机制,以及如何将神经网络/深度学习模型和已有语言学知识相结合,是目前的一个研究热点。

    参考文献

    [1] Mark Steedman.Surface Structure and Interpretation[M].The MIT Press,1996.
    [2]Mark Steedman.The Syntactic Process[M].The MIT Press,2000.
    [3]Luke Zettlemoyer,Michael Collins.Learning to Map Sentences to Logical Form:Structured Classification with Probabilistic Categorial
    Grammars[C].UAI,2005.
    [4]Tom Kwiatkowski,Luke Zettlemoyer,Sharon Goldwater,etc.Lexical Generalization in CCG Grammar Induction for Semantic Parsing[C].
    EMNLP,2011.
    [5]Yue Zhang,Stephen Clark.Shift-Reduce CCG Parsing[C].ACL,2011.
    [6]Dipendra K.Misra,Yoav Artzi.Neural Shift-Reduce CCG Semantic Parsing[C].ACL,2016.
    [7]Wenduan Xu.LSTM Shift-Reduce CCG Parsing[C].EMNLP,2016.
    [8]Yoav Artzi,Kenton Lee,Luke Zettlemoyer.Broad-coverage CCG Semantic Parsing with AMR[C].EMNLP,2015.
    [9]Siva Reddy,Mirella Lapata,Mark Steedman.Large-scale Semantic Parsing without Question-Answer Pairs[C].TACL,2014.
    [10]Junwei Bao,Nan Duan,Ming Zhou,etc.Knowledge-Based Question Answering as Machine Translation[C].ACL,2014.
    [11]Yuk Wah Wong,Raymond J.Mooney.Learning Synchronous Grammars for Semantic Parsing with Lambda Calculus[C].ACL,2007.
    [12]Junhui Li,Muhua Zhu,Wei Lu,etc.Improving Semantic Parsing with Enriched Synchronous Context-Free Grammar[C].EMNLP,2015.
    [13]Jonathan Berant,Andrew Chou,Roy Frostig,Percy Liang.Semantic Parsing on Freebase from Question-Answer Pairs[C].EMNLP,2013.
    [14]Xuchen Yao,Benjamin Van Durme.Information extraction over Structured Data:Question Answering with Freebase[C].ACL,2014.
    [15]Xuchen Yao. Lean Question Answering over Freebase from Scratch [C].NAACL,2015.
    [16]Jonathan Berant,Percy Liang.Semantic Parsing via Paraphrasing[C].ACL,2014.
    [17]Wen-tau Yih,Ming-Wei Chang,Xiaodong He.etc.Semantic Parsing via Staged Query Graph Generation:Question Answering with
    Knowledge Base[C].ACL,2015.
    [18] Jianfeng Gao,Patrick Pantel,Michael Gamon,etc.Modeling interestingness with deep neural networks[C].EMNLP,2014.
    [19] Yelong Shen,Xiaodong He,Jianfeng Gao,etc.A Latent Semantic Model with Convolutional-Pooling Structure for Information Re-
    trieval[C].CIKM,2014.
    [20] Yelong Shen,Xiaodong He,Jianfeng Gao,etc.Learning Semantic Representations using Convolutional Neural Networks for Web
    Search[C].WWW,2014.
    [21]Antoine Bordes,Jason Weston,Sumit Chopra.Question Answering with Subgraph Embeddings[C].EMNLP,2014.
    [22]Antoine Bordes,Jason Weston,Nicolas Usunier,etc.Open Question Answering with Weakly Supervised Embedding Models[C].ECML-
    PKDD,2014.
    [23]Li Dong,Furu Wei,Ming Zhou,etc.Question Answering over Freebase with Multi-Column Convolutional Neural Networks[C].ACL,2015.
    [24]Jason Weston,Sumit Chopra,Antoine Bordes.Memory Networks[C].ICLR,2015.
    [25]Antoine Bordes,Nicolas Usunier,Sumit Chopra,etc.Large-scale Simple Question Answering with Memory Network[C].ICLR,2015.
    [26]Sarthak Jai.Question Answering over Knowledge Base using Factual Memory Networks[C].NAACL,2015.
    [27] Jason Weston,Antoine Bordes,Sumit Chopra,etc.Towards AI Complete Question Answering:A Set of Prerequisite Toy Tasks
    [C].arXiv,2015.
    [28]S.Sukhbaatar,A.Szlam,J.Weston,etc.End-To-End Memory Networks[C].NIPS,2015.
    [29]Alexander Miller,Adam Fisch,Jesse Dodge,etc.Key-Value Memory Networks for Directly Reading Documents[C].arXiv,2016.

    展开全文
    sdu_hao 2020-05-07 17:23:48
  • 1.74MB qq_35751500 2018-11-09 10:45:37
  • 440KB weixin_39841856 2019-08-15 11:01:52
  • 3.75MB weixin_39840588 2019-08-10 06:20:22
  • 26.88MB qq_44076667 2021-04-23 17:48:47
  • 对于输入的自然语言问句,问答系统分别进行实体属性识别、意图分类、图谱查询、相似度计算、答案筛选和结果返回六个部分,下面就每个部分的功能和逻辑进行说明,具体代码部分请参考主程序。 实体属性识别 NER识别...

    (八)问答流程

    对于输入的自然语言问句,问答系统分别进行实体属性识别、意图分类、图谱查询、相似度计算、答案筛选和结果返回六个部分,下面就每个部分的功能和逻辑进行说明,具体代码部分请参考主程序。

    • 实体属性识别

      NER识别问题中的实体、属性,返回SENT、PROP和OENT,先对SENT、OENT进行实体映射(如果字典中存在,就映射,否则,不做映射),再将其结果送给图谱查询。

    • 意图分类

      使用已训练模型对问答意图进行分类,将问题分类为SP->O、SPP->O、PO->S、OP->S、SO->P中的一种(做分类模型是为了降低相似度计算次数,提高效率)。

    • 图谱查询

      图谱查询分为直接查询和间接查询。

      • 直接查询

        对于输入信息较为完整的问句,直接图谱搜索获取问答结果。

        例:杭州的人口是多少?,图谱直接查询:杭州:人口,获取查询结果。

      • 间接查询

        对于输入信息不完全,图谱直接查询无结果的问题,需要根据问题意图进行相应间接查询。

        • SP->O

          查询与S相关的属性及属性值,查询S的歧义关系的实体属性属性值,并按照歧义权重进行排序。

        • OP->S、PO->S

          查询属性指向S的关系,获取属性值为S的实体、属性。

        • SO->P

          查询S和O五步关系内的关系路径,返回路径结果,并对路径进行处理,得到标准路径。

    • 相似度计算

      对于直接查询无结果的问答,通过间接查询,获取对应实体、属性,去除问题中的停用词、实体的指称,进行相似度计算,选取相似度最高的路径作为答案路径,返回对应的答案。

      • SP->O

        进行相似度批量计算(去除停用词的问题,歧义列表实体+属性),选取相似度最高的实体属性,返回对应的答案,对于相似度一样的,返回权重最大的结果,如果权重一样相似度一样,返回两条结果,逗号分开。

      • SPP->O

        先进行SP->O查询,将查询结果O1作为实体,再查询O1的相关属性,执行O1P->O,进行相似度匹配,获取相似度最高的结果。

      • OP->S、PO->S

        相似度计算批量(问题,属性+实体),选取相似度最高的属性+实体,返回对应的实体S。

    • 答案筛选

      根据相似度值,返回相似度最高的路径答案作为最后的答案。

    • 结果返回

    ​ 结果返回四部分:程序答案,查询路径,路径得分(相似度值),查询耗时。

    展开全文
    weixin_43728914 2020-08-18 09:43:09
  • 每天给你送来NLP技术干货!来自:美团技术团队作者:如寐 梁迪 思睿等知识图谱问答(Knowledge-based Question Answering, KBQA)是指给定自然语言问题,...

    每天给你送来NLP技术干货!


    来自:美团技术团队

    作者:如寐 梁迪 思睿等

    9b30d6b9c082eacc8492a24626f5799d.png

    知识图谱问答(Knowledge-based Question Answering, KBQA)是指给定自然语言问题,通过对问题进行语义理解和解析,进而利用知识库进行查询、推理得出答案。美团在平台服务的售前、售中、售后全链路的多个场景中都存在大量的咨询问题。我们基于问答系统,以自动智能回复或推荐回复的方式,来帮助商家提升回答用户问题的效率,同时更快地解决用户问题。

    本文结合KBQA在美团场景中的具体实践,以及发表在EMNLP 2021上的论文,介绍了KBQA系统整体设计、难点突破以及端到端问答的探索,希望能对从事相关研究的同学有所帮助或者启发。

    • 1 背景与挑战

    • 2 解决方案

      • 2.1 Query理解

      • 2.2 关系识别

      • 2.3 复杂问题理解

      • 2.4 观点问答

      • 2.5 端到端方案的探索

    • 3 应用实践

      • 3.1 酒店问一问

      • 3.2 门票地推

      • 3.3 商家推荐回复

    • 4 总结与展望

    1 背景与挑战

    问答系统(Question Answering System, QA)是人工智能和自然语言处理领域中一个倍受关注并具有广泛发展前景的方向,它是信息检索系统的一种高级形式,可以用准确、简洁的自然语言回答用户用自然语言提出的问题。这项研究兴起的主要原因是人们对快速、准确地获取信息的需求,因此被广泛应用于工业界的各种业务场景中。美团在平台服务的售前、售中、售后全链路的多个场景中,用户都有大量的问题需要咨询商家。因此我们基于问答系统,以自动智能回复或推荐回复的方式,来帮助商家提升回答用户问题的效率,更快地解决用户的问题。

    针对不同问题,美团的智能问答系统包含多路解决方案:

    1. PairQA:采用信息检索技术,从社区已有回答的问题中返回与当前问题最接近的问题答案。

    2. DocQA:基于阅读理解技术,从商家非结构化信息、用户评论中抽取出答案片段。

    3. KBQA(Knowledge-based Question Answering):基于知识图谱问答技术,从商家、商品的结构化信息中对答案进行推理。

    本文主要分享在KBQA技术落地中的实践与探索。

    在用户的问题中,包括着大量关于商品、商家、景区、酒店等相关基础信息及政策等信息咨询,基于KBQA技术能有效地利用商品、商家详情页中的信息,来解决此类信息咨询问题。用户输入问题后,KBQA系统基于机器学习算法对用户查询的问题进行解析、理解,并对知识库中的结构化信息进行查询、推理,最终将查询到的精确答案返回给用户。相比于PairQA和DocQA,KBQA的答案来源大多是商家数据,可信度更高。同时,它可以进行多跳查询、约束过滤,更好地处理线上的复杂问题。

    实际落地应用时,KBQA系统面临着多方面的挑战,例如:

    1. 繁多的业务场景:美团平台业务场景众多,包涵了酒店、旅游、美食以及十多类生活服务业务,而不同场景中的用户意图都存在着差别,比如“早餐大概多少钱”,对于美食类商家需要回答人均价格,而对于酒店类商家则需要回答酒店内餐厅的价格明细。

    2. 带约束问题:用户的问题中通常带有众多条件,例如“故宫学生有优惠吗”,需要我们对故宫所关联的优惠政策进行筛选,而不是把所有的优惠政策都回答给用户。

    3. 多跳问题:用户的问题涉及到知识图谱中多个节点组成的路径,例如“XX酒店的游泳池几点开”,需要我们在图谱中先后找到酒店、游泳池、营业时间。

    下面将详细讲述我们是如何设计高准确、低延时的KBQA系统,处理场景、上下文语境等信息,准确理解用户、捕捉用户意图,从而应对上述的挑战。

    2 解决方案

    KBQA系统的输入为用户Query,输出为答案。总体架构如下图1所示。最上层为应用层,包括对话以及搜索等多个入口。在获取到用户Query后,KBQA线上服务通过Query理解和召回排序模块进行结果计算,最终返回答案文本。除了在线服务之外,知识图谱的构建、存储也十分重要。用户不仅会关心商户的基本信息,也会询问观点类、设施信息类问题,比如景点好不好玩、酒店停车是否方便等。针对上述无官方供给的问题,我们构建了一套信息与观点抽取的流程,可以从商家非结构化介绍以及UGC评论中抽取出有价值的信息,从而提升用户咨询的满意度,我们将在下文进行详细介绍。

    13412890cde65205c123a0547655fcdc.png

    图1 KBQA系统架构图

    对于KBQA模型,目前的主流解决方案有两种,如下图2所示:

    2e631ae49337a1e26be15e83d6635f76.png

    图2 KBQA解决方案分类
    • 基于语义解析(Semantic Parsing-based):对问句进行深度句法解析,并将解析结果组合成可执行的逻辑表达式(如SparQL),直接从图数据库中查询答案。

    • 基于信息抽取(Information Retrieval):先解析出问句的主实体,再从KG中查询出主实体关联的多个三元组,组成子图路径(也称多跳子图),之后分别对问句和子图路径编码、排序,返回分数最高的路径作为答案。

    基于语义解析的方法可解释性更强,但这种方法需要标注大量的自然语言逻辑表达式,而信息抽取式的方法更偏向端到端的方案,在复杂问题、少样本情况下表现更好,但若子图过大,会显著降低计算的速度。

    因此,考虑到两者的优势,我们采用将两者结合的方案。如下图3所示,整体的流程分为四大步骤,以“故宫周末有学生票吗”为例:

    c8e659a193ef320f4694e1e02e8c481a.png

    图3 美团KBQA解决方案
    1. Query理解:输入原始Query,输出Query理解结果。其中会对对Query进行句法分析,识别出用户查询的主实体是“故宫” 、业务领域为“旅游”、问题类型为一跳(One-hop)。

    2. 关系识别:输入Query、领域、句法解析结果、候选关系,输出每个候选的分数。在这个模块中,我们借助依存分析强化Query的问题主干,召回旅游领域的相关关系,进行匹配排序,识别出Query中的关系为“门票”。

    3. 子图召回:输入前两个模块中解析的主实体和关系,输出图谱中的子图(多个三元组)。对于上述例子,会召回旅游业务数据下主实体为“故宫”、关系为“门票”的所有子图。

    4. 答案排序:输入Query和子图候选,输出子图候选的分数,如果Top1满足一定阈值,则输出作为答案。基于句法分析结果,识别出约束条件为“学生票”,基于此条件最终对Query-Answer对进行排序,输出满足的答案。

    下面将介绍我们对于重点模块的建设和探索。

    2.1 Query理解

    Query理解是KBQA的第一个核心模块,负责对句子的各个成分进行细粒度语义理解,其中两个最重要的模块是:

    • 实体识别和实体链接,输出问句中有意义的业务相关实体和类型,如商家名称、项目、设施、人群、时间等。

    • 依存分析:以分词和词性识别结果为输入,识别问句的主实体、被提问信息、约束等。

    实体识别是句法分析的重要步骤,我们先基于序列标注模型识别实体,再链接到数据库中的节点。对于该模块我们主要做了以下优化:

    • 为了提升OOV(Out-of-Vocabulary)词的识别能力,我们对实体识别的序列标注模型进行了知识注入,利用已知的先验知识辅助新知识的发现。

    • 考虑到实体嵌套的问题,我们的实体识别模块会同时输出粗粒度和细粒度的结果,保证后续模块对于Query的充分理解。

    • 在问答的长Query场景下,利用上下文信息进行实体的链接,得到节点id。

    最终,该模块会输出句子中各个重要成分的类型,如下图4所示:

    b4a0b1cea627ce8db429eae2aa24c3d3.png

    图4 Query理解流程及结果

    依存分析是句法分析的一种,它的目的是识别句子中词与词的非对称支配关系,在输出的结果中用有向弧表示,该弧线由从属词(dep)指向支配词(head)。对于KBQA任务,我们定义了五种关系,如下图5所示:

    26785451132b4c7d7cea310a5ebeab5b.png

    图5 依存类型定义

    依存分析主要有两种方案:基于转移的(Transition-based)和基于图的(Graph-based)。基于转移的依存分析将依存句法树的构建建模为一系列操作,由模型预测每一步的动作(shift、left_arc、right_arc),不断将未处理的节点入栈并赋予关系,最终构成句法树。基于图的方法则致力于在图中找出一棵最大生成树,也就是句子整体依存关系的全局最优解。考虑到基于图的方法是对全局进行搜索,准确率更高,我们采用较为经典的“Deep Biaffine Attention for Neural Dependency Parsing”模型,它的结构如下图6所示:

    e566a58a93bf1d418614cfe73c1c70f3.png

    图6 依存分析模型结构

    该模型先通过BiLSTM对词与词性的拼接向量进行编码,之后采用对用两个MLP头分别编码出h(arc-head)和h(arc-dep)向量,去除冗余信息。最终将各个时刻的向量拼接起来得到H(arc-head)和H(arc-dep),且在H(arc-dep)上拼接了一个单位向量,加入中间矩阵U(arc)进行仿射变换,得到dep与head的点积分数矩阵S(arc),找到每个词依存的head。

    有了依存分析的结果,我们可以更好地识别关系、复杂问题,具体的特征使用方法将在下文进行介绍。

    2.2 关系识别

    关系识别是KBQA中另一个核心模块,目的是识别出用户Query所问的关系(Predicate),从而与主实体(Subject)联合确定唯一子图,得到答案(Object)。

    在实践中,考虑到图谱中边关系的数量会不断增加,我们将关系识别建模为文本匹配任务,输入用户Query、Query特征和候选关系,输出关系匹配的分数。为了解决开头提到的多领域问题,我们在输入的特征中加入了领域信息,从而在领域表示中存储一定的领域相关知识,让模型更好地判断。同时,为了提升复杂Query的理解,我们在输入中还融入了句法信息,让模型可以更好地理解带约束、多跳的问题。

    611519e7a410b6014f4dd2579c2a076f.png

    图7 关系识别模型结构

    随着大规模预训练语言模型的出现,BERT等大模型在匹配任务上取得了SOTA的结果,通常业界通用的方法主要归类为以下两种:

    1. 表示型:也称“双塔模型”,它的主要思想是将两段文本转换成一个语义向量,然后在向量空间计算两向量的相似度,更侧重对语义向量表示层的构建。

    2. 交互型:该方法侧重于学习句子中短语之间的对齐,并学习比较他们之间的对齐关系,最终将对齐整合后的信息聚合到预测层。由于交互型模型可以利用到文本之前的对齐信息,因而精度更高、效果更好,所以在本项目中我们采用交互型模型来解决匹配问题。

    为了充分利用BERT的语义建模能力,同时考虑实际业务的线上延时要求,我们在推理加速、数据增强、知识增强方面做了以下三点优化:

    1. 层次剪枝:BERT每层都会学到不同的知识,靠近输入侧会学到较为通用的句法知识,而靠近输出则会学习更多任务相关的知识,因此我们参考DistillBERT,采取Skip等间隔式层次剪枝,只保留对任务效果最好的3层,比单纯保留前三层的剪枝在F1-score上提升了4%,同时,实验发现不同剪枝方法效果差距可达7%。

    2. 领域任务数据预精调:剪枝后,由于训练数据有限,3层模型的效果有不小的下降。通过对业务的了解,我们发现美团的“问大家”模块数据与线上数据的一致性很高,并对数据进行清洗,将问题标题和相关问题作为正例,随机选取字面相似度0.5-0.8之间的句子作为负例,生成了大量弱监督文本对,预精调后3层模型在准确率上提升超过4%,甚至超过了12层模型的效果。

    3. 知识增强:由于用户的表达方式多种多样,准确识别用户的意图,需要深入语意并结合语法信息。为了进一步提升效果,同时解决部分Case,我们在输入中加入了领域与句法信息,将显式的先验知识融入BERT,在注意力机制的作用下,同时结合句法依存树结构,准确建模词与词之间的依赖关系,我们在业务数据以及五个大型公开数据集上做验证,对比BERT Base模型在准确率上平均提升1.5%。

    经过上述一系列迭代后,模型的速度、准确率都有了大幅的提升。

    2.3 复杂问题理解

    在真实场景中,大部分问题可以归为以下四类(绿色为答案节点),如下图8所示:

    5a9ebb1d5e2fc8a94f1943490756bd90.png

    图8 复杂问题分类

    问题的跳数根据实体数量决定,单跳问题通常只涉及商户的基本信息,比如问商户的地址、电话、营业时间、政策等,在知识图谱中都可以通过一组SPO(三元组)解答;两跳问题主要是针对商户中某些设施、服务的信息提问,比如酒店的健身房在几层、早餐几点开始、以及接送机服务的价格等,需要先找到商户->主实体(设施/服务/商品等)的路径,再找到主实体的基本信息三元组,也就是SPX、XPO两个三元组。约束问题指主实体或答案节点上的约束条件,一般为时间、人群或是定语。

    下面介绍针对不同类型的复杂问题,我们所进行的一些改进。

    2.3.1 带约束问题

    通过对线上日志的挖掘,我们将约束分为以下几类,如下图9所示:

    c274bfee0a18eb46c544ca0d22ca7096.png

    图9 约束问题分类

    对于带约束问题的回答涉及两个关键步骤:约束识别答案排序

    通过KBQA系统中的依存分析模块,我们可以识别出用户在实体或关系信息上所加的约束限制,但约束的说法较多,且不同节点的约束类型也不一样,因此我们在构造数据库查询SQL时先保证召回率,尽量召回实体和关系路径下的所有候选节点,并在最终排序模块对答案约束进行打分排序。

    为了提升效率,我们首先在知识存储层上进行了优化。在复合属性值的存储方面,Freebase提出Compound Value Type (CVT) 类型,如下图10所示,来解决这类复合结构化的数据的存储与查询问题。比如欢乐谷的营业时间,对于不同的场次是不一样的。这种复合的属性值可以用CVT的形式去承接。

    d341fd942f931bb1ecc85f0ce102ab1d.png

    图10 CVT类型示例

    但是,CVT存储方式增加查询复杂度、耗费数据库存储。以图“欢乐谷营业时间CVT”为例:

    • 该信息以通常成对CVT形式存储,一个CVT涉及3个三元组存储。

    • 对于“欢乐谷夏季夜场几点开始”这样的问题,在查询的时候,涉及四跳,分别为,<实体 -> 营业时间CVT>, <营业时间CVT -> 季节=夏季>, <营业时间CVT -> 时段=夜场>,<营业时间CVT -> 时间>。对业界查询快速的图数据库比如Nebula来说,三跳以上的一般查询时间约为几十毫秒,在实际上线使用中耗时较长。

    • 一旦属性名称、属性值有不同的但是同意的表达方式,还需要多做一步同义词合并,从而保证查询时能匹配上,没有召回损失。

    为了解决上述问题,我们采用Key-Value的结构化形式承载属性信息。其中Key为答案的约束信息,如人群、时间等可以作为该属性值的约束的信息,都可以放在Key中,Value即为要查的答案。对于上文的例子,我们将所有可能的约束维度的信息组成Key,如下图11所示:

    e74e135f6c6ac5496193fd6106c14126.png

    图11 约束问题解决方案

    之后,为了解决约束值说法过多的问题,在实际查询过程中,在找不到完全匹配的情况下,我们用属性值的Key和问题中的约束信息进行匹配计算相关度,相关度最高的Key,对应的Value即为答案。因此,Key的表示方法可以为多种形式:

    • 字符串形式:用文本相似度的方法去计算和约束文本的相关性。

    • 文本Embedding:如对Key的文本形式做Embedding形式,与约束信息做相似计算,在训练数据合理的情况下,效果优于字符串形式。

    • 其他Embedding算法:如对虚拟节点做Graph Embedding,约束文本与对应的虚拟节点做联合训练等等。

    这种形式的存储方式,相当于只存储一个三元组,即<实体->营业时间KV>,查询过程压缩成了一跳+文本匹配排序。基于语义模型的文本匹配可以在一定程度上解决文本表达不同造成的不能完全匹配的问题。对语义模型进行优化后,可以尽量压缩匹配时间,达到十几毫秒。

    进行复杂条件优化后,先通过前置模块识别到实体、关系和约束,组成约束文本,再与当前召回子图的Key值候选进行匹配,得到最终的答案。

    2.3.2 多跳问题

    多跳问题是天然适合KBQA的一类问题,当用户询问商户中的设施、服务、商品等实体的信息时,我们只需要先在图谱中找到商户,再找到商户下的实体,接着找到下面的基本信息。如果使用FAQ问答的解法,就需要为每个复杂问题都设置一个标准问,比如“健身房的位置”、“游泳馆的位置”等。而在KBQA中,我们可以很好地对这类问题进行压缩,不管问什么实体的位置,都问的是“位置”这条边关系,只是起始实体不同。

    在KBQA系统中,我们先依赖依存分析模块对句子成分间的依赖关系进行识别,之后再通过关系识别模块判断句子所询问的关系跳数以及关系,具体流程如下图12所示:

    153a2da72c0f9af1ade0809110bd8626.png

    图12 多跳问题解决方案

    借助实体识别的类型,我们可以将句子中的重要成分进行替换,从而压缩候选关系配置的个数、提升关系识别准确率。在对句子进行了充分理解后,系统会基于主实体、关系、跳数对子图进行查询,并输入给答案排序模块进行更细粒度的约束识别和打分。

    2.4 观点问答

    除了上述基本信息类的查询Query外,用户还会询问观点类的问题,比如“迪士尼停车方便吗?”、“XX酒店隔音好吗?”等。对于主观观点类问题,可以基于FAQ或阅读理解技术,从用户评论中找出对应的评论,但这种方法往往只能给出一条或几条评论,可能会太过主观,无法汇总群体的观点。因此我们提出了观点问答方案,给出一个观点的正反支持人数,同时考虑到可解释性,也会给出多数观点的评论证据,在App中的实际展示如下图13所示:

    e63b0c42c228320b4a73f034db962260.png

    图13 观点问答截图

    为了自动化地批量挖掘用户观点,我们拆解了两步方案:观点发现和Evidence挖掘,如下图14所示。

    53ef62b42ea82330a9286a1e1e4ea179.png

    图14 观点挖掘步骤

    第一步,先通过观点发现在用户评论中挖掘出多种观点。我们采用基于序列标注的模型发掘句子中的实体和观点描述,并使用依存分析模型对实体-观点的关系进行判断。

    第二步,在挖掘到一定数量的观点后,再深入挖掘评论中的证据(Evidence),如下图15所示。虽然在第一步观点发现时也能找到部分观点的出处,但还有很多用户评论的观点是隐式的。比如对于“是否可以带宠物”,用户不一定在评论中直接指明,而是说“狗子在这里玩的很开心”。这就需要我们对评论语句进行深度语义理解,从而归纳其中的观点。在方案的落地过程中,最初我们使用了分类模型对观点进行分类,输入用户评论,用编码器对句子进行理解,之后各个观点的分类头判断观点正向程度。但随着自动化挖掘的观点增多,为了减少人工标注分类任务的成本,我们将其转换成了匹配任务,即输入观点标签(Tag)和用户评论,判断评论语句对该观点的支撑程度。最后,为了优化速度,我们对12层Transformer进行了裁剪,在速度提升3倍的情况下效果只降了0.8%,实现了大批量的观点离线挖掘。

    ea156112b1cc48acba87c3bdd8f2b76c.png

    图15 观点证据挖掘步骤

    2.5 端到端方案的探索

    在上文中,我们针对多跳、带约束等复杂问题设计了不同的方案,虽然可以在一定程度上解决问题,但系统的复杂度也随之提高。基于关系识别模块的预训练思路,我们对通用的、端到端的解决方案进行了更多的探索,并在今年的EMNLP发表了《Large-Scale Relation Learning for Question Answering over Knowledge Bases with Pre-trained Language Models》论文

    对于KBQA,目前学术界有很多研究专注于图学习方法,希望用图学习来更好地表示子图,但却忽略了图谱节点本身的语义。同时,BERT类的预训练模型是在非结构化文本上训练的,而没接触过图谱的结构化数据。我们期望通过任务相关的数据来消除两者的不一致性,从而提出了三种预训练任务,如下图16所示:

    b9606fce335d3a1885919d8d9582e359.png

    图16 关系识别预训练任务
    1. Relation Extraction:基于大规模关系抽取开源数据集,生成了大量一跳( [CLS]s[SEP]h, r, t[SEP] )与两跳( [CLS]s1 , s2 [SEP]h1 , r1 , t1 (h2 ), r2 , t2 [SEP] )的文本对训练数据,让模型学习自然语言与结构化文本间的关系。

    2. Relation Matching:为了让模型更好的捕捉到关系语义,我们基于关系抽取数据生成了大量文本对,拥有相同关系的文本互为正例,否则为负例。

    3. Relation Reasoning:为了让模型具备一定的知识推理能力,我们假设图谱中的(h, r, t)缺失,并利用其他间接关系来推理(h, r, t)是否成立,输入格式为:[CLS]h, r, t[SEP]p1 [SEP] . . . pn [SEP]。

    经过上述任务预训练后,BERT模型对于Query和结构化文本的推理能力显著提升,并且在非完全KB的情况下有更好的表现,如下图17所示:

    422d72dc047e18b9c0c6d5171984485a.png

    图17 模型效果

    3 应用实践

    经过一年多的建设,当前KBQA服务已经接入美团的旅游、酒店、到综等多个业务,辅助商家及时回答用户问题,并提升了用户的满意度和转化率。

    3.1 酒店问一问

    酒店是用户出行的必备需求之一,但一些中小商家没有开通人工客服入口,无法及时回答用户信息。为满足用户对详情页内信息的快速查找,智能助理辅助未开通客服功能的酒店商家进行自动回复,提升用户下单转化率。用户可询问酒店以及房型页的各类信息,如下图18所示:

    027422b2bed18991b87850f5b0590e70.png

    图18 酒店问一问产品示例

    3.2 门票地推

    门票地推致力于帮助旅游商家解决主要的卖票业务,在景区高峰时段,线上购票相比于排队更加便捷,然而仍有很多用户保持着线下购票的习惯。美团通过提过二维码以及简单的交互,提升了商户卖票以及用户购票的便捷程度。同时,我们通过在购票页内置「智能购票助手」,解决用户购票过程中的问题,帮用户更快捷地买到合适的门票,如下图19所示:

    89db7f05b430f3c485363d239457fd04.png

    图19 门票地推产品示例

    3.3 商家推荐回复

    除了出行场景外,用户在浏览其他本地服务商家时也会有很多问题,比如“理发店是否需要预约?”、“店家最晚几点关门?”,这些都可以通过商家客服进行咨询。但商家本身的人力有限,难免在高峰时期迎接不暇。为了降低用户的等待时间,我们的问答服务会为商家提供话术推荐功能,如下图20所示。其中KBQA主要负责解答商家、团购相关的信息类问题。

    fc3d82edebc67cde50d9ff4376227ac5.png

    图20 商家推荐回复产品示例

    4 总结与展望

    KBQA不仅是一个热门的研究方向,更是一个复杂的系统,其中涉及到实体识别、句法分析、关系识别等众多算法,不仅要关注整体准确率,更要控制延时,对算法和工程都提出了很大的挑战。经过一年多的技术的探索,我们团队不仅在美团落地多个应用,并在2020年获得了CCKS KBQA测评的A榜第一、B榜第二和技术创新奖。同时我们开放出了部分美团数据,与北大合作举办了2021年的CCKS KBQA测评。

    回到技术本身,虽然目前我们的KBQA已能解决大部分头部问题,但长尾、复杂问题才是更大的挑战,接下来还有很多前沿技术值得探索,我们希望探索以下方向:

    • 无监督领域迁移:由于KBQA覆盖美团酒店、旅游到综等多个业务场景,其中到综包含十多个小领域,我们希望提升模型的Few-Shot、Zero-Shot能力,降低标注数据会造成的人力成本。

    • 业务知识增强:关系识别场景下,模型核心词聚焦到不相关的词将对模型带来严重的干扰,我们将研究如何利用先验知识注入预训练语言模型,指导修正Attention过程来提升模型表现。

    • 更多类型的复杂问题:除了上述提到的带约束和多跳问题,用户还会问比较类、多关系类问题,未来我们会对图谱构建和Query理解模块进行更多优化,解决用户的长尾问题。

    • 端到端KBQA:不管对工业界还是学术界,KBQA都是一个复杂的流程,如何利用预训练模型以及其本身的知识,简化整体流程、甚至端到端方案,是我们要持续探索的方向。

    也欢迎对KBQA感兴趣的同学加入我们团队,一起探索KBQA的更多可能性!文末附招聘信息,欢迎大家积极投递简历。

    作者简介

    如寐、梁迪、思睿、鸿志、明洋、武威,均来自美团搜索与NLP部NLP中心知识图谱组。


    投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

    方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

    811fdf50aba7f242ecb6188ce32ebc64.png

    记得备注呦

    整理不易,还望给个在看!
    展开全文
    qq_27590277 2021-11-11 00:58:35
  • weixin_43728914 2020-08-18 09:30:05
  • 5星
    97.06MB hhr603894090 2020-06-09 13:03:57
  • 971KB robotblog 2021-07-24 19:11:13
  • 1.96MB fbsxghvudk 2018-06-05 12:27:15
  • 5星
    3.51MB hzylmf 2017-11-28 15:01:00
  • sdu_hao 2020-04-22 11:51:52
  • 520KB weixin_38411989 2020-11-12 20:53:38
  • weixin_46645965 2021-01-30 20:17:53
  • MeituanTech 2021-05-21 00:20:39
  • 958KB weixin_42097450 2021-03-11 16:25:54
  • 1.45MB u010062766 2018-09-08 00:27:53
  • 77KB fbsxghvudk 2018-06-11 14:51:13
  • sdu_hao 2020-05-05 12:11:07
  • 5星
    559KB weixin_54707168 2021-04-23 15:13:49
  • 5星
    18.5MB u011098584 2019-02-27 13:34:27

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,448
精华内容 3,379
关键字:

知识图谱问答