hirax.net::Keywords::「プログラマー」のブログ



1999-07-22[n年前へ]

失楽園殺人事件の犯人を探せ 

文章構造可視化ソフトのバグを取れ

 今回は
夏目漱石は温泉がお好き? - 文章構造を可視化するソフトをつくる - (1999.07.14)
の続きである。やりたいことは以下の3つ

  1. WordFreqのバグを取る。
  2. 定量化に必要な数値を出す。
  3. とにかく遊んでみる。
である。まずは、プログラムのバグを取ろう。前回、プログラム中にバグがあると書いたが、問題は私がbmonkey氏の正規表現を使った文字列探索/操作コンポーネント集ver0.16の仕様を勘違いしていたことによるものだった。ファイルにGrepを書けた際に、テキストファイル中の一行中に複数の適合する単語が存在した場合に、本来、一番最初に適合した単語の文だけが「適合する単語があったよ」と知らせてくれるのであるが、それを単語全部について教えてくれるものと勘違いしていたのだ。従って、一行中に探す単語が複数登場する場合には結局1回分しかカウントされなかったのである。まずはそれを直してみたい。「GrepでMatchした行中に改めて目的の単語が何回登場するかを調べる」という2段階にすることで今回の問題は解決する。

WordFreq.exe 1999.07.21Make版 wordfreq.lzh 338kB

 本WEBサイトのモットーは「質より量」である。...これはちょっと何だな...「下手な鉄砲も数撃ちゃ当たる」...これもちょと...「転がる石に...(もちろん日本版でなくて西洋版のだ)」といった方がニュアンスが良いかな?... 転がる石は精度を求めないのである。数をこなせば精度が悪くてもいい方角に転がっていくと思っているのだ。モンテカルロ理論である。「遊び」だし。というわけで、これはバグがあった言い訳である。

 さて次は、「定量化に必要な数値を出す」である。前回の題目で使った「ホトトギス」版「坊っちやん」のダウンロード元のWEBの作成者である木村功氏より、前回の話以後にいくつかアドバイスを頂いた。それが「定量化するにはどのようにしたら良いか」ということであった。それについては、最低限の機能をつけてみた。やったのはただひとつ。出現頻度の分散を計算するようにしただけである。この数値と出現平均値を用いて、色々な文章を解析すれば、このプログラムの返す値の出現分布の分散・平均値・有意水準などを導くことができるだろう。色々な時代の、色々な作家の、色々なジャンルの文章を解析し、それらから得られた値を調べてみればもしかしたら面白いことがわかるかもしれない。

 それでは、今回のプログラムを使って遊んでみよう。

 今回用いるテキストは小栗虫太郎の「失楽園殺人事件」だ。
