没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Deepdive 教程–数据准备
Deepdive 教程–数据准备
0 基础工作
1 数据准备
1.1 载入原始数据
1.2 添加自然语言标记
1.3 抽取候选关系
1.3.1 抽取候选实体
1.3.2 抽取候选关系
1.4 特征提取
1.5 样本打标
2 模型构建
0 基础工作
本文的数据和工具都来自于http://www.openkg.cn/dataset/cn-deepdive,然后将其文档按照自己的理解写了出来,并且对其中的一些
细节内容加入了写详细的描述
本文假设读者已经安装好deepdive了,如果没有安装,请参见上面链接中的教程文档,或者自行百度
我们的DeepDive的数据(包括输入,输出,中间media)全都存在关系数据库中,强烈推荐Postgres(说明其他类型的数据库也是支持的
)我们配置db.url文件来设置本地数据库。
1 数据准备
数据处理要有如下几个部分:
载入原始输入数据
添加自然语言处理(NLP)标记
抽取候选关系
为每个候选关系抽取特征
1.1 载入原始数据
我们需要在把articles文件放到input文件夹里面去,按照deepdive官方的Tutorial的方法,无法实现不知道为什么。
然后在 app.ddlog 中添加如下内容:
其实就是为了标记我们的articles文档中的列名,然后存到数据库中。
每次app.ddlog变动 后我们都要进行编译操作,也就是执行下面的代码:
他会执行当前目录下的工作的编译。
编译完成后,我们要执行
这里 do 后面应该和 我们 app.ddlog 中的名字相同,和 input 文件夹中的文件名也相同,他们三个 应该都是一致的。他会把 input文件中
的对应的文件导入postgresql数据库中。注意这个语句执行后,他会进入一个类似vi的界面让你审查他自动生成的处理代码是不是正确,
这时候输入 :wq 就可以保存并退出,继续执行后面的步骤。
执行完成后,可以执行下面代码在数据库中查询,看看是不是成功导入了。
如果成功导入,那么他就会有几行数据,如果不成功,那么就会显示 0 rows
1.2 添加自然语言标记
deepdive默认用standford nlp进行文本处理,可以返回句子的分词、lemma、pos、NER
自然语言处理 Natural Language Processing
分词:首先是中文分词,在一句话中,我们要把词分出来,而不是光看单独的子。比如 我 今天 很 高兴 选择合适的字组成合适的词来构成句子
lemma:词元,这个是指这个词实质上的含义,比如cat,cats他们有相同词元。
pos:词性标注,最基本的是动词、名词等等
NER:Named Entity Recognition,可以识别出地名、人名、组织等等
具体内容请自行学习自然语言处理。。。
现在我们有了文章了,所以下一步就是把文章拆分 成更细致的东西sentences,所以,我们在数据库中需要有一个表来存储sentences的数
据。同articles,我们要在 app.ddlog 中新建一个表的定义:
光有存储用的表的定义还不够,对吧,我们还需要对数 据 处 理的方法,deepdive只是个框架,具体要怎么处理需要我们告诉他。所以我们
要定义函数来处理articles让他变成sentences。
这里的语法我们记住这样用就可以了
function用来定义函数,后面 nlp_markup 是函数名 over后面接的是参数表。
returns 说明了函数返回的形式,返回就像我们前面定义的sentences那样的一行。
最后一句说明了我们这个程序文件是 udf/nlp_markup.sh ,输入是tsv的一行。
echo "postgresql://localhost:5432/deepdive_$USER" >db.url
#$符号是shell中用来表示变量的,所以这个蓝色部分大概就是 用户名@主机名:。。。。
#deepdive_spouse_$USER 我们这个项目的数据库名,也可以自定义。
1
2
3
aritcles(
id text,
content text
).
1
2
3
4
deepdive compile
1
deepdive do articles
1
deepdive query '?- articles(id, _).'
1
sentences(
doc_id text,
sentence_index int,
sentence_text text,
tokens text[],
lemmas text[],
pos_tags text[],
ner_tags text[],
doc_offsets int[],
dep_types text[],
dep_tokens int[]
).
1
2
3
4
5
6
7
8
9
10
11
12
function nlp_markup over (
doc_id text,
content text
) returns rows like sentences
implementation "udf/nlp_markup.sh" handles tsv lines.
1
2
3
4
5
资源评论
MadヽMax
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功