知识图谱算法:一文详解知识图谱关键技术与应用
知识图谱算法:一文详解知识图谱关键技术与应用另外一种情况是没有匹配到合适的问句模板,这个时候会进入到基于检索的问答模块,最后是把基于知识图谱和基于检索的两种的结果进行融合。预处理完了以后,引擎会首先尝试根据问句的句法结构进行问句模板的匹配,如果说能够匹配到合适的问句模板,这个时候再根据在预处理阶段得到的问句的实体属性和关系,对匹配到的问题模板进行实例化,然后再根据实例化以后的问句模板来生成知识图谱的图数据库的查询语言,然后在图数据库里面就可以把这个答案查出来了。我们的智能问答是融合了是知识图谱问答和基于检索的问答两种方法进行融合。首先,左边会把用户的语音经过语音转成文字以后,进行一个预处理,预处理主要是做了分词、纠错、词性标注、实体属性的识别,对这个句子进行依存句法树的结构分析。
最后介绍一种基于深度学习的推理模型,这个模型利用了卷积神经网络对实体进行关系的分类的,把句子的依存树作为输入,就是将词在树中的不同的位置的嵌入式的表示拼接到这个词向量当中来学习,同时对面相树结构设计了独特的卷积核。这种方法在实体分类的任务上,相较于未使用位置关系的信息,效果会有一定的提升。
▌四、达观经验与案例
1.知识图谱在达观的知识问答当中的应用
我们的智能问答是融合了是知识图谱问答和基于检索的问答两种方法进行融合。
首先,左边会把用户的语音经过语音转成文字以后,进行一个预处理,预处理主要是做了分词、纠错、词性标注、实体属性的识别,对这个句子进行依存句法树的结构分析。
预处理完了以后,引擎会首先尝试根据问句的句法结构进行问句模板的匹配,如果说能够匹配到合适的问句模板,这个时候再根据在预处理阶段得到的问句的实体属性和关系,对匹配到的问题模板进行实例化,然后再根据实例化以后的问句模板来生成知识图谱的图数据库的查询语言,然后在图数据库里面就可以把这个答案查出来了。
另外一种情况是没有匹配到合适的问句模板,这个时候会进入到基于检索的问答模块,最后是把基于知识图谱和基于检索的两种的结果进行融合。
2. 在HR人岗精准匹配里面的应用
HR创建的JD能够自动的匹配到简历库里面最合适的候选人的简历,也即把JD的内容和简历库里面简历的内容做语义的匹配。
这里有一个问题,JD对技能的描述和不同的人的简历中对技能的描述存在很多表达方式造成的语义方面的差异。我们分别对JD和简历构建技能图谱,通过技能图谱的子图匹配,就可以比较好地来解决语义匹配的问题。
我们在知识图谱建设当中的一些经验:
- 第一,界定好范围,就是要有一个明确的场景和问题的定义,不能说为了知识图谱而知识图谱。如果没有想清楚知识图谱有什么样的应用的场景,或者能解决什么样的问题,这样的知识图谱是比较难以落地的。一些明确的场景,比如解决商品数据的搜索问题,或者从产品说明书里面做相关问题的回答。
- 第二,做好schema的定义,就是上面讲到的对于schema或者本体的定义。第一步确定好场景和问题以后,就基于这样的场景或者问题,再进行相关领域的schema的定义。定义这个领域里概念的层次结构、概念之间的关系的类型,这样做是确保整个知识图谱是比较严谨的,知识的准确性是比较可靠的。知识的模型的定义,或者schema的定义,大部分情况下是通过这个领域的知识专家的参与,自上而下的方式去定义的。
- 第三,数据是知识图谱构建基础。数据的梳理就比较重要,最需要什么样的数据?依赖于我们要解决的问题是什么,或者我们的应用场景是什么?基于问题和场景,梳理出领域相关的问题、相关的数据,包括结构化的数据、半结构化数据、无结构化的数据,结合百科跟这个领域相关的数据,领域的词典,或者领域专家的经验的规则。
- 第四,不要重复去造轮子,很多百科的数据和开放知识图谱的数据,是可以融合到我们的领域知识图谱中。
- 第五,要有验证和反馈机制,需要有管理后台,用户可以不断的和知识图谱系统进行交互,不断的进行确认和验证,确保知识图谱每一步推理和计算都是准确的。
- 第六,知识图谱构建是持续迭代的系统工程,不可能一蹴而就。
最后给大家介绍中文开放知识图谱,达观数据也是中文开放知识图谱发起单位之一,这里面有很多开放的数据和开源的工具,其中的文章也是非常好的学习材料。
下面是自由提问环节。
Q:用知识图谱来做反欺诈,和深度学习的方法相比,或者是其它机器学习的相比,知识图谱是否有优势?
A:反欺诈是整个风控流程中的一个非常重要的环节。其主要难点在于如何基于大数据把多个不同来源的数据(内部、外部,格式化、非格式化)有机整合在一起,并对这些数据之间的各种复杂且动态变化的关系进行建模,从而构建起一个反欺诈引擎。知识图谱作为关系的直接表示方式,可以提供一种非常直观的可视化的手段以及内部的推理机制来有效地分析各种复杂关系下可能存在的潜在风险。
我们知道深度学习的表示是基于一种低维稠密的数值向量,模型本身是一个“黑盒”,我们无从知道内部的各种特征的非线性组合是如何形成的。相比于知识图谱,深度学习的不可解释性是最大的缺点。此外深度学习要真正达成效果,需要依赖已经标注过的大样本数据进行训练,但在很多领域(包括反欺诈)这样的数据获取门槛极高。
当然,深度学习和知识图谱也是不完全互斥的,知识图谱的构建中的实体、属性、关系抽取等关键过程也会用到深度学习的循环神经网络等自然语言处理技术。
Q:知识图谱的查询跟关系数据库的查询感觉都一样,这两个有什么样的关系?
A:在关系型数据库里面,如果要联合多个表执行复杂查询,特别在数据量比较大的情况下是非常慢的。如果涉及到多种很复杂的关联关系,图数据库是比较好的选择。图数据库基于图的遍历,内置对图搜索的优化算法,可以非常快速进行子图的搜索。相较于传统的关系数据库,其性能会有多个数量级的提升。
Q:纯文本怎么进行抽取?
A:关于抽取,我在前面讲到了有很多的方法,包括实体抽取里面有NER的方法,NER有传统的CRF的方法,有基于循环神经网络 CRF的方法,也有端到端的联合标注的抽取方法,这种方法同时输出实体和实体之间关系的三元组。
Q:知识图谱怎么和其它算法相结合,应用在搜索推荐上面?
A:在搜索里面,更多的是基于知识图谱去回答问题,它可以对query所表达的实体和属性进行识别,比如查询“华为P10手机的内存是多少?”这就是实体属性值的查找。华为P10是实体,内存是P10这个实体的属性,对应到知识图谱里面,可以快速定位到这个实体叫P10,就可以直接把P10的内存(属性值)返回出来,就可以直接给出64G或32G这样的答案。
Q:实体有哪些属性是怎么定义的?
A: 从如何定义的角度看,主要有两种方法,一种是自上而下的方法,比如我们进行模式(Schema)定义的时候,首先会对其中的各种概念进行定义,概念有哪些属性,概念之间的关系是什么样的。后面抽取的各个实体都会映射到模式层的一个概念上去,实体会自动继承所属概念的属性。还有一种是自下而上的方法,实体的属性是从原始数据中不断抽取提出来的,并对不同数据源的属性与属性值进行融合(归一化)。实际使用中,这两种方法往往是同时使用互相补充的。
Q:知识图谱中的时间和空间关系怎么表达?
A:知识图谱表达的是动态的数据,比如美国总统是特朗普对吧?现在是的,但三年前不是,五年后也不一定是。随着时间的推移,它的三元组的关系是会有变化的,那这个时候怎么样去表达?通常是在三元组的基础上再扩展一个维度形成四元组这样的做法,但是它会大大增加系统处理的复杂度。也有一些其他的方法,比如可以是跟关系数据库相结合的方式进行扩展。
Q:如何衡量一个知识图谱建立以后的效果?如何有效的进行学习改进?
A:我们建立一个知识图谱,建立一个机器学习的算法模型,对它的效果进行衡量度量是非常关键的。在知识图谱这里,一定是基于某个场景具体的应用,然后再看这个场景或者这个具体的应用使用了知识图谱以后跟原来的做法来做一个比较,或者有一个管理后台,人可以定期对知识图谱系统的推理和计算的结果做一些检测和验证,然后对这些验证的结果再反馈到这个系统里面去,让系统重新来进行学习、改进,建立人跟系统之间不断的反馈、验证和自动学习的过程。
Q:可不可以用知识图谱进行分类?
A:这个问题很有意思。上面提到,一方面我们可以基于分类的方式来做知识图谱中实体关系的学习。另一方面,我们是否可以利用知识图谱辅助进行文本的分类?这样方面我们有一些经验。对于文本分类中的特征工程,我们的做法是通过知识图谱进行语义的关联扩充以获取更多的语义特征,尤其是对于短文本,对分类效果能有比较好的提升。