首先感谢无私分享的各位大神,文中很多内容多有借鉴之处。本次将自己的实验过程记录,希望能帮助有需要的同学。

一、从下载数据开始

    现在的中文语料库不是特别丰富,我在之前的文章中略有整理,有兴趣的可以看看。本次实验使用wiki公开数据,下载地址如下:

        wiki英文数据下载:https://dumps.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz2

        wiki中文数据下载:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2

二、英文数据处理

    1.抽取文本        wiki数据内容比较复杂,所以在处理之前需要做一些预处理。通过 process_wiki.py 将wiki数据中的每一篇文章转为1行文本。

     执行下行命令:

'''
process_wiki.py    处理程序
enwiki-latest-pages-articles.xml.bz2    英文wiki数据
wiki.en.text    输出的文本文件
'''
python process_wiki.py enwiki-latest-pages-articles.xml.bz2 wiki.en.text

process_wiki.py

 1 #--*-- coding:utf-8 --*--
 2 
 3 from __future__ import print_function
 4 
 5 import logging
 6 import os.path
 7 import six
 8 import sys
 9 
10 from gensim.corpora import WikiCorpus
11 #import WikiCorpus
12 
13 if __name__ == '__main__':
14     program = os.path.basename(sys.argv[0])
15     logger = logging.getLogger(program)
16 
17     logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
18     logging.root.setLevel(level=logging.INFO)
19     logger.info("running %s" % ' '.join(sys.argv))
20 
21     # check and process input arguments
22     if len(sys.argv) != 3:
23         print("Using: python process_wiki.py enwiki.xxx.xml.bz2 wiki.en.text")
24         sys.exit(1)
25     inp, outp = sys.argv[1:3]
26     space = " "
27     i = 0
28 
29     output = open(outp, 'w')
30     wiki = WikiCorpus(inp, lemmatize=False, dictionary={})
31     for text in wiki.get_texts():
32         if six.PY3:
33             output.write(bytes(' '.join(text), 'utf-8').decode('utf-8') + '\n')
34         #   ###another method###
35         #    output.write(
36         #            space.join(map(lambda x:x.decode("utf-8"), text)) + '\n')
37         else:
38             output.write(space.join(text) + "\n")
39         i = i + 1
40         if (i % 10000 == 0):
41             logger.info("Saved " + str(i) + " articles")
42 
43     output.close()
44 logger.info("Finished Saved " + str(i) + " articles")
View Code

相关文章: