DeepDive-信息抽取工具安装教程

一、DeepDive简介

DeepDive是信息抽取的工具,它可以从各种dark data(文本、图片、表格)中将非结构数据抽取到关系数据库中。DeepDive的主要功能是抽取dark data中的实体以及实体之间的关系。

DeepDive文档:

http://deepdive.stanford.edu/

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了