Tag-Archive for » Wikipedia «

Wikipedia の XML データからリダイレクトの項目以外のものを出力する

月曜日, 5月 12th, 2008 | Author:

作業めもめも。

#!/usr/bin/ruby

target = ARGV[0]

redirectFlag = false
buffer = String.new

fh = open(target)
fh.each { |line|
buffer += line

if /<comment>redirect</comment>/ =~ line
redirectFlag = true
end

if /</page>/ =~ line
print "#{buffer}n" if redirectFlag == false
buffer = ""
redirectFlag = false
end
}

実行

./delredirect.rb jawiki-20070903-pages-articles.xml

全件対象にして、8分ほどで出力終了。

grep '<page>' noredirect.xml | wc -l

で調べてみると、774490件。おかしいな。動作確認用にWikipediaの小さなサンプルを作ってみるで確認したデータと見比べても件数が減っていなさすぎる。
むむぅ。要再検討だな。

Category: めも, 日記, 研究  | Tags: , ,  | Leave a Comment

動作確認用にWikipediaの小さなサンプルを作ってみる

金曜日, 4月 25th, 2008 | Author:

先に作ったデータはあまりにも数が少ないので、Wikipedia から適当な数のサンプルを生成する必要がありそう。
てことで、件数を指定すると、その数のサンプルを生成するスクリプトを準備しておくことに。

先日落としてきたWikipedia 日本語版の件数は、486,137件。ただし、リダイレクトやノートなどを含めると、1,205,158件。(2008/4/25時点)

念のため

grep "<page>" jawiki-20070903-pages-articles.xml | wc -l

で調べてみる

1分ほどで終了。776140 件。あれー。どっちの数とも違う。むむぅ。
てことは、手元のデータは、記事+リダイレクトとみていいんだろうか。
うーむ。

悩んでても仕方ないので、先に進む。

そんなに細かくやる必要もないので、ざっくりと等間隔抽出で。
一応、いくつかサンプルを作る可能性があるので、引数で「何件のサンプルを作るのか」をいじれるようにしておく。あと、今のところ、<page>の数は決め打ちだけど、今後のことを考えると、これも一度データをなめて動的に生成するほうがいいな。
出力時、前後に <mediawiki>~</mediawiki>を追加する。
出力先は標準出力にしているので、適宜リダイレクトしてファイルに落とす方向で。

ということで、<page>~</page>の範囲だけを、指定された数、ランダムに出力するスクリプト。

#!/usr/bin/ruby

limit  = ARGV[0]
target = ARGV[1]

$stderr.print "#{target}から#{limit}件抽出しますn"

interval_tmp = 776140 / limit.to_i
interval = interval_tmp.round
$stderr.print "抽出間隔は #{interval} ですn"

srand
start = rand(interval)
$stderr.print "#{start} から始めますn"

needles = Array.new

i=start
while i < 776140
needles.push(i)
i += interval
end

#puts needles

print "<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.3/ http://www.mediawiki.org/xml/export-0.3.xsd" version="0.3" xml:lang="ja">n"

flag = false
buffer = String.new

pageCounter = 0
fh = open(target)
fh.each{|line|
if /<page>/ =~ line
pageCounter += 1
if needles.include?(pageCounter)
flag = true
end
end

if flag == true
buffer += line
if /</page>/ =~ line
print "#{buffer}n"
flag = false
buffer = ""
end
end
}
print "</mediawiki>n";
fh.close

ざっくり100件回してみて2分くらい。1000件だと3分。10000件だと20分くらい。

これでようやくサンプルができたので、このサンプルから、いよいよプレーンテキスト化を本格的に考える。はず。

Category: 日記, 研究  | Tags:  | Leave a Comment

Wikipedia のデータをテキストファイルにするメモ(2)

金曜日, 4月 25th, 2008 | Author:

いろいろあって、結局自前で ruby でやってみることにしてみる。

・欲しいのは、タイトルと本文部分だけ。
・text の中身の整形については別途考える

#!/usr/bin/ruby
require "rexml/document"
require "iconv"
$KCODE="UTF-8"

source = ARGV[0]
xml = REXML::Document.new(File.open(source))

みたいなかんじでとりあえず読み込んでみるだけのテスト。

一時間経過…。

ぐは。読み込みだけなのに時間かかってしょうがねぇ。
とりあえず小さなサンプルデータを作ってみる。

サンプルデータでは成功。
んでもって、テキストとタイトルを抜き出してみるテスト。

#!/usr/bin/ruby
require "rexml/document"
require "iconv"
$KCODE="UTF-8"

source = ARGV[0]
xml = REXML::Document.new(File.open(source))
xml.elements.each("mediawiki/page"){|page|
title = page.text("title")
text  = page.text("revision/text")
print "#{title}n#{text}n"
}

ばっちおっけー。

さらに、Wikipedia のモノホンデータの最初と最後をくっつけたサンプルデータ(モノホン風味)を作成して、同じスクリプトで回してみる。

さらにおっけー。

