人気ブログランキング | 話題のタグを見る

自作自演

Firefox の話題を中心に Web 関係の話も扱うつもりの雑記。だった。
zisakuzien.exblog.jp

Top

Gosen で辞書を作るメモ

内容古くなっているかもしれない。




■jar のダウンロード

https://code.google.com/p/lucene-gosen/
このサイトの左下の方の Links の中に External links として「Downloads lucene-gosen 4.8.1」のリンクがあり、Google Drive に遷移するはずなので、そこからダウンロードする。
ページ上部の Download からは古いものがダウンロードできる。罠っぽい。

今回の用途なら lucene-gosen-4.8.1.jar のように辞書の名前のついていない jar を取得すればよい。
ビルドパスに追加しておく。

■ソースのダウンロード(チェックアウト)

辞書生成のために必要。
https://code.google.com/p/lucene-gosen/source/checkout
ここに SVN の URL が書かれているので、チェックアウトする。
dictionary のフォルダを使う。(ので、この用途だとそれ以外は不要っぽい。)




辞書生成

■Ant 準備

Java から ant を使えるようにする。
http://ant.apache.org/bindownload.cgi ダウンロードして ant.jar と ant-launcher.jar をビルドパスに追加しておく。

Eclipse からの実行で「JDK がない」みたいなメッセージのエラーになった場合は、tools.jar をビルドパスに追加すると解消するかもしれない。JDK の下の lib の中にある。Eclipse から実行すると JRE での実行になってしまい tools.jar が見つからないと思われるが、この辺の理解はあいまい。

■追加の辞書ファイル

Java製形態素解析ライブラリ「lucene-gosen」を試してみる
lucene-gosenの辞書編集方法 - エメラルドアオキロック
この辺を参考に。

プリンスメロン,1229,名詞,一般,野菜,*,*,*,プリンスメロン,プリンスメロン,プリンスメロン
こんな感じの CSV ファイルを作る。
メロンよりも桃が好きです。それはそれとして、デフォの辞書のままだと プリンス / メロン の2単語に解釈される。
ビルドの際、追加の csv ファイルの場所はフルパスで指定できるので、配置場所はどこでもよい。(lucene-gosen の外で良い)

2カラム目はコスト。
チェックアウトした lucene-gosen の dictionary の下に ipadic のディレクトリがあり、この中に dictionary.csv というファイルがある。これがデフォルトの辞書になっている。トマトなどの野菜の名称は 3000~4000 くらいのようなので、追加の単語はこれより小さいコストを設定する。
なんとなくで、(int) (2000 / Math.sqrt(Math.sqrt(文字数))) をコストとした。

3カラム目からが品詞の種類。
dictionary.csv と同じディレクトリにある connection.csv に連接コストの定義が書いてあるがなるべく手をつけたくないので、追加の単語の品詞は、デフォで存在するものにする。
今回であれば 名詞,一般,野菜 のように。名詞,野菜,* のようにしてしまうと、連接コストの定義がないためか、追加した単語が出てこなくなってしまう。

■辞書のビルド

lucene-gosen 直下と lucene-gosen/dictionary の下の両方に build.xml が存在する。
辞書のビルドなので使うのは dictionary の下の方。

Java/Ant/Javaから実行する - きのさいと のあたりを参考に。

private static final String BUILD_XML = "lucene-gosen/dictionary/build.xmlの場所";
private static final String ADD_DIC_FILE = "追加の単語.csv";

// 辞書のビルド
Project project = new Project();
project.init();
ProjectHelper.getProjectHelper()
.parse(project, new File(BUILD_XML));
project.addBuildListener(getBuildLogger());
project.executeTarget("clean-sen");
project.setNewProperty("dictype", "ipadic");
project.setNewProperty("custom.dics", ADD_DIC_FILE);
project.executeTarget("compile");

private static BuildLogger getBuildLogger() {
BuildLogger buildLogger = new DefaultLogger();
buildLogger.setMessageOutputLevel(Project.MSG_INFO);
buildLogger.setOutputPrintStream(new PrintStream(System.out));
buildLogger.setErrorPrintStream(new PrintStream(System.err));
buildLogger.setEmacsMode(false);
return buildLogger;
}


これで lucene-gosen/dictionary/ipadic に辞書のファイル(*.sen) ができる。




■辞書の利用

private static final String DIC_DIR = "lucen-gosen/dictionary/ipadicの場所";
private static final StringTagger TAGGER = SenFactory.getStringTagger(DIC_DIR);
public static void analyze(String text) throws IOException {
List tokens = new ArrayList<>();
TAGGER.analyze(text, tokens);
for(Token token : tokens) {
log.info(token.getSurface() + "\t" + token.getMorpheme().getPartOfSpeech());

}
log.info("----------------------------------------");
}

DicUtil.analyze("プリンスメロン");    // プリンスメロン 名詞-一般-野菜

by tokage-shippo | 2016-01-04 14:56
Mozilla Firefox ブラウザ無料ダウンロード

about this...

書き手の名前は 晴柳祐志 と言います。


リンク

Twitter
いつか何とかしたいサイト

最新のトラックバック

検索

S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
XML | ATOM

会社概要
プライバシーポリシー
利用規約
個人情報保護
情報取得について
免責事項
ヘルプ