一味宠爱 知识图谱:一种从文本中挖掘信息的强大数据科学技术( 三 )


我们将使用一组与Wikipedia文章相关的电影和电影中的文本从头开始构建知识图谱 。 我已经从500多个Wikipedia文章中提取了大约4,300个句子 。 这些句子中的每个句子都恰好包含两个实体-一个主语和一个宾语 。 你可以从这里[^2]下载这些句子 。
我建议对此实现使用GoogleColab , 以加快计算时间 。
导入库
读取数据
读取包含Wikipedia句子的CSV文件:
Output:
让我们检查一些示例句子:
Output:
Output:
实体对提取这些节点将成为Wikipedia句子中存在的实体 。 边是将这些实体彼此连接的关系 。 我们将以无监督的方式提取这些元素 , 即 , 我们将使用句子的语法 。
主要思想是通过句子 , 并在遇到主语和宾语时提取它们 。 但是 , 存在一些挑战?–一个实体可以跨越多个单词 , 例如“redwine” , 并且依赖解析器仅将单个单词标记为主语或宾语 。
因此 , 我在下面创建了一个函数来从句子中提取主语和宾语(实体) , 同时也克服了上述挑战 。 为了方便起见 , 我将代码分为多个块:
让我解释一下上面函数中的代码块:chunk1:我在此块中定义了一些空变量 。 prvtokdep和prvtoktext将分别保存句子中前一个单词和上一个单词本身的依赖项标签 。 prefix和modifier将保存与主语或宾语关联的文本 。 chunk2:接下来 , 我们将遍历句子中的标记 。 我们将首先检查标记是否为标点符号 。 如果是 , 那么我们将忽略它并继续下一个标记 。 如果标记是复合词的一部分(dependencytag=“compound”)=“compound”) , 我们将其保留在prefix变量中 。 复合词是由多个词组成的组合 , 这些词链接在一起形成具有新含义的词(例如 , “FootballStadium”,“animallover”) 。
当我们遇到句子中的一个主语或宾语时 , 我们将在其前面加上这个prefix 。 修饰词来也会做同样的操作 , 例如“niceshirt”,“bighouse”等 。
chunk3:在这里 , 如果标记是主语 , 那么它将被捕获作为第一个实体存储在ent1变量中 , prefix,modifier,prvtokdep,和prvtoktext等变量将被重置 。
chunk4:在这里 , 如果标记是宾语 , 那么它将被捕获作为第二个实体存储在ent2变量中 。 prefix,modifier,prvtokdep,和prvtoktext等变量将再次被重置 。
chunk5:一旦捕获了句子中的主语和宾语 , 我们将更新先前的标记及其依赖项标签 。
让我们在一个句子上测试此函数:
Output:
目前都在在按计划进行中 。 在以上句子中 , ‘film’是主语 , “200patents”是宾语 。 现在 , 我们可以使用此函数为数据中的所有句子提取这些实体对:
Output:


推荐阅读