Wikipediaのダンプファイルからタイトルと概要を抽出する
Wikipediaはデータベース・ダンプを提供している。Abstractをまとめたjawiki-latest-abstract.xml.gzも配布しているが、このデータは使いものにならない…w
そこでjawiki-latest-pages-articles.xml.bz2を使う。
このファイルをbunzip2コマンドで展開するとjawiki-latest-pages-articles.xmlを得る。
なお、展開したファイルのサイズは10GBを超えるため、ストレージの容量に注意する。
次のコードはjawiki-latest-pages-articles.xmlから有効なtitleとabstractを表示する。
#coding: UTF-8
import sys
import re
# 読み込むファイルの名前を指定する
file_name = 'jawiki-latest-pages-articles.xml'
# タグを削除する
def strip_tags(s):
return re.sub('<[^<>]*?>','',s)
# titleを取得する
def get_title(s):
title = ''
m = re.search('([^<>]+)',s)
if m: title = m.group(1)
return title
# 始めの文章をabstractとして取得する
def get_abstract(s,title):
abstract = ''
m = re.search("('''{}'''.+)\n\n".format(re.escape(title)),s)
if m: abstract = m.group(1)
return abstract
# titleとabstractを表示する
def get_data(s):
title = get_title(s)
if title=='': return
abstract = get_abstract(s,title)
if abstract=='': return
return (title,abstract)
# pageタグで切り出しながらファイルを読む
with open(file_name) as f:
s = ''
for l in f:
if '' in l: s = ''
elif '' in l:
data = get_data(s)
if data is not None: print(data)
else: s += l
2019/04/16 20:56