hirax.net::Keywords::「ジャンル」のブログ



1998-01-08[n年前へ]

Photohoの乱数プラグインを作成する 

 「2項分布のムラについて考える」の関連して、Photoshopの乱数プラグインを作成したのでメモしておく。

 PhotShopはとても便利なソフトである。画像を取り扱うにはトップクラスと言っても良い。あえて、難を挙げるならば8Bit階調が基本という所である。もちろん、12bit階調なども扱えるのは知っているが、基本機能とは言えないと思う。
 しかし、PhotoShopで凝ったことをしようとすると、Pluginを作らざるを得ない。PhotoShopでPluginをつくるには2つのやり方がある。それは、

  • Adobe提供のPlugin SftwareDevelopmentKitを使ってPluginを作る。
  • FilterFactoryを使ってPluginを作成する。
である。目的によってどちらを使うか選択すれば良い。

 今回はランダムノイズをつくるためのプラグイン作成が目的である。その程度であれば、FilterFactoryを使うのが簡単で良い。

FilterFactoryを使う
 まずは、FilterFactoryを使う。
 今回は、ランダムノイズを作るのが目的である。ランダムな(0から255)の値を与えるプラグインである。最初にどんな画像があるかなど関係がない。とにかく乱数を計算し、画像に出力する。今回、1チャンネルにのみ乱数を与えるプラグインと、各チャンネルに独立に乱数を与えるプラグインの2種類を作成する。
 まずは、Redチャンネルにのみ乱数を与えるものをつくる。以下がそのパラメータである。
Redのチャンネルに (0...255)の乱数を与える。
 たった、これだけである。
Redに乱数を与え、Green,Blueのチャンネルには0を与える。
 このプラグインで作成した画像がこれである。ここでは、Redのレイヤーをグレースケールに変換してある。

 もうひとつ、各色に乱数を与えるプラグインのサンプル画像はこのようになる。

 今回作成したWindows版のプラグインをここにおいておく。Mac版も作るのは同じく簡単である。Mac版やCMYK版が欲しいという要望があれば教えて頂きたい。SDKを使う場合などはむしろMac版の方が簡単である。 このファイルを解凍して、プラグインをPhotoshopのPluginディレクトリのFiltersの下に置けば使えるようになる。JunHiraxというジャンルのRnd2redとRnd2RGBである。

 さて、試しに使ってみる。1000x1000ドットのランダムノイズ画像を作成してみる。その画像はここに載せるには大きすぎる。そのため、その一部を左下に示す。その画像に対して各領域10x10の100ドットで平均し、100x100に変換した画像を右に示す。詳しくは「2項分布を考える」を見て欲しいが、100ドットで平均したくらいではフラットにはならない。それどころか、有限のいくら広い範囲で平均しても正確にはフラットにはならない。もし、フラットになるのであれば、それはランダムな2項分布ではない。もちろん、PhotoShopの丸め誤差とかの話は別にしておく。また、「2項分布を考える」の際は1次元の1成分データであったが、今回は2次元3成分データである。そのため、人間にはよりフラットに見えにくい。相対的な色差に対しては人間の目は敏感だからである。

右が作成した1000x1000ドットのランダムノイズ画像の一部(137x90)、
左は作成した1000x1000ドットのランダムノイズ画像を各領域100ドット(10x10ドット)で平均することにより、100x100に変換したもの
 これを使って、適当に遊んでみると面白いのではないだろうか。
 今回の例も「2項分布の特性:どんなに広い領域であっても、領域中の平均が一定でない」の当然の結果である。仮に、ある広い領域中の平均が一定であるような確率過程を用いればこのようなことは生じない。もしも、そのような確率過程に基づくものがあったら、部分部分はランダムに見えても、広い領域ではフラットに見えるのである。

1998-11-21[n年前へ]

同心円を描くPhotohoのプラグインを作る。 

 「モアレのデバイス依存について考える。」の過程で作成した、同心円を描くPhotoshopのプラグインについてメモしておく。
 作ったプラグインの名前はCirclePlotである。プラグインメニューではJunHiraxというジャンルの中に現れる設定にしてある。

Windows版 プラグインファイル (circleplot.8bf)

 右クリックで「ソースを保存」すれば良いと思う。

 これがCirclePlotプラグインの画面である。スライダーを動かすことにより、同心円の周期、中心位置のX座標、中心位置のY座標、振幅の最大値を調節できるようになっている。

プラグインの画面

 例えば、このような画像を作成することができる。フィルターをかけると、元画像がどのようなものであっても、とにかく同心円を描く。

フィルターをかけた時のサンプル画像

 ちなみに、使ったパラメータは以下のようになる。このパラメータを使えば、Macintosh版でも同じくCirclePlotを使うことができる、と思う。また、パラメータを見れば、どのようにして同心円を描いているかわかるだろう。

パラメータ

1999-07-14[n年前へ]

夏目漱石は温泉がお好き? 

文章構造を可視化するソフトをつくる


 先週は新宿で開催されていた可視化情報シンポジウム'99を見ていた。参加者の世界が狭い(ジャンルが狭いという意味ではない)し、学生の発表が多すぎるように思ったが、少なくとも本WEBのようなサイトで遊ぶには面白い話もあった。というわけで、これから何回か「可視化情報シンポジウム'99」記念の話が続くかもしれない。とりあえず、今回は「小説構造を可視化しよう」という話だ。

 まずは、「可視化情報シンポジウム'99」の発表の中から一番笑わせて(笑ったのはいい意味ですよ。決して皮肉ではないですよ。しつこいようですが、ホントホント。私のツボに見事にはまったのだからしょうがない。)もらった発表のタイトルはこれである。
文学作品における文体構造の可視化 - 宮沢賢治「銀河鉄道の夜」の解析-
白百合女子大学大学院の金田氏らによる発表だ。予稿集から、その面白さを抜き出してみよう。まずは過去の研究の紹介をしている部分だ。

作品(hirax注:夏目漱石の「虞美人草」と「草枕」)の始まりから終わりまでを時系列で捉えると(hirax注:話法に関する解析をすると)、二作品はともに円環構造、つまり螺旋構造を描きながら、物語が進行していくことが、四次元空間上に表現された。
中略
これは、作品の解析結果を可視化することで、夏目漱石の思考パターンと内面の揺れが明らかにされたことを意味する。
 

 なんて、面白いんだ。この文章自体がファンタジーである。こういうネタでタノシメル人にワタシハナリタイ。おっと、つい宮沢賢治口調になってしまった。そして、今回の発表の内容自体は、宮沢賢治の「銀河鉄道の夜」の中に出てくる単語、「ジョバンニ・カンパネルラ・二」という三つの出現分布を調べて構成を可視化してみよう、そしてその文学的観点を探ろう、という内容だ。

 本サイトは実践するのを基本としている。同じように遊んでみたい。まずは、そのためのプログラムを作りたい。名づけて"WordFreq"。文章中の単語の出現分布を解析し可視化するソフトウェアである。単語検索ルーチンにはbmonkey氏の正規表現を使った文字列探索/操作コンポーネント集ver0.16を使用している。

ダウンロードはこちらだ。もちろんフリーウェアだ。しかし、バグがまだある。例えば出現平均値の計算がおかしい。時間が出来次第直すつもりだ。平均睡眠時間5時間が一月続いた頭の中は、どうやらバグにとって居心地が良いようなのだ。
wordfreq.lzh 336kB  バグ有り版

バグ取りをしたものは以下だ(1999.07.22)。とりあえず、まだ上のプログラムは削除しないでおく。

失楽園殺人事件の犯人を探せ - 文章構造可視化ソフトのバグを取れ - (1999.07.22)

 動作画面はこんな感じだ。「ファイル読みこみ」ボタンでテキストファイルを読みこんで、検索単語を指定して、「解析」ボタンを押すだけだ。そうすれば、赤いマークでキーワードの出現個所が示される。左の縦軸は1行(改行まで)辺りの出現個数だ。そして、横軸は文章の行番号である。すなわち、左が文章の始めであり、右が文章の終わりだ。一文ではなく一行(しかもコンピュータ内部の物理的な)単位の解析であることに注意が必要だ。あくまで、改行までが一行である。表示としての一行を意味するものではない。なお、後述の木村功氏から、「それは国語的にいうとパラグラフ(段落)である。」という助言を頂いている。であるから、国語用の解析を行うときには「行」は「段落」と読み替えて欲しい。また、改行だけの個所には注意が必要だ。それも「一行」と解釈するからである。

WordFreqの動作画面

 「スムージング解析」ボタンを押せば、その出現分布をスムージングした上で、1行辺りに「キーワード」がどの程度出現しているかを解析する。
 そう、この文章は長い文章の中でどのように特定の単語が出現するか解析してくれるのである。

 それでは、試しに使ってみよう。まずは、結構好きな夏目漱石の小説で試してみたい。
電脳居士@木村功のホームページ 
から、「ホトトギス」版 「坊っちやん」のテキストを手に入れる。そして解析をしてみよう。まずは、この画面は夏目漱石の「坊っちやん」の中で「マドンナ」という単語がどのような出現分布であるかを解析したものである。

夏目漱石の「坊っちやん」の中の「マドンナ」という単語の出現分布

 文章の中ほどで「マドンナ」は登場してくるが、それほど重要なキャラクターでないことがわかる(このソフトがそう言っているんで、私が言っているのではない。だから、文句メールは送らないで欲しい)。

 それでは、「湯」というキーワードで解析してみよう。「坊っちやん」と言えば道後温泉であるからだ。

夏目漱石の「坊っちやん」の中の「湯」という単語の出現分布

 おやおや、「マドンナ」よりもよっぽどコンスタント(安定して、という意味で)に「湯」という単語は出現するではないか。出現平均値は「マドンナ」の方が多いが、安定度では「湯」の方が上だ。夏目漱石は「マドンナ」よりも「湯」すなわち温泉によっぽど興味があるようだ。

 主人公を育てた重要人物「清」を調べてみると、こんな感じだ。

夏目漱石の「坊っちやん」の中の「清」という単語の出現分布

 小説の初めなんか出ずっぱりである。あと小説のラストにも登場している。

 どうだろうか。見事に小説の可視化に成功しているだろう。結構、この解析は面白い。すごく簡単なのである。
 これから新聞、WEB、小説、ありとあらゆる文章を可視化し、構造解析していくつもりだ。みなさんも、このソフトを使って面白い解析をしてみるとよいのではないだろうか? とりあえず、高校(もしかしたら大学の教養)の文学のレポートくらいは簡単に書けそうである。もし、それで単位が取れたならば、メールの一本でも送って欲しい。

 というわけで、今回はソフトの紹介入門編というわけで、この辺りで終わりにしたいと思う。

1999-07-18[n年前へ]

hixの地図 

好きな話は何処にある?

  最近、本WEBのTopページが非常に読みにくくなっている。話題が多すぎるのだ。これでは、このWEBを見に来てくれた人がいたとしても、迷ってしまうだろう。きっと、好みに合うページを見つける前に他のWEBサイトにとんでしまうに違いない。自分の好きにやっているサイトとは言え、それは少し寂しい。そこで、自らhiraxサイトの内容について解説してみることにした。といっても、単に解説するのではつまらないので、多少の考察を含めながら、である。

 他の人のWEBなどを眺めながら、自分のWEBの特徴を振り返ってみると、下のような図を持ち出すのが一番良いような気がする。これは横軸を「技術度」、縦軸を「感性度(完成度にあらず)」にしたものである。ジャンル1,2,3,4は大雑把に傾向で分類しようとしたものである。

技術度と完成度の地図

 他の技術系サイトを見た後に本WEBを見ると、どうも本WEBは技術的でない話が多い。主観的な部分がかなり含まれているのだ。他の技術サイトでももちろん主観的な部分はある。しかも、(私にはまだまだ出来ないのだが)説得力があるのだ。すなわち、ある程度の客観性が感じられる。しかし、私のサイトの中にある主観的な話は他の人に説得力があるとは思えないのである。妙な感覚的な話と技術的な話のカクテルみたいなのである。そこで、上のようなグラフが登場するわけである。

 科学という立場から考えれば、客観的であり技術的にも高度な「ジャンル-2」が望ましいだろう。しかし、本WEBには技術的には高度でないし、客観性もない、という「ジャンル-3」も多い。例えば、
iMacはドラえもんの夢を見るか? -さようなら、ドラえもん - (1999.02.03)
などがそうだ。そして、その極限として「Scraps」がある。こういった状況が良いのか悪いのかよくわからないが、とりあず、それもまた個性ということにしておこう。

 「ジャンル-4」の代表的な話としては
鴨川カップルの謎 -そうだ、京都、行こう-(1998.11.29)
というところか。「ジャンル-1」としては
コピー機と微分演算子-電子写真プロセスを分数階微分で解いてみよう-(1999.06.10)
というところで、「ジャンル-2」は
夏目漱石は温泉がお好き? -文章構造を可視化するソフトをつくる - (1999.07.14)
という感じだろう。まずは、自分の好みとあった所から眺めてみて頂きたい。また、裏で繋がっている話も多いのでそういう伏線を探してみるのも面白いのではないだろうか。

 なお、私の書く文章ははどうも「本当に言いたいことを行間に隠してしまう」ようなので(表現力がないとも言う)、行間に隠れている(作者も気づいていない)応用など読みとって頂けたら幸いである。それを私に教えていただければ、なお良い。

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

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



■Powered by yagm.net