＊＊＊　GalateaTalk で IPADIC を使うには　＊＊＊

         2003/12/03 nishi@hil.t.u-tokyo.ac.jp 西本卓也

GalateaTalk のテキスト解析処理では，内部で
形態素解析エンジン chasen を使用しています。

chasen は ipadic とよばれる辞書を使用していますが，
Galatea プロジェクトでは新たに単語の韻律情報を含む
辞書 UniDic を開発しました。
GalateaTalk の標準設定では chasen + UniDic を
使用しています。

現在の UniDic の登録単語数は ipadic よりも少ないため，
汎用のテキスト音声合成のための辞書としては
最適といえないのが現状です。

以下の手順で GalateaTalk において
UniDic ではなく ipadic を使った合成ができます。
登録単語数が多くなるので読み上げられない文章は減りますが，
アクセント情報が一切ないので合成音声の品質は低下します。
目的に応じて切り替えてご利用ください。

(1) www.chasen.aist-nara.ac.jp から ipadic-2.6.3
をダウンロードして galatea-v3.0/morph の下に展開し，
make を実行する

(2) ssm-ipadic.conf ファイルの作成

 $ cd galatea-v3.0/SSM

galatea-v3.0/SSM/ssm.conf を別名でコピーする。

 $ cp ssm.conf ssm-ipadic.conf

ssm-ipadic.conf の CHASEN-RC の設定を変更する。

 変更前  CHASEN-RC： ./chasenrc
 変更後  CHASEN-RC： ./chasenrc.ipadic

(3) chasenrc ファイルの追加

chasenrc.ipadic （本ドキュメントの末尾）を SSM の下に
コピーする。
以下の箇所が正しく指定されていることを確認する。

 (GRAMMAR  ../morph/ipadic-2.6.3)

(4) 実行方法

 $ ./gtalk -C ssm-ipadic.conf

あるいは，RUN スクリプトの冒頭 $conf の設定を

 $conf = "./ssm-ipadic.conf";

に変更して RUN を実行。

 $ ./RUN

(5) 必要に応じて：ソースファイルの修正

品詞体系が異なる場合には，句点や読点などの処理を適切に
行なうために，品詞辞書のテーブルを修正する必要がある．

具体的には IPADIC に対応するために，
morph.c の中で hinshiTable を define した部分に
    { H_TOUTEN, "記号-読点" },
を追加する。

*** morph.ORG.c	2003-12-03 12:08:30.000000000 +0900
--- morph.c	2003-12-03 12:08:55.000000000 +0900
***************
*** 112,117 ****
--- 112,118 ----
  	{ H_KAKKO_HIRAKU,          "その他-記号-括弧開" },	/* unidic-0 */
  	{ H_KAKKO_TOJIRU,          "その他-記号-括弧閉" },	/* unidic-0 */
  	{ H_SONOTA,                "その他" },
+ 	{ H_TOUTEN,                "記号-読点" },	/* ipadic */
  	{ H_MICHIGO,               "未知語" }
  
  };

変更後，コンパイルを実行する。

 $ make

[chasenrc.ipadic]
;;
;;  chasenrc for ipadic-2.6.3
;;
;; 日本語ラベルと英語ラベルどちらか指定するだけで良い
;;;
;;;  grammar.cha/ctypes.cha/cforms.cha location /文法ファイル
;;;
;(文法ファイル  /usr/local/lib/chasen/dic/ipadic)
(GRAMMAR  ../morph/ipadic-2.6.3)

;;;
;;;  dictionary /辞書
;;;
(DADIC        chadic)

;;;
;;;  POS for Unknown words /未知語品詞
;;;
;(未知語品詞 (名詞 サ変接続))
(UNKNOWN_POS (名詞 サ変接続))

;;;
;;;  output format /出力フォーマット
;;;
;(出力フォーマット "%m\t%y\t%M\t%U(%P-)\t%T \t%F \n")     ; default(-f)
;(OUTPUT_FORMAT "%m\t%y\t%M\t%U(%P-)\t%T \t%F \n")     ; default(-f)
;(OUTPUT_FORMAT "%m\t%y\t%M\t%P-\t%T \t%F \n")         ; POS name
;(OUTPUT_FORMAT "%m\t%?U/UNKNOWN/%y/\t%M\t%h/%t/%f\n") ; POS code
;(OUTPUT_FORMAT "%M\t%P-\n")
(OUTPUT_FORMAT "<W1 orth=\"%m\" pron=\"%?U/%m/%a/\" pos=\"%U(%P-)\"%?T/ cType=\"%T \"//%?F/ cForm=\"%F \"//%?I/ %i///>\n")

;;;
;;;  output format for compound words /複合語出力
;;;
;(複合語出力 "COMPOUND")      ; default
;(OUTPUT_COMPOUND "COMPOUND")      ; default
;(OUTPUT_COMPOUND "SEG")

;;;
;;;  BOS string /BOS文字列
;;;
;(BOS文字列 "BOS")      
;(BOS_STRING "BOS")      
(BOS_STRING "<S>\n")      

;;;
;;;  EOS string /EOS文字列
;;;
;(EOS文字列 "EOS")      
;(EOS_STRING "EOS")      
(EOS_STRING "</S>\n")

;;;
;;;  Connection cost for Undefined contexts /未定義連接コスト
;;;
;(未定義連接コスト 10000)
(DEF_CONN_COST 10000)

;;;
;;;  POS Weight /品詞コスト
;;;
;(品詞コスト
;	((*) 		1)
;	((UNKNOWN)    30000)
;)
(POS_COST
	((*) 		1)
	((UNKNOWN)    30000)
)

;;;
;;;  connecition rules Weight /連接コスト重み
;;;
;(連接コスト重み 1)
(CONN_WEIGHT 1)

;;;
;;;  morphemes Weight /形態素コスト重み
;;;
;(形態素コスト重み 1)
(MORPH_WEIGHT 1)

;;;
;;;  cost width /コスト幅
;;;
;(コスト幅 0)
(COST_WIDTH	  0)

;;;
;;;  composit POSs /連結品詞
;;;
;(連結品詞 ((名詞 数))
;          ((記号 アルファベット)))
;(COMPOSIT_POS ((名詞 数))
;          ((記号 アルファベット)))

;;;
;;;  POSs as white space /空白品詞
;;;
;(空白品詞 (記号 空白))
;(SPACE_POS (記号 空白))

;;;
;;;  annotation POSs /注釈
;;;
;(注釈 (("<" ">") (記号 一般)))
;(ANNOTATION (("<" ">") (記号 一般)))
(ANNOTATION (("<" ">") "%m\n"))

;;;
;;;  delimiter for option -j /区切り文字
;;;
;(区切り文字 "。．、，！？.,!? ")
;(DELIMITER "。．、，！？.,!? ")

[end of chasenrc.ipadic]
