BrambleXu / knowledge-graph-learning

A curated list of awesome knowledge graph tutorials, projects and communities.
MIT License
736 stars 120 forks source link

ISWC-2016-Building and Exploring an Enterprise Knowledge Graph for Investment Analysis #266

Open BrambleXu opened 4 years ago

BrambleXu commented 4 years ago

Summary:

详细介绍了一个企业KG的构筑工程。涉及到了工程和商业两个方面的困难。结果很像企查查这类服务。

Resource:

Paper information:

Notes:

image

This is an application paper table about what challenge they made when they develop Enterprise Knowledge Graph, called EKG, which incorporates information about 40,000,000 enterprises in China.

The product is sold as a service and the target is securities companies. Because the securities companies provide investment bank services and investment consulting services, they have to know the information about the small and medium-sized enterprises. So the product can help securities companies to know and to approach target companies better and quicker.

There are two kinds of challenges in this project, the technology challenges, and business challenges.

Business challenges

There are two challenges on the business side.

The solution for two challenges.

Data Privacy:

Killer Services on the Graph:

Technology challenges

Technology challenges arise from the diversity and the scale of the data sources.

Before introducing challenges in detail, let's see the whole workflow to build the EKG first.

The following challenges are encountered during the above process:

The authors carefully select the most suitable methods and adapt them to the above problems.

  1. First, we split the original tables into atomic tables and complex tables, then we use D2RQ tools to handle mappings on atomic tables. At last, we develop programs to process ad hoc mappings on complex tables.
  2. We use multi-strategy learning methods in [16]( Bootstrapping yahoo! finance by wikipedia for competitor mining) to extract competitor relations and acquisition events from various data sources of encyclopedic sites.
  3. We adopt a graph-based entity linking algorithms in [2] (Graph ranking for collective named entity disambiguation) to accomplish the task of entity linking.
  4. We design our own storage structure to fully optimize the performance of miscellaneous queries in EKG. We use a hybrid storage solution composed of multiple kinds of databases. For large-scale data, we use NoSQL database namely Mongodb as the underlying storage. For high-frequency query data, we use a memory database to store data.

中文总结:

1 Introduction

产品叫魔镜,客户是安全公司,这些公司给银行提供投资咨询服务,比如新三板。因此安全公司的客户是中小企业。

2 Challenges

商业挑战:

技术挑战:主要来自diversity和data source scale

  1. 充分利用CSAIC的RDB
  2. 使用其他一些数据来源,来增强EKG,比如来自中国政府采购网的采购信息,来自东方财富的股票信息,来自国家知识产权局的专利信息,最后添加 竞争者关系和收购信息 到EKG里,这些信息提取自百科页面,比如wiki,baldu,hudong。在执行这些步骤的过程中,遇到了下面的挑战:

为了解决上面的问题,下面精心选取了一些较为合适的方法和算法:

  1. D2R mapping。首先我们把原始的table氛围atomic table和complex table,然后使用D2RQ工具来对atomic table进行映射。最后,我们自己写程序来处理 ad hoc mapping on complex tables.
  2. 使用(Bootstrapping Yahoo! Finance by Wikipedia for Competitor Mining,这篇论文没公开)里的方法来提取竞争者信息,来源是各种百科网站。首先用HTML处理器来提取一些半结构化的信息,然后使用Hearst patterns(用一些一些定义好的规则来抽取三元组的方法,文章1文章2)来提取文本中的信息。
  3. 使用基于图的entity linking 算法( Graph ranking for collective named entity disambiguation)来做entity linking。首先计算mentions和KG中entities的相似度,找到候选的entities,然后构建一个undirected graph来实现disambiguation。
  4. 现在的graph databased提供的功能,并不能很好地整合meta properties和events,我们设计了自己的storage sturcture来实现EKG的混合查询。比如混合的存储方案包含不同种类的数据库,对于大规模的数据,我们使用nosql (mongodb),对于高性能的查询,使用memory database,可以大幅度提升查询速度。我们还将main data table缩减为多个single data table。我们把meta properties的relation保存在同一个table里,这样可以同时对ordinary peoperty和meta property进行查询。我们还构建了n-ary relation的index和meta properties的index。

3 Approach Overview

3.1 Problem Definition

image

KG里的G包含schema graph G_s, 和 data graph G_d,还有二者之间的 R。

