タグクラウドが流行のようで。
デザインパターンは、ちょっと離れて。そういえば、ダイナミック Objective-C が今回からデザインパターンのお話しになっていますね。Objective-C というか、Cocoa のフレームワークではふんだんにデザインパターンが使われています。日本語訳されている Cocoa Fundamentals Guide では、Cocoa のデザインパターンについて書かれている部分があります。ダイナミック Objective-C の初回は、Singleton か...。AppleScript でできるのかな...。
そういえば...と、関係のない話が続きますが、iTunes。iTunes 7.0.1 を使っているのですが、iTunes 環境設定の「一般」で「ビデオを再生:」を別ウィンドウにしているとビデオを再生したときに別のウィンドウが開かれますね。このウィンドウを開いたままでライブラリの中の音楽を再生すると、アートワークが表示されるのですね。曲が変わるごとにウィンドウのタイトルが曲名になってアートワークが変わる...。こんな機能ありましたっけ?ちょっと便利。
Monzai って、日本語文字列の解析ができるのですね。品詞が取得できる。英語なんかだと単語の出現頻度を調べるのは簡単なのですが、単純に AppleScript で words ってすると日本語は助詞でもなんでも単語に見なされてしまう。それでも構わないのですが、タグクラウドを作ったときに「は」や「を」などがクローズアップされてしまう。それは、困る。かといって、面倒なことはしたくない。そこで、Monzai を使う。
以下のスクリプトは、要 Monzai です。とにかく、試してみたかっただけなので、コードは殴り書き。
set str to the clipboard as Unicode text
tell application "monzai"
set theResult to kaiseki controller 1 mode 1 moji str
end tell
set wordsList to {}
set wordsCount to {}
repeat with thisItem in theResult
set tmp to original of thisItem as string
if hinsicode of thisItem is 0 then
if wordsList contains tmp then
repeat with i from 1 to count wordsList
if (item i of wordsList) is tmp then exit repeat
end repeat
set num to (item i of wordsCount) + 1
set item i of wordsCount to num
else
set end of wordsList to tmp
set end of wordsCount to 1
end if
end if
end repeat
set min to 1000000
set max to -1000000
repeat with thisItem in wordsCount
if thisItem > max then set max to thisItem as integer
if thisItem < min then set min to thisItem as integer
end repeat
{min, max}
set ratio to 18.0 / (max - min)
set cloud to {}
tell application "TextEdit"
activate
close documents saving no
set theDocument to make new document
end tell
repeat with i from 1 to count wordsList
set thisWord to item i of wordsList
set num to item i of wordsCount
set fs to (9 + (num * ratio)) as integer
tell application "TextEdit"
tell theDocument
make new word at end of words of it with data "[ " with properties {size:fs, color:{0, 0, 0}}
make new word at end of words of it with data thisWord with properties {size:fs, color:{0, 32896, 65535}}
make new word at end of words of it with data " ] " with properties {size:fs, color:{0, 0, 0}}
end tell
end tell
end repeat
クリップボードの中にある文字列の中から名詞を抜き出し、TextEdit で複数回使われている名詞は大きく、そうでない名詞は小さく表示します。面白い、面白い。これで、星の数ほどあるブログを全部読まなくても要点が分かる...かな。
0 件のコメント :
コメントを投稿