いなばにっき

とある大学助手のだらだら日記

スポンサーサイト

いなばにっきはblog.1783.orgに引っ越しました。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CDとDVD借りてきた

いなばにっきはblog.1783.orgに引っ越しました。

なんとなくメモ。
【CD】
Korn "GREATEST HITS VOL.1"
Gwen Stefani "Love Angel Music Baby"
サントラ "攻殻機動隊 Stand Alone Complex SOLID STATE SCIETY"
The Offspring "GREATEST HITS"

【DVD】
ボーン・コレクター
クライシス・オブ・アメリカ
ザ・スリーパー
スポンサーサイト

Smoke on water - Japan version

いなばにっきはblog.1783.orgに引っ越しました。

うわ、すげぇ。ちょっとしびれた。

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

いなばにっきはblog.1783.orgに引っ越しました。

先に作ったデータはあまりにも数が少ないので、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分くらい。

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

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

いなばにっきはblog.1783.orgに引っ越しました。

いろいろあって、結局自前で 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ファイル生成
・文書番号をファイル名としてテキスト部分を出力
・(余裕があれば)ディレクトリを掘る
・(さらに余裕があれば)文書数を見て、ナンバリングの桁数とディレクトリの深さを自動決定

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

いなばにっきはblog.1783.orgに引っ越しました。

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

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

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

Sambaサーバの運用

いなばにっきはblog.1783.orgに引っ越しました。

ブックマーク代わりにメモ。
Sambaサーバ構築、5つのべからず:2008年版(@IT)

いやぁ、お恥ずかしながらここ一年 Samba を触っていないし、触っていた時期もそんなに熱心に調査していなかったので、知らなかったこと多数。ドメインに絡むような使い方をしていなかったせいもあるけど。

そういえば、前の職場の Samba のバージョンは古かったなぁ(苦笑)。

Hyper Estraier on CentOS 5

いなばにっきはblog.1783.orgに引っ越しました。

全文検索の研究用に、テストサーバに Hyper Estraier をインストール。
テストデータを入手したらいろいろ試してみなくっちゃ。

とりあえずインストール手順(書くほどでもないけど)。


cd /usr/src
wget http://qdbm.sourceforge.net/qdbm-1.8.77.tar.gz
tar zxvf qdbm-1.8.77.tar.gz
cd qdbm-1.8.77
./configure
make
make install



cd /usr/src
wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz
tar zxvf hyperestraier-1.4.13.tar.gz
cd hyperestraier-1.4.13
./configure
make
make install



cd /var/www/cgi-bin
cp /usr/local/libexec/estseek.cgi ./
cp /usr/local/share/hyperestraier/estseek.* ./

検索結果の特定の部分だけ出力する

いなばにっきはblog.1783.orgに引っ越しました。

なんかこんなの絶対 grep とか awk とかのオプションでどうにかなるような気もするんだけど、「あるキーワードで検索した結果を、一行丸ごとでなくて特定のパターンにマッチした部分だけ取り出したい」という作業があって、とりあえず簡単に実現できそうな手段を明日の私のためにメモ。

具体的には、/var/log/maillog の特定のキーワード(たとえば reject したもの)がどこからきたメールなのか、というような検索。フィールドの場所が固定なら、awk '{print $1}' とかで全然いいんだけど、フィールドの場所が不定の場合、パターンマッチするしかない。

てことで、

#!/usr/bin/perl

$ptn = $ARGV[0];

while(<STDIN>){
if ($_ =~ /$ptn/)
{
print "$1\n";
}
}

みたいなスクリプトを準備しておいて(仮に patgrep というファイル名で作成)、

grep hogehoge /var/log/maillog | patgrep "from=<(.*?)>"

のようにしておくと、From= の HUGAHUGA 部分だけ取り出せてウマー。

いや、書いてて思ったけど、絶対こんなのある。標準的なコマンドで絶対どうにかなるはず。

でもって、新年度一発目の日記がこれなのがまたなんつーか。
とりあえず明日に向けてのメモでした。

Top

HOME

いなば

Author:いなば
とある私立大学のダラダラ助手。
機械には人格があると信じて疑わない。
最近、体脂肪率がすこ~し下がってとってもうれしい。

あわせて読みたい

にほんブログ村 教育ブログ 大学教育へ

ネットショップチャットレディSEO対策SEO誕生日プレゼントパワーストーン自動車

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。