跳转至

Wikipedia python extract

本文总阅读量次 ,原创教程,严禁转载

使用wikiextractor提取语料

为了读取其中的文本信息,我们需要借助提取工具,WikiExtractor 是一款不错的开源提取工具,使用该工具,可以方便地处理语料库,输出为想要的存储格式。首先使用以下命令安装该工具:

git clone https://github.com/attardi/wikiextractor
cd wikiextractor
python setup.py install
wikiextractor 会把整个语料库分割为指定大小的文件,文件的格式默认为 xml 格式,具体格式如下:

<doc id="xxx" url="xxx" title="xxxx">
xxxxx
</doc>

<doc id="xxx" url="xxx" title="xxxx">
xxxxx
</doc>

<doc id="xxx" url="xxx" title="xxxx">
xxxxx
</doc>

每个生成的文件包含若干个词条。要生成 xml 格式的语料,可以使用以下命令:

WikiExtractor -o extracted_xml --process 2 -b 512K zhwiki-latest-pages-articles.xml.bz2

-o 用来指定输出目录,--process 用来指定使用的进程数目(默认为 1),-b 选项用来控制单个生成文件的大小(默认为 1M,文件越大,包含的词条也越多),最后的参数为要处理的原始压缩语料文件名称。程序运行完成以后,在输出目录下面会生成多个子目录,每个目录下面有一些生成的文件。

如果要生成 json 格式的语料文件,只需要加上 --json 选项:

WikiExtractor -o extracted_xml --process 2 -b 512K --json zhwiki-latest-pages-articles.xml.bz2

每个生成的文件中,每行对应一个以 JSON 格式存储的词条,格式如下:

{"id": "xxx", "url": "xxx", "title": "xxx", "text": "xxxxxx"}

其中 text 对应的是某个词条的真正内容。

如何提取 JSON 格式字符串中的 text 内容?可以使用json.loads()方法将符合 JSON 格式的字符串转换为 Python 中的字典。例如

In [6]: s = '{"apple": 1, "bananas": 2, "pear": 2.5}'

In [7]: json.loads(s)
Out[7]: {'apple': 1, 'bananas': 2, 'pear': 2.5}

下面给出一个简单读取一个文件所有词条 text 并且整合的代码:

texts = ""
# file is a generated file
with open(file, encoding='utf-8') as f:
    # each line in the file is a wiki page
    for line in f:
        # read the line as valid json and select text field
        text = json.loads(line)['text']
        texts += text
根据自己的需要,可以把每一行的 text 存为新的文件,或者把原来文件里面的所有词条的 text 合在一起存为一个新文件。

reference
  • https://jdhao.github.io/2019/01/10/two_chinese_corpus/