其中 schema graph G_s 包含 N_s, P_s, E_s。 N_s是nodes,表示不同的classed (concepts); P_s 是nodes,表示properties,P_s 包含 rdf:subClassOf, rdfs:equivalentClass,还有一些用户定义的aplicant; E_s 则是一些edges,表示N和P之间的relation。举例来说的话,看上图中的Patent这个概念,它的属性是applicant(申请者),而这个属性范围则是 company 或 person,因为专利的申请人可以是个人或公司。有两种特殊情况:1 Ps是一个relation而不是class,此时叫Ps为 meta property。比如一个人受雇于一个公司,那么meta property就是entry time;2 如果Ps连接到不止一个subject或object,我们称之为n-ary realtion。

data graph G_d,其中N-d 是 a set of nodes,表示instances和literals (字面量),P_d 表示 a set of nodes,表示properties;E_d 是 a set of edges,表示node之间的relations。每个edge (Subject, Predicate, Object) 代表一个fact。N_d包含两个不想交的部分,即instance和literals。如果triple里的object是一个isntance,那么我们叫这个property为relation或object property,不然的话,就叫做datatype property。

G_s 和 G_d 之间的R,将data graph里的instances 与 schema graph里的classes进行连接,使用的是 rdf:type property。

image

Data Sources and Related Tasks to Construct the EKG

构建EKG主要有5个信息来源:

  1. KG主要是基于CSAIC的结构化企业信息。其中包含了4千万公司,6千万人,8百万的诉讼,1百万的信用信息。关于公司的信息包含 company executives, registration number, address and so on。 关于人物的信息,包含 ID card number, position and so on。 关于诉讼的信息包含 complainant(申诉人), case number, trial date and so on。关于信用的信息包括performance status, court and so on。 我们把RDB转换为RDF,来构建KG ( Ontology instance linking: Towards interlinked knowledge graphs)。

  2. PSAN-SIPO, 最大也是最成功的专利网站。抽取了5百万的专利薪酬,包含专利申请者,专利编号,专利名。用这些信息来构建了一个专利KG。Basic KG 和 专利KG 之间用公司和任务来连接,然后构成EKG。

  3. 从CGPN抽取出了3百万的企业竞标信息,包含investor, investee, invest time and so on。上市公司的股票信息抽取自EWN。然后EKG融合了上面这些收取的信息。

  4. 竞争关系和收购信息抽取自百科网站,然后通过公司名和人物名添加到EKG中。

这里举个例子:

image

3.2 Data-driven KG constructing process

如图3所示,一共有5个步骤,Schema Design, D2R Transformation, Information Extraction, Data Fusion with Instance Matching, Storage Design and Query Optimization。

image

当EKG构建之后,我们就可以提供“使用场景”给安全公司了。整个过程是数据导向,逐渐迭代的。D2R Transformation 和 the Information Extraction,这两个步骤是否初始化,是取决于 type of data source。新的迭代是否开始,取决于input of new data sources。如果一次迭代中有多个数据来源,我们首先选择最结构话的数据。下面的例子里有2次迭代,第一次迭代是两个分开的项目,一个是从CSAIC中转 一些换EKG,另一个是从PASN-SIPO中提取 patent KG。这两个KG服务于不同的用户。第二次iteration,我们使用data fusion algorithms来将两个KG通过companies和person进行连接。其他还有一些数据来源可以添加到KG里,我们使用HTML wrapper来提取半结构化的信息。然后使用Hearst patterns和DS来从free text中提取更多的信息。最后,我们使用Instance Matching algorightms来检查instance pairs是否对齐了。

4 Building Knowledge Graphs

4.1 Schema Design

我们使用一个top-down的方法来构建EKG, 来保证数据质量和更严格的shema。当有新的数据来源添加的时候,我们人工地设计和扩展EKG的shema。之所以不用一些自动构建shema的方法,是因为这些方法比较适合complex domain,而我们固定了是企业KG,所以人工即可。

第一次迭代,EKG包含4个基本概念,Company, Person, Credit, Litigation。主要的关系包含 “subsidiary”, “shareholder”, and “executive”。patent KG只包含 “Patent”,主要关系是 “applicant”。 第二次迭代,添加 “ListedCompany”, “Stock”, “Bidding” and “Investment” 到 EKG里。除了新添加的概念(“stock code” and “issue number”),在EKG之间还有新的relations,比如“acquisition” and“competitive” as well as “subClassof” relation between “Company” and “ListedCompany”,如果Figure 1 所示。

image

4.2 D2R Transformation

