基于图模型的海量商品知识表示与管理

2018-05-03 06:07林煜明邹文静
计算机应用与软件 2018年4期
关键词:三元组图谱框架

杨 溢 林煜明 邹文静

(桂林电子科技大学广西可信软件重点实验室 广西 桂林 541000)

0 引 言

在互联网倡导“以用户为中心,用户参与”的开放式架构理念下,实现自然语言的语义理解成为一项核心任务,而这需要强大的知识库支持。虽然Web已经成为事实上最大的知识库,但这些知识大都以无结构的形式存在,难以实现智能化的应用。在此环境下,很多知识图谱应运而生,如Google知识图谱[1]、FreeBase[2]、Yago[3]等。

电子商务应用中用户查询意图的理解是一个重要的问题,它不仅能够使查询结果准确地匹配用户的需求,还能够进一步实现商品的精准推荐。为此,本文首先提出一种基于RDF的商品知识表示框架,以三元组的结构表示不同类型的商品知识;鉴于RDF的天然图结构性质,在Neo4j的基础上设计一个具有高可扩展性、支持多模式查询的商品知识管理系统;通过一系列的实验验证该系统能够有效地管理百万以上级别的商品知识。

1 商品知识的表示模型

为了更好地理解和应用商品信息,构建的商品知识图谱是一个有向无环图DAG(Directed Acyclic Graph),包括商品分类层、商品实例层和商品属性层,如图1所示。商品分类层描述所有的商品分类信息,例如“Products→Electronics→Computer→Apple→Laptops→MacBook Air”是一个分类序列。商品实例层中的每个商品都至少有一个前驱节点。商品属性层则记录了每样商品的相关属性,如生产厂商、卖家ID、商家日期、价格等。

图1 商品知识结构示意图

目前,虽然研究人员提出了很多的知识结构化表示和组织方式,但由W3C提出的资源描述框架RDF(Resource Description Framework)应用最为广泛。RDF利用统一资源标识符URI(Uniform Resource Identifier)表示网络上的各种事物,这些URI对应的事物包括概念和实例[4]。RDF的基本数据单元是一个三元组<主体,属性,客体>,每个三元组表示了主体和客体间的关系。

鉴于上述原因,文中采用基于RDF的三元组形式构建结构化的商品知识图谱,相关的符号定义如下:

ci为商品概念,商品概念集C={c1,c2,…,cn1},例如电子产品、计算机、手机等是商品概念;

gi为商品实例,商品实例集G={g1,g2,…,gn2},例如iphone 6s、Kindle Paperwhite等是商品实例;

ai为商品属性,商品属性集A={a1,a2,…,an3},例如生产厂商、卖家ID、上架时间、价格等。

实体集E=C∪G∪A∪T∪F,其中F={f1,f2,…,fn5}为事实集合,事实fi=,其中x∈E,y∈E,谓词pj定义如表1所示。

表1 商品知识表示中的部分谓词描述

