#!/usr/bin/perl # ATOKテキスト辞書から Wnnテキスト辞書に変換 # 漢字コードは予め EUC に統一しておく事 # 書式: convert.txt < atokdic >wnndic # while(<>) { # 改行を取り除く if(/\n$/) { # 0x0a を取り除くと UNIX における改行が chop; # 取り除かれる } if(/\r$/) { # 更に 0x0d を取り除くと MS-DOS における chop; # 改行を取り除いた事になる } # ついでに Mac の改行もここで取り除かれる # 先頭が "!!" ならばコメントなので無視 if(/^!!/) { next; } # 空行は無視 if(/(^$|^\s$)/) { next; } # ","を区切り文字として品詞を ATOK から Wnn の物に変換して出力 # 読み込み結果は @_ へ # @_[0] 読み # @_[1] 漢字 # @_[2] 品詞 # ここでは、区切り子がtabである。 #split(/,/,$_); (@_[0], @_[1], @_[2]) = split(/\x09/,$_,3); #空白チェック if (@_[1] =~ / /) { @_[1] =~ tr/ /_/; } if (@_[2] eq "名詞") { # 1 @Hinsi = "名詞"; } elsif (@_[2] eq "固有人名") { # 2 @Hinsi = "人名"; } elsif (@_[2] eq "固有人他") { # 2 @Hinsi = "人名"; } elsif (@_[2] eq "固有人姓") { # 2 @Hinsi = "人名"; } elsif (@_[2] eq "固有地名") { # 3 @Hinsi = "地名"; } elsif (@_[2] eq "固有組織") { # 4 @Hinsi = "固有名詞"; } elsif (@_[2] eq "固有商品") { # 4 @Hinsi = "固有名詞"; } elsif (@_[2] eq "固有一般") { # 5 @Hinsi = "固有名詞"; } elsif (@_[2] eq "名詞サ変") { # 6 @Hinsi = "サ行(する)&名詞"; } elsif (@_[2] eq "名詞ザ変") { # 7 @Hinsi = "ザ行(ずる)"; } elsif (@_[2] eq "名サ形動") { # 8 @Hinsi = "形容動詞&名詞"; } elsif (@_[2] eq "名詞形動") { # 8 @Hinsi = "形容動詞&名詞"; } elsif (@_[2] eq "独立語") { # 9 @Hinsi = "接続詞,感動詞"; } elsif (@_[2] eq "単漢字") { # 10 @Hinsi = "単漢字"; } elsif (@_[2] eq "連体詞") { # 11 @Hinsi = "連体詞"; } elsif (@_[2] eq "接続詞") { # 12 @Hinsi = "接続詞,感動詞"; } elsif (@_[2] eq "感動詞") { # 13 @Hinsi = "接続詞,感動詞"; } elsif (@_[2] eq "接頭語") { # 14 @Hinsi = "接頭語"; } elsif (@_[2] eq "接尾辞") { # 15 @Hinsi = "接尾語"; } elsif (@_[2] eq "接尾語") { # 15 @Hinsi = "接尾語"; } elsif (@_[2] eq "数詞") { # 16 @Hinsi = "数詞"; } elsif (@_[2] eq "助数詞") { # 16 @Hinsi = "数詞"; } elsif (@_[2] eq "カ行五段") { # 17 @Hinsi = "カ行五段"; } elsif (@_[2] eq "ガ行五段") { # 18 @Hinsi = "ガ行五段"; } elsif (@_[2] eq "サ行五段") { # 19 @Hinsi = "サ行五段"; } elsif (@_[2] eq "タ行五段") { # 20 @Hinsi = "タ行五段"; } elsif (@_[2] eq "ナ行五段") { # 21 @Hinsi = "ナ行五段"; } elsif (@_[2] eq "ハ行五段") { # 22 @Hinsi = "ハ行五段"; } elsif (@_[2] eq "バ行五段") { # 23 @Hinsi = "バ行五段"; } elsif (@_[2] eq "マ行五段") { # 24 @Hinsi = "マ行五段"; } elsif (@_[2] eq "ラ行五段") { # 25 @Hinsi = "ラ行五段"; } elsif (@_[2] eq "ワ行五段") { # 26 @Hinsi = "ワ行五段"; } elsif (@_[2] eq "一段動詞") { # 27 @Hinsi = "一段"; } elsif (@_[2] eq "カ変動詞") { # 28 # カ変は「来る」のみなのでこの場で全て処理する。 print @_[0], " ", @_[1], " 来(こ) 1\n"; print @_[0], " ", @_[1], " 来(き) 1\n"; print @_[0], " ", @_[1], " 来(く) 1\n"; next; } elsif (@_[2] eq "サ変動詞") { # 29 @Hinsi = "サ行(する)"; } elsif (@_[2] eq "ザ変動詞") { # 30 @Hinsi = "ザ行(ずる)"; } elsif (@_[2] eq "形容詞ウ") { # 31 @Hinsi = "形容詞"; } elsif (@_[2] eq "形容詞") { # 31 @Hinsi = "形容詞"; } elsif (@_[2] eq "形容動詞") { # 32 @Hinsi = "形容動詞"; } elsif (@_[2] eq "形動タリ") { # 32 @Hinsi = "形容動詞(たる)"; } elsif (@_[2] eq "副詞") { # 33 @Hinsi = "副詞"; } elsif (@_[2] eq "冠数詞") { # 33 @Hinsi = "接頭数詞"; # Added for ATOK 16 } elsif (@_[2] eq "独立語") { # 34 @Hinsi = "名詞"; } else { print @_[0], " : ", @_[1], " : ", @_[2], " という単語が認識できません。\n"; die; } # 変換結果を出力 print @_[0], " ", @_[1], " ", @Hinsi, " 0\n"; }