Monthly Archives: 6月 2009

iTunesの曲に自動でふりがな登録

iTunesは日本語の曲名等の並び替えを正しく行うためにふりがなを登録できるようになっています。が、何千曲とあるライブラリに手作業での登録は大変です。アーティスト名ならまだしも曲名となれば大変です。

massiva/logic&mac tipsさんのソートiTunes!という記事でAppleScriptとテキストエディタのGUIを用いてiTunesの曲のアーティスト名のふりがな(アーティストの並べ替え)フィールドを自動で埋めるというスクリプトが紹介されています。ところが、安定して動作させるには待機時間を長くしないといけないのでちょっと遅いのです、これは漢字からひらがな変換にGUIを使っているからなのですが。具体的にはMac全体の処理速度が一瞬低下した場合ふりがなへの変換が終わる前に次の曲に進んでしまったりします。

そこで、オープンソースの形態素解析エンジンMeCabを利用してふりがなを生成する方法に改造することによって高速かつ安定した動作を実現しました。が、人名はことえりのほうが正確かも…

MeCabは前回の記事でインストール済みということで。

スクリプトエディタに以下のスクリプトを入力し、iTunesでふりがなを補完したい曲を選択した状態でスクリプトを実行するとふりがながまだ設定されていない曲のアーティスト名、曲名、アルバム名のふりがなが登録されていきます。

スクリプト

--確認ダイアログ
display dialog "ふりがなをふっていいですか" buttons {"NO", "OK"} default button 2
set button_a to button returned of result
if button_a = "OK" then


	--iTunesのスクリプト
	tell application "iTunes"
		try
			set name_list to {}
			set select_track to a reference to selection
			if select_track as list is {} then return
			repeat with i in select_track
				set end of name_list to i
			end repeat
			repeat with i in name_list
				--アーティスト
				set hurigana_text to sort artist of i
				if hurigana_text is "" then
					set original_text to artist of i
					set hurigana_text to my hurigana(original_text)
					set sort artist of i to hurigana_text
				end if


				--アルバム名
				set hurigana_text to sort album of i
				if hurigana_text is "" then
					set original_text to album of i
					set hurigana_text to my hurigana(original_text)
					set sort album of i to hurigana_text
				end if



				--曲名
				set hurigana_text to sort name of i
				if hurigana_text is "" then
					set original_text to name of i
					set hurigana_text to my hurigana(original_text)
					set sort name of i to hurigana_text
				end if


			end repeat
			display dialog "完了"
		on error
			display dialog "エラー発生" buttons {"OK"} default button 1
		end try
	end tell

end if

on hurigana(original_text)
	set mecab to "echo " & quoted form of original_text & " | /usr/local/bin/mecab -Oyomi "
	mecab as text
	do shell script mecab
	return katahira(result)
end hurigana


on katahira(original_text)
	set hiracase to "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをんぁぃぅぇぉがぎぐげござじずぜぞだぢづでどっぱぴぷぺぽばびぶべぼゃゅょ"
	set katacase to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲンァィゥェォガギグゲゴザジズゼゾダヂヅデドッパピプペポバビブベボャュョ"

	set hiragana_text to characters of original_text
	repeat with char in hiragana_text
		set num to offset of char in katacase
		if num is not 0 then
			set contents of char to character num of hiracase
		end if
	end repeat

	return hiragana_text as text
end katahira

Mac OSX LeopardにMeCabをインストール

MeCab(和布蕪)とは

公式ページのお言葉を借りると。

MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです. 言語, 辞書,コーパスに依存しない汎用的な設計を 基本方針としています. パラメータの推定に Conditional Random Fields (CRF) を用 いており, ChaSenが採用している 隠れマルコフモデルに比べ性能が向上しています。また、平均的に ChaSenJumanKAKASIより高速に動作します. ちなみに和布蕪(めかぶ)は, 作者の好物です.

です。はい。今回は自動でiTunesのふりがなを補完したいためにインストールしました。

MeCab本体のインストール

公式サイトからソースをダウンロードしてきます。今回は「mecab-0.98pre3.tar.gz」を利用しました。

解凍したらターミナルを起動し、cdコマンドで解凍したフォルダに移動します。

で、あとは普通にconfigure、make、そしてsudo make install。


$ cd ~/Download/mecab-0.98pre3
$ ./configure
$ make
$ sudo make install

そうすると、mecabというコマンドが使えるようになるはずです。まだ辞書が登録されていないので形態素解析はできませんが、バージョンを確認してみましょう。


$ mecab --version
mecab of 0.98pre3

正しくインストールできてそうです。

辞書のインストール

次に辞書をインストールします。公式サイトで推奨とされているIPA 辞書をインストールしてみます。「mecab-ipadic-2.7.0-20070801.tar.gz」を今回は利用しました。本体と同じく解凍してターミナルからcdコマンドで解凍したディレクトリに移動します。
本体と同じくconfigure、makeなのですが、文字コードをUTF8にしたいのでconfigureにオプションを付けます。installはいりません。


$ ./configure --with-charset=utf8
$ make

試してみる

インストールできたので形態素解析を試してみます。

形態素解析

$ mecab
すもももももももものうち    //解析したい文を入力してEnter
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

よみがな

$mecab -Oyomi
日本語は難しい。    //解析したい文を入力してEnter
ニホンゴハムズカシイ。

できてます。

コマンドラインで一気に解析する場合は例えば次のようにすればできます。シェルスクリプト等で結果を利用するのに便利かも。

$ echo "引数で文は渡せないのでパイプで渡す" | mecab -Oyomi

MeCabの利用法等は他のサイト等でいろいろ紹介されていますのでそちらを参考にしてください。

Safari4のおかげ?

今月は急激にアクセス数が増加しています。
今月のグラフがすごいことに…

2009年6月の日別アクセス数(26日時点)

2009年6月の日別アクセス数(26日時点)

9日から急激に増えているのがわかると思います。
ページ別のアクセス数を確認すると、Leopard発売時の「Leopardの「SIMBL」「SafariStand」」という記事のアクセス数が急増していました。

特定記事のアクセス解析

特定記事のアクセス解析

Safari4非対応のSafariStandがインストールされていると正しく動作しない場合があるようです。以前の記事にも追記しましたが新しいSafariStandのプラグインファイルを過去のプラグインと交換するだけで動作します。SIMBLには一切触れませんでした。

この小さなサイトだけで断言はできませんが、Safari4は多くの方が利用しているのだなぁと、おかげでもうすぐユニークアクセス数(訪問した人数、延べではない)が後少しで30000人に届きそう。

で、なんでみなさん「SafariStand アンインストール」で検索して来られるのでしょうか。アップデートすれば問題ありませんから、便利なのでアンインストールしないでくださいね〜

暑い!

サーバーもMacに変えた時にサーバーの設置場所をリビングから自室にしたのですが、サーバールームになったとたん暑いのなんのって…一昔前に放送されてたIBMのCMが事実であることを実感します。このCMなんですが…
冬は寒くなくていいなぁと思ってたんですが。

読み込み中…

//

それにしてもMacProは放熱対策はばっちりみたいなので、内部の温度は室温と大差ないのがすごい。以前つかってたサーバー機(普通の自作機)が熱で痛んだ理由がよくわかります。

まぁそのサーバー機は現在唯一のWindows機で開発用につかっているのですが、サーバーとして使えるほどは安定してません。

で、問題はこれから夏本番に入っていくのにどうするのか!

定期的にエアコンを自動操作するリモコンをつくるかな…

基板到着

2週間ちょっと前にOLIMEXに発注した基板が到着しました。
OLIMEXを利用するようになってからもう何年か立ちますが、こんなに頼んだのは初めてです。

3パックに包まれてやってきました。
pcb_1

開封し、種類別に分けるとこんな感じ。
pcb_2

 

中身は

DCC関係

  • シグナルデコーダ
  • ポイントデコーダ
  • 赤外線トランスポンダ受信ボード
  • ファンクションデコーダ
  • モーター車用デコーダ
  • LocoUSB rev.2

その他

  • XBee USB変換基板
  • microSD変換基板
  • JTAGデバッガ
  • I2C接続モータードライバ

 

他には後輩が発注したものです。

製作結果は研究ノートに掲載予定です。