首先把需要下载的东西都列出来
1. 语料:下载地址是https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2,或者在这里找https://dumps.wikimedia.org/zhwiki/。这个文件只包含了标题和正文,不包含词条之间的链接信息,大小约为1.3G。
2.WikiExtractor:用于从原始的xml文件中提取出标题和正文。地址https://github.com/attardi/wikiextractor/blob/master/WikiExtractor.py。因为这个文件不依赖其他文件和库,就直接在本地新建一个脚本,再把WikiExtractor.py中的源码复制过来就行了。
3.繁体简体转换工具:由于词条原文本中可能混杂了繁体和简体,需要统一转换为简体。Linux下可以直接wget后在终端中使用,windows版本只能手动下载了,地址https://code.google.com/archive/p/opencc/downloads。下完直接解压就可以了。
此时有三个文件,分别是zhwiki-latest-pages-articles.xml.bz2,WikiExtractor.py,和文件夹opencc-0.4.2(链接:https://bintray.com/package/files/byvoid/opencc/OpenCC)。
1、首先我们要获得维基百科的中文语料库,这个文件非常大,需要慢慢下载;
下载地址为:https://dumps.wikimedia.org/zhwiki//
2、通过https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2
我们就得到了1.45GB的中文语料zhwiki-latest-pages-articles.xml.bz2
3、里面内容以xml格式保存,所以我们后续还是需要做处理的(转换为text文档)
这里抽取有两种方法:
(1)process_wiki.py 源码进行抽取(但是我试了好几次都没有成功,导入之后解析的text文件没有反应,倒是输出了一堆文档,不知道怎么回事)
训练方法:在文件目录下python process_wiki.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text
(2)WikiExtractor.py源码训练:https://github.com/attardi/wikiextractor/edit/master/WikiExtractor.py
命令行进入当前文件夹输入python WikiExtractor.py -b 500M -o extracted zhwiki-latest-pages-articles.xml.bz2
训练结果如图(大概需要一个多小时吧,后面非常慢):
一个小时后,跑完了,看:
500M代表提取出来的单个文件最大为500M。这是会产生目录extracted/AA,其中有三个文件分别是wiki_00,wiki_01,wiki_02
之后对文档进行转换:
2.命令行进入AA文件夹,假设opencc.exe的绝对路径是
E:下载语料opencc-0.4.2opencc.exe,输入
加上绝对路径之后得到三个文件:
我们看看这个文件的内容,明显有一些无用的符号,需要把它们去掉:
去掉这些没用的符号就是下图这样的,去掉了哈哈哈:
代码:
import re import sys import codecs def filte(input_file): p1 = re.compile('()') p2 = re.compile('《》') p3 = re.compile('「') p4 = re.compile('」') p5 = re.compile('<doc (.*)>') p6 = re.compile('</doc>') outfile = codecs.open('std_' + input_file, 'w', 'utf-8') with codecs.open(input_file, 'r', 'utf-8') as myfile: for line in myfile: line = p1.sub('', line) line = p2.sub('', line) line = p3.sub('', line) line = p4.sub('', line) line = p5.sub('', line) line = p6.sub('', line) outfile.write(line) outfile.close() if __name__ == '__main__': input_file = 'zh_wiki_02' filte(input_file) print("ok!")