# 電子書籍「AppleScript 10大最新技術」の補完のために追記した記事です
本Blog読者の方からのタレコミで気づいたのですが、Mac OS X 10.6の日本語ユーザー環境で、文字列をwords ofあるいはevery wordで分割したときの挙動が、変わっているとのこと。
英語の文章をwords ofでparseした場合には、スペースで単語が区切られており、単語という単位が明確な英語なので、きれいにword(=単語)ごとに別れてくれます。
ところが、どこからどこまでが単語かという区分があいまいで、かつ単語に区分けするとかいう必要性が一般的にはそれほどない(大学のレポートを4000文字以上で、というオーダーはあったとしても、400ワードで書けという話は見かけたことがない)日本語においては、Appleの不甲斐なさもあって、words ofでparseしても、ひらがなやカタカナ、漢字など文字種類が変わる切れ目で区切られるという、変態仕様になっていました。
そのため、人工知能インタフェース「Newt On」をAppleScriptで開発した際には、わざわざ日本語パーサーとしてMicrosoft Word v.Xを使ったほどですが……
Mac OS X 10.6で、この誰もアテにせず期待もしていなかったAppleScriptの日本語parse機能が向上したようです。
スクリプト名:words_of_result_1067 |
–Mac OS X 10.6.7の実行結果
set a to “翌日午前0:25〜翌日午前0:50(25分)” set aList to words of a –> {“翌日”, “午前”, “0”, “25”, “翌日”, “午前”, “0”, “50”, “25”, “分”} set a to “原子力発電所” set aList to words of a –> {“原子”, “力”, “発電”, “所”} |
どこかで見たようなparseの仕方だと思っていたら、Mac OS X 10.5から標準搭載されているMeCabのParse結果にそっくりです。
現在、Mac OS XにはSpotlightのインデックス作成用にMeCabが標準搭載されており、ちょっとしたプログラムを書くことでユーザーからも呼び出せるようになっています。
ちなみに、上記の結果を古いMac OS X上でためしてみた結果は以下のとおりです。
スクリプト名:words_of_result_1039 |
–Mac OS X 10.3.9の実行結果
set a to “翌日午前0:25〜翌日午前0:50(25分)” set aList to words of a –> {“翌日午前”, “0”, “25”, “〜”, “翌日午前”, “0”, “50”, “25”, “分”} set a to “原子力発電所” set aList to words of a –> {“原子力発電所”} |
スクリプト名:words_of_result_10411 |
–Mac OS X 10.4.11の実行結果
set a to “翌日午前0:25〜翌日午前0:50(25分)” set aList to words of a –> {“翌日午前”, “0”, “25”, “〜”, “翌日午前”, “0”, “50”, “25”, “分”} set a to “原子力発電所” set aList to words of a –> {“原子力発電所”} |
スクリプト名:words_of_result_1058 |
–Mac OS X 10.5.8の実行結果
set a to “翌日午前0:25〜翌日午前0:50(25分)” set aList to words of a –> {“翌日午前”, “0”, “25”, “翌日午前”, “0”, “50”, “25”, “分”} set a to “原子力発電所” set aList to words of a –> {“原子力発電所”} |