メールでミーティングの打ち合わせをして、予定が決まる。しかし、その予定はせっかくメールの中に書かれているにもかかわらず、いちいち手打ちでスケジューラに登録しなくてはならない。
なんという非効率的な作業だろうか。
いや、Entourageならスケジュールの登録依頼機能があるし、iCalを使っていればiCalのイベントをメールに添付し、Mail.appで受信したときにスケジュールが追加される。
だが、相手がMail.appを使っていて、こちらがEntourageを使っている場合……当然こっちはiCalなんか使うわけがないし、iCalのイベント書類を添付されても手作業になってしまう。まあ、添付されたiCalの書類を開けばiCalにスケジュールが登録されて、それをEntourageに複製するスクリプトでも走らせれば、とりあえず登録はできよう。
しかしである。だいたい予定なんてメールの本文に書いておくだけの場合がほとんどだ。スケジューラから何かアクションを起こさないといけないというのは、明らかに無理がある。ユーザーは明らかにメールを見てスケジュールに登録してもらいたい、と思っている。
コンピュータなんだから、そのぐらい分ってほしいのである。
では、メール本文の内容から判断して勝手にスケジュール登録するAppleScriptでも作っておけばよい。こういう高度なことをやらせるためにこそAppleScriptはあるのだ(本当か?)。
何も考えずに(構文解析せずに)ばっさばっさと切り取ることで、有為なデータが取り出せないだろうかと試してみる。かなり乱暴な方法なので、普遍性があるかどうかは神のみぞ知るところだ。
とりあえず、スケジュールが明らかに書かれたメールが存在していることを前提とする。それは、メーラーの最前面でオープンされているはずだ。
引用記号で始まる行を削り、シグネチャのたぐいに含まれる記号で始まる行も削る。文字が2文字以下の行も削る。
ずいぶんすっきりした。
ここで、数字を含む文章をピックアップする。日本語形態素解析を行って、「数詞」を含む行だけ残してみる。複数行に分かれる可能性もあるわけだが……とりあえず1行に書かれることが前提。
数詞を含む行が複数行の場合にはユーザーに「連結するか」「どちらかを選ぶか」選択させてもよいだろう。
これで、対象となる文章が1つになった。
この対象行から、接続詞、助詞、句点、読点、語幹、n行連体形、n行連用形、副詞、接頭語の単語を削除。
めちゃくちゃすっきりした。動詞を含む固有名詞(例:いきます石油)などというものがあったら困るが、とりあえずこれでよしとする。
あとは、数字列接尾語や数字列接頭語をポイントに、前後に数詞や普通名詞(なぜか「2日」といった言葉は普通名詞として評価される>Mac OS Xの言語解析エンジン)を検索すると、日付と時間はピックアップできそうだ。場所はちょっと怪しい。
足りない部分はダイアログを表示して、空欄にしておけばよいだろう。逆に、前回のミーティングを検索して場所をピックアップしてもよい。
とりあえず、何かできそうな気はしてきた。時間のあるときにまた作ろう。スケジュールの予約メールを抽出して、ガンガンこのScriptに食わせて様子を見てもよい。
今日はここまで:
(*hinsi:数詞, check:false, original:7, morpheme:7, hinsicode:41472, hinsi:数字列接尾語, check:false, original:月, morpheme:がつ, hinsicode:37888, hinsi:普通名詞, check:false, original:2日, morpheme:ふつか, hinsicode:0, hinsi:記号類, check:false, original:(, morpheme:(, hinsicode:41216, hinsi:普通名詞, check:false, original:金, morpheme:かね, hinsicode:0, hinsi:記号類, check:false, original:), morpheme:), hinsicode:41216, hinsi:普通名詞, check:false, original:午前, morpheme:ごぜん, hinsicode:0, hinsi:数詞, check:false, original:11, morpheme:11, hinsicode:41472, hinsi:数字列接尾語, check:true, original:時, morpheme:じ, hinsicode:37888, hinsi:記号類, check:false, original:A, morpheme:A, hinsicode:41216, hinsi:普通名詞, check:false, original:オフィス, morpheme:おふぃす, hinsicode:0, hinsi:数詞, check:false, original:5, morpheme:5, hinsicode:41472, hinsi:数字列接尾語, check:false, original:階, morpheme:かい, hinsicode:37888, hinsi:普通名詞, check:true, original:こと, morpheme:こと, hinsicode:0*)
ものはためしに、ChaSenで形態素解析を行ってみると……
では デハ では 接続詞
、 、 、 記号-読点
7 7 7 未知語
月 ツキ 月 名詞-一般
2 2 2 未知語
日 ビ 日 名詞-接尾-一般
( ( ( 記号-括弧開
金 キン 金 名詞-一般
) ) ) 記号-括弧閉
午前 ゴゼン 午前 名詞-副詞可能
1 1 1 未知語
1 1 1 未知語
時 ジ 時 名詞-接尾-副詞可能
に ニ に 助詞-格助詞-一般
A A A 未知語
社 シャ 社 名詞-接尾-一般
オフィス オフィス オフィス 名詞-一般
5 5 5 未知語
階 カイ 階 名詞-接尾-一般
という トイウ という 助詞-格助詞-連語
こと コト こと 名詞-非自立-一般
で デ だ 助動詞 特殊・ダ 連用形
よろしく ヨロシク よろしい 形容詞-自立 形容詞・イ段 連用テ接続
お願い オネガイ お願い 名詞-サ変接続
いたし イタシ いたす 動詞-非自立 五段・サ行 連用形
ます マス ます 助動詞 特殊・マス 基本形
。 。 。 記号-句点
EOS
未知語と名詞だけピックアップしていけば、なんとかなりそうな気もする(それも頭の悪そうな方法だが)。試しにピックアップすると……
7 7 7 未知語
月 ツキ 月 名詞-一般
2 2 2 未知語
日 ビ 日 名詞-接尾-一般
金 キン 金 名詞-一般
午前 ゴゼン 午前 名詞-副詞可能
1 1 1 未知語
1 1 1 未知語
時 ジ 時 名詞-接尾-副詞可能
A A A 未知語
社 シャ 社 名詞-接尾-一般
オフィス オフィス オフィス 名詞-一般
5 5 5 未知語
階 カイ 階 名詞-接尾-一般
こっちの方が目的に適しているような気がする(ーー; Mac OS X内蔵の日本語形態素解析エンジンは、かな漢字変換(と、再変換)が主な用途なので、こういう用途に使うには「こまかすぎる」気がする(ーー;
まあ、これは単なるツールとして使うだけのものなので、ChaSenをAppleScriptから呼び出すようにしてもぜんぜんOKだ。US Appleの木田さんにはいろいろと意見は言っているのだが、もっとざっくりと単語分けするモードがあってもよさそうなものだ。
ヘタをすると、Microsoft Word内蔵のSupruseが、コマンド解析用の日本語形態素解析エンジンとしては「ざっくり度合いがちょうどいい」、ということになりかねない(SupruseはAppleScriptから1行で呼べる)。