3 # oki2atk.pl - 沖縄辞書のファイルをATOK13形式に変換する。
7 # このスクリプトを使って、以下のように「okinawa.txt」を生成しておいて、
8 # $ cat ../*.dic | ./oki2atk.pl -g | sort -u > okinawa.txt
9 # ATOK13の辞書ユーティリティを起動し、
10 # 「一括処理」-「単語一括処理」の「単語ファイル(T)」に
11 # okinawa.txtを指定し、「登録」を押下してください。
13 # 「尚灝王」(しょうこうおう)など、JIS X 0208の範囲外の文字が含まれる単語を
14 # 辞書にインポートする場合には、UTF-8 で出力してから、Notepad.exeなどで
15 # 「Unicode」(UTF-16LE BOM付き)に変換してください。
17 #############################################################################
19 #1 名詞 2 固有人姓 3 固有人名 4 固有人他 5 固有地名 #
20 #6 固有組織 7 固有商品 8 固有一般 9 名詞サ変 10 名詞ザ変 #
21 #11 名詞形動 12 名サ形動 13 数詞 14 副詞 15 連体詞 #
22 #16 接続詞 17 感動詞 18 独立語 19 接頭語 20 冠数詞 #
23 #21 接尾語 22 助数詞 23 カ行五段 24 ガ行五段 25 サ行五段 #
24 #26 タ行五段 27 ナ行五段 28 バ行五段 29 マ行五段 30 ラ行五段 #
25 #31 ワ行五段 32 ハ行四段 33 一段動詞 34 カ変動詞 35 サ変動詞 #
26 #36 ザ変動詞 37 形容詞 38 形容詞ウ 39 形容動詞 40 形動タリ #
28 #############################################################################
33 use Getopt::Long qw(:config posix_default no_ignore_case gnu_compat);
44 'help|h' => \$help_only,
45 'skip-geta|g' => \$skip_geta,
46 'utf8|u' => \$utf8_output
48 if (defined($help_only)) {
49 print STDERR "usage: $0 [--help|-h] [--skip-geta|-g] [--utf8-output|-u]\n";
56 # JIS X 0208 に含まれていない文字を含む行を読み飛ばす
57 # 読み飛ばしにはコメントに「〓あり」マーカーが必要
58 next if (defined($skip_geta) && /〓あり/);
60 s/#.*$//; # `#'以降を取り去る
61 next if (/^\s*$/); # その結果空行になった行は読み飛ばす。
63 if (/(\S+)\s+(\S+)\s+(\S+)/) {
67 ODIC::check_phonate($phonate);
68 ODIC::check_word($word);
72 print STDERR "Error: $.: too few field number `$_'\n";
81 if ($class eq "普通名詞") {
84 elsif ($class eq "サ変名詞") {
87 elsif ($class eq "形動名詞") {
90 elsif ($class eq "姓") {
93 elsif ($class eq "名") {
96 elsif ($class eq "その他の人名") {
99 elsif ($class eq "単純地名") {
102 elsif ($class eq "接尾語付き地名") {
105 elsif ($class eq "組織名") {
108 elsif ($class eq "その他固有名詞") {
111 elsif ($class eq "副詞") {
114 elsif ($class eq "接続詞") {
117 elsif ($class eq "感動詞") {
120 elsif ($class eq "形容詞") {
123 elsif ($class eq "形容動詞") {
126 elsif ($class eq "接頭語") {
129 elsif ($class eq "数字列接頭語") {
132 elsif ($class eq "接尾語") {
135 elsif ($class eq "人名接尾語") {
138 elsif ($class eq "地名接尾語") {
141 elsif ($class eq "組織名接尾語") {
144 elsif ($class eq "数字列接尾語") {
147 elsif ($class eq "成句") {
150 elsif ($class eq "無品詞") {
154 print STDERR "Error: $.: unknown class `$class': $phonate\t$word\n";
155 if (defined($utf8_output)) {
156 print "$phonate\t$word\t[〓]\r\n";
158 print ODIC::to_shiftjis("$phonate\t$word\t[〓]\r\n");
162 if (defined($utf8_output)) {
163 print "$phonate\t$word\t $class \r\n";
165 print ODIC::to_shiftjis("$phonate\t$word\t $class \r\n");
177 ($sec, $min, $hour, $mday, $mon, $year) = localtime(time());
180 if (defined($utf8_output)) {
181 print "おきなわじしょのひづけ\t$year/$mon/$mday(沖縄辞書の日付け)\t 1 \r\n";
183 print ODIC::to_shiftjis("おきなわじしょのひづけ\t$year/$mon/$mday(沖縄辞書の日付け)\t 1 \r\n");
188 print "!!DICUT16\r\n";