Transliterator(翻字プログラム)を KandaSearch ライブラリー内にリリースしたのでお知らせします。
Transliterator はハンズオンセミナー「第5回 自然言語処理ツールを導入して検索性能を向上させる」でも紹介した、カタカナ語から対応する英単語を推定する Transliteration のプログラムです。同じくライブラリーにて配布されている「日英外来語辞書」は日本語Wikipediaから生成されていますが、Transliteratorはそれに必要なコア機能となっています。
Transliteratorをお客様の検索対象文書に対して応用すれば、お客様の業務ドメインで使えるより実用的な外来語辞書を生成することも可能となります(Transliterator自体は翻字プログラムであり、お客様のコーパスから外来語辞書を生成するには、セミナーで説明した手順を実装する必要があります)。
ダウンロード
KandaSearch のプロジェクト(プロジェクトがなければ作成してください)に入り、「拡張機能・辞書」メニューを選択します。「ライブラリーからエクステンションを追加」を選び、Transliterator(翻字プログラム)を選んでプロジェクトに追加します。プロジェクトに戻って追加したTransliterator(翻字プログラム)の詳細から最新バージョンをローカルPCにダウンロードします。ZIPファイルになっているので、解凍してください。
使い方
ZIP ファイルを解凍して得られた transliterator.jar には翻字プログラム兼ライブラリー com.rondhuit.transliterator.Transliterator が含まれていて、これをコマンドラインから使ったり、お客様のコーパスから外来語辞書を生成する等に使う場合は、以下に説明する API を呼び出しライブラリーとして使います。
コマンドラインの使い方
JARファイルを下記のように使って実行します。デフォルトではカタカナ語を入力してその英単語を推定させることができます。
java -jar transliterator.jar アルゴリズム
algorism
-v
でverboseモードで動作させることができます。
java -jar transliterator.jar -v アルゴリズム
アルゴリズム => algorism
出力が文字化けする場合は次のようにします。
java -Dfile.encoding=UTF-8 -jar transliterator.jar -v アルゴリズム
アルゴリズム => algorism
-r
でアルファベットをカタカナ語に変換するモードで動作させることができます。
java -Dfile.encoding=UTF-8 -jar transliterator.jar -r algorithm
アルゴリズム
上記のようにTransliteratorをコマンドラインから呼び出す方法は、毎回モデルファイルを読み込むことになるのであくまでもテスト用と考えてください。コーパスからカタカナ語と対応するアルファベット語を抽出する目的では、次に説明するようにTransliteratorをライブラリとして使用する必要があります。
ライブラリの使い方
次のように HmmTokenizer を取得し、predict() に与えたカタカナ語の推定アルファベット語を取得するだけです。
HmmTokenizer tokenizer = Transliterator.tokenizer();
System.out.println(tokenizer.predict("アルゴリズム"));
アルファベット語からカタカナ語を推定させたい場合、tokenizer()にtrueを渡します。
HmmTokenizer tokenizer = Transliterator.tokenizer(true);
System.out.println(tokenizer.predict("algorithm"));
編集距離はLuceneで提供されるLuceneLevenshteinDistanceを返しているのでそちらを使えます。
LuceneLevenshteinDistance lld = Transliterator.LuceneLevenshteinDistance();
System.out.println("edit distance between %s and %s is %f", "algorithm", "algorism", lld.getDistance("algorithm", "algorism"));