あとやるべきこと。
・文書番号ナンバリング
・タイトルと文書番号を関連付けたTSVファイル生成
・文書番号をファイル名としてテキスト部分を出力
・(余裕があれば)ディレクトリを掘る
・(さらに余裕があれば)文書数を見て、ナンバリングの桁数とディレクトリの深さを自動決定

Category: 日記, 研究  | Tags:  | Leave a Comment

Wikipedia のデータをテキストファイルにするメモ(1)

水曜日, 4月 23rd, 2008 | Author:

研究用のサンプルデータとして、とりあえず Wikipedia 日本語版を考えています。
現状、Wikipedia のデータは Wikipedia:データベースダウンロードにあるように、http://download.wikimedia.org/jawiki/ から入手できます。

このデータは、圧縮された巨大な XML データなんですが、全文検索のサンプルにすることを考えると、プレーンテキストになっている方が扱いやすい。てことで、同志社大学言語文化教育研究センターの長谷部 陽一郎先生が書かれた WP2TXTを使う予定です。

ちょっと今日時間が取れるか微妙なので、場合によっては明日に続く、かも。

Category: 日記, 研究  | Tags: ,  | Leave a Comment

EeePC 発売情報

金曜日, 1月 11th, 2008 | Author:


アドテック、WindowsXP・日本語版のASUSTek製EeePCを発売だそうで。

これはかなりぐっときちゃうなぁ。XPのライセンスと2GBのメモリがついて 50,800 円ですよ。Home エディションなのがいまいちだけど、量販店では20,000円越えなわけで、そこからさらにメモリの金額入れたら、いやこれ本体いくらなのよ、的な金額になってます。これ、うちの学生さんなんかにどうかな。Office動かすのはキツイかも知れんけど。

EeePCについてはこのへんで。せっかくならWindows非搭載版がでるのを待つというのも手なのかも。出るのかな、出ないかも。あと、4月には次期モデルが出るという噂も。4月に出るなら、6月のボーナスという手もあるか(あるのか?)。

Category: 日記, 物欲  | Tags: ,  | One Comment

変な写真二枚

木曜日, 11月 29th, 2007 | Author:

こちらは、先日マウス置き場をゴソゴソしていて偶然発見したシロモノ。一件何の変哲もないPS/2マウスなんですが何かヘン。なにやらゲートウェイのロゴとマイクロソフトのロゴが書いてあるけどそれは、ま、いいか。OEMってこともあるよね。
でも、さらによ~く見るとマウスのくせにコネクタが紫。なんでやねんと。マウスのコネクタの色は紫 マウスのコネクタの色は緑、と決めたのは君んとこちがうんかい。

こちらは、とある業者さんのお土産の「白い恋人」。最近販売再開したとのことで、現状北海道のお土産としては最高にホットな一品(笑)。すべての袋の裏に製造年月日が印刷されているのがさらにアツイ。

Category: 日記  | Tags: ,  | 2 Comments

横浜散策

水曜日, 8月 15th, 2007 | Author:

昼前に東京電力に来てもらって、自宅のブレーカーを 40A に変更してもらいました。
これまで、レンジ+クーラーとか、食洗機+クーラーとかの組み合わせでボンボンブレーカーが落ちていたけど、これでようやく安心して夏を過ごせるかも知れず。

昼から、家族で横浜散策。本来の目的は元町散策だったんだけど、途中でやっぱお腹減ったねということでチャイナパーキングに車をおいて萬珍樓の南門シルクロード店の二階で飲茶。
うちはいろいろと食物アレルギー関係がめんどくさい家族なんですが、かなりきちっと対応していただいて感謝。おいしかったし。お値段も思ったほど行かなかったし。久しぶりにちゃんとした飲茶ができて満足。

その後、港の見える丘公園に移動、と思っていたら、カーナビを見ていたムスメが発見した横浜ブリキのおもちゃ博物館に立ち寄ることに。
3000点ほどのコレクションもさることながら、ブリキのおもちゃのことを「この子」と呼び、熱く熱くそれらの説明をしてくれた係のお姉さんに激しく感動。なんつーか、おもちゃに対する愛がもう、隠しきれないほどにダダ漏れ。マヂ感動。

で、博物館を出てからようやく公園に到着。中にある大佛次郎記念館でお茶を飲んでから公園散策。あんまり人の多くない穏やかな公園なんですが、なんだかうちのムスメ的には、このくらいのほうが向いているみたいで、非常にリラックスして遊べた模様。うむ。満足。

いい時間になったので帰宅、となったタイミングでムスメが「絵本買いたい」と言い出す。考えてみたら今日は三日に一度ある本の日(決めておかないと毎日でも本を買いたいムスメ)。しょうがないので、帰宅途中にLibloに寄って子供向け雑誌購入。
どーでもいいですが、あの手の雑誌の付録の紙工作ってすごいっすね。あのデザインを毎月毎月やっている人がいるのかと思うとめまいがします。まぁ、それを毎月毎月作らされている我々両親も十分エライと思うわけですが(汗)。

Category: 日記  | Tags: , ,  | One Comment