Wikipediaのリダイレクト一覧を言い換えリスト化

Wikipediaデータベース日本語版jawiki-latest-stub-articles.xml.gz(pages-articles.xmlの本文を除いた版)から記事IDと記事タイトルを取得して, その情報をもとにjawiki-latest-redirect.sql.gz(リダイレクト先一覧)のリダイレクト元記事IDを記事タイトルに置換して読みやすくするスクリプトを書きました。
出力結果からゴミデータを除けば、同義語辞書、あるいは言い換えリストに加えることができるかもしれません。

# -*- coding: utf-8 -*-
 
# Wikipediaの記事id-titleペア情報を使ってリダイレクト一覧を見やすくする
# 
# jawiki-latest-stub-articles.xmlから記事id-titleペア情報を取得し,
# リダイレクト一覧のリダイレクト元記事idを記事titleに書き換える
 
import re
 
re_tag_extract = re.compile('>(.*)</')
re_parentheses_extract = re.compile("\(([0-9]+,[0-9]+,[^,]+,[^,]+,\'[^\']*\')\)")
 
# jawiki-latest-stub-articles.xmlから記事idとtitleの辞書を生成
"""
jawiki-latest-stub-articles.xmlの内容例
<page>
  <title>哲学</title>
  <id>110</id>
  <revision>
    <id>28432395</id>
    <timestamp>2009-10-11T11:11:19Z</timestamp>
    <contributor>
      <ip>202.95.44.163</ip>
    </contributor>
    <comment>/* 外部リンク */ [[Wikipedia:外部リンクの選び方]]参照</comment>
    <text id="28286198" />
  </revision>
</page>
"""
title_flag = False
id2title = {}
with open('jawiki-latest-stub-articles.xml','r') as wiki_stub_articles:
	for line in wiki_stub_articles:
		if '<title>' in line:
			title = ''.join(re_tag_extract.findall(line))
			title_flag = True
		elif '<id>' in line:
			if title_flag:
				wikiid = ''.join(re_tag_extract.findall(line))
				id2title[wikiid] = title
			title_flag = False
 
# jawiki-latest-redirect.sqlからデータを抽出
"""
jawiki-latest-redirect.sql内容例
(407868,0,'色空間','','')
"""
with open('jawiki-latest-redirect.sql','r') as wiki_redirect:
	redirects = re_parentheses_extract.findall(wiki_redirect.read())
 
# リダイレクトデータの記事idを記事タイトルに置き換える
"""
置換例
X.v.Color,0,'色空間','',''
"""
result = []
for redirect in redirects:
	columns = redirect.split(',')
	if id2title.has_key(columns[0]):
		columns[0] = id2title.pop(columns[0])
		result.append(','.join(columns))
 
# wikisynonym.csvに結果を書き込む
with open('wikisynonym.csv','w') as wikisynonym:
	wikisynonym.write('\n'.join(result))