查看原文
其他

企业知识图谱技术与应用

核桃壳 爱番番技术 2023-02-22

全文约8400字,预计阅读时间19分钟


导读

日常生活中,我们经常遇到以下两种信息展现方式:


二者展示的信息量是差不多的,但右边这种看起来更加直观。而且,随着文本篇幅的增长,这种优势会体现得更加明显。和人一样,机器也更加擅长利用右边所示的数据。但矛盾之处在于,互联网等数据平台存储的大多是左边所示的数据。要把左边转换成右边,机器需要经历一个“阅读理解”的过程。这就是知识图谱的用途。

知识图谱的概念于 2012 年由 Google 提出,当时主要被用来提高其搜索引擎质量,改善用户搜索体验。随着大数据时代的到来和人工智能技术的进步,知识图谱的应用边界被逐渐拓宽,越来越多的企业开始将知识图谱技术融入其已经成型的数据分析业务,有的甚至使用知识图谱作为其数据的基础组织与存储形式,成为其数据中台的核心基建。

知识图谱(Knowledge Graph)技术能以结构化的形式描述客观世界中的概念实体及其关系,将互联网的信息表达成更接近人类认知世界的形式,提供了一种更好地组织,管理和理解互联网海量信息的能力。

爱番番,一站式智能营销和销售加速器,依托百度AI技术,从营销到销售全链路帮助中小企业在主动拓客、推广获客、沟通留资场景下实现线索增长。企业信息数据是爱番番所有基础数据中的重中之重,对企业信息数据进行分析、处理、并加工,最终以企业知识图谱形式支持上层应用。


1. 知识图谱的起源与应用

虽然知识图谱的概念 2012 年才被提出,但其背后的思想本质上是上个世纪的语义网络(Semantic Network)知识表达形式,即一个由节点(Point)和边(Edge)组成的有向图结构知识库。其中,图的节点代表现实世界中存在的“实体”,图的边则代表实体之间的“关系”。

与传统的数据存储和计算方式相比,知识图谱技术更加侧重于对非结构化异构数据的收集和处理,更擅长对于关系的表达和计算,可以处理复杂多样的关联分析、挖掘到更多隐藏知识。与此同时,知识图谱的数据结构与人工智能领域许多技术任务所基于的数据一脉相承(异质结构多关联的大数据),可以为后续的机器学习和推理任务提供强有力的支持,帮助企业在智能搜索、智能问答、智能推荐、以及大数据分析这几个方面提升性能。

  • 智能搜索:传统的搜索引擎依靠网页之间的链接和权重进行搜索排序,而知识图谱提供了实体的分类、属性和关系的描述,从而可以直接对事物进行更精准的语义搜索。

  • 智能问答:基于知识图谱的智能问答是目前产业界问答系统的主要技术路线之一,即对于给定的自然语言问题,利用知识图谱技术进行语义的解析、查询、推理以得出答案。该技术常见于智能手机或音箱载体上的智能对话机器人,如 Siri、小度小度、小爱同学、天猫精灵,以及微软的小冰、小娜等,这些智能问答 agent 的背后都有相关企业各自积累的知识图谱作为问答系统的支撑。

  • 智能推荐:基于知识图谱的推荐能更好将用户与被推荐项目之间的各种相互联系考虑进来,可以增强数据的语义信息、挖掘隐藏的关联信息,进一步提高推荐的准确度。

  • 大数据分析:基于知识图谱中实体的关联信息和推理,我们能挖掘出传统数据分析较难得到的隐含信息,该优势在存在大量异构信息的数据集中更为显著。基于知识图谱的大数据关联分析在金融风控、反欺诈乃至安防等应用场景中都有很好的效果。

近年来,知识图谱的诸多优势和应用前景使得面向特定领域的知识图谱构建在行业应用中得到推广,产生了如企业知识图谱、医疗知识图谱、金融知识图谱、电商图谱等不同的垂直行业的知识图谱形态。那么如何构建知识图谱呢?

2. 知识图谱构建流程

一般来说,构建一个知识图谱通常会经历知识获取、知识表示与建模、知识融合、知识存储,以及构建完成后的知识查询和推理几大要素:

 图 1 知识图谱构建全流程

  • 知识获取:从不同来源、不同结构的数据中抽取知识(实体、关系以及属性等信息),这是知识图谱构建的核心与前提条件。

  • 知识表示与建模:为知识制定统一的数据架构(data schema),将获取到的知识依照统一的数据结构存储并形成知识库,这是知识图谱正式构建的第一步,影响着后续的知识融合、存储以及查询推理可以使用的方法与效果。

  • 知识融合:将不同源的知识以统一的框架规范进行验证、消歧、加工等异构数据整合工作,这是知识图谱更新与合并的必经之路,为不同知识图谱间的交互融合提供可能性。

  • 知识存储:依据数据量的大小、数据特征以及应用需求的不同,选取合适的存储模式,将获取到的数据存储起来,形成知识图谱。

  • 知识查询与推理:基于构建完成的知识图谱进行查询,或者进一步推理挖掘出隐藏知识来丰富、扩展知识图谱,这是知识图谱构建的最终目的,与知识获取共同影响着知识图谱的应用场景和范围。

3. 企业知识图谱构建的核心技术

知识获取是构建知识图谱的核心与前提条件,也是自动构建知识图谱最关键的影响要素和重点研究领域。除了纯人工的知识输入之外,目前的知识获取主要是指针对结构化数据(如关系型数据库)、半结构化数据(如词典、百科类标记清晰的网页数据)、或者非结构化数据(如文章语料、声音、图像数据)这三类不同结构的知识进行的自动或半自动抽取。

图 2 知识获取

对于结构和半结构化的数据,通常只需要简单的预处理和映射即可以作为后续数据分析系统的输入,相关技术已经比较成熟。而非结构化数据通常需要借助自然语言处理、信息抽取、乃至深度学习的技术来帮助提取有效信息,这也是目前知识抽取技术的主要难点和研究方向,包含实体抽取、关系抽取和事件抽取等三个重要的子技术任务。知识图谱构建完成后,挖掘图节点之间的隐含信息也是一个方向,我们尝试了node2vec技术,将节点向量化以提取特征,发现相似节点,从而应用到推荐等其他服务中。

3.1 实体抽取

又称命名实体识别(Named Entities Recognition,NER),主要任务是识别命名实体的文本范围,并将其分类为预定义的类别,学术上所涉及一般包含三大类,实体类、时间类、数字类和7个小类,比如人、地名、时间、组织、日期、货币、百分比,是问答系统、翻译系统、知识图谱的基础。

早期的NER的方法主要由语言学家手工构造规则模板,选用特定特征,包括统计信息、标点符号、指示词、方向词、中心词等,以模式与字符串相匹配为主要手段,但是此方法需要大量人力构建语言模型、系统周期较长、知识更新较慢、移植性较差。

随着机器学习应用,提出了基于统计学的方法,主要包括隐马尔科夫模型(HMM)、最大熵马尔科夫模型(MEMM)、支持向量机(SVM)、条件随机场(CRF),基于统计方法的对特征选择要求较高,对语料库的依赖较大。

深度学习的表征学习相比于机器学习特征工程,在特征学习方面具有较大优势,采用词向量(Embedding)来表征每个字,输入到CNN-CRF、 LSTM-CRF 、BiLSTM-CRF模型,自动学习特征,对实体进行分类,对实体识别提高了一个新的高度。

最新进展是利用预训练模型对下游具体任务进行微调(fine-tuning),使用小规模的训练数据即可达到较好的效果,其中谷歌提出的BERT(Bidirectional Encoder Representations from Transformers)是目前使用较多的预训练模型

图 3 实体识别发展

3.1.1 主要方法

  • 基于规则和词典的方法

