维基百科的语料库下载以及后续操作(一)2020年6月
写在前面的话:
我的并不是专业的,和很多小白一样都是导师硬逼的,大家都不容易,冤冤相报何时了。
导师不好相处,这里都是我自己踩的坑,一点点找到的解答方法,如果你有更好地方法,请一定要留言。拜托大佬教教我!!!
如果你和我一样都曾被老师逼的心肝难受,也请发泄出来,不要客气留言吧。
(一)下载维基语料库
https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2
打开连接会很慢,我是用迅雷接管了之后下的(PS:买的会员)
放在D盘合适位置就好,下载好的文件名默认就是“zhwiki-latest-pages-articles.xml.bz2”
(二)下载之后需要对其进行提取txt文件,并且进行繁体字转化,以及去除一些帮助页面和重定向的页面,处理程序为:参考了站内一位大神——残月飞雪的代码,但是因为我的python是3.7以上的版本,稍微修改了一些地方就可以正常使用了。真的超级感谢!
这里是原文链接:
https://blog.csdn.net/majinlei121/article/details/83183603?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
需要把这一块进行修改
1 2 3 | import sys reload(sys) sys.setdefaultencoding('utf8') |
改成如下即可(PS:我是用的Geany运行)
1 2 3 | import imp import sys imp.reload(sys) |
其他的具体代码除了第三步讲到的opencc就没有需要更改的了。(PS:我会在第四部分写全代码,不要怕)
(三)opencc避雷,这真的是一个大坑,
首先这个第三方库是真的太好了夸一波,因为wiki的语料库太大了,整理下来的txt文件是大约1.5G,记事本根本打不开,现有的繁简体在线转换和Word转换都不行。
但是这个库的下载真的是大坑,我试了得有半天,终于找到啦一个能用的命令行。
如下所示
1 | pip install opencc-python-reimplemented==0.1.4 |
我从接触python开始就不是正常学的,很匆忙一些基础的知识掌握的都不是很好,这是我的CMD显示pip安装成功的提示,我也用三两句代码实现了简繁转换,如下所示
这是我找的一个代码测试看opencc能不能用,结果是肯定的。
1 2 3 4 5 6 | from opencc import OpenCC cc = OpenCC('s2t') # convert from Simplified Chinese to Traditional Chinese(可以看一下自己下载的包里面会有这个s2t.json文件,代表简体转繁体,t2s代表繁体到简体) to_convert = '开放中文转换' converted = cc.convert(to_convert) print(converted) |
(四)全部代码如下
一定记得要把所有需要的第三方库都自己安装好
除了上面第二部分修改的,第三部分opencc也进行一些修改,我是Geany运行的,可以实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # -*- coding: utf-8 -*- #!/usr/bin/env python #import sys #reload(sys) #import importlib #importlib.reload(sys) import imp import sys imp.reload(sys) #sys.setdefaultencoding('utf8') from gensim.corpora.wikicorpus import extract_pages,filter_wiki import bz2file####记得安装呀!!! import re from opencc import OpenCC####修改过 from tqdm import tqdm import codecs wiki = extract_pages(bz2file.open('./zhwiki-latest-pages-articles.xml.bz2')) cc = OpenCC('t2s')###修改过 def wiki_replace(d): s = d[1] s = re.sub(':*{\|[\s\S]*?\|}', '', s) s = re.sub('<gallery>[\s\S]*?</gallery>', '', s) s = re.sub('(.){{([^{}\n]*?\|[^{}\n]*?)}}', '\\1[[\\2]]', s) s = filter_wiki(s) s = re.sub('\* *\n|\'{2,}', '', s) s = re.sub('\n+', '\n', s) s = re.sub('\n[:;]|\n +', '\n', s) s = re.sub('\n==', '\n\n==', s) s = u'【' + d[0] + u'】\n' + s return cc.convert(s).strip()####修改过 i = 0 f = codecs.open('00000wiki.txt', 'w', encoding='utf-8')####自己改名字就好了!叫狗蛋都行 w = tqdm(wiki, desc=u'已获取0篇文章') for d in w: if not re.findall('^[a-zA-Z]+:', d[0]) and d[0] and not re.findall(u'^#', d[1]): s = wiki_replace(d) f.write(s+'\n\n\n') i += 1 if i % 100 == 0: w.set_description(u'已获取%s篇文章'%i) f.close() |