RubyでTST+AC法 (ruby-pytst)

Posted by yatsu Mon, 09 Oct 2006 01:01:25 GMT

2007-06-04 追記 ダウンロードはこちら → yatsu.info : ruby-pytstをRubyForgeに登録

ずっと前に、pytstをRubyに移植中と書きましたが、作りかけのものを公開しておきます。 ファイル読み込み/書き込み以外は動作していると思います。

pytstはもともとSWIGで実装されているのですが、Python依存部分が結構あって、移植はそれなりに大変でした。

これはTernary Search Trie (TST)というデータ構造を実装したRuby拡張です。 Aho-Corasick法(AC法)によるスキャニングもサポートしています。 文章中から複数のキーワードを抽出したり、一括置換したりするのに使えます。 くわしくはpytstのページをご参照ください。

使用例

例1 (example/tokenize.rb)

コード
require 'pytst'

t = Pytst::TST.new

t['1234'] = 'token 1'
t['123456'] = 'token 2'
t['45678'] = 'token 3'
t['5678910'] = 'token 4'

result = t.scan('1234561234567891012345',
                Pytst::TupleListAction.new)
p result
実行
% ruby example/tokenize.rb
結果
[["123456", 6, "token 2"], ["123456", 6, "token 2"],
["78910", -5, nil], ["1234", 4, "token 1"], ["]

ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ

例2 (example/callable_action.rb)

コード
require 'pytst'

t = Pytst::TST.new

t['1234'] = '[token 1]'
t['123456'] = '[token 2]'
t['45678'] = '[token 3]'
t['5678910'] = '[token 4]'

mycallback = Proc.new {|key, length, obj|
  if length > 0
    print obj
  else
    print key
  end
}

myresult = Proc.new {
  puts
}

result = t.scan('1234561234567891012345',
                Pytst::CallableAction.new(mycallback, myresult))
実行
% ruby example/callable_action.rb
結果
[token 2][token 2]78910[token 1]5

ワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ

今後の予定

  • ファイル読み込み/書き込み
  • 例外処理
  • Marshal対応
  • Rubyっぽいインターフェース(ブロック処理など)

そして最終目的は、LesserWikiのレンダリング速度を改善して、サービス(ASP)化して公開することです。 半年くらいサボッてますが、そろそろ再開しようかと……。

Posted in ,  | no comments | no trackbacks

ゲーオタのためのロマン主義講義(FF2の構造分析) [5]

Posted by yatsu Tue, 03 Oct 2006 01:51:38 GMT

当初はエンディングシーンを使ってロマン主義を解説するつもりだったのですが、気がついてみれば、エンディングの分析に入る前に、語るべきことは語ってしまっていました。 今回が最終回です。

今まで説明してきたことをもとに、最もロマン主義が表現されているエンディングの会話を読み解いてみましょう。

第5回講義 – おわった……やっと……

皇帝を倒し、脇役たちとのあいさつが終わると、主人公たちのかっこよくてうっとりとさせる会話が始まります。

ガイ「おわった……やっと……
フリオニール「ああ!!
マリア「また4人で暮らしましょう!
フリオニール「……
マリア「ね、兄さん!
レオンハルト「おれたちは いろんな事を知りすぎた…
 もう昔には、帰れない……
マリア「兄さん…なぜ? 待って!
 フリオニール、兄さんを止めて!!
フリオニール「マリア おれには止められない……
 レオンハルトの言ったとおりだ……
 レオンハルト、いつの日か、きっと!
フリオニール「さあ おれたちも行こう!
 これからが、本当の始まりだ!!
(参考: ファイナルファンタジー2 データベース)

まず、レオンハルトの「おれたちは いろんな事を知りすぎた」から見ていきましょう。 ロマン主義では、知ることは単純な進歩を意味しません。 何かを知るということは、そこで得た知識によって将来の行動が拘束されることを意味します。 そのため、知るということが否定的に意識されるのです。 そしてロマン主義は、可能性がより開けていた過去を懐かしみます。 「もう昔には、帰れない……」がそれです。

反対に、皇帝にとっては、知ることは力を意味します。

皇帝「いい見世物だったぞフリオニール
 おまえたちの正体などすでに、見切っておったわ!
(参考: ファイナルファンタジー2 データベース)

あらかじめ知っているという事実が力をもつ。 ロマン主義はこの事実に立ち向かうのです。

続いてフリオニールの「レオンハルト、いつの日か、きっと!」ですが、ここでは、可能性を広げるために曖昧な言い方がされています。 「いつの日か」が「来年」ではだめで、「きっと!」が「きっと会いましょう!」ではだめなのです。 ただし、ロマン主義はただ曖昧さを求めているのではないことに注意してください。 可能性が狭められることを嫌うため、決定を嫌うのです。

最後に「これからが、本当の始まりだ!!」ですが、もう言うまでもないでしょう。 ロマン主義に終わりはありません。「本当の始まり」の後にも終わりはありません。 ロマン主義は永遠を夢見るのです

中途半端に長い記事を最後まで読んでいただき、ありがとうございました。

それでは、、、

ウボァー

Posted in  | no comments | no trackbacks

『Compilers 2nd Edition』

Posted by yatsu Tue, 03 Oct 2006 00:25:04 GMT

『Compilers 2nd Edition』

ついに出た。
けど、高いのでしばらく買えない。

『MAC OS X Internals』は高いけど買ってしまった。

Posted in ,  | no comments | no trackbacks

三省堂デュアル・ディクショナリー

Posted by yatsu Mon, 02 Oct 2006 23:19:30 GMT

Sanseido Dual Dictionary 三省堂デュアル・ディクショナリー

三省堂デュアル・ディクショナリーとは、辞書刊行と同時にその辞書をウェブでも利用できる、辞書の新しい形態です。

書籍辞書をご購入いただいた方は、ウェブ上でその辞書の検索サービスをご利用いただけます。紙とデジタルを同時に使える、まさに「電子+紙=電紙辞典」ともいうべきデジタル時代の辞書のあり方。

ご用途、場面に応じて、紙とウェブとを使い分け、「ひとつの辞書で、ふたつの引き方」を実現いたします。

みなさまの言語生活のみちびきとして、あらたな時代によりいっそう使いやすさをご提供することができればさいわいです。

上記ページから試用版を試すことができます。

日経新聞で知りました。

自分は広辞苑のCD-ROM版、英辞郎、電子辞書で満足しています。 紙バージョンがほしいと思ったことはないですが、オフィスと自分の席をゲットできれば違うかもしれません ;)

Posted in  | no comments | no trackbacks

ゲーオタのためのロマン主義講義(FF2の構造分析) [4]

Posted by yatsu Mon, 02 Oct 2006 01:25:21 GMT

「ロマン主義」という言葉は日常的にはなかなか通じません。 うっかり口にしてしまうと、特定の社会状況を自分の興味分野にこじつけておもしろがっているだけとしか見てもらえません。 なにがロマン主義なのか、ロマン主義というものが歴史的にどのような意味、構造、対立をもっていたのかを意識すれば、ネット上などで見られる不毛な対立も意義あるものにできるのに、と感じることがあるのですが、それはまた今度書きましょう。

今回はFF2のエンディングについて書く予定でしたが、「ウボァー」について書くと予告してしまっていたので、今回は皇帝に死んでもらうことにします。

第4回講義 – ウボァーとイロニー

まず、みんな大好きな「ウボァー」を復習しておきましょう。

この私がやられるとは・・・
信じられ・・・ん・・・2度までも・・・お前に・・・
お前はいった・・い な・・にもの?
ウボァー
(参考: FF2攻略日記: ウボァー)

前々回の註(*1)で、「ウボァー」もロマン主義と解釈できると書きました。 そんなバカな! ネタ狙いすぎ! と思われてもしかたないですが、まぁ聞いてください。

「ウボァー」はなぜウケたのでしょうか。 ウボァーとは - はてなダイアリーから引用します。

皇帝自体が美形キャラであることと、あまりにもそれまでのセリフを覆すような断末魔だった為に話題となった。

これはロマン主義の重要概念「イロニー」なのです。広辞苑「アイロニー」から引用します。

アイロニー【irony】
(偽装の意のギリシア語から)
(1) 皮肉。あてこすり。反語。
(2)〔哲〕ソクラテスの用いた問答法。議論の相手を知者とし、自己は無知を装いながら、対話を通じて相手の無知をあばいた。
(3)〔美〕F.vonシュレーゲルを中心とするドイツ-ロマン派の用語。一方で対象に没入しつつ、他方でそれに距離をとって皮肉に見ることにより、自我をあらゆる制約から解放する態度をロマン的イロニーと呼んだ。イロニー。(*1)

美形悪役というわかりやすい形に没入させておきながら、最後に「ウボァー」という奇声によってそれまでの形を打ち砕く。 これによってロマン主義的自我が開放されるのです。

イロニーもまた、第2回で述べたロマン主義の根本原則から説明できます。 ロマン主義は自分を縛るものとしての規範を嫌うだけでなく、自ら構築するものに対しても、規範に収められないものを求めるのです。

しかし、このような解釈を知ってしまうと、「なにコイツ、ウボァーだってwww」みたいに純粋に楽しめなくなってしまいますね。 「おれたちはいろんな事を知りすぎた」のです。 おっと先走ってしまいました。 レオンハルトのこのセリフについては次回解説します。


(*1)

シュレーゲルほどわかりやすいロマン主義はなかなかないので、いくつか紹介しておきます。

われわれは、われわれ自身の愛を越えて高まり、われわれが崇拝するものを思考のなかで破壊することができなければならない。 さもなければわれわれには、他のいかなる能力が具わっていようとも、宇宙万有を理解する器官[感覚]が欠けていることになる。

そのようなわけで、われわれは、詩人の魔術にみずから進んで魅了されたあとで、この魔術から進んで身を振りほどきたいと思うのだし、そして一番やりたいことは、詩人がわれわれの目から遠ざけようとしたもの、もしくはすぐには見せようとしなかったものを、また、詩人を芸術家たらしめるのにたしかに最も大きく与っているもの、つまり詩人が密かに追求しているさまざまな秘密の意図を、探り出すことなのである。

これと同じ程度に、神の手に成るもののごとく素晴らしい作品[作物]を規範通りに価値判断するような芸術評価に対する反感も、呼び起こされる。 最も繊細で最も選り抜きの機知の饗宴を、誰が、種種さまざまの杓子定規な規則や慣例的なくだくだしい手順でもって、批評したいと思うだろうか? 『マイスター』についての、世に言うところの批評は、われわれにはつねに、本を小脇にはさんで森へ散歩にやってきて、フィリーネに郭公の歌で追い払われる青年のように見えることだろう。

教養ある者はだれでも、自分自身をはるかに越えて高められるその一方で、そこにただ自分自身だけを再び見つけ出すように思うのだ。 つまり偉大さとは、こうでなければならないかのような姿でのみ存在していながら、それにもかかわらず、われわれが要求してもよいよりもはるかに大いなるものである、ということにほかならない。

上記すべてフリードリヒ・シュレーゲル「ゲーテの『マイスター』について」(ヴァルター・ベンヤミン『ドイツ・ロマン主義における芸術批評の概念』に参考資料として所載)より。

Posted in  | no comments | no trackbacks

ロマン主義の次に何を書くか

Posted by yatsu Sun, 01 Oct 2006 22:44:36 GMT

「ゲーオタのためのロマン主義講義(FF2の構造分析)」の次に似たようなことをやるとしたら、『24』(Twenty Four)をネタに決断主義を書くか、『ドラゴン桜』をネタに啓蒙主義を書くことになると思います。 しかし、どちらも思想傾向があからさますぎて、意外性に欠けるかもしれません。

Posted in  | no comments | no trackbacks

Older posts: 1 2