将RDB转换为RDF,需要3步,table splitting, basic D2R transformation by D2RQ and post-processing. 因为从CSAIC得到的原始data table是多个省份整合而成的数据库,不符合数据库的设计原则(BCNF), 一些table可能包含多个entities和relation。甚至可能包含n-ary relation或者同样的table column可能包含不同的entity types。为了让table更容易理解和处理,我们将orginal table分割为更小的table,叫做atomic entity table, atomic relation tables, complex entity tables (那些需要conditional class mapping的table,在sec2提到过). 一个atomic entity table 对应一个class,一个atomic relation table对应一个relation instance,其domain涉及两个classes。我们使用D2RQ将atomic entity table和atomic relation table转换为RDF。另外还写了一特殊的程序来解决complex relation table,这些table可能需要meta property mapping, conditional taxonomy mapping等等(在sec2提到过)。

image

4.3 Information Extraction

大部分抽取研究只关注抽取某个特定的目标,但是我们要抽取更多的目标,different types of entities(e.g., companies), binary relations(e.g., competitors), and attribute value pairs(e.g., CEO of a company). 还涉及事件抽取 event(n-ary relation) extraction (e.g., company acquiring) and 同义词抽取 synonym extraction (e.g., abbreviation of companies). The extraction strategy varies according to the data sources and extraction targets. 这里的抽取方式使用了一个叫做multi-stragety learning的方法(Bootstrapping Yahoo! Finance by Wikipedia for Competitor Mining):

  1. 使用HTML wrapper,从PSAN-SIPO, EWN and CGPN抽取 Entities and attribute value pairs of patent, stock and bidding information
  2. 使用HTML wrapper,从百科网站的infoboxes来抽取公司的 Attribute value pairs (e.g., the chairman of an enterprise ) of enterprises。我们通过页面的更新时间来判断信息是否正确。这个步骤可以填充database中的null value
  3. 二元关系,时间,头一次,需要一些标注来学习patterns。这些pattern被用来进一步抽取信息(就是bootstrapping)。抽取的质量很大程度上依赖于标注的数量,但是人工标注非常花费人力。因此,对于二元关系,事件,同义词,我们定义一组Hearst patterns来从百科text中抽取数据。比如,“X收购 (acquire) Y” 可以抽取 <X, acquire, Y> 这样的关系。然后这些抽取出来的triple被用来作为seed,自动标注free text。这种DS的方法可以非常显著地减少人工标注的劳力。我们首先选择一些包含了seed的句子,然后标注。接着从这些标注过的句子里抽取patterns。一个好的pattern应该从几个句子中生成,因此我们要计算一个pattern有多少个support。如果大于threshold的话,那么就选中这个pattern。然后抽取出来的信息被添加到sees作为bootstrapping。整个过程一直迭代到新信息全被抽取完。

在这个过程中,一个问题是在百科网站上,很很多公司名的缩写。我们需要使用entity linki8ng 算法来将一个company mention和EKG里的公司进行关联。我们采用了一个基于图的方法来实现这个entity linking,分为两步:

4.4 Data Fusion with Instance Matching

不同来源的数据应该融合到EKG里。比如 如何一个patent的applicant属性是一个公司,那么就应该把instance连接到EKG里的company。这个instance matching of companies的问题很简单。因为在中国,根据官方的要求,每个公司的全名必须是unique的。在patent和bidding网站上,公司也必须是全名。因此将patent KG和 basic KG进行连接是非常简单的。但是这个问题对于person instance matching就比较困难了。尽管每个人有独一无二的身份证ID,但是这个ID在patent数据源里是不存在的。所以我们用了一个简单的启发式方法,如果patent inventor的名字和申请者,分别与basic KG中的个人和公司名字一样,,那么我们就说这个patent invector与basic KG中的人物名相匹配。

4.5 Storage Design and Query Optimization

在NoSQL数据库的基础上,我们设计了产IDEtriple store。我们在MongoDB上实现了很多不同的数据种类,包括List type, Range type, Map type,并实现了每种type对应的查询界面。比如对于Map type,交互界面上可以查询所有的value,或某个value的key,或者最大值,最小值。

提升查询效果的方法:

5 Deployment and Usage Scenarios

整个platform构建在公网上,花1小时抽取entity,话3h抽取attribute value pairs,4h抽取relation。每个月重新构建一次来添加新的企业信息。下面介绍了几个使用场景:

Next Reading: