如何用知识图谱服务创建电影知识图谱
华为云知识图谱服务(Knowledge Graph,简称KG)为自然语言处理服务(Natural Language Processing Service ,简称NLP)的子服务,是面向各类企业的一站式知识计算平台,提供本体管理、图谱管理、图谱构建等功能,帮助用户从0到1快速构建知识图谱,管理知识图谱流水线任务。
创建图谱流程
构建知识图谱的各个环节,包括配置基础数据、制作本体、信息抽取、知识映射、知识融合都可以在KG上配置完成,极大提升构建知识图谱的速度。
作为技术开发大神(自我陶醉且不知天高地厚),本次给各位讲解一下,如何用知识图谱服务创建电影知识图谱
此样例通过在控制台创建本体,完成信息抽取、信息映射、信息融合的配置,创建一个与电影有关的知识图谱。创建完成后,您可以搜索预览相关实体的知识图谱,也可以在创建的图谱基础上全量更新和增量更新图谱。
步骤1:准备数据
在创建图谱之前,您需要将用于创建图谱的基础数据上传至OBS桶及文件夹。
登录OBS服务,创建桶和文件夹,用于存放样例数据集,创建名称为“kg-test”的OBS桶,名称为“demo-data”的文件夹。
创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。为保证数据能正常访问,请务必保证创建的OBS桶与KG服务在同一区域。
单击数据集下载链接,将数据集下载至本地,并命名为“kg_demo.json”。
参考上传文件,使用单个文件上传方式将“kg_demo.json”文件上传至OBS路径“kg-test/demo-data”下。
步骤2:创建本体
在创建图谱之前,您还需要提前创建本体,根据样例数据,此处本体创建2个概念和2种关系,2个概念为“电影”和“人物”。
图1 创建本体
1 登录KG服务管理控制台,在左侧菜单栏中单击“本体管理”,进入本体管理页面。
2 单击左上角“创建本体”,进入“创建本体”页面。
3 在“创建本体”页面上方的“本体名称”文本框中填写本体名称“Film_Person”,在“本体描述”文本框中填写本体描述“包括电影和任务两个概念”。
说明: 在创建本体时,所有概念都默认有一个属性为“name”。
4 编辑概念“电影”:
默认进入“概念编辑”模式。
拖拽编辑框左上角的概念节点点击放大悬放在编辑框的目标位置。
单击编辑框内的概念节点点击放大,在右侧名称文本框中输入“电影”。
在默认属性“name”下方,两次单击“新增属性”,在属性文本框中依次输入“票房”和“上映时间”。
5 新增概念“人物”:
拖拽编辑框左上角的概念节点点击放大悬放在编辑框的目标位置。
单击编辑框内的概念节点点击放大,在右侧名称文本框中输入“人物”。
在默认属性“name”下方,三次单击“新增属性”,并在属性文本框中依次输入“国籍”、“职业”和“出生日期”。
6 编辑“电影”与“人物”之间的关系:
单击“关系编辑模式”,进入关系编辑模式。
单击概念节点“电影”,拖拽出关系虚线至目标概念节点“人物”,单击目标概念节点“人物”。
单击新建的关系曲线,在右侧名称文本框中输入“主演”。
单击概念节点“电影”,拖拽出关系虚线至目标概念节点“人物”,单击目标概念节点“人物”。
单击新建的关系曲线,在右侧名称文本框中输入“导演”。
7 单击“保存”,完成本体创建。
步骤:3:配置基础数据
登录KG服务管理控制台,单击右上角“创建新图谱”,进入创建图谱页面。
在基础数据配置页面,填写相关信息,如图2所示。
图2 基础数据配置
1 填写图谱名称:在“图谱名称”文本框中填写待创建图谱的名称“film”。
2 选择数据源:单击“选择数据源”,选择基础数据存储的OBS桶“kg-test”和文件夹“demo-data”,勾选文件“kg_demo.json”,单击“确定”,完成数据源的选择。
图3 选择数据源
填写实体类型字段:在“实体类型字段”文本框中填写基础数据中描述实体类型的字段“entity_type”。
3单击“下一步”,进入“制作本体”页面。
步骤4:选择本体
1 在“选择本体”页面,单击“本体列表选择”,勾选在步骤2:创建本体中创建的本体“Film_Person”,单击“确定”,完成本体选择。
图4 本体列表选择本体
2 选择本体后,在本体框中可预览本体结构图,单击编辑框的概念节点点击放大和关系曲线,即可在右侧查看概念和关系的名称和属性。如图5所示。
图5 查看本体结构
3 单击“下一步”,进入“信息抽取”页面。
步骤5:配置信息抽取
以两条数据为例,抽取信息前后的实体信息如图6所示,展示如何配置信息抽取。
图6 信息抽取
在信息抽取页面填写信息抽取项,按表1填写,如图7所示。
表1 信息抽取项示例
图7 填写信息抽取项
字段函数主要有三类,示例如下:
1 ${职业}
直接引用“职业”字段的值,不做任何操作。
2 regexp_replace(${国籍}, ‘([link]@.?????/film.?))’, ‘’)
将“国籍”字段中符合正则模式的“([link]@.?????/film.?))”替换成空字符串,即删除符合这个pattern的字符串。例如从字段“中国([link]@中国:/film.kg.huawei.com/中国/1122445)”抽取出信息“中国”。
3 regexp_extract_all(${导演}, ‘([link]@.?????/film.?))’, 1)
抽取出导演字段中,与模式 “([link]@.?????/film.?))” 匹配的数据值,返回的类型是一个列表。例如““导演”:“沈倨([link]@沈倨:/film.kg.huawei.com/沈倨)"”,抽取信息后为““导演”:“/film.kg.huawei.com/沈倨"”。
填写完“信息抽取项”,单击“下一步”,进入“知识映射”页面。
步骤6:配置知识映射
以其中两条数据为例,知识与实体之间的映射关系如图8所示,展示如何配置知识映射。
图8 知识与实体的映射关系
1 在知识融合页面上方的实体唯一标识字段文本框中填写“url”,如图9所示。
图9 唯一标识字段
2 在实体“电影”下方的“类型映射”区域填写映射前的实体类型字段“Film”。
3 填写映射到实体“电影”的数据字段,如图10和表2所示。
图10 实体电影的知识映射字段
表2 实体电影的知识映射字段
4 在实体“人物”下方的“类型映射”区域填写映射前的实体类型字段“Person”。
5 填写映射到实体“人物”的数据字段,如图11和表3所示。
图11 实体人物的知识映射字段
表3 实体人物的知识映射字段
6 配置完知识映射的所有数据字段,单击“下一步”,进入“知识融合”页面。
步骤7:配置知识融合
以如下融合条件为例:
对人物的属性“name”相似的数据进行知识融合判断,当属性“name”的相似度大于1.00,且属性“职业”的相似度大于1.00时,数据进行融合。对电影的属性“name”相似的数据进行知识融合判断,当属性“name”的相似度大于1.00,且属性“上映时间”的相似度大于1.00时,数据进行融合。相似度函数均为编辑距离函数“EditSim”。
展示如何配置知识融合。
1 在知识融合页面,打开“是否融合”开关。
2 在实体“电影”对应的“融合标识符”栏单击,在弹出的文本框中单击,选择标识知识融合的本体属性“name”。
3 单击“添加分组”,填写判断融合的属性配置信息,如图12所示。
图12 知识融合
4 在实体“人物”对应的“融合标识符”栏单击,在弹出的文本框中单击,选择标识知识融合的本体属性“name”。
5 单击“添加分组”,填写判断融合的属性配置信息,如图12所示。
6 单击“完成”,完成知识图谱的创建,如图13所示。在“任务提交”页面单击“返回知识图谱”,返回至“知识图谱”页面。
图13 图谱创建完成
步骤8:融合验证
1 在“知识图谱”页面,单击所创建的图谱“film”,进入“图谱详情”页面。
2 查看“构建日志”中“构建图谱”事件的状态栏,待状态变为“融合待验证”,单击操作栏“融合验证”,进入“图谱融合”页面。
3 在图谱融合页面,有随机采样的部分融合样例,您若可融合的结果,单击√,若不认可,单击×。右侧可查看融合验证的结果,包含 “准确率”、 “准确数”、 “不准确数”、 “不确定数”。
图14 融合验证