基于规则的方法多采用语言学专家手工构造规则模板,选用特征包括统计信息、标点符号、关键字、指示词和方向词、位置词(如尾字)、中心词等方法,以模式和字符串相匹配为主要手段,这类系统大多依赖于知识库和词典的建立。一般处理流程如下:

  1. 分词与词性标注:先对原始文本进行分词及词性标注

  2. 自制特征词典:对分词的实体,存入词典

  3. 标注序列:对分词后的词语,进行标注,比如ns(地名),其他标注O,“我 来到 北京 天安门” --> “OOSE”

  4. 正则化匹配实体:规定正则模板,比如若干地名+若干其他成分+若干特征词

  • 基于统计的方法

基于统计机器学习的方法把NER、分词问题当做序列标注问题,与分类问题相比,预测标签不仅与当前的预测序列标签有关,还与之前的预测标签有关,预测标签之间具有强的相互依赖关系。主要的概率图模型是有向图的隐马尔可夫模型(Hidden Markov Mode,HMM)、最大熵(Maxmium Entropy,ME)、支持向量机(Support Vector Machine,SVM)、无向图条件随机场(Conditional Random Fields,CRF)等。


图 4 传统机器学习之间的关系

条件随机场(CRF)是NER的主流模型,它的目标函数不仅考虑输入的状态特征函数,而且还包含了标签转移特征函数。在训练时可以使用SGD学习模型参数。在已知模型时,给输入序列求预测输出序列即求使目标函数最大化的最优序列,是一个动态规划问题,可以使用维特比算法进行解码。

  • 基于深度学习的方法

基于深度学习的方法,主要是深度学习对复杂的非线性问题具有较好的拟合效果,相比较于传统机器学习(HMM MEMM和CRF等)能够学习到复杂的特征,而表征学习能力更好的替代复杂的特征工程,在扩展方面深度学习还可以搭建端对端的模型,构建复杂的NER系统。

深度学习中文本处理的常用的模型为LSTM(Long Short-Term Memory),是一种时间循环神经网络,为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的。但是光用LSTM来进行标注有一个问题,比如预测的结果中一个人名(PER)后面紧接着一个组织名(ORG),这在正常的语言表达中是比较少见的,也就是概率比较低的。因此,引入CRF层能够让我们的模型学习到一些类似于“B-PER后面多数紧接着I-PER”,“B-PER后面很少接着I-ORG”这样的约束条件。因此LSTM+CRF成为了NER问题中的主流模型。

图 5 Bi-LSTM + CRF模型

其中B_XXX表示开始位置,I_XXX表示剩余部分,O表示其他(非实体)。

近几年, Google 提出了一种预训练的语言模型BERT(Bidirectional Encoder Representations from Transformers),预训练的(pre-train)的语言模型通过无监督的学习掌握了很多自然语言的一些语法或者语义知识,之后在做下游的NLP任务时就会显得比较容易。它打破很多NLP 领域的任务记录,在NLP的领域具有重要意义。

BERT 在做下游的有监督 NLP 任务时就像一个做了充足预习的学生去上课,效果肯定事半功倍。只需小规模的训练数据,就可以对BERT进行微调(fine-tuning),从而完成NER任务。

图 6 BERT

3.1.2 实体抽取在企业上下游中的实践

企业上下游,又叫做产业链,实质就是不同产业的企业之间的关联,而这种产业关联的实质则是各产业中的企业之间的供给与需求的关系。上游企业主要是对原材料进行深加工和改性处理,并将原材料转化为生产和生活中的实际产品。因此爱番番客户作为上游企业的话,那么通过挖掘下游企业,利用深度学习模型学习出下游企业的共通特征,从而进行相似企业的推荐,提供高质量的线索。

企业实体识别采用 BERT 模型,原始的 BERT 模型是在通用的语料上进行预训练的,针对大部分的机构、地址、人名都有较好的识别效果,但在爱番番企业领域场景效果比较一般,因此使用特定领域的语料进行;

训练语料生成:借助爱企查1.2亿的企业信用库,我们可以得到标准的工商企业名称、企业简介文本、企业相关新闻;如下是一篇企业新闻的片段:

“ 真空泵的品种类别很多,德耐尔节能科技(上海)股份有限公司技术工程师指出,目前主要包括螺杆泵、水环保、旋片泵、罗茨泵和涡旋泵等,根据真空泵的类别和工作条件,从多方面分析入手解决高温对设备正常工作的影响。”

