sumom****@users*****
sumom****@users*****
2008年 12月 19日 (金) 15:42:09 JST
Index: julius4/gramtools/yomi2voca/yomi2voca.pl.in diff -u julius4/gramtools/yomi2voca/yomi2voca.pl.in:1.2 julius4/gramtools/yomi2voca/yomi2voca.pl.in:1.3 --- julius4/gramtools/yomi2voca/yomi2voca.pl.in:1.2 Tue Dec 18 17:45:48 2007 +++ julius4/gramtools/yomi2voca/yomi2voca.pl.in Fri Dec 19 15:42:09 2008 @@ -1,32 +1,185 @@ #!@PERL@ -# Copyright (c) 1991-2007 Kawahara Lab., Kyoto University +# Copyright (c) 1991-2008 Kawahara Lab., Kyoto University # Copyright (c) 2000-2005 Shikano Lab., Nara Institute of Science and Technology -# Copyright (c) 2005-2007 Julius project team, Nagoya Institute of Technology +# Copyright (c) 2005-2008 Julius project team, Nagoya Institute of Technology # All rights reserved # # @configure_input@ # -# ひらがな -> ROMAN(標準形式) 変換スクリプト -# .yomi -> .voca +# ひらがな -> Julius 標準モデル用変換スクリプト +# 第2フィールドのひらがなを変換する. +# +# .yomi -> .dict +# +# 助詞の「は」「へ」「を」→「w a」「e」「o」は変換後に手動で直すこと. +# +# ver2: 小さい「ぁぃぅぇぉ」や「う゛」などに対応 +# +# +$error = 0; +$lineno = 0; while (<>) { -# カテゴリ名はすっとばす + +# 文法用に,"%" で始まる行はそのまま出力する. if (/^%/){ print; next; } - chop; + chomp; # 表記とひらがな読みを分離 @a = split; $_ = $a[1]; # ひらがな,長音以外はそのまま + +# 3文字以上からなる変換規則(v a) + s/う゛ぁ/ b a/g; + s/う゛ぃ/ b i/g; + s/う゛ぇ/ b e/g; + s/う゛ぉ/ b o/g; + s/う゛ゅ/ by u/g; + # 2文字からなる変換規則 + s/ぅ゛/ b u/g; + + s/あぁ/ a a/g; + s/いぃ/ i i/g; + s/いぇ/ i e/g; + s/いゃ/ y a/g; + s/うぅ/ u:/g; + s/えぇ/ e e/g; + s/おぉ/ o:/g; + s/かぁ/ k a:/g; + s/きぃ/ k i:/g; + s/くぅ/ k u:/g; + s/くゃ/ ky a/g; + s/くゅ/ ky u/g; + s/くょ/ ky o/g; + s/けぇ/ k e:/g; + s/こぉ/ k o:/g; + s/がぁ/ g a:/g; + s/ぎぃ/ g i:/g; + s/ぐぅ/ g u:/g; + s/ぐゃ/ gy a/g; + s/ぐゅ/ gy u/g; + s/ぐょ/ gy o/g; + s/げぇ/ g e:/g; + s/ごぉ/ g o:/g; + s/さぁ/ s a:/g; + s/しぃ/ sh i:/g; + s/すぅ/ s u:/g; + s/すゃ/ sh a/g; + s/すゅ/ sh u/g; + s/すょ/ sh o/g; + s/せぇ/ s e:/g; + s/そぉ/ s o:/g; + s/ざぁ/ z a:/g; + s/じぃ/ j i:/g; + s/ずぅ/ z u:/g; + s/ずゃ/ zy a/g; + s/ずゅ/ zy u/g; + s/ずょ/ zy o/g; + s/ぜぇ/ z e:/g; + s/ぞぉ/ z o:/g; + s/たぁ/ t a:/g; + s/ちぃ/ ch i:/g; + s/つぁ/ ts a/g; + s/つぃ/ ts i/g; + s/つぅ/ ts u:/g; + s/つゃ/ ch a/g; + s/つゅ/ ch u/g; + s/つょ/ ch o/g; + s/つぇ/ ts e/g; + s/つぉ/ ts o/g; + s/てぇ/ t e:/g; + s/とぉ/ t o:/g; + s/だぁ/ d a:/g; + s/ぢぃ/ j i:/g; + s/づぅ/ d u:/g; + s/づゃ/ zy a/g; + s/づゅ/ zy u/g; + s/づょ/ zy o/g; + s/でぇ/ d e:/g; + s/どぉ/ d o:/g; + s/なぁ/ n a:/g; + s/にぃ/ n i:/g; + s/ぬぅ/ n u:/g; + s/ぬゃ/ ny a/g; + s/ぬゅ/ ny u/g; + s/ぬょ/ ny o/g; + s/ねぇ/ n e:/g; + s/のぉ/ n o:/g; + s/はぁ/ h a:/g; + s/ひぃ/ h i:/g; + s/ふぅ/ f u:/g; + s/ふゃ/ hy a/g; + s/ふゅ/ hy u/g; + s/ふょ/ hy o/g; + s/へぇ/ h e:/g; + s/ほぉ/ h o:/g; + s/ばぁ/ b a:/g; + s/びぃ/ b i:/g; + s/ぶぅ/ b u:/g; + s/ふゃ/ hy a/g; + s/ぶゅ/ by u/g; + s/ふょ/ hy o/g; + s/べぇ/ b e:/g; + s/ぼぉ/ b o:/g; + s/ぱぁ/ p a:/g; + s/ぴぃ/ p i:/g; + s/ぷぅ/ p u:/g; + s/ぷゃ/ py a/g; + s/ぷゅ/ py u/g; + s/ぷょ/ py o/g; + s/ぺぇ/ p e:/g; + s/ぽぉ/ p o:/g; + s/まぁ/ m a:/g; + s/みぃ/ m i:/g; + s/むぅ/ m u:/g; + s/むゃ/ my a/g; + s/むゅ/ my u/g; + s/むょ/ my o/g; + s/めぇ/ m e:/g; + s/もぉ/ m o:/g; + s/やぁ/ y a:/g; + s/ゆぅ/ y u:/g; + s/ゆゃ/ y a:/g; + s/ゆゅ/ y u:/g; + s/ゆょ/ y o:/g; + s/よぉ/ y o:/g; + s/らぁ/ r a:/g; + s/りぃ/ r i:/g; + s/るぅ/ r u:/g; + s/るゃ/ ry a/g; + s/るゅ/ ry u/g; + s/るょ/ ry o/g; + s/れぇ/ r e:/g; + s/ろぉ/ r o:/g; + s/わぁ/ w a:/g; + s/をぉ/ o:/g; + + s/う゛/ b u/g; s/でぃ/ d i/g; + s/でぇ/ d e:/g; + s/でゃ/ dy a/g; + s/でゅ/ dy u/g; + s/でょ/ dy o/g; s/てぃ/ t i/g; + s/てぇ/ t e:/g; + s/てゃ/ ty a/g; + s/てゅ/ ty u/g; + s/てょ/ ty o/g; s/すぃ/ s i/g; + s/ずぁ/ z u a/g; s/ずぃ/ z i/g; + s/ずぅ/ z u/g; + s/ずゃ/ zy a/g; + s/ずゅ/ zy u/g; + s/ずょ/ zy o/g; + s/ずぇ/ z e/g; + s/ずぉ/ z o/g; s/きゃ/ ky a/g; s/きゅ/ ky u/g; s/きょ/ ky o/g; @@ -38,6 +191,16 @@ s/ちゅ/ ch u/g; s/ちぇ/ ch e/g; s/ちょ/ ch o/g; + s/とぅ/ t u/g; + s/とゃ/ ty a/g; + s/とゅ/ ty u/g; + s/とょ/ ty o/g; + s/どぁ/ d o a/g; + s/どぅ/ d u/g; + s/どゃ/ dy a/g; + s/どゅ/ dy u/g; + s/どょ/ dy o/g; + s/どぉ/ d o:/g; s/にゃ/ ny a/g; s/にゅ/ ny u/g; s/にょ/ ny o/g; @@ -53,10 +216,13 @@ s/ぎゃ/ gy a/g; s/ぎゅ/ gy u/g; s/ぎょ/ gy o/g; - s/じゃ/ j a/g; + s/ぢぇ/ j e/g; s/ぢゃ/ j a/g; - s/じゅ/ j u/g; + s/ぢゅ/ j u/g; + s/ぢょ/ j o/g; s/じぇ/ j e/g; + s/じゃ/ j a/g; + s/じゅ/ j u/g; s/じょ/ j o/g; s/びゃ/ by a/g; s/びゅ/ by u/g; @@ -64,11 +230,16 @@ s/ぴゃ/ py a/g; s/ぴゅ/ py u/g; s/ぴょ/ py o/g; + s/うぁ/ u a/g; s/うぃ/ w i/g; s/うぇ/ w e/g; s/うぉ/ w o/g; s/ふぁ/ f a/g; s/ふぃ/ f i/g; + s/ふぅ/ f u/g; + s/ふゃ/ hy a/g; + s/ふゅ/ hy u/g; + s/ふょ/ hy o/g; s/ふぇ/ f e/g; s/ふぉ/ f o/g; @@ -142,13 +313,42 @@ s/ゆ/ y u/g; s/よ/ y o/g; s/わ/ w a/g; + s/ゐ/ i/g; + s/ゑ/ e/g; s/ん/ N/g; s/っ/ q/g; s/ー/:/g; -#その他特別なルール +# ここまでに処理されてない ぁぃぅぇぉ はそのまま大文字扱い + s/ぁ/ a/g; + s/ぃ/ i/g; + s/ぅ/ u/g; + s/ぇ/ e/g; + s/ぉ/ o/g; + s/ゎ/ w a/g; + s/ぉ/ o/g; + +# その他特別なルール s/を/ o/g; +# 最初の空白を削る s/^ ([a-z])/$1/g; + +# 変換の結果長音記号が続くことがまれにあるので一つにまとめる + s/:+/:/g; + +# アルファベット列になっていない場合,変換に失敗しているので +# 標準エラー出力に出力する. + + $lineno++; + if (! /^[ a-zA-Z:]+$/) { + if ($error == 0) { + $error = 1; + print STDERR "Error: (they were also printed to stdout)\n"; + } + print STDERR "line " , $lineno , ": " , @a[0], "\t", $_,"\n"; + } + print @a[0], "\t", $_,"\n"; + }