3 # oki2jis.pl - 沖縄辞書のファイルを JIS X 4062 の形式のテキストに変換する
5 # $Id: oki2jis.pl,v 1.7 2006/09/01 18:20:06 void Exp $
7 # このスクリプトを使って、以下のように「okinawa.txt」を生成してください。
8 # $ cat ../*.dic | script/oki2jis.pl | sort -u | nkf -s > okinawa.txt
9 # 後半のnkfのオプションは先方の都合に合わせて変更してください。
13 use lib $FindBin::Bin; # For search scripts/ODIC.pm
16 use Getopt::Long qw(:config posix_default no_ignore_case gnu_compat);
26 'help|h' => \$help_only,
27 'skip-geta|g' => \$skip_geta
29 if (defined($help_only)) {
30 print STDERR "usage: $0 [--help|-h] [--skip-geta|-g]\n";
36 # JIS X 0208 に含まれていない文字を含む行を読み飛ばす
37 # 読み飛ばしにはコメントに「〓あり」マーカーが必要
38 next if (defined($skip_geta) && /〓あり/);
40 s/#.*$//; # `#'以降を取り去る
41 next if (/^\s*$/); # その結果空行になった行は読み飛ばす。
42 if (/(\S+)\s+(\S+)\s+(\S+)/) {
46 ODIC::check_phonate($phonate);
47 ODIC::check_word($word);
51 print STDERR "Error: $.: too few field number `$_'\n";
60 if ($class eq "普通名詞") {
61 print "$phonate,$word,$class\n"; # !!!
63 elsif ($class eq "サ変名詞") {
64 print "$phonate,$word,$class\n";
66 elsif ($class eq "形動名詞") {
67 print "$phonate,$word,$class\n";
69 elsif ($class eq "姓") {
70 print "$phonate,$word,$class\n";
72 elsif ($class eq "名") {
73 print "$phonate,$word,$class\n";
75 elsif ($class eq "その他の人名") {
76 print "$phonate,$word,$class\n";
78 elsif ($class eq "単純地名") {
79 print "$phonate,$word,$class\n";
81 elsif ($class eq "接尾語付き地名") {
82 print "$phonate,$word,$class\n";
84 elsif ($class eq "組織名") {
85 print "$phonate,$word,$class\n"; # !!!
87 elsif ($class eq "その他固有名詞") {
88 print "$phonate,$word,その他の固有名詞\n";
90 elsif ($class eq "副詞") {
91 print "$phonate,$word,$class\n";
93 elsif ($class eq "接続詞") {
94 print "$phonate,$word,$class\n";
96 elsif ($class eq "感動詞") {
97 print "$phonate,$word,$class\n";
99 elsif ($class eq "形容詞") {
100 print "$phonate,$word,$class\n";
102 elsif ($class eq "形容動詞") {
103 print "$phonate,$word,$class\n";
105 elsif ($class eq "接頭語") { # !!!
106 print "$phonate,$word,$class\n";
108 elsif ($class eq "数字列接頭語") {
109 print "$phonate,$word,$class\n";
111 elsif ($class eq "接尾語") {
112 print "$phonate,$word,$class\n";
114 elsif ($class eq "人名接尾語") {
115 print "$phonate,$word,$class\n";
117 elsif ($class eq "地名接尾語") {
118 print "$phonate,$word,$class\n";
120 elsif ($class eq "組織名接尾語") {
121 print "$phonate,$word,$class\n";
123 elsif ($class eq "数字列接尾語") {
124 print "$phonate,$word,$class\n";
126 elsif ($class eq "成句") {
127 print "$phonate,$word,$class\n"; # !!!
129 elsif ($class eq "無品詞") {
130 print "$phonate,$word,$class\n";
133 print STDERR "Error: $.: unknown class `$class': $phonate\t$word\n";
134 print "$phonate,$word,$class\n";
140 my($year, $mon, $mday);
141 my($hour, $min, $sec);
143 ($sec, $min, $hour, $mday, $mon, $year) = localtime(time());
146 print ",,\"適合規格=JIS X 4062:1998\"\n";
147 print ",,\"表題=沖縄辞書\"\n";
148 print ",,\"分野=琉球、沖縄\"\n";
149 print ",,\"版=第$year/$mon/$mday版\"\n";
150 print ",,\"編者=沖縄辞書プロジェクト\"\n";
151 print ",,\"作成日=$year-$mon-$mday\"\n";
163 ($sec, $min, $hour, $mday, $mon, $year) = localtime(time());
166 print "おきなわじしょのひづけ,$year/$mon/$mday(沖縄辞書の日付け),無品詞\n";