青空文庫 ( http://www.aozora.gr.jp/)
から手に入れたものだ。今回のタイトルどおり、「失楽園殺人事件」において「犯人」を探してみよう。

「失楽園殺人事件」において「犯人」を探したもの

 ラストのほうに向かうに従い犯人の登場が増えて、山場を迎えているのがわかるだろう。「犯人」で検索したら次は探偵の番だ。「法水」で検索し、探偵がきちんと働いているか見てみよう。

「失楽園殺人事件」において「法水」を探したもの

 なかなか出ずっぱりで活躍している。もちろん、探偵役もラストでは活躍しているようだ。

 ここまで見ていただくとわかるだろうが、画面は前回のバージョンとほとんど同じである。前回は、1物理行あたり検索単語は1個までしか見つからなかったが、今回はきちんと複数見つかっているのがわかると思う。1物理行中でもきちんと結果が出るようになったおかげで、文章中から「。」を検索すると、物理行(段落と近いもの)中に含まれる「文」の数を調べることが出来る。妙に長い文節の出現頻度などを調べることが出来るのだ。こういったものは定量化にふさわしいのではないだろうか?

「失楽園殺人事件」において「。」を探したもの

 また、C++プログラマーのあなたは自分のプログラム中から「//」などを検索すると面白いのではないだろうか。コメントの出現頻度が手に取るようにわかるだろう。

 というわけで、今回はバグ修正のご報告である。

2000-12-24[n年前へ]

サンタクロースを捜して 

Double Role on Christmas Eve


 クリスマスが近くなると子供達は「サンタクロースにお願い」をし始める。といっても、子供達がサンタクロースがどこに住んでいるのか知っているわけもないし、かといってサンタクロースへの伝言板があるわけでもない。これがゴッサムシティに住んでいるバットマンなら夜空にバットシグナルを照らし出せば良いし、シティハンターなら駅の伝言板に書き込みをすればちゃんとメッセージは伝わるだろう。

 だけど、サンタクロースに関してはそんなホットラインは残念ながら無いのである。子供達はサンタクロースに「自分が欲しいもの」をどうやって伝えれば良いのか実際のところ判らないのだ。じゃぁ、子供達はどうすれば良いのだろう?どうすればサンタクロースが何処にいるのか知ることができるだろう?サンタクロースを探すにはどうしたら良いのだろうか?

 これまでなら、子供達は身の周りの大人達、自分よりも色んなことを知ってそうな大人達に「サンタクロースは何処にいるの?」と聞いていたに違いない。だけど、色んなことを知ってるはずの両親や保母さんも「サンタクロースが何処にいるか」は何も教えてくれない。残念ながら、色んなことを教えてくれる大人達もサンタクロースのことに関しては何故か何も知らないようなそぶりを見せる。

 そんな風に、これまでなら子供達には他に調べる術もなかった。だけど、今なら違う。インターネット上に「検索サイト」がたくさんあるのだ。今の子供達は例えばGoogleで「サンタ」と入力して検索のボタンを押すだけで、なんと25300件もの情報(2000.12.24現在)を集めることができる。子供達は「インターネット上でサンタクロースを捜す」ことができるのだ。

 だけど、子供達にはそんなサンタを捜す手段はあるのだけど、それでもなかなか上手くサンタを見つけられないことだろう。まだまだ、上手く情報を選別できないこともあるだろう。そこで、今回はそんな子供達のために、インターネットで「サンタクロースを捜して」みた結果を書いてみたいと思う。サンタクロースが誰だか調べるテクニックとそのヒントをホンの少しだけ書いてみたい、と思うのだ。
 

 さて、それではサンタクロースを捜してみることにしよう。まずは、「関係者を調べて」みる。サンタクロースと誰が関係していて、誰が関係していないのかを調べてみるのである。と、いきなり言われても判りづらいだろうから、まずは例を出してみたい。例えば、どうみてもサンタクロースの関係者のハズの「トナカイ」を考えてみよう。まずは、「トナカイ」をGoogleで検索すると23500件の情報がある。そして次に、「トナカイAND サンタ」で検索すると、9060件の情報があることがわかる。トナカイの全ての目撃情報(Googleによる)が9060件であるのに対して、「サンタと一緒にいるトナカイ」の情報は9060件の目撃情報があるのだ。つまり、9060/23500= 38.6%もの高い確率でトナカイは「サンタと一緒にいる」のである。
 

トナカイとサンタの「関係」 → どうみてもトナカイはサンタの関係者である

 この「トナカイとサンタの関係」を見せただけでは、少し疑問に思う人もいるだろう。そこで、次にサンタと無関係そうな白馬の場合で調べてみよう。果たして、白馬がサンタの関係者であるかを捜査してみるのだ。

 まずは、「白馬」単独で検索をすると108000件の目撃情報が見つかる。それでは、「白馬AND サンタ」で検索するとどうなるだろうか?なんと、795件しか見つからないのである。つまり、「サンタと一緒にいる白馬」は795/108000= 0.74%しかいないのだ。これは、どうみても白馬はサンタと無関係であることがわかるだろう。白馬に乗って現れるのはやはり「王子さま」であって、サンタではないのである。そしてまた、この検索方法の妥当性も納得して頂けることと思う。このやり方で検索を続けていけば、サンタの正体もいつか判るハズなのだ。
 

白馬とサンタの「関係」 → どうみても白馬はサンタと無関係である

 これを読んでいる子供達がこの検索方法を使えば、きっとサンタをいつか見つけることができるだろう。あとは子供達が自分で捜すことだろうから、もう私が捜すのはここまでだ。

 だけど、ちょっと気になることがあるのでそれだけは調べておきたいと思う。それは、サンタと子供と大人の関係だ。何故なら、去年「サンタが街にやってくる」の中で私は「サンタクロースの巡回問題」を考えることで、「子供達が大人になって、そしてサンタになる」と推理してみた。じゃぁ、サンタと子供と大人の関係は一体どうなっているのだろう?それだけは、ちょっと調べてみたいのだ。子供達がサンタのことを訊いても、サンタのことを何も知らなさそうなそぶりを見せる大人達は本当にサンタと無関係なのだろうか?それだけは調べておきたいと思うのである。

 そこで、サンタと一緒に目撃された(Googleに)子供と大人の割合を調べてみた結果が次の表だ。
 

サンタと子供と大人の関係
サンタと一緒に目撃された割合
子供1.4%
大人0.018%
(参考:プログラマー)0.57 %

 これを眺めてみると、とても興味深いことがわかる。なんと、サンタと一緒に目撃された子供の割合は1.4%であるのに対して、サンタと一緒に目撃された大人の割合は0.018%しかないのである。二桁も違うのだ。もう、どうみてもサンタと無関係そうなプログラマーでさえ(プログラマーには実に失礼であるが)、0.57%もサンタと一緒に目撃されているのに、大人はそれより遙かにサンタと一緒には現れないのである。0.018%なんてほとんど0%だと言っても良いくらいだ。サンタと大人が一緒に目撃されることはもう全然無いのである。

 さっきのトナカイの場合なんか、38.6%もサンタと一緒に目撃されていて、「サンタがいるところにはトナカイがいる」と言っても良いくらいなのに、それとは全く正反対だ。「サンタがいるところには大人はいない」のである。「サンタと大人が一緒に現れる」ことはないのだ。だから、きっと大人とサンタは無関係なのだろう。子供達がサンタクロースのことを大人達に訊いても何も教えてくれなかったのも当たり前だ。大人達はサンタと出会ったことがないのだから、それはしょうがない。だから、実は大人達はサンタのことを何も教えることができないのだ。ただ、サンタのことを本当に知らないだけなのだ。

 サンタが現れているときには大人の姿は見えず、大人が現れているときにはサンタは現れない。だから、大人達はサンタのことを知らない。そう単純にそれだけのことだ。ただそれだけのことだ。    だけど、もしかしたら本格ミステリー大好きの名探偵コナンのような子供であれば、そこに何かのトリックでも思いつくのかもしれない。   それでも、そんな名探偵コナンのような子供だってきっといつかは…
 

2002-03-23[n年前へ]

インドで考たこと Dualの有効性編 

 「負荷がかかる処理は用途ごとに複数台準備する方がよいのかな」には、「処理を操作・連携せさる処理を作業者がスムーズにできる限りは賛成」です。あと、単なる処理速度の話にはもう全然異議などありません。
 だけど、それが実際に作業を人間がするときの話だと、少し別。「処理を操作・連携せさる処理を作業者がスムーズにできる」ってなかなかWindows環境では難しかったりする場合も多いようにも思ったりします。
 例えば、ちなみに私のデスクトップのPCではMathematica、Photoshop, Premire, Illustrator, InDesighn, After Effects辺りが常時立ち上げて、連携させながら作業するわけです。片方で処理した結果をコピペしつつ違うソフトに突っ込んで処理させたり、Googleに色んなことを教えてもらいながら、VisualC++でソフトを書いてコンパイルして、何ていう風に。そんなタスク切り替えが頻繁におきる仕事が普通かどうかはさておき…。
 ところが、作業するワタシは一人なので、複数のソフトを色々切り替えるのにあまりに複数のPCでやるとワンクッション入って不便なんですねぇ…。モニタやキーボードやマウスを切り替え機で切り替えるのは、面倒ですから。一応今でもドコドア+LANクリップボードで二台のPCを使ってはいるのだけど、それですでに液晶ディスプレイ三枚…。なんか居室の作業では、複数のPCを切り替える時に、自分の頭の中のタスク切り替えが上手くいかない(というか次に頭の中のタスクを元に戻すのに時間がかかるような感じがする)ので、結局二台に戻してしまいました。
 プログレ・キーボード派だったワタシとしては、前は複数のPCに囲まれていたし、実験室ではそれぞれ1制御1PCで結局多数のPC群に囲まれているのですが、それが居室だとどうも感覚的にストレスがたまりましたね…。あと何よりデュアルのありがたいのはオンボロプログラムが暴走しまくっても、操作感覚は素早いままってとこ。(何だそりゃ…)
 もちろん、Mathematicaなんかはネットワークがらみがちゃんとしてるので、フロントエンドだけ自分のPCでカーネルは他のPCで動かしてますし、他のUNIX系のマシンで動くソフトに関してはもちろん処理だけそっちでやらせて、自分のPC上ではXクライアントしか動いてないわけです…。こういった、ソフトの表示系と内部処理を別のマシンで動かせるようになると、複数台使っていても操作感覚は変わらないし、とても便利なんですけどWindowsだとなかなかないですよねぇ、そんなの…。
 なので、ワタシはよく雑誌記事の単なるベンチマークを見ると、実際に行う作業を人間がしてるときの、操作性を確かめてみてもらいたいなぁ、と思うのです。「仕事はコンピューターがするんじゃない、人間がするんだぁ」って踊る大走査線風に言いたくなるのです。
 ただ、こうも思います。ささっと違う仕事に頭を切り替えるわけには行きづらいタイプの仕事、例えばソフトのプログラマーや込み入ったメカを設計するタイプの仕事などでは、こんな風な仕事の要求はされないだろうなぁ、とも思います。
 あっ、念のため、タイトルには意味無いです。あと、「それは、こーすりゃ解決さ」っていうツッコミなんがのどから手が出るほど欲しいです、ハイ。

2003-06-13[n年前へ]

シミュレーション・プログラマーに向く適性を見分けられるか? 

 「シミュレーション・プログラマーに向く学生は初対面で判るか?あるいは、その初印象と結果は違っているものか?」という質問が、プログラマーでない私も面白かった。というわけで、午前お茶の水で午後はパシフィコ横浜。

2004-01-31[n年前へ]

例えばこんな質問ひとつ 

 「○×△の20の質問」なんていうのがよくある。私は、

車を持っていますか?持っているとしたら、どんな(色や車種や…)車ですか?持っていないとしたら、どんな車が欲しい(それとも欲しくない)ですか?
という質問を一つしてみたいかも。そして、それだけでなくて
(あなたも知ってる)○×△さんはどんな車に乗っていると思いますか?
という質問をしてみたいかも。色んなサイトのWebmasterや色んな日記の書き手たち、あるいは、あのプログラマーの方々は…、あんな色んな人達がどんな車に乗っていると思いますか?逆に言えば、そんな人達は「どんな車に乗っていそう」って受け取られているんでしょうね?そして、実際は一体どんな車に乗っているのでしょうね?と聞いてみたいかも。



■Powered by yagm.net