使用JWPL来操作维基百科数据源

因为要做信息抽取,老师给的数据源是Wikipedia,所以需要去下载Wikipedia的数据源并将其保存为结构化数据便于操作。经过多方面的资料查找,总算成功,现在把过程以及各方面资料整理综合记录一下。
参考资源:1.https://blog.csdn.net/Icy233333/article/details/80383336

2.https://www.cnblogs.com/CherishFX/p/5280259.html

3.https://dkpro.github.io/dkpro-jwpl/

第一步 下载维基百科数据源

这里我们主要是需要下载维基百科的英文数据,可以去
https://en.wikipedia.org/wiki/Wikipedia:Database_download 查看你所需要的数据文件,下载网址为https://dumps.wikimedia.org/enwiki/ ,这里我们需要下载三个文件

[LANGCODE]wiki-[DATE]-pages-articles.xml.bz2
[LANGCODE]wiki-[DATE]-pagelinks.sql.gz
[LANGCODE]wiki-[DATE]-categorylinks.sql.gz

[LANGCODE]表示选择你需要的版本(enwiki表示英文版,zhwiki表示中文版),[DATE]表示文件日期(我选择的是latest表示近期的文件),然后把这些文件放入一个目录中,比如~/En2019

第二步 下载JWPL DataMachine jar包解析数据文件

2.1 直接去maven库中下载整个jar-with-dependencies.jar。下载地址:http://search.maven.org/#search|ga|1|tudarmstadt.ukp
搜索de.tudarmstadt.ukp.wikipedia.datamachine对应的 jar-with-dependencies.jar 文件下载。

2.2 配置java环境 在这就不多说了,贴一个链接照着弄个就好了
https://www.runoob.com/java/java-environment-setup.html

2.3 通过下载的DataMachine jar包 解析下载的历史数据
命令
进入cmd命令行,输入以下(最好是cd到 ~/En2019 路径下面)

java -cp jar-with-dependencies.jar de.tudarmstadt.ukp.wikipedia.datamachine.domain.JWPLDataMachine 
[LANGUAGE] [MAIN_CATEGORY_NAME] [DISAMBIGUATION_CATEGORY_NAME] [SOURCE_DIRECTORY]
LANGUAGE: 指jwpl支持的语言,选择一个你下载的wikipedia语言,比如english, chinese
MAIN_CATEGORY_NAME: 填写一个Wikipedia类别层次上属于顶层的类别,比如:Contents
DISAMBIGUATION_CATEGORY_NAME: 填写一个有消歧类别的类别名,比如:Disambiguation_pages
SOURCE_DIRECTORY: 上面三个wikipedia文件的目录,比如: ~/En2019

注意!!!这些文件要放在同一个路径下,最好就和数据一起放在~/En2019 目录下面,不然运行会报错。
如果你的系统默认编码不是utf-8(比如windows), 可能需要再加一个参数:
-Dfile.encoding=utf8 flag.

这里贴上我的运行代码

java -Dfile.encoding=utf8  -cp de.tudarmstadt.ukp.wikipedia.datamachine-0.9.1-jar-with-dependencies.jar de.tudarmstadt.ukp.wikipedia.datamachine.domain.JWPLDataMachine english Contents Disambiguation_pages ~/En2019

DataMachine jar解析维基百科数据会需要运行很长时间,我自己的电脑是跑了快35h,大概一天的时间多点。运行完以后会在SOURCE_DIRECTORY目录下生成一个output目录,该目录里面有11个文件,这11个文件就是需要导入到mysql中的结构化数据了,解析完大概60个G左右的txt文件,记得提前在磁盘留足够的空间。文件如下:
在这里插入图片描述

第三步 创建相应的数据库

3.1 数据库安装
这里我们选的 mysql5.x 的版本安装(版本有要求),同样的贴一个安装链接
https://dev.mysql.com/downloads/mysql/
在这里插入图片描述
安装好了数据库,配置环境变量,然后通过root用户进入mysql,新建一个用户username(自己取名),授权。

新建用户
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
授予所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
刷新
flush privileges;
查看用户权限:
show grants for 'username'@'localhost';

3.2 创建所有的表
下载包含所有表结构的sql脚本:jwpl_tables.sql 脚本,在mysql命令下执行改脚本:

mysql> use [DB_NAME]; #你新建的数据库 如 wikidb
mysql> source ~/jwpl_tables.sql;  #注意jwpl_tables.sql所在的路径 我的是在G盘所以是 source g:/jwpl_tables.sql;

在这里插入图片描述
3.3 数据库的一些相关问题

3.3.1因为我们的数据上传到数据库是存在mysql data目录下的,可以通过命令

mysql>show global variables like "%datadir%"

来查看你的数据库文件存放目录,我这里是在C盘,空间不够,所以需要修改data路径,将数据库data移到其他空间足够的盘,具体可以参考 https://blog.csdn.net/wangyan_z/article/details/81089211 ,来修改你的data路径,这里不过多说明。

3.4 导入数据到mysql中
这里我是一个表一个表的导入,进入之前创建的用户的数据库 如wikidb
这里是将Category.txt导入表category中。

mysql> load data infile 'G:/En2019/output/Category.txt' into table category;

注意:在导入过程中,可能会报secure-file-priv错,参考博客:
https://blog.csdn.net/qq_35246620/article/details/78148505 即可解决。

第四步 :在Eclipse中使用JWPL jar包去访问维基百科数据

4.1 安装Eclipse
https://blog.csdn.net/lynn_kun/article/details/72847536

4.2 下载JWPL Wikipedia API
直接去maven库中下载整个jar-with-dependencies.jar。下载地址:http://search.maven.org/#search|ga|1|tudarmstadt.ukp
搜索de.tudarmstadt.ukp.wikipedia.api对应的 jar-with-dependencies.jar 文件,下载。

4.3 下载JWPL的源码
下载地址:https://github.com/dkpro/dkpro-jwpl

4.4 在Eclipse中使用JWPL jar包
在Eclipse中创建一个java project,然后导入(4.1)中下载的jar包(de.tudarmstadt.ukp.wikipedia.api-1.0.0-jar-with-dependencies.jar):
在这里插入图片描述
导入(4.2)中下载的JWPL源码(dkpro-jwpl-master.zip):
在这里插入图片描述
4.5 在Eclipse中使用JWPL jar包去访问维基百科数据
具体代码示例参考 https://www.cnblogs.com/CherishFX/p/5280259.html
根据自己的需要编写相关代码进行操作

4.6 一些问题
在最初程序运行的时候会报各种各样的debug错误提示,这是由于我们直接从下载的数据库脚本中恢复出的数据库中有各种信息的丢失,比如index,foreign key constraints等,此时,应按照提示的debug信息对相应的数据库表进行操作。比如我碰到的错误提示有:

DEBUG SchemaUpdate:226 - create index nameIndex on Page (name)
解决办法:直接按照提示在数据库中对表Page中的name列创建索引。

mysql> create index nameIndex on Page (name);

所有过程到此结束。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值