実は勉強になるルー語

先月はルー語の月でした・・・ フィードバックを読んだり、プログラムを改良したり、電車の中では変換後の文章の校正して時間をつぶしたり。振り返ってみると、ルー語変換プログラムを通して実はいろいろ学習しました。

英語

むずしすぎる単語を排除するため、「中学校卒業程度」の単語にしぼりこみたかったのですが、それがだいたい2000語であるということ・頻出単語は幾つかのデータがあるということをこのへんで知る。最終的にはここで紹介されているデータと、実際の中学校の単語ドリル、あとルーさんブログをコーパスにして単語を絞込み。その2000弱の単語には何回か目を通したのでだいたい覚えた。

国語

連体詞って何だっけ?とか、あと活用形。五段活用とか、下一段活用とか、久しぶりに調べたですョ。「い・い・いる・いる・いれ・いろ」「ない よう う・ます た て・から と・とき こと・ば・!」とかそのあたり。 テストスクリプトにその痕跡が見えます。 。

そんな(中学校レベルの)学習成果の結晶であるモジュールが Acme::Lou です。こちらが完成したので、続いて当然のように Plagger プラグイン化 Filter::Lou し、これは先ほど本家へコミットしました。Acme::Lou、Plagger それぞれ最新版を手に入れて、たとえばこんな風に 個人的にルーして遊んでみてください。

と、遊ぶのが目的のモジュールですが、最新版(v0.03)にはちょっと勉強になってしまいそうなオプションを加えました。v0.02 までは出力が変換後(ルー語)だけだったのですが、新しい format オプションにより、オリジナルの単語(日本語)と組み合わせて出力できるようにしました。例えば、Plaggerの場合以下のように記述すると

plugins:
  - module: Subscription::Config
    config:
      feed:
        - http://blog.livedoor.jp/dankogai/atom.xml
  - module: Filter::EntryFullText

  - module: Filter::Lou
    config:
      format: "%s(%s)"

  - module: Publish::Gmail
    config:
      mailto:   you@example.com
      mailfrom: lou@example.com
      mailroute:
        via: sendmail

下図のように、ルー語に続けてカッコ内にもともとの語が入った形で届きます。

Filter::Lou

AUTHORの責任として、動作確認のためぼくは現在、全フィードが Fileter::Lou なのですが、これが意外と勉強になるんです。例えば、今日読んだこの記事 の最後

ボストンのヤングマン(若者)達は「そんなに騒がなくても・・・」とクールにキャッチし(受け止め)ているパターン(模様)。どちらにしろ、フール(馬鹿)なプラクティカルジョーク(悪ふざけ)がしにくくなったということでしょうかね・・・。

で、「悪ふざけ」って「プラクティカルジョーク」かあ、と覚えたり。Acme::Lou モジュールが知っている単語は前述の通り2000語程度なのですが、その単語の組み合わせによる熟語はでるのです。ウェイオブシンキング(考え方)のように。

そういえば、perl 5.8以上だと sprintf のフォーマットが拡張されてて、順序を操作できるっつーというのを、今日知りました・・知らないこといっぱいあるなあ

printf '%2$s - %1$s = %1$s', 1, 2;  # 2 - 1 = 2

なので、

format: "%2$s(%1$s)"

とすることで、「日本(ジャパン)も終わり(フィニッシュし)だなと思う(シンクする)」というように、ルー語のほうをカッコ内に入れることもできます。アンドキュメンテッドですが、内部の辞書を dic というオプションで置き換えることができる(DB_FIle に tie されたハッシュを渡す)ので、日英辞書なんかを渡すと、かなり勉強用途に使えそうです。