DeepDive教程第一部分

本文是DeepDive教程的第一部分,主要介绍如何使用DeepDive进行关系抽取,涉及数据准备、NLP标注、候选关系提取及特征工程。目标是从新闻文章中抽取夫妻关系,讲解了从加载原始数据到生成候选配偶关系的步骤,包括启动CoreNLP服务器进行标注、创建person和spouse_candidate表等。
摘要由CSDN通过智能技术生成

本文通过一个demo,学习DeepDive教程

本文中我们的目标是将使用非结构化的输入,在关系数据库中存储提取出的结果,并且加上deepdive对每个提取结果的预测置信度

也就是写一个DeepDive应用根据一个特定的模式来提取mentions与相邻实体和属性之间的关系。

这就是关系抽取任务。我们希望从新闻文章中抽取是夫妻关系的两个人的mentions.

高级的步骤有:

  • 数据处理。首先加载原始语料,添加NLP标注,提取候选关系对,以及一个mention相互间关系的稀疏特征
  • 对数据和规则的远程监督。接下来使用不同的方法来为数据提供监督,便于机器学习模型来学习权重
  • 学习和推断。指定模型高层次的配置
  • 误差分析和调试

0.准备

0.1 声明预测什么

应该告诉DeepDive我们想要预测的随机变量,保存在DDlog这一语言编写的文件中

%%file app.ddlog
# 本程序的目的是预测给定的两个mention是否为夫妻关系
has_spouse?(
    p1_id text,
    p2_id text
).

这回生成一个has_spouse表

0.2 设定数据库

接下来,DeepDive会把所有的数据:输入、中间结果、输出都保存在关系数据库中(一般为Postgresql)

1.数据处理

本节,将会产生统计学习问题的传统输入:候选夫妻关系,这些关系通过一系列特征集合表示。我们要预测候选夫妻关系是否为真实关系

有下面四个步骤:

  1. 加载原始输入数据
  2. 添加NLP标注
  3. 提取候选关系实体对
  4. 提取每个候选对的特征

1.1 加载原始输入数据

第一个任务是下载和加载语料库,并放到数据库中的articles表

最好保存每篇文章的id和内容。通过articles表中定义schema来实现

%%file -a app.ddlog

## Input Data #################################################################
articles(
    id      text,
    content text
).

DeepDive使用一个脚本把原始语料库转换为一个名字转换的tsj文件中。
这个脚本会读取JSON格式的原始语料,然后分割成id和context两个部分,保存成TSJ形式

使用这个脚本会将原始语料库转换为数据库中的article表。由两列组成:id和content

加载到数据库中之后,可以查看数据库的数据

!deepdive query '|10 ?- articles(id, content).'

1.2 添加NLP标注

接下来使用Stanford的CoreNLP来为content添加有用的标注和结构。

这些步骤包括把文章分为句子以及单词。此外还有单词原型(lemma)、词性(POS)、实体识别(NER),句子依存关系等标注

这些在app.ddlog中定义输出的模式

%%file -a app.ddlog

## NLP markup #################################################################
sentences(
    doc_id         text,
    sentence_index int,
    tokens         json,
    lemmas         json,
    pos_tags       json,
    ner_tags       json,
    doc_offsets    json,
    dep_types      json,
    dep_tokens     json
).

这里将会生成一个sentence表

接下来定义一个DDlog函数输入doc_id 和 content ,以上面的格式输出每一行.

这个函数作为一个脚本(nlp_markup.sh)来对articles中每一行来进行NLP标注,并且把结果附加到行的后面。

在执行这个脚本之前,需要启动CoreNLP服务器。

执行完之后,查看添加NLP标注后的一个样本。
在这里插入图片描述
在这里插入图片描述

1.3 提取候选关系集

抽取所有的people

首先定义person表的schema

%%file -a app.ddlog

## Candidate mapping ##########################################################
person_mention(
    mention_id     text,
    mention_text   text
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值