[Julius-cvs 358] CVS update: julius4/gramtools/yomi2voca

Back to archive index

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";
+
 }


Julius-cvs メーリングリストの案内
Back to archive index