読者です 読者をやめる 読者になる 読者になる

はてなダイアリー自動リンクAPIをどう使うか

Perl

http://d.hatena.ne.jp/hatenadiary/20040205/1075960162

実は、ダイアリーの自動リンクではなくて、文中のキーワードを見つけるというただそれだけの為に、利用してみようと実験したのだが、これが案外シャレにならない。

正規表現自体は1MB程度で、単純にキーワードをパイプ(|)で繋いでいるだけである。上記のAPI紹介では、これの簡単なサンプルコードもある。

で、ひとまずサンプルコードを実行。ふむ、問題なくいける。さすがに毎回1MB落としてくるのもどうかと思うので、ファイル保存してUTF-8に変換、use utf8環境下でPerlIO layer付きopenを用いて開き、あとは同じようにやってみる。うん、大丈夫。じゃあ早速実際にやってみるかということで、キーワード取得を行ないたいデータを噛ませてみると…ん、答えが返ってこない。topでデータを見ると、perlは確かに頑張っているらしいが、メモリ使用量がぐんぐんぐんぐんと伸びていく。まずい事にシステム全体のレスポンスも落ち始めたので、急遽kill。怖いな、この正規表現は。

困った事に、これはまともな速度では動かないのだ。さすがにいちいちXML-RPCで聞きに行くのもどうかと思うが、レスポンス速度がそこそこ出るならその方が速いんではないかと思うほどなのである。巨大正規表現だと、こうなるのかなぁ?私の知る限りでは、正規表現によるマッチングはかなり大変なことをやっているはずなので、あり得る話だとは思う。或いは場合によっては、PerlIO layerか、use utf8が宜しくないのかもしれない。が、今更文字コードやら多バイト文字なんかで悩みたくはないので、うーん、参った。素直に形態素解析器なんかを入れて技術習得するほうが早い気がしてきた。形態素解析器の処理速度が勝っている前提なので、とりあえず実験しないとどうにもならないが。どうしたものか…。