双射函数H:F→Sid为每个事实fi赋予一个唯一的标识符,其中Sid={#1,#2,#3,…,#n}。商品知识图谱中的知识由大量的事实构成的。例如,“卖家1的iphone 7上架时间是2017.6.5。”根据上面定义的符号在商品知识图谱中可用两个事实表示为:

#1 -

#2 -

#3 - <#2, DependOn ,#1>

2 系统的总体设计

海量商品知识管理系统的总体架构如图2所示,自顶向下分别为接口层、表现层、业务层、数据层。接口层提供了文件、API和在线展示三种交互模式。表现层用于处理用户和系统的交互,通过Flask框架提供的模版机制对页面进行渲染,用bootstrap框架提供的控件替代原生控件提供给用户良好的视觉效果,而D3.js用于将查询出来的数据进行可视化处理,使数据更直观地展现在用户面前。业务层主要用于响应用户的各种操作,通过Flask提供的路由机制接收来自前端的网络请求并进行处理,然后通过Cypher查询语言与Neo4j数据库进行数据交互。数据层主要利用了图数据库Neo4j,通过业务层将基于RDF格式描述的商品知识以图结构的形式进行有效的存储。

图2 系统的总体架构

3 关键技术

3.1 Neo4j图形数据库

Neo4j[5]是一个高性能的NOSQL图形数据库。它作为使用最为广泛的图数据库,使用了“图”的数据结构进行建模,其最基本的两个概念是节点和边。节点代表着实体,而边则代表着实体与实体之间的关系。节点和边都可以拥有各自的属性,不同的节点通过不同类型的边连接,形成一个复杂的实体关系图。

RDF三元组表示和组织的商品知识具有天然的图结构特点,其中商品实例和概念作为节点,边表示商品/概念之间的关系。使用Neo4j只需在官网下载社区版安装运行即可,它提供了图形化的后台管理界面和完善的Cypher语言,利用该语言可以方便地对RDF数据进行各种操作。因此,Neo4j是本系统自然和恰当的存储方案。

3.2 D3.js数据可视化库

D3.js[6]是一个基于数据对文档进行操作的JavaScript库。它提供了许多的可视化图形库(如:捆图、弦图、集群图、力导向图、柱形图等),并通过使用HTML、SVG和CSS可以将存储在Neo4中的商品知识以可视化的形式向用户展示。

D3.js虽然提供了的可视化图形众多,但是其核心是对数据集的操作,数据集主要可以分为三种情况:数据源>网页中元素数量(enter)、数据源<网页元素数量(exit)、数据源=网页元素数量(update)。三种情况对应三种不同的处理方式:其中enter部分需要进行添加操作,update部分需要进行更新操作,exit部分则需要进行删除操作。

3.3 Flask框架

Flask[7]是一个基于Werkzeug工具包和Jinja2模板引擎利用Python编写的Web框架。由于它不需要特定的库或工具,所以被称之为微框架。虽然Flask没有数据库抽象层、表单验证或任意预先存在的第三方库所提供的功能的组件,但是Flask支持添加应用程序的扩展,可以实现表单验证、上传处理、认证等功能。

Flask基本结构主要包括三部分:static文件夹,用于存放CSS和JavaScript文件;templates文件夹,用于存放HTML文件;.py文件,用于后台的逻辑处理。通过这种工程结构,Flask能够有效地将视图层与控制层进行了分离,从而有利于提高Web程序的可维护性。

4 系统核心模块的实现

海量商品知识管理系统的运行主界面如图3所示,主要包括商品知识的查询、更新、删除、用户管理、系统备份和导入等功能。

图3 系统运行的主界面

4.1 查询模块

系统中将查询分为普通和高级两种模式,普通查询包括关系查询和溯源查询两种。关系查询指根据用户输入的关键字使用基于正则表达式的模式匹配技术检索出相应的节点,并将这些节点及其邻接节点作为返回结果。溯源查询首先根据给定的关键字查找相应的节点,将该节点到根节点的最短路径作为返回结果。

与普通查询相比,高级查询细化了搜索的条件并在溯源查询的基础上增加子节点查询操作。子节点查询是指查询某节点的所有后续节点。高级查询提供三个可组合的查询条件:查询类型、查询层次以及查询关键字。其中查询层次用于限制搜索商品知识图谱的层次深度。查询执行的逻辑过程是用户提交查询后,当后台接收到查询数据时对查询模式进行判断并执行对应的Cypher查询语言,后台将查询结果中节点间的关系以Json格式进行组织,最后前台接收到结果后通过设置D3.js力导向图中的节点和边参数向用户展示可视化的查询结果。

4.2 知识管理模块

(1) 知识的添加。基于RDF模式组织的商品知识是以节点和边的形式保存,所以知识的插入需要考虑三种情况:在无后续的节点后添加子节点;在两个节点之间进行节点插入;在现有节点间增加边。

知识添加的实现逻辑过程如下:首先由用户填入节点的信息,然后判断插入节点是否已经存在,不存在则根据选择的节点个数确定是单个节点下的增加还是节点间的插入,如果是节点间插入会首先利用Cypher中的Remove语句对节点间关系进行移除,然后再分别将两个节点与待插入节点进行拼接,单节点下则会直接插入。为方便用户的操作,系统还提供了批量添加操作,首先由用户在Excel中输入需要插入的全部节点,然后将这些节点上传并循环插入到指定的节点下。

(2) 知识的更新。知识的更新包括两种类型:对节点/边现有的属性进行修改,对节点/边增加新的属性信息。实现流程是用户首先选择待修改的节点/边,后台搜索出相应的节点/边并向用户显示,由用户在现有属性的基础上进行修改,也可以选择新增属性信息,最后系统通过Cypher语言的Match语句匹配到节点,然后通过SET语句对属性值进行更新。

(3) 知识的删除。由于节点间可能存在多重关系,因此删除节点时需要将被删除节点与关联的边同时删除。执行过程是用户选择需要删除的节点/边,由后台采用Detach Delete语句实现节点或边的删除操作。

4.3 外部接口模块

本系统提供三种与外部交互的方式:(1) 图形界面显示;(2) 文件接口方式;(3) API接口。前者通过D3.js将显示结果直接向用户展示。文件接口将用户的查询信息以文件的形式保存供用户使用。API接口通过Flask框架及其验证机制限制只有注册的用户才能访问,避免恶意用户的非法调用造成系统阻塞。

5 实验及结果分析

为了验证系统的有效性,本文基于eBay网站(www.ebay.com)上的商品信息构建了一个商品知识的分类层次,其中深度为6,宽度为2 849,商品数量430万进行测试。实验环境如下,操作系统:macOS Sierra 10.12.6,CPU:2.7 GHz Intel Core i5,内存:8 GB 1 867 MHz DDR3,硬盘:256 GB SSD。

5.1 查询的有效性测试

知识检索是知识图谱的一项核心的应用,从商品知识的角度出发,通常需要考虑几种情况:一种商品/概念和另一种商品/概念之间的关系;某种关系和哪些商品/概念是相关的;对某种商品/概念进行溯源。基于上述需求,文中通过以下三个查询来验证系统的可用性和有效性:

(1) Q1:查找任意两个节点的关系;

(2) Q2:查找任意关系的相邻节点;

(3) Q3:查找给定节点和任一节点的最短路径。

表2给出了针对Q1-Q3进行100次随机查询的平均耗时情况。从表2中可以看出,对于十万级别节点的商品知识图谱,系统能够在毫秒级别上响应相关查询,即使在百万级上仍能在合理时间内返回各种查询操作的结果。

表2 Q1-Q3的查询耗时 ms

5.2 商品知识的导入

在实际的应用中,由于服务器数据丢失或者故障可能需要进行知识图谱的整体恢复或者数据移植。为保证系统的可用性,需要在尽可能短时间内完成大规模知识图谱的重新构建或者移植。

本实验中,我们采用batch_import工具将已构建好的知识图谱按层次方式从一台机器迁移到另一台,递增的数据导入。图4给出了不同节点规模下商品知识图谱的导入耗时情况。

图4 商品知识图谱整体迁移的耗时

知识图谱恢复的另一种更极端情况是重新构建,即在RDF三元组的基础上重新构建。图5中给出了不同节点规模下商品知识图谱重新构建的耗时情况。

由图4和图5中的实验结果可以看出,对于百万级节点规模的商品知识,图谱的迁移和重构分别在23 s和77 s完成,这足以满足现实应用中商品知识图谱服务的需求。

图5 商品知识图谱重新构建的耗时

6 结 语

在当下蓬勃发展的电子商务环境下,用户查询意图的理解对于很多智能应用具有重要的作用。为了使机器能够正确理解语义,最可行的方法就是通过制定标准,对资源的含义进行统一、形式化的描述[4],从而构建具有结构化的知识图谱,为上层应用提供可靠有效的知识服务。

基于上述目标,本文中针对海量的商品知识提出一种基于RDF的描述框架,在此框架下不同类型的知识可以采用三元组的形式统一地描述和组织。鉴于RDF数据的图结构特性,文中将商品概念/实例建模成节点,以边描述它们间的关系,并在Neo4j图形数据库的基础上结合Flask框架构建了一个高可扩展性的大规模商品知识管理系统。一系列的实验结果证明,该系统在百万节点级别的商品知识规模上能够有效地进行多种模式的知识检索及管理。

[1] Amit S.Introducing the Knowledge Graph:things,not strings[EB/OL].(2012-05-12).[2017-07-30].http://googleblog.blogspot.com/2012/05/introducing-knowledge-graph-things-not.html.

[2] Hoffart J,Suchanek F M,Berberich K,et al.YAGO2:A spatially and temporally enhanced knowledge base from Wikipedia.International Joint Conference on Artificial Intelligence(IJCAI).Beijing,China,August 3-9,2013[C].Palo Alto,California:AAAI Press.

[3] Bollacker K,Evans C,Paritosh P,et al.Freebase:a collaboratively created graph database for structuring human knowledge.The ACM SIGMOD/PODS Conference.Vancouver,BC,Canada,June 10-12,2008[C].New York:ACM Press.

[4] 邹磊,彭鹏.分布式RDF数据管理综述[J].计算机研究与发展,2017,54(6):1213-1224.

[5] Vukotic A,Watt N,Abedrabbo T,et al.Neo4j in action[M].New York:Manning Publications Co.,2014.

[6] Zhu N Q.Data visualization with D3.js cookbook[M].Birmingham,UK:Packt Publishing Ltd,2013.

[7] Grinberg M.Flask web development:developing web applications with python[M].Sebastopol,CA:O’Reilly Media,Inc.,2014.

[8] 杜小勇,王琰,吕彬.语义Web数据管理研究进展[J].软件学报,2009,20(11):2950-2964.

猜你喜欢
三元组图谱框架
基于图对比注意力网络的知识图谱补全
TransP:一种基于WordNet中PartOf关系的知识图谱嵌入方法
有机框架材料的后合成交换
时序知识图谱的增量构建
框架
基于卷积神经网络的知识图谱补全方法研究
绘一张成长图谱
关于余挠三元组的periodic-模
图表
主动对接你思维的知识图谱