自動リンク(AutoLink)や英単語のカタカナ変換、漢字のふりがなをMecabで実現する【NADのカタカナ英語辞書の使用条件について更新】

オープンソース形態素解析エンジンMecab(和布蕪)を導入して、今欲しいあれこれを試すことにしました。
今回は方法論を検討します。



やりたいこと

前回、Yahoo! JapanのWeb APIには「ルビ振り」というテキスト解析がある件という記事を書きました。
Yahoo! JapanのWeb API「ルビ振り」を使って「ふりがな」をつける方法です。


しかし仮に今後「タグ」を付ける方法を検討することを考えると、形態素解析が必要になります。
Yahoo! JapanのWeb APIでも形態素解析は可能ですし、性能も高いようです。


しかし自由度や汎用性の点でMecabに劣ります。何より英単語→カナ読みまではできません
(うまく使い分けたいですね。APIは単独で使う分には便利!だし)。

    1. 漢字→フリガナ
    2. 英単語→カナ読み
    3. 自動リンク(AutoLink)
    4. タグ


これらを実現するため、以下ではMecab(和布蕪)を利用することを前提に、検討します。

1.漢字→ふりがな

Mecabで事実上の標準辞書として使われているNAIST Japanese Dictionaryは、以下のような書式(naist-jdic.csv)ですので、フリガナもありますね。


これを使ってMecabに通せば、そのまま実現できます。
フリガナだけではなくて、発音用のカナもあるのがすごいですね。

量販,1343,1343,4420,名詞,サ変接続,*,*,*,*,量販,リョウハン,リョーハン,,

2.英単語→カナ読み

辞書になるファイルを見つけることが課題となります。
ここでは、既存の辞書がなかなか見つからず、苦労しました(あまり試す人が多くないのでしょうか...)

NADのカタカナ英語辞書

Googleで検索したところ、「英単語は(NADの)カタカナ英語辞書で変換する」というフレーズの含まれるプログラムのソースがヒットしました。
NADのカタカナ英語辞書」は、NADさんによることえり用の辞書です。


登録数は「約106,000語」です。
(ただしことえり用ですから例えば「りなっくす」で、「linux」「Linux」「LINUX」が登録されているように、単語数として考えるとだいぶ減ると思います。)


ダウンロードしてみたところ、辞書ファイルもテキストで記述されているので簡単に使えそうです。
配布(改変や転載)禁止とはありますが、「どうぞご自由に使ってくださいな♪」「フリーウェア」とあるので使ってもよさそうですが、ことえり用だけに、その他の用途で使用する場合を想定していない気がします。


使用する場合は作者さんに問い合わせをするべきですが、作者さんも問い合わせをされても困ると思うので(^^;;)、他の方法がないか検討することにしました。



【2009/09/12追記】

どうしても気になったので、NADさんにおうかがいしました。
すると「ダウンロードされた方が『改造したもの再配付する』のでなければ『改造/流用を推奨する使い方』も問題ありません」とご快諾いただけました。
そもそも再配布(転載)自体、禁止されているので、新たな制約なしに使えることになります。
素晴らしい。なによりこれを辞書ファイルとして活用できるのはありがたい。是非使いましょう!


Bilingual Emacspeak Project(BEP)

引き続き検索していたところ、ミク語変換を発見しました(そこから「ルー語変換」にリンクが張られていて、「ルー語変換」と同じ方法ということを知りました)。


▽ミク語変換について
 http://aikelab.net/mikugo/about.html


▽どんなページもルー大柴ナイズ(Elementary,...)
 http://e8y.net/blog/2006/12/31/p139.html


つまり、「ミク語変換」も「ルー語変換」も、BEPの日本語風モード辞書を使っているということで。
BEPはGPLで公開されているそうなので、使えますね。BEPGPL万歳!


▽Bilingual Emacspeak Project
 http://www.argv.org/bep/:



肝心のBEPの日本語風モード辞書は、bep-eng.dicというファイルです。
Windows版Bilingual Emacspeakのパッケージをインストールすると、インストール先に1.15というフォルダの下にbinというフォルダが作成されます。この中にあります(他のパッケージからもっと簡単に取り出せるのかもしれませんが、見つかりませんでした)。


こちらは「49,289語」。以下のような書式では入っています。

ADDRESS アドゥレス 0

カナが発音用のカナですね。


「ミク語変換」や「ルー語変換」にはいいのですが、フリガナ的に使う場合には難点かな(もともとそういう用途の辞書じゃありませんから)。
この用途(英語表記に読みガナを振るという用途)の場合、やっぱりNADのカタカナ英語辞書が使えるといいんですけどねを使うのがよいと思います(使えます)。


NADのカタカナ英語辞書
Bilingual Emacspeak Project(BEP)、を用途にあわせて(混在が差し支えなければいずれかを主にしていずれかを副にして)使い分けしましょう。


単語が足りなければ、自ら追加した上で、追加分を両プロジェクトに提供するのもいいと思います(そこまでがんばりたいなぁ)


3.自動リンク(AutoLink)

AutoLink自体の方法

以下の記事にそのまんま書いてありますね。
htmlとして出力する際に、自動リンクしたい箇所を指定してMecabに通せばOK。


PHPMecabキーワード自動リンクを実装する(ウノウラボ
 http://labs.unoh.net/2008/01/keyword-autolink-using-php-and-mecab.html


MeCab の辞書構造と汎用テキスト変換ツールとしての利用
 http://mecab.sourceforge.net/dic-detail.html


wikipediaのタイトル名やはてなキーワードについて、AutoLinkする

いくらAutoLinkできるとはいっても、NAIST Japanese Dictionary(naist-jdic)に登録されている名詞全てからAutoLinkしても仕方ない。
そこで、wikipediaのタイトル名やはてなキーワードを辞書として追加して、これらにはAutoLinkの情報を入れておくと。すると、wikipediaのタイトル名やはてなキーワードが含まれる場合にはAutoLinkするということが可能になります。


mecab辞書にwikipediaのタイトル名を追加(kokotech)
 http://deepneko.dyndns.org/kokotech/2009/06/mecabwikipedia.html


MeCabの辞書にはてなキーワードを追加しよう(不可視点)
 http://d.hatena.ne.jp/code46/20090531/p1


4.タグとして登録

AutoLinkがあっても、それ以外にタグを明示的に指定したい場合があります。
紹介文や書籍等のタイトルに含まれない、カテゴリやジャンル等の情報を扱う場合です。


かといってAutoLink用の辞書と全く別に管理すると、それはそれで扱いづらい。
同じワードで、タグをクリックした場合とAutoLinkをクリックした場合で飛ぶページが別というのは直感的でないからです。


この場合、AutoLink用の外部の辞書ファイルを一度データベース(MySQL)に登録して、そこからMecab用の辞書ファイル(.csv)にはき出す。
タグについても、AutoLink用の外部の辞書ファイル同様を一度MySQLに登録するという手順にしておけば同じように扱うことができますね。


MySQLを通すことで、テーブル間のリレーションも取る必要があるタグに対応できるわけです。


じゃ、後は実際に手を動かすことにします(><。。