一、DeepDive简介
DeepDive是信息抽取的工具,它可以从各种dark data(文本、图片、表格)中将非结构数据抽取到关系数据库中。DeepDive的主要功能是抽取dark data中的实体以及实体之间的关系。
DeepDive文档:
DeepDive GitHub:
https://github.com/HazyResearch/deepdive
二、DeepDive安装
DeepDive有三种安装方式,Docker镜像安装、快速安装、源包安装
采用快速安装的方式进行,机器系统为CentOS-7.3.1611
1.bash <(curl -fsSL git.io/getdeepdive) deepdive //安装deepdive包
1.1 vi ~/.bash_profile //编辑bash_profile文件,将deepdive命令加入当前user环境
1.2 export PATH=~/local/bin:"$PATH" //将这句追加到bash_profile
1.3 source ~/.bash_profile //使配置生效
2.bash <(curl -fsSL git.io/getdeepdive) spouse_example //安装spouse demo包
3.安装postgre作为关系数据库(刚开始想使用mysql,但是deepdive文档中说 minimal support mysql,所以还是使用推荐的postgre),使用bash <(curl -fsSL git.io/getdeepdive) progres 安装会有各种权限的问题,建议使用root用户安装
3.1 yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm //添加RPM
3.2 yum install postgresql95-server postgresql95-contrib //安装PostgreSQL 9.5
3.3 /usr/pgsql-9.5/bin/postgresql95-setup initdb //初始化数据库
3.4 systemctl enable postgresql-9.5.service //设置开机启动
3.5 systemctl start postgresql-9.5.service //启动服务
3.6 修改用户密码
su - postgres 切换用户,执行后提示符会变为 '-bash-4.2$'
psql -U postgres 登录数据库,执行后提示符变为 'postgres=#'
ALTER USER postgres WITH PASSWORD 'abc123' 设置postgres用户密码
\q 退出数据库
3.7 开启远程访问
vi /var/lib/pgsql/9.5/data/postgresql.conf
修改#listen_addresses = 'localhost' 为 listen_addresses='*'
3.8 信任远程连接
vi /var/lib/pgsql/9.5/data/pg_hba.conf
修改如下内容,信任指定服务器连接
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
3.9 打开防火墙
CentOS 防火墙中内置了PostgreSQL服务,配置文件位置在/usr/lib/firewalld/services/postgresql.xml,我们只需以服务方式将PostgreSQL服务开放即可。
firewall-cmd --add-service=postgresql --permanent 开放postgresql服务
firewall-cmd --reload 重载防火墙
3.9+ 重启PostgreSQL数据服务
systemctl restart postgresql-9.5.service
4 spouse测试
4.1 载入数据
4.1.1 psql -U postgres -h localhost //输入密码本地连接postgre
4.1.2 键数据库并赋予用户postgres权限
postgres=# CREATE DATABASE exampledb OWNER postgres;
postgres=# GRANT ALL PRIVILEGES ON DATABASE exampledb to postgres;
postgres=# \c exampledb;
postgres=# ALTER SCHEMA public OWNER to postgres;
postgres=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO postgres;
postgres=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO postgres;
4.2 spouse项目配置
4.2.1 postgresql://postgres@localhost:5432/exampledb //打开db.url,将远程链接地址加进去
4.2.2 deepdive create table articles //创建articles表,文档说自动创建,但是尝试多次都没有建表,使用命令主动创建
4.2.3 在app.ddlog中定义如下schema,记得将原文件内容删除
articles(
id text,
content text
).
4.2.4 deepdive compile //编译
4.2.5 deepdive load articles input/articles-1000.tsv.bz2 //将1000文章载入
4.2.6 deepdive query '?- articles(id, _).' //测试,查询到一堆id代表加载成功,去postgre表中会看到数据加载进来了
4.3 对输入加工(待完成)
4.4 运行模型 (待完成)
5. 坑
5.1 在处理tsv文件时候会遇到如下问题
error while loading shared libraries: libbz2.so.1.0: cannot open shared object file
解决方法:
sudo yum install bzip2-devel
sudo ln -s `find /usr/lib64/ -type f -name "libbz2.so.1*"` /usr/lib64/libbz2.so.1.0
5.2 postgre权限问题
使用deepdive安装postgre会遇到很多权限问题,建议使用root用户自行安装,配置好远程连接权限就ok了