Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术

全文共6382字 , 预计学习时长20分钟
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
图源:Unsplash摄影:Clem Onojeghuo
概览

  • 知识图谱是数据科学中最吸引人的概念之一
  • 学习如何使用Wikipedia页面中的文本构建知识图谱
  • 在Python中使用流行的spaCy库在Python中构建知识图谱
引言
不用过多介绍 , 大家都知道梅西 。 即使是那些不关注足球的人 , 也听说过这位最伟大球员在辉煌 。 下面是他的维基百科页面:
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
这个页面包含了很多信息!里面不仅有文本、大量的超链接 , 甚至还有音频片段 。 整个网页上有很多相关的和可能会有用的信息 , 将它们应用到实际生活中可能性是无穷的 。
然而 , 还有一个小问题 。 这不是给机器提供数据的理想来源 , 至少不是以现在的这种形式 。
是否能找到一种方法 , 使这些文本数据变为机器可读?能否将这些文本数据转录成既让机器可以使用 , 也能让我们可以轻松解释的东西?
答案是肯定的 。 我们可以借助知识图谱(KG) , 这是数据科学最吸引人的概念之一 。 我已经被知识图谱的巨大潜力和实际应用震惊了 , 我相信你也会和我一样 。
在本文中 , 你将了解什么是知识图谱 , 以及它们的作用 , 然后我们将基于从维基百科中提取的数据 , 来构建知识图谱以用于深入研究代码 。
目录
1. 什么是知识图谱?
2. 如何在图谱中表示知识?
○ 句子分割
○ 实体抽取
○ 关系抽取
3. 依靠文本数据构建知识图谱
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
什么是知识图谱?
先明确一个概念:在本文中经常出现的术语“图谱” , 并不是指柱状图、饼状图或线状图 , 而是相互关联的实体 , 它们可以是人、地点、组织 , 甚至是一个事件 。
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
不妨说 , 图谱是节点和边*的组合 。
看看下面的数据:
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
*边(Edge)是节点间的连线 , 用于表示节点间关系 。
这里的节点a和节点b是两个不同的实体 , 节点通过边连接 。 如图是我们可以构建的最小的知识图谱——它也被称为三元组(实体-关系-实体) 。
知识图谱有多种形状和大小 。 例如 , 截至2019年10月 , 维基数据(Wikidata)的知识图谱有59,910,568个节点 。
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
如何在图谱中表示知识?
在开始构建知识图谱前 , 我们需要了解信息或知识是如何嵌入到这些图谱中的 。
举例来解释:如果节点a=普京 , 节点b=俄罗斯 , 那么边很可能是“俄罗斯总统”:
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
一个节点或实体也可以有不止一个关系 。 普京不仅是俄罗斯总统 , 他还曾为苏联安全机构克格勃工作 。 但是如何把这些关于普京的新信息 , 整合到上面的知识图谱中呢?
其实很简单 。 只需为新实体“克格勃”再添加一个节点:
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
新的关系不仅可以添加在第一个节点 , 而且可以出现在知识图谱中的任何节点 , 如下所示:
Python|知识图谱——用Python代码从文本中挖掘信息的强大数据科学技术文章插图
俄罗斯是亚太经济合作组织(APEC)的成员国
识别实体和他们的相互关系并不是一项困难的任务 。 但是 , 手动构建知识图谱是难以处理大量信息的 。 没有人会浏览成千上万的文档 , 然后提取出所有的实体和它们之间的关系 。
因此 , 机器无疑是更好的选择 , 浏览成百上千的文件对它们来说简直小菜一碟 。 但是还有另外一个挑战——机器不懂自然语言 。 这就轮到自然语言处理 (Natural Language Processing , 简称NLP) 技术出场了 。
想要从文本中构建知识图谱 , 让机器能理解自然语言就至关重要 。 这可以通过使用自然语言处理(NLP)技术来实现 , 如句子分割、依存句法分析、词性标注和实体识别 。 下文将更详细地对它们进行探讨 。
句子分割
构建知识图谱的第一步是将文本或文章分割成句子 。 然后 , 列出那些只有一个主语和宾语的句子 。 下面是示例文本: