首页 > 编程知识 正文

python 语义谱,python 三维网络

时间:2023-05-05 23:08:13 阅读:182922 作者:2571

Author:Liedra

https://www.cnblogs.com/LieDra/

1.本文背景

学习知识图谱时记录的一些内容。当时在搞一些NLP、数据挖掘相关项目。

--------------------------------------------正文开始----------------------------------------------------

2.什么是知识图谱。

知识图谱是由本体(Ontology)作为Schema层,和RDF数据模型兼容的结构化数据集。是语义网络的知识库。

一定程度上可以简单地把知识图谱理解为多关系图。多关系图包含多种不同类型的节点和边。

通常用实体来表达图里的节点,用关系来表达不同实体之间的某种联系。

实体---人、公司、概念、地名等,关系则代表联系(联想数据库)。

3.知识图谱的表示

现实世界中,实体和关系也会拥有自己的属性。

除了属性图,知识图谱也可以用RDF来表示(一般不支持属性,主要用于学术场景)。

4.知识抽取

数据源:主要有两种渠道,一是业务本身的数据,结构化的,二是网络上公开、抓取的数据,非结构化的。前者只需要简单的预处理,后者需要借助自然语言处理等技术提取结构化信息。(结构化和非结构化)

涉及以下几个方面的自然语言处理技术:实体命名识别,关系抽取,实体统一,指代消解。

实体命名识别:从文本中提取出实体并打标签。实体名及实体类型(地点还是其他等等)。相对成熟的技术,有一些工具可用。

关系抽取:如A在B中, A接近C。这里的'在','接近'如何抽取,如何处理。

除了上述两个还要解决的问题:一是实体统一(NYC与New York其实一样意义,但是实体命名时可能认为是不一样的),二是指代消解(it,she,he到底指的是哪一个,代词如何转化)。

5.知识图谱的存储

主要两种方式。

一是基于RDF的存储:三元组,不包含属性信息。(Jena系统数据库?)

二是基于图数据库的存储:一般以属性图为基本的表示形式。实体和关系可以包含属性。(Neo4j系统?)

6.知识图谱的搭建

重点在于对业务的理解以及对知识图谱本身的设计。

包含以下步骤:

1). 定义具体的业务问题

2). 数据的收集 & 预处理

3). 知识图谱的设计

4). 把数据存入知识图谱

5). 上层应用的开发,以及系统的评估。

6.1 定义具体的业务问题

具体情况具体分析。

6.2 数据收集&预处理

对于非结构化数据或多或少需要使用自然语言处理相关技术。对于行为数据,只需进行简单的处理。对于网络上公开的网页数据,需要一些信息抽取相关的技术。(例如实体对齐技术?)

6.3知识图谱的设计

BAEF原则。即(Business、Analytics、Efficiency,Redundancy Principle)业务、分析、效率、冗余原则。

要有哪些类型实体(公司,平台),关系,属性。

哪些属性可以作为实体,哪些实体可以作为属性。

哪些信息不需要放在知识图谱中。

业务原则:一切要从业务逻辑出发,并且通过观察知识图谱的设计也很容易推测其背后业务的逻辑,而且设计时也要想好未来业务可能的变化

效率原则:让知识图谱尽量轻量化、并决定哪些数据放在知识图谱,哪些数据不需要放在知识图谱。核心在于把知识图谱设计成小而轻的存储载体。

分析原则:不需要把跟关系分析无关的实体放在图谱当中;

冗余原则:有些重复性的信息、高频的信息可以放到传统数据库当中。

6.4 把数据存入知识图谱

通常来说10亿节点以下规模的图谱来说Neo4j就已经足够了。

6.5 上层应用开发

从算法角度,两种不同的场景:一种是基于规则的(目前较多),另一种是基于概率的。

6.5.1 基于规则的方法论

下面是几个关于基于规则的应用:不一致性验证、基于规则的特征提取、基于模式的判断。

1)不一致性验证:通过一些规则去找出潜在的矛盾点。(这些规则多是以人为的方式提前定义好的,需要一些业务的知识,比如金融行业知识,法律知识等)。

2)基于规则提取特征:一般基于深度的探索,例如2度、3度甚至更高维度。

3)基于模式的判断:核心在于通过一些模式找到有可能存在风险的团队后者子图,然后对这部分子图进行进一步的分析。模式有很多种:例如几个实体共享了很多其他信息时可以认为是一个团体并进行分析;也可以从知识图谱中找出强连通图,并标记出来,然后做进一步风险分析。

6.5.2 基于概率的方法

例如社区挖掘、标签传播、聚类等技术。

社区挖掘算法的目的在于从图中找出一些社区(好处在于不需要人为地去定义规则)

标签传播算法的核心思想在于节点之间信息的传递。这就类似于,跟优秀的人在一起自己也会逐渐地变优秀是一个道理。

缺点在于:需要足够多的数据。

6.5.3 基于动态网络的分析

感兴趣的话可以看(dynamic network mining)相关文献,如果需要用的话。

7.知识图谱在其他行业中的应用

例子:教育行业、证券领域、金融等。

8.实践上的几点建议

知识图谱是一个比较新的工具,主要作用在于分析关系,尤其是深度的关系。所以在业务上,首先要确保它的必要性,其实很多问题可以用非知识图谱的方式来解决。

最重要的话题是知识的推理,知识的推理是走向强人工智能的必经之路。但是目前很多语义网络的角度探讨的推理技术(比如基于深度学习,概率统计)很难在实际垂直应用中落地。目前最有效的方式还是基于一些规则的方法论。除非有非常庞大的数据集。

知识图谱本身还是以业务为重心,以数据为中心。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。