首先感谢 :
1.https://blog.csdn.net/qq_39023569/article/details/88556301
2.https://www.cnblogs.com/CherishFX/p/5280259.html
3.https://www.cs.bgu.ac.il/~elhadad/nlp12/jwpl/wikification.html
4.https://blog.csdn.net/Icy233333/article/details/80383336
一。中文维基数据准备。
https://dumps.wikimedia.org/zhwiki/latest/
选择:
LANGCODE]wiki-[DATE]-pages-articles.xml.bz2
[LANGCODE]wiki-[DATE]-pagelinks.sql.gz
[LANGCODE]wiki-[DATE]-categorylinks.sql.gz
注:维基服务器限流,并且时不时会中断。可以直接使用linux 的 wget -c https://xxxxxxxxxxxxxxxxxxxx 方式实现可断点续接的下载。
下载完后放在一个文件夹下。 我放在 F:\zhwiki2019\~ 下。
二。下载JWPL DataMachine jar包解析数据文件
直接去maven库中下载整个jar-with-dependencies.jar。下载地址:http://search.maven.org/#search|ga|1|tudarmstadt.ukp
搜索de.tudarmstadt.ukp.wikipedia.datamachine对应的 jar-with-dependencies.jar 文件下载。
下载后和数据放在同一目录下。
三。打开cmd,cd到zhwiki2019目录下,输入以下命令解析。
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
我的命令:
java -Dfile.encoding=utf8 -cp de.tudarmstadt.ukp.wikipedia.datamachine-0.9.1-jar-with-dependencies.jar de.tudarmstadt.ukp.wikipedia.datamachine.domain.JWPLDataMachine chinese Contents Disambiguation_pages ~/zhwiki2019
如果你的系统默认编码不是utf-8(比如windows), 可能需要再加一个参数:-Dfile.encoding=utf8;
解析的时间看数据量的大小和你的cpu。之后会在output下生成11个txt.这11个txt就是之后要导入mysql的11个表。
这些文件的解释:
1 category --> 类别信息 2 pageId:类别ID,唯一 3 name:类别名 4 5 category_inlinks --> 指向类别的链接信息 6 id:类别ID,不唯一 7 inLinks:该类别父类ID,也就是指向该类别的类别ID 8 9 category_outlinks --> 类别指向的链接信息 10 id:类别ID,不唯一 11 outLinks:该类别子类ID,也就是该类别指向的那些类别的ID 12 13 category_pages --> 页面与类别的关系表 14 id:类别ID,不唯一 15 pages:属于该类别ID的页面ID 16 17 metadata --> 该wikipedia的一些元信息,只有一条记录 18 language:语言 19 disambiguationCategory:运行DataMachine填写的消歧类别 20 mainCategory:运行DataMachine填写的顶层类别 21 nrofPages:页面个数 22 nrofRedirects:重定向个数 23 nrofDisambiguationPages:消歧页面个数 24 nrofCategories:类别个数 25 version 26 27 page --> 页面信息 28 pageId:页面ID 29 name:名字 30 text:全文,包含wikimeida的标记信息 31 isDisambiguation:是否是消岐页面 32 33 page_categories --> 页面与类别的关系表与category_pages信息重复 34 35 page_inlinks --> 指向页面的页面信息 36 id:页面ID,不唯一 37 inLinks:指向该页面ID的页面ID 38 39 page_outlinks 40 id:页面ID,不唯一 41 outlinks:该页面ID指向的页面ID 42 43 page_redirects 44 id:页面ID,不唯一 45 redirects:重定向到该页面ID的所有页面ID 46 47 pagemapline --> 所有页面的title信息,处理重定向等有用处 48 id:该页面ID 49 name:页面title名字 50 pageID:页面ID,如果该页面是重定向页面,该pageID是其指向的那个包含信息的页面ID 51 stem:***暂无信息 52 lemma:***暂无信息