2012 年 5 月 17 日,Google 正式提出了知识图谱(Knowledge Graph)的概念,其初衷是为了优化搜索引擎返回的结果,增强用户搜索质量及体验。
知识图谱,本质上,是一种揭示实体之间关系的语义网络。
在维基百科的官方词条中:知识图谱是Google用于增强其搜索引擎功能的知识库[8]。本质上,知识图谱是一种揭示实体之间关系的语义网络,可以对现实世界的事物及其相互关系进行形式化地描述。现在的知识图谱已被用来泛指各种大规模的知识库。三元组是知识图谱的一种通用表示方式,三元组的基本形式主要包括实体1、关系、实体2和概念、属性、属性值等,实体是知识图谱中的最基本元素,不同的实体间存在不同的关系。概念主要指集合、类别、对象类型、事物的种类,例如人物、地理等;属性主要指对象可能具有的属性、特征、特性、特点以及参数,例如国籍、生日等;属性值主要指对象指定属性的值,例如中国、1988-09-08等。每个实体(概念的外延)可用一个全局唯一确定的ID来标识,每个属性-属性值对(attribute-valuepair,AVP)可用来刻画实体的内在特性,而关系可用来连接两个实体,刻画它们之间的关联。就覆盖范围而言,知识图谱也可分为通用知识图谱和行业知识图谱。通用知识图谱注重广度,强调融合更多的实体,较行业知识图谱而言,其准确度不够高,并且受概念范围的影响,很难借助本体库对公理、规则以及约束条件的支持能力规范其实体、属性、实体间的关系等。通用知识图谱主要应用于智能搜索等领域。行业知识图谱通常需要依靠特定行业的数据来构建,具有特定的行业意义。行业知识图谱中,实体的属性与数据模式往往比较丰富,需要考虑到不同的业务场景与使用人员。
知识图谱在逻辑结构上可分为模式层与数据层两个层次,数据层主要是由一系列的事实组成,而知识将以事实为单位进行存储。如果用(实体1,关系,实体2)、(实体、属性,属性值)这样的三元组来表达事实,可选择图数据库作为存储介质,例如开源的 Neo4j、Twitter 的 FlockDB、JanusGraph 等。模式层构建在数据层之上,主要是通过本体库来规范数据层的一系列事实表达。本体是结构化知识库的概念模板,通过本体库而形成的知识库不仅层次结构较强,并且冗余程度较小。
大规模知识库的构建与应用需要多种智能信息处理技术的支持。通过知识抽取技术,可以从一些公开的半结构化、非结构化的数据中提取出实体、关系、属性等知识要素。通过知识融合,可消除实体、关系、属性等指称项与事实对象之间的歧义,形成高质量的知识库。知识推理则是在已有的知识库基础上进一步挖掘隐含的知识,从而丰富、扩展知识库。分布式的知识表示形成的综合向量对知识库的构建、推理、融合以及应用均具有重要的意义。
知识抽取
实体抽取的主要方法
早期的实体抽取也称为命名实体学习(named entity learning) 或命名实体识别 (named entity recognition),指的是从原始语料中自动识别出命名实体。由于实体是知识图谱中的最基本元素,其抽 取的完整性、准确率、召回率等将直接影响到知识 库的质量。因此,实体抽取是知识抽取中最为基础 与关键的一步。
- 基于规则与词典的实体抽取方法
- 基于统计机器学习的实体抽取方法
- 面向开放域的实体抽取方法
关系抽取的主要方法
关系抽取的目标是解决实体间语义链接的问题,早期的关系抽取主要是通过人工构造语义规则以及模板的方法识别实体关系。随后,实体间的关系模型逐渐替代了人工预定义的语法与规则。但是仍需要提前定义实体间的关系类型。
- 开放式实体关系抽取
- 基于联合推理的实体关系抽取
属性抽取
属性抽取主要是针对实体而言的,通过属性可形成对实体的完整勾画。由于实体的属性可以看成是实体与属性值之间的一种名称性关系,因此可以将实体属性的抽取问题转换为关系抽取问题。基于规则与启发式算法的属性抽取方法能够从Wikipedia及WordNet的半结构化网页中自 动抽取相应的属性名称与属性值,还可扩展为一套本体知识库。实验表明:该算法的抽取准确率可达到95%。 大量的属性数据主要存在于半结构化、非结构化的大规模开放域数据集中。抽取这些属性的方法,一种是将上述从百科网站上抽取的结构化数据作为可用于属性抽取的训练集,然后再将该模型应用于开放域中的实体属性抽取;另一种是根据实体属性与属性值之间的关系模式,直接从开放域数据集上抽取属性。但是由于属性值附近普遍存在一些限定属性值含义的属性名等,所以该抽取方法的准确率并不高。
- 智能搜索
- 深度问答
- 社交网络
- 垂直行业应用(金融,医疗,电商,军事等)
1、图数据库是必须的么?
图数据库不是必须的,就查询型性能来说,关系型数据库完爆图数据库,并且对于full-search来说,elasticsearch or solr 等搜索引擎又完爆图数据库,但是图数据也有好处就是提供了一个比较严禁和完善的知识图谱体系架构,从实体到概念,从概念到本体,各种schema定义清晰,一阶逻辑规则嵌入,如果对知识图谱不是很理解,可以尝试使用图数据库,但是缺点是容易被框架束缚,对于各种实体定义是很花时间的,如果只作为核心的推理层,还是能接受的。前期在业务上实际上是不推荐使用的。基本上我认识的几个做知识图谱的朋友都不推荐使用图数据库。另外还是想吐槽一个这个恶心的owl2是怎么回事?到底谁还在整它。
2、NER模型重要么?什么情况使用NER模型?用在什么地方?
NER重要么?我肯定会回答看场景(屁话,和没说一样);
其实在NLP很多场景都会使用NER相关模型,这种模型通常使用的label都是各种BEMS + TYPE 的标注,大家去网上找找 CRF-LSTM 之类的模型,观察下它们的tag实际上就知道了,NER模型是为了能很清楚指出文本之中所出现的实体,当实体数量非常多,并且实体大多数都是可数的几个明确的类型,那我们实际上推荐使用NER模型的,并且几万条数据的标注,对于实体识别来说就能有很好的效果。有一些情况NER模型就效果很不好,比如:
1、比如类型模糊不清,多类型,类型边界不清晰【人都很难判断何况是人】特别是上下文特征不明显的情况下;训练的效果都很差,这个是属于定义和标注的问题了,在这块没有特别明确情况下用NER模型通常都不会有太好效果,而知识图谱这货就是对定义、对理解特别依赖的东西。
2、实体数量少,花样少(可能才几千台我特闷标注了几万条就为了识别这几千条,在规则能很快穷举的情况下【这特么是废话】,这个主要是成本问题,抛开成本谈知识图谱都是虾扯蛋);
3、还有就是冷启动的情况下(没钱怎么办,没钱有没钱的办法,用网上的语聊数据想要取得很好的效果?也就实体是人名,地名,职业,疾病,这几个比较通用的实体,其他的实体麻,没钱有没钱的办法);
4、系统不完善hold没有规则完善,流程没弄清楚的情况,不建议花时间搞NER;
扯远了,不过NER是有钱人玩的,倒是说得不错。NER用途最主要还是用于图谱和外部的媒介(用在其他业务里也不反对,发现新的实体)。
3、除了NER我们还有哪些能够关联实体的方式?
主流除了NER,找出实体的还有两种方式
1、搜索引擎,这个就不用讲了,elasticsearch的DSL 直接查 label,同义词,desc,就能拿到一堆候选集合,然后我们只要建立一个模型,判断候选集是不是在文本中出现,做一个rerank,基本就能拿到挺好的结果。
2、字符匹配,这个依赖是我们有完善的同义词词关系,然后也可以搞个模型,把实体的特征和文本的特征一拼接,让模型判断是不是 文本中存在这个实体,偷懒的方式就是只要匹配到关键词,就算命中这个实体,最好是要分词了,没有也没关系,加一个同义词就能匹配上了,可能会有歧义,那实际上是看对实体的类型划分,划分明确的话,模型还是可以判断的出来的,这个时候最好的办法还是呼叫人工,呼叫运营小姐姐来帮忙解决问题。
这些都是在你有了一个还马马虎虎过得去的图谱的情况下,没有这些资源的情况怎么办?NER模型能帮助我们发现一些实体,最终这个是需要人工处理
4、知识图谱人工的占比是?
只能说知识图谱要搞起来,首先需要明白什么是知识,知识肯定是我们确认过的东西,随随便便自动化的数据,当然不能录入到图谱当中,不然怎么叫做知识?自动化知识图谱能干啥?我觉得除了当成embeding特征外,自动化的图谱能干的事情太少了。所以知识图谱的人工占比大概是80%这个样子。因为大量数据要入库都需要审核,一个好的后台管理工具和能够迭代的一系列算法份外重要。
5、知识图谱实体来源?
这个很重要,实体的来源首先是靠业务定义,其次很大部分是靠爬虫(偷?爬虫的事情能叫偷么?),通过爬虫去爬去行业的百科网站,其三产品搜索引擎这块能去总结总结。可以去找海量数据,然后NER模型去跑一遍,最后丢给运营处理【运营小姐姐会因为大量数据需要审核而拿刀追着我跑】,所以怎么个优先级,其实大家心里清楚。
6、搞一个知识图谱大概要多少人?
我估摸,至少有一个后台开发,一个好的前端,一个懂知识图谱的产品设计后台和数据架构,运营是必须的,但是人不能太多,太多人一些细节的地方会协调困难,2~5个人。一个爬虫厉害的,然后一个到两个可以搞搞算法,算下来怎么也得10个人,这个是针对稍微中型点的项目来讲,如果没啥时间限制,实体又少,那一两个人就差不多搞定了,也不必搞什么复杂的后台运营和维护界面。