2014年04月06日

ATOKのユーザー辞書をAnthyに変換する

XPのサポート終了まであと3日。
というわけで手近なXPを撲滅するための活動を遂行している。その一環として、従来XPで動いていた大したことしてない(動画観賞用の)ノートPCは、Debianに切り替えてみることにした。
どうせ最小限のことしかしないのでそんなにいじらないのだが、日本語入力は標準の辞書だけだとやはり不便なので、XPで使っていたATOKのユーザー辞書を、Anthy用に変換して使用することにした。

ATOKの辞書ツールでユーザー辞書をテキストファイルに出力してUTF-8・改行コードLFに変換し、以下のスクリプトで変換した。#!/usr/bin/perl

#
# Usage: atok2anthy.pl atoc-dic.txt > ~/.anthy/private_words_default
# 変換後、kasumiを開いて保存。
#
# 入力ファイルはこのファイルと同一文字コード、改行はLFであること。
# オリジナルソース: http://d.hatena.ne.jp/kim_upsilon/20100103/1262515249
# 参考1: http://www.tanu.org/~sakane/doc/public/howto-canna.html
# 参考2: http://www.justsystems.com/jp/tech/atok/text_02.html
# Modified by usoinfo.info. 2014/04/06 http://blog.usoinfo.info/

my %dictionary = ();
my %hinshi = (
"独立語" => "KJ",
"単漢字" => "KJ",
"名詞サ変" => "T30",
"名詞ザ変" => "T30",
"固有人名" => "JNM",
"固有人他" => "JNM",
"固有人姓" => "JNM",
"固有地名" => "CN",
"固有一般" => "KK",
"固有商品" => "KK",
"名詞" => "T35",
"感動詞" => "CK",
"一段動詞" => "KS",
"形容詞" => "KY",
"接頭語" => "PRE",
"接尾語" => "SUC",
"カ行五段" => "K5",
"ガ行五段" => "G5",
"サ行五段" => "S5",
"タ行五段" => "T5",
"ナ行五段" => "N5",
"バ行五段" => "B5",
"マ行五段" => "M5",
"ラ行五段" => "R5",
"ワ行五段" => "W5",
"カ変動詞" => "KX",
"サ変動詞" => "SX",
"ザ変動詞" => "ZX",
"名詞形動" => "T00",
"形容動詞" => "T05",
"名サ形動" => "F00",
"連体詞" => "RT",
"数詞" => "NN",
"助数詞" => "JS",
"副詞" => "F04",
"接続詞" => "CJ",
"冠数詞" => "NNPRE",
);
open( INPUT, "<$ARGV[0]" );

while ( )
{
# ATOK辞書ユーティリティで出力した辞書ファイルは「読み、単語、品詞」の
# 順番に並んでいて、区切り文字としてタブ文字が間に入る
#
# 例: しゃんはいありすげんがくだん[\t]上海アリス幻樂団[\t]固有名詞*
if ( $_ =~ /([^\t]+)\t([^\t]+)\t([^\t]+)(\*|\$)$/ ) {
my $reading = $1; # 読み
my $word = $2; # 単語
my $class = $3; # 品詞

# 読みがひらがなだけではないものは出力しない
if( $reading !~ /^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93]|ー|゛)+$/ ){
# print STDERR "unsupported yomi '$reading' - $word\n";
next;
}

# Anthyの品詞に相当する品詞に置き換え、辞書に追加する
if ( exists( $hinshi{$class} ) ) {
print "$reading #$hinshi{$class}*500 $word\n";
}
else {
# その他の品詞は(対応させるのが面倒なので)変換しない
print STDERR "unsupported class '$class' - $word ($reading)\n";
}
}
else {
# コメント行・空行などは無視する
print STDERR "not match '$line'\n";
}
}

close( INPUT );
変換後のファイルを~/.anthy/private_words_defaultに配置して、霞を起動して「保存」。ユーザー辞書の単語も変換できるようになった。品詞の対応がこれで合っているかイマイチ自信がないが。。。
タグ:Anthy ATOK
posted by usoinfo at 08:55 | Comment(0) | Linux | このブログの読者になる | 更新情報をチェックする