知识图谱的前置介绍
什么是知识图谱
知识图谱本质(Knowledge Graph)上是一种叫做语义网络(semantic network ) 的知识库,即具有有向图结构的一个知识库;图的结点代表实体(entity)或者概念(concept),而图的边代表实体/概念之间的各种语义关系,比如说两个实体之间的相似关系;知识图谱旨在描述真实世界中存在的各种实体或概念及其关系,一般用三元组表示;
知识图谱概念由来
知识图谱(Knowledge Graph )的概念由谷歌 2012 年正式提出,旨在实现更智能的搜索引擎,并且于 2013 年以后开始在学术界和业界普及,并在智能问答、情报分析、反欺诈等应用中发挥重要作用。
知识图谱总体架构
常用的获取知识的方法
网络爬虫
Schema.org 是一个协作、社区活动,由搜索引擎巨头 Google、Microsoft、Yahoo 和 Yandex 发起,旨在创建、维护和推广一套共同的、通用的数据标记模式(schemas),这些模式可以被搜索引擎和其他web爬虫理解。该项目的目的是为了改善互联网中信息的结构化表示,以便搜索引擎能够更好地理解网页内容,并据此提供更丰富和更精确的搜索结果。
Schema.org 提供的这些模式涵盖了各种实体类型,如人、地点、事件、产品和许多其他内容类型,以及这些实体之间的关系。这些模式通常以JSON-LD、Microdata或RDFa的形式嵌入到网页HTML中,提供了一种方式来注释网页元素,使其含义对机器更加清晰。
例如,如果一个网站使用了Schema.org的标记,它可以告诉搜索引擎,“这里列出的是一项活动,它在这个日期和这个地点举行,由这个组织主办”。这样,搜索引擎可以创建更智能的搜索结果,包括富媒体片段(如星级评分、价格范围、事件日期等),并为用户提供更直观的信息。
在搜索引擎优化(SEO)中,使用Schema.org标记被认为是一种最佳实践,因为它可以增强搜索引擎对网站内容的理解,从而可能提高网站在搜索结果中的表现。
wikidata
wikidata一个免费的、开放的、可编辑的知识库,它可以为维基百科和其他维基媒体基金会的项目,以及任何人使用的外部应用程序,提供结构化的数据。Wikidata 旨在成为一个中央存储库,为所有维基百科语言版本和其他维基媒体基金会的知识项目提供公共数据。
在Wikidata上,数据以项(items)和声明(statements)的形式组织。每个项都代表一个概念或实体(如人、地点、概念、事件等),并且有一个独一无二的标识符(称为QID)。声明则用于描述一个项的性质,包括与其他项的关系、属性特征等。
Wikidata是一个动态发展的项目,任何人都可以参与编辑和贡献数据,它通过社区协作,不断增加和改进数据质量。
图数据库
知识图谱模型设计
设计方法论
UMLS语义网络
UMLS(统一医学语言系统,Unified Medical Language System)是美国国家医学图书馆(National Library of Medicine)建立的医学领域的一种广为接受的知识表示(knowledge representation)标准。UMLS旨在通过标准化大量医学和健康术语,以达成映射多种医学词汇体系的目标,使得不同的医学系统能够通信,并且能够更清晰地理解了各种种类的健康和生物医学代码和术语。
UMLS主要由以下三部分组成:
-
Meta-thesaurus(元词表):这部分是 UMLS 的核心,包含来自不同来源的医学术语、疾病描述、药物信息等,并关联着多个不同医学词汇体系中的术语。元词表提供统一标识符(UMLS Concept Unique Identifiers, CUIs)来整合各种术语和概念,并显示它们之间的关系。
-
Semantic Network(语义网络):它为术语和概念建立了一个大范围的分类框架,语义网络包含了广泛的、经过分层的、医学概念类别和类别间关系的定义。每个概念都被分配到一个或多个语义类型,像药物、疾病或医疗设备等,而语义类型之间也定义了多种可能的语义关系,比如"治疗"或"致病"。
-
SPECIALIST Lexicon and Lexical Tools(专家词汇及查词工具):这是一个包含很多与医学相关期名词与单词的大型英语词汇库。结合一组用来解析和构造自然语言的软件工具。专家词库针对生物医疗领域进行了优化,支持文字处理和自然语言理解任务比如段落、句法分析和词形变换。
-
UMLS 实际上可以视作一种健康医疗领域的知识图谱,因为它组织了大量的医疗术语、概念及它们之间的关联。
知识图谱模型设计之归纳法
开源框架NLP 框架
CoreNLP,CRF
知识图谱可视化
Apache ECharts
D3 by Observable | The JavaScript library for bespoke data visualization
推荐系统介绍
知识图谱和推荐系统相结合
知识图谱与推荐系统的融合,可以提升推荐内容的准确性和效果。
三种融合方式
-
基于实体属性的推荐:利用知识图谱中实体的属性信息来推荐内容,例如,根据用户的兴趣属性推荐相关的内容。
-
基于实体关系的推荐:通过分析知识图谱中实体间的关系,如朋友关系、喜好关系等,来推荐用户可能感兴趣的内容。
-
基于知识图谱特征向量的推荐:使用知识图谱中实体的特征向量来生成推荐,这些向量可以捕捉实体的深层次特征,从而提高推荐的个性化程度。
三种训练模式
- 一次训练:在推荐系统中直接使用知识图谱数据进行训练。
- 联合训练:同时训练推荐系统和知识图谱模型,使它们共享知识。
- 交替训练:先训练推荐系统,然后使用其输出来更新知识图谱,再反过来用更新后的知识图谱来训练推荐系统。
RippleNet工作原理和实现机制
RippleNet是一个结合了知识图谱和推荐系统的框架,旨在通过利用知识图谱中的结构化事实来增强推荐系统的效果。在这个框架中,知识图谱的每个实体(如电影、演员、导演)和关系(如"演员参演电影")被用来丰富用户和物品的表示。
下面是RippleNet的工作原理和实现机制的简要说明:
输入:
- 用户u:用户的唯一标识。
- 物品v(例如,推荐系统中的电影或商品):物品的唯一标识。
- 用户点击历史Vu:用户过去的行为记录,如用户点击或购买的物品列表。
知识图谱:
- 知识图谱包含大量的事实,这些事实以三元组(头实体h,关系r,尾实体t)的形式表示
种子:
- 用户历史中的每个物品都被视为传播的种子点。这些种子点在知识图谱中被激活,从而影响与用户历史相关的其他实体。
传播(Propagation):
- RippleNet通过多个跳数(Hop)对知识图谱进行传播,每一跳都会从当前实体扩散到与之关联的实体,这些实体集合称为"波纹集"(Ripple Set)。
- 每个跳数可以看作是一层网络,每一层都会收集与上一层相关的实体和关系。
波纹集的影响:
- 用户的嵌入向量(User Embedding)受到波纹集影响,这些集合包含了用户兴趣的上下文信息。
- 例如,如果用户点击了某部电影,那么与这部电影相关的导演、演员等实体就会影响用户的表示。
加权平均与Softmax:
- 每个波纹集会对应一个潜在的用户兴趣表示,这些表示通过加权平均得到用户的最终嵌入。
- Softmax函数用于将加权后的用户嵌入向量转换为与特定物品相关联的预测概率。
预测:
- 用户嵌入和物品嵌入(Item Embedding)被送入神经网络中进行计算,输出用户点击给定物品的预测概率。
- 最终,预测概率被用于生成推荐列表,优先推荐那些具有较高点击概率的物品。
简而言之,RippleNet利用知识图谱中的关系网络来富化用户和物品的表示,使得推荐结果能够更加准确地反映用户的潜在兴趣。通过跳数(Hop)不断传播,它能够考虑到用户历史行为的多个层面,从而实现更深层次的个性化推荐。
相关资料
知识图谱+推荐系统 RippleNet:论文解读+代码 - 知乎
OpenKG.CN – 开放的中文知识图谱