由于数据量较大,我们使用 hadoop stream 进行分布式处理,将 10多 个小时的运行时间减少至 1小时,加速完成标注数据的生成,最终训练集:200w 条,验证集:50w 条,测试集:50w 条。

模型训练: 模型在配备Tesla K40m GPU的服务器上进过3轮fine-tuning收敛;在测试集上效果:准确率85+%,召回率85+%。

应用:数据主要来源于企业官网数据,通过html解析、数据清洗、关键数据发现。定位到相关文本后,输入到模型中提取出企业实体,接着通过触发词等规则进行关系抽取,确定两者之间的供应关系;

最终收益:目前知识库中已经累计上下游关系对1120w,覆盖405w+个企业;

3.1.3 实体抽取在企业产品词中的实践

产品是企业非常重要的属性,爱番番企业查询中支持产品维度的查询方式:客户可以通过具体的产品名称(e.g.空压机)来搜索,得到该产品相关的生产企业,为客户提供了查找线索的另一个有效方式。

训练语料生成:与企业实体识别相似,都是特定领域的任务,没有现成的训练数据,因此需要准备训练数据;遇到的难点在于:没有实体字典,也就是产品字典,例如罗茨泵和涡旋泵;

因此我们通过部分企业在百度搜索投放的广告作为语料,训练无监督的新词发现模型,其中机械行业的共产出1.6w条词,通过相似文本聚类进行初筛,在利用人工进行精筛,最终得到7000+的机械行业的产品词字典;

拥有字典后,利用广告语料进行自动化标注,成功生成数据500w+

模型训练:模型在配备Tesla K40m GPU的服务器上进过4轮fine-tuning收敛;在测试集上效果:准确率85+%,召回率85+%。

应用:利用训练好的产品实体识别模型,我们从不同来源的数据中抽取出企业相关的产品,并通过聚合,筛选出高频产品词,让客户迅速了解企业的相关产品、产品类型等信息;

最终收益:目前产品词数据累计达到4000w+条,覆盖了175w+个企业;

3.2 关系抽取

指从文本中识别抽取实体之间的关系,抽取结果常使用 SPO 结构(即主谓宾结构)的三元组来表示。与实体抽取类似,早期主要使用基于模板的方法(触发词模板、依存句法分析模板等),近年来开始发展出半自动的基于监督学习的方法(CNN、RNN 等)和纯自动的基于弱监督学习的方法(远程监督、Boostrapping 等)。目前在关系抽取任务上取得最佳表现的模型大多融入了注意力机制,如 Attention CNNs 模型和 Attention Bi-LSTM 模型等。

3.3 事件抽取

指识别文本中目标事件的信息,并以结构化的形式呈现。例如从投融资新闻中定位融资公司、融资金额、投资企业等信息;或是从恐怖袭击事件的新闻报道中识别提取出袭击发生的时间、地点和受害人信息等。

事件抽取同时涉及到实体和关系抽取的相关技术。从宏观的事件抽取思路上来看,事件抽取的方法可分为流水线抽取和联合抽取两大类方法。流水线抽取的思路是将事件抽取任务进一步分解为事件识别、元素抽取、属性分类等一条流水线上的多个子任务,分别使用相应的机器学习分类器实现,这是目前事件抽取的主流方法。联合抽取则主要是采用基于概率图的模型进行联合建模,或基于深度学习的方法(如基于注意力机制的序列标注模型),将事件的多个元素作为一个整体共同识别并提取。

3.4 节点相似度(Node2vec)

Node2vec 是用来产生网络中节点向量的模型,输入是网络结构(可以无权重),输出是每个节点的向量。在爱番番的企业知识图谱正是一个大型的网络图,

我们是否可以构建一个以企业为顶点,以企业间竞争关系为边的图,然后通过对图进行 embedding 表示,获取企业之间的关系特征。

3.4.1 nodo2vec 算法原理

node2vec 是基于 DeepWalk 的基础上进行改进的。主要改进的地方在于它在随机游走的过程中加入了一个权重,使得游走可以采用深度优先和广度优先的策略进行游走。通过调整随机游走权重的方法使graph embedding的结果在网络的同质性(homophily)结构性(structural equivalence)中进行权衡权衡。

网络的“同质性”指的是距离相近节点的 embedding 应该尽量近似,如图7,节点u与其相连的节点s1、s2、s3、s4的 embedding 表达应该是接近的,这就是“同质性“的体现。

“结构性”指的是结构上相似的节点的 embedding 应该尽量接近,图7中节点u和节点s6都是各自局域网络的中心节点,结构上相似,其 embedding 的表达也应该近似,这是“结构性”的体现。

图 7 宽度优先搜索(BFS)和深度优先搜索(DFS)示意图

BFS应该反映了结构性,DFS反而反应了同质性

在 node2vec 算法中,是怎样控制BFS和DFS的倾向性的呢?主要是通过节点间的跳转概率。

图8显示了node2vec算法从节点t跳转到节点v后,下一步从节点v跳转到周围各点的跳转概率。

图 8 node2vec的跳转概率

形式化来讲,从节点v跳转到下一个节点x的概率:

其中是边vx的权重,的定义如下:

其中,指的是节点t到节点x的距离,参数p和q共同控制着随机游走的倾向性。

参数p被称为返回参数(return parameter),p越小,随机游走回节点t的可能性越大,node2vec就更注重表达网络的同质性,参数q被称为进出参数(in-out parameter),q越小,则随机游走到远方节点的可能性越大,node2vec更注重表达网络的结构性,反之,当前节点更可能在附近节点游走。

同质性相同的物品很可能是同品类、同属性、或者经常被一同购买的物品,而结构性相同的物品则是各品类的爆款、各品类的最佳凑单商品等拥有类似趋势或者结构性属性的物品

毫无疑问,二者在推荐系统中都是非常重要的特征表达。由于node2vec的这种灵活性,以及发掘不同特征的能力,甚至可以把不同node2vec生成的embedding融合共同输入后续深度学习网络,以保留物品的不同特征信息。

图 9 深度优先遍历(DFS)结果示意图

图9是倾向于 DFS(p=1,q=0.5)的,可以看到,这种方式得到的 embedding 似乎有很好的聚类性质,注意这里要看结点之间的连接而不是在2D平面上的距离,每个簇的边界结点跟内部的联系要比跟外部的联系更多一些。作者认为这反映了网络的同质性;

图 10 广度优先遍历(BFS)结果示意图

图10是倾向于 BFS(p=1,q=2.0),一个很明显的不同就是,这种方式得到的 embedding 似乎是按功能划分的,处于 graph 边缘的结点(黄色)有类似的 embedding,连接 graph 边缘和中心的结点(蓝色,在上半部分中作为簇边界的结点)有类似的 embedding,这些结点并不都是互相连接的,但是 node2vec 得到的 embedding 仍然能学习出这样的信息。作者认为这反映了网络的结构性。

同质性并不是一个微观上的性质,作者说的同质性是能模型能找出每个簇的边界,使得簇内结点彼此联系的紧密程度要超过跟簇外结点的联系,这就要求模型有更大的感受野,DFS 这种能跳出局部的方式就很适合这个要求。

结构性并不是宏观上有相似的连接方式,而是指能够充分学习微观上的局部结构。比方说结点处于一个三角形连接的内部(很多论文会称之为motif),BFS 会加强对这个三角形的感知,而 DFS 则容易通过连向外界的边跳出去,所以 BFS 对局部结构学习会比 DFS 好,这种现象只能在合适的数据上,在合适的超参设定下被观察到。

图 11 随机游走中间过程示意图

图11中展示的是一次随机游走的中间过程,当前处于结点 v 上,上一步是从结点 t 到结点 v。

  • x1 为结点 v 和结点 t 的共同邻居,设置边 v->x1 的权重为 1;

  • t 为前序结点,设置边 v-> t 的权重为返回参数 p:

         o   p > 1 则下一步倾向于访问共同邻居;

         o   p < 1 则下一步倾向于回到前序结点。

  • x2 和 x3 是结点 v 的其他一阶邻居结点,设置边的权重为进出参数 q:

         o   q > 1 则下一步倾向于访问共同邻居;

         o   q < 1 则下一步倾向于访问其他一阶邻居结点。

通过 p 和 q 这两个参数就可以调整游走的策略从而实现 DFS 或者 BFS。在 node2vec 中:

  • DFS 是 p=1,q=0.5,

        o   此时:P(访问其他一阶邻居结点) > P(返回前序结点)=P(访问共同邻居)

  • BFS 是 p=1,q=2.0,

        o   此时:P(访问其他一阶邻居结点) < P(返回前序结点)=P(访问共同邻居)

如果 P(访问其他一阶邻居结点) > P(返回前序结点)=P(访问共同邻居),那么随机游走就有可能一路推进不同的结点,构成一条重复结点较少的路径,确实符合 DFS 的理念。而如果 P(访问其他一阶邻居结点) < P(返回前序结点)=P(访问共同邻居),那么随机游走就有可能在一个较小的连接密集的局部中来会跳,构成一条重复结点较多的路径,这符合 BFS 的理念。

在得到随机游走的路径后,node2vec 就会把结点看作词,像 word2vec 学习词向量那样学习每个结点的 embedding 了。一般会采用 Skip-Gram 模式,即使用中心词预测上下文,但无论是用 CBOW 还是 Skip-Gram,本质上都是假设一个词应该跟它所在句子的上下文词关系最密切(最相似),这也是我们理解 DFS 和 BFS 不同的关键。

  • 如果随机游走侧重于 DFS,那么中心结点的上下文就可能同时包含不同阶的邻居;

  • 如果随机游走侧重于 BFS,那么中心结点的上下文就可能只包含有共同邻居的1阶邻居。

因此,侧重于 DFS 的话,即使两个结点不彼此相连,只要它们有共同的1阶2阶邻居,也会得到相似的上下文,从而学到的 embedding 会比较像。这符合我们前面对同质性的分析,具备这种特质的 DFS 可以更好地找到簇的边界。

而侧重于 BFS 的话,处于同一个密集连接的局部的结点会更加相似,因为它们的上下文会有更多的重叠。这符合我们前面对结构性的分析,具备这种性质的 BFS 可以更好地感知结点所处的局部结构。

3.4.2 node2vec 实践

企业知识图谱中每个节点就是一个企业,理论上具有相同相邻企业的企业,他们的经营范围大概率是相似。利用node2vec自动学习企业的相邻关系,并表示为向量,通过向量的余弦相似度等衡量方式发现相似企业。

图的构建遵循以下原则:

  • 图的顶点是企业,为了减少运算量,种子企业为客户的成单企业,依次为基础不断扩展建图;

  • 图的边代表企业间的竞争关系,边上权值越大,竞争关系越强,目前边上数值为两端顶点对应企业在百度搜索点击日志中的共线次数。

  • 最终每个企业对应一个256维向量

图 12 node2vec 可视化

上图是node2vec运行后的一个结果可视化,可以看到相似公司通过边聚集在一起,并且边的粗细表示企业之间的相似程度。

基于图表示的推荐策略先验评估,在原推荐策略上使用node2vec后,客户成单率相对提升120%,效果显著。

4. 结篇

通过上面的几节内容,我们介绍了知识图谱的起源与应用,以及其中的一些核心技术。爱番番的底层任务中现阶段主要是以实体识别技术为主,node2vec、关系抽取、事件抽取为辅,未来将对其他技术领域进行更深入的探索与实践,做到“技术为产品服务”,为爱番番提供更先进的支持,助力中小企业实现线索和转化双增长。

5. 作者介绍 

核桃壳,爱番番NLP策略工程师,擅长文本数据分析、文本分类、实体识别等技术领域。

6. 往期精选

爱番番与Servicemesh不得不说的故事

爱番番携手基础架构部全面解锁Kubernetes

爱番番反哺SkyWalking构建开源APM网格

领域驱动设计(DDD)在百度爱番番的实践


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存