该方法的优点在于可以满足产品对于知识专业性的及权威性的要求,例如医疗领域的知识图谱对于知识的专业性就有着严格的要求,必须由具备相关能力的专家来进行编辑。同时,手工编辑也可以将知识图谱设计的概念和范围限定在可控的范围内。
例如“古龙”这个实体如果是在文学知识图谱上,代表的是一个作家,但如果放在美妆知识图谱中,代表的则是一款香水,如果不对知识图谱的应用范围进行限定则很有可能出现歧义。
专家参与编辑让行业知识图谱具有相对较高的准确性,但同时也带来了很多的弊端,首先是高昂的人力成本,通常编辑一个知识图谱需要成立一个专家团队,团队中的成员需要同时具备领域知识以及计算机知识,人力市场上能满足条件的人非常稀少,人工成本居高不下。
根据相关资料,Google编辑一条RDF三元组的人工成本平均需要0.8美金。如何能做到项目兼顾成本与效果是每个做知识图谱的产品经理要思考的问题。
另外一个不足之处是行业知识图谱可能有多个数据编辑者或数据来源,导致数据的格式不统一,这种数据术语称之为多源异构数据,如何制订相关的规则,将不同格式的数据转化为统一的格式也是产品经理在定义数据处理规则时需要考虑的问题。
通用知识图谱多采用自底向上的方法获取知识,这种方法是基于行业现有的标准数据库进行转换,或从现有的高质量数据源中提取知识本体以及本体之间的关系,主要应用于搜索、推荐、问答等业务场景。
因其强调知识的广度,数据主要来自于互联网上的公开信息,所以很难生成完整的全局性的本体层进行统一的管理。但因为知识获取的自动化程度较高,所以对于一些新的概念和新的关系可以很好的涵盖。
从知识的应用层面来看,通用知识图谱的知识相对稀疏,所以知识推理链条较短,通常来讲推理操作都是基于上下文的一到两步的推理,如果超出这个很容易出现语义漂移(semantic drift)现象,让推理的结果答非所问,人工智能秒变人工智障。而行业知识图谱的推理链条可以较长,更适合需要进行复杂推理和计算的场景。
2.2 结构化与半结构化知识获取从不同的来源、不同结构的数据中进行知识提取存入到知识图谱,这一过程我们称之为知识获取。从知识的来源大致可以分为三类,分别是结构化数据转换、半结构化数据提取和非结构化文本数据提取。
(1)结构化数据转换
语义网的目标是建议以RDF为标准数据模型的数据网,但当前大多数Web数据源是由关系型数据库(RDB)驱动的,因此如何将RDB数据集向RDF数据集进行映射一直是语义网领域的研究热点。
结构化数据转换就是指将关系型数据库数据,转换为RDF结构知识图谱的知识获取方式。W3C在2012年专门为此制定了一个标准R2RML(Relational database to RDF Mapping Language)。这是一种可以用于表示从关系型数据库到RDF数据集的自定义映射的语言,通过这种映射关系,我们可以将关系型数据库中的数据转换为自定义的知识图谱结构。
虽然这种转换并没有直接生成真正的RDF数据集,仅仅只是在数据库和知识图谱的本体中间做了一重映射关系,但是通过表示映射关系的mapping文件,系统可以将对RDF三元组的查询等操作翻译成对应的SQL语句,快速将企业过去积累的数据转化为知识图谱,这种转化后的数据本身以及数据之间的关系都符合业务的需要,可以让产品快速落地进行迭代。
(2)半结构化数据
半结构化的数据是指没有按照RDF格式,但是却有着一定规律的网络数据,通过网络爬虫爬取完整的网页信息之后,再通过包装器(wrapper)将其转换成知识图谱数据。
半结构化的数据来源主要有两个,一是维基百科、百度百科这类百科网站的信息表格(infobox),另外则是来源于各类网页中的文本、列表数据,如图所示。
在百度百科中搜索乔布斯的相关词条会发现这样一个表格,表格中详细记录了乔布斯与其他实体之间的关系,与搜索的词条之间形成了一个完整的 RDF三元组,例如乔布斯的国籍是美国。通过对百科网站的infobox进行信息抽取,可以快速获得高质量的知识实体。但是,通过infobox只能抽取到实例层数据,对于类层面的关系还需要通过别的方式来进行构建,例如自顶向下由领域专家构建。
对于其他的网页信息而言,抽取数据时需要过滤掉网页中含有的广告、外链等冗余信息,只保留有实际需要的知识信息,这需要根据网页的HTML代码标签构建专用的网页包装器。
如果给每一个网页都开发一个专门的包装器,不仅需要投入大量的开发人力,而且通用性会比较差,为了解决这个问题,可以先对需要爬取的网页进行聚类,针对聚类来设计包装器会大幅提高知识获取的速度。
通过爬虫和包装器抽取互联网的公开信息会面临一个问题,就是随着网站的更新迭代,网页的信息结构可能会发生改变,既是一个微小的变动也可能会导致原本构建的包装器失效无法再继续工作。对于这个问题最简单的办法是重新创建一个新的包装器以适应网站的升级,但是如果爬取的网站数量非常多,这种做法不但效率很低而且会给开发人员带来很重的工作负担。
为了能维持包装器的正常工作,我们可以对需要采集的数据进行数据标注,用机器学习的方法对数据的特征进行学习并构建出模型,进而在整个网页站点下使用模型自动生成新的包装器进行数据的抽取。
2.3 非结构化知识获取与整个互联网的数据相比,百科类网站的知识库只是沧海一粟,除了网页中半结构化的数据之外,还存在着海量的无结构网页文本数据。如何将这些文本数据中的知识抽取出来是很多计算机科学家的研究方向。
例如华盛顿大学Oren Etzioni教授主导的开放信息抽取(open information extraction,OpenIE)项目,该项目从1亿个网页中抽取了5亿条数据,如图所示。还有卡耐基梅隆大学Tom Mitchell教授主导的永不停止的语言学习(never ending language learning,NELL)项目,这个项目从公开网页中抽取了5千万条数据。
(1)实体抽取
从无结构的文本中抽取知识,首先需要识别文本中的实体,这个过程称之为做命名实体识别(Named Entity Recognition,NER),命名实体识别属于自然语言处理中的一项基础任务,同时也是关系抽取、事件抽取、机器翻译、问答系统等多个NLP任务的基础工作,其目标是从文本中抽取出具有特定意义的实体,一般包括实体类、实践类、数字类三个大的类别,以及人名、地名、组织机构、时间、日期、货币、百分比。
除此之外,也可以根据项目的需要指定特定领域内的实体,例如书名、疾病名、事件名等,只要是业务目标需要的实体,都可以做为实体抽取对象。