接外包,有相关需求的可以联系我:Telegram | Email

DeepDive 使用教程

该文章创建(更新)于01/16/2021,请注意文章的时效性!

介绍

我是毕业设计需准备要搞这个东西,发现讨论的人挺少的,也没找到足够的文档,许多步骤并不是一蹴而就的,有着各种各样的坑存在!我这里就说说我整个流程以及碰到的一些步骤!仅供参考,鬼知道你那碰到了什么问题!还有到目前为止我都不清楚这玩意具体咋配置和使用的,目前给我的感觉就是语义分析(能运行的例子如此),能想到和自己应用数据结合的点就在网站关键字的提取这一点!至于具体呢!我还得多玩玩才清楚,这目前配置就只是能简单运行,连中文都还没搞定!

安装

基于CENTOS7

环境配置

  • 清华源 | 参考
  • 请配置代理,否则可能无法安装(githubcontent啥之类的无法访问,我当时白天可以访问,晚上就不行了,搞得我以为是Host配置问题,还修改重启了好几次),我自己用的虚拟机,所以在Win环境下找到VMnet8的IP地址,然后再虚拟机的网络设置里面把代理设置好即可! 实体机请参考:Linux下的代理工具:Qv2ray | Linux下的V2rayGUI客户端:V2rayL

  • git安装
yum install git

安装

deepdive

  • 安装(选1
bash <(curl -fsSL git.io/getdeepdive)
  • 添加配置环境变量
vi ~/.bash_profile 

内容如下

export PATH=~/local/bin:"$PATH"

  • 更新环境变量
source ~/.bash_profile 

postgres

  • 官方教程

不建议使用,我自己配置发现无法启动!而且不清楚密码账户之类的,更不用说运行了!

bash <(curl -fsSL git.io/getdeepdive) postgres
  • 自己安装

参考教程 |https://info.crunchydata.com/blog/how-to-get-started-with-pgbackrest-and-postgresql-12

sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 
sudo yum -y install postgresql12-server postgresql12-contrib pgbackrest


sudo /usr/pgsql-12/bin/postgresql-12-setup initdb 
sudo systemctl enable postgresql-12.service 
sudo systemctl start postgresql-12.service

#切换到数据库用户
sudo -iu postgres 
#sudo -iu postgres psql -U postgres -c 'SHOW config_file' 

psql
# 创建用户
ALTER USER emperinter WITH PASSWORD 'emperinter'
# 创建数据库
CREATE DATABASE deepdive_spouse_emperinter OWNER emperinter;
# 赋予用户数据库创建权限,后续do aritlces报错时发现的
alter user emperinter createdb;

  • 测试是否创建可以连接成功
psql -U emperinter -d deepdive_spouse_emperinter -h 127.0.0.1 -p 5432

使用

仅仅是能跑动,具体咋用的不清楚。还有一些按各种教程也得不到数据!emmm...其实也挺想使用Mysql的,看官网支持,但找到的教程都是postgresql

下载spouse_example例子

bash <(curl -fsSL git.io/getdeepdive) spouse_example

最终会得到如下的文件目录:

配置好postgresql

注意db.url在spouse_exam....文件夹下面

注意配置postgresql的url地址:

echo "postgresql://[email protected]:5432/deepdive_spouse_emperinter" > db.url

数据加载

数据也在spouse......下面

ln -s articles-1000.tsv.bz2 input/articles.tsv.bz2

deepdive处理中文

这一步骤仅作参考,拿中文试了一下,和参考的教程不一样,应该是配置失败了,具体就不去清楚了!还得多玩玩!我参考了两个教程:https://zhuanlan.zhihu.com/p/43143014https://codingcat.cn/pages/d1b01f/#%E9%85%8D%E7%BD%AE%E4%B8%AD%E6%96%87

由于deepdive默认是处理英文,因此需要做一些变动。 具体的做法:

  • https://nlp.stanford.edu/software/corenlp-backup-download.html 注意到最新的模型为stanford-chinese-corenlp-2018-02-27-models.jar,当前的version为3.9.1,注意高版本的后面编译加载之后会报错,还是建议选择低版本的模型stanford-chinese-corenlp-2016-01-19-models.jar。

  • 下载完成之后放入 /home/emperinter/spouse_example-0.8-STABLE/udf/bazaar/parser/lib

  • 执行如下命令对整个工程进行编译
cd ..  # 到paraser目录下
sbt/sbt stage

  • 执行如下通过postman进行测试
./run.sh -p 8080

以post方式请求数据,得到的结果如下:

wget --post-data="hello world " http://127.0.0.1:8080
head index.html

看结果应该是失败了!

[[email protected] bazaar]$ sudo wget --post-data="执行上面的处理命令 ,对articles中的全部内容进行处理的话需要较长时间(我跑了约40分钟),也挺占内存,可以在导入articles数据的时候进行一些限制,比如修改tsv只取前面几 条,或者导入postgresql之后另建一张表只取前面几条" http://127.0.0.1:8080
--2021-01-16 18:42:08--  http://127.0.0.1:8080/
Connecting to 127.0.0.1:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1327 (1.3K) [text/plain]
Saving to: ‘index.html.1’

100%[=========================================================================================================================================================================>] 1,327       --.-K/s   in 0s      

2021-01-16 18:42:08 (16.8 MB/s) - ‘index.html.1’ saved [1327/1327]

[[email protected] bazaar]$ head index.html.1 
1    执行上面的处理命令 ,对articles中的全部内容进行处理的话需要较长时间(我跑了约40分钟),也挺占内存,可以在导入articles数据的时候进行一些限制,比如修改tsv只取前面几条,或者导入postgresql之后另建一张表只取前面几条    {"执行上面的处理命令",",","对articles中的全部内容进行处理的话需要较长时间","(","我跑了约40分钟",")",",","也挺占内存",",","可以在导入articles数据的时候进行一些限制",",","比如修改tsv只取前面几条",",","或者导入postgresql之后另建一张表只取前面几条"}    {"执行上面的处理命令",",","对articles中的全部内容进行处理的话需要较长时间","(","我跑了约40分钟",")",",","也挺占内存",",","可以在导入articles数据的时候进行一些限制",",","比如修改tsv只取前面几条",",","或者导入postgresql之后另建一张表只取前面几条"}    {"CD","CD","NN","CD","CD","NN","CD","CD","CD","NN","CD","NN","CD","NN"}    {"NUMBER","NUMBER","O","NUMBER","NUMBER","O","NUMBER","NUMBER","NUMBER","O","NUMBER","O","NUMBER","O"}    {0,10,11,38,39,47,48,49,54,55,79,80,93,94}    {"number","num","","num","num","nn","num","num","num","nn","num","nn","num","dep"}{2,3,0,14,14,14,14,14,14,14,14,14,14,3}
[[email protected] bazaar]$ 


运行

deepdive compile

deepdive compile

deepdive do articles

如果提示:无法创建数据库,则请赋予empeinter数据库创建权限,详情请看下面的步骤!

deepdive do articles

会在vi模式显示一些配置,:wq 保持退出即可运行!会用到git同时会下载许多文件,注意联网配置及其是否需要代理!还有这东西运行花费的时间挺长的,有时候因为网络的问题还得多次运行!

当前步骤是将tsv中的文件导入到postgre中,为nlp做预备工作。

deepdive do sentences

步骤基本和上面的一样

deepdive do sentences


碰到的问题

psql: FATAL: Ident authentication failed for user “postgres”

find / -name pg_hba.conf 
vi /home/emperinter/postgres.db/pg_hba.conf #两个都可以尝试一下,我这里时改这个
service postgresql-12 restart  #重启服务
psql -U emperinter -d deepdive_spouse_emperinter -h 127.0.0.1 -p 5432#测试连接


play-json not found

  • 错误如下

....
2021-01-16 16:56:37.575683 [error] (*:update) sbt.ResolveException: unresolved dependency: com.typesafe.play#play-json_2.10;2.2.1: not found
2021-01-16 16:56:37.610570 [error] Total time: 18 s, completed Jan 16, 2021 4:56:37 PM
‘run/ABORTED’ -> ‘20210116/165556.512647289’
  • 修改build.sbt配置

看日志发现是配置在build.sbt文件中的,就各种测试,emm,最后没想到就是少打了一个s导致的,源文件中typesafe的网站是http协议,改成https协议就行了!你说惊喜不?

参考


要不赞赏一下?

微信
支付宝
PayPal
Bitcoin

版权声明 | Copyright

除非特别说明,本博客所有作品均采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。转载请注明转自-
https://www.emperinter.info/2021/01/16/deepdive/


要不聊聊?

我相信你准备留下的内容是经过思考的!【勾选防爬虫,未勾选无法留言】

*

*



微信公众号

优惠码

阿里云国际版20美元
Vultr10美元
搬瓦工 | Bandwagon应该有折扣吧?
域名 | namesiloemperinter(1美元)