先月はルー語の月でした・・・ フィードバックを読んだり、プログラムを改良したり、電車の中では変換後の文章の校正して時間をつぶしたり。振り返ってみると、ルー語変換プログラムを通して実はいろいろ学習しました。
英語
むずしすぎる単語を排除するため、「中学校卒業程度」の単語にしぼりこみたかったのですが、それがだいたい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
下図のように、ルー語に続けてカッコ内にもともとの語が入った形で届きます。
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 されたハッシュを渡す)ので、日英辞書なんかを渡すと、かなり勉強用途に使えそうです。