1月 26, 2013
kamata

openJTalkを10.6にインストール(2)

鎌田です。

openJTalkのシステム辞書に語句を登録してみる。通常のmecabのcsvに対して2つの項目追加がある。

■辞書の中のエフエム〜を見てみる。
エフエム愛知,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム愛知,エフエムアイチ,エフエムアイチ,5/7,C1
エフエム愛媛,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム愛媛,エフエムエヒメ,エフエムエヒメ,5/7,C1
エフエム岩手,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム岩手,エフエムイワテ,エフエムイワテ,5/7,C1
エフエム宮崎,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム宮崎,エフエムミヤザキ,エフエムミヤザキ,6/8,C1
エフエム京都,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム京都,エフエムキョウト,エフエムキョート,5/7,C1
エフエム九州,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム九州,エフエムキュウシュウ,エフエムキューシュー,5/8,C1
エフエム香川,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム香川,エフエムカガワ,エフエムカガワ,5/7,C1
エフエム高知,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム高知,エフエムコウチ,エフエムコーチ,5/7,C1
エフエム埼玉,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム埼玉,エフエムサイタマ,エフエムサイタマ,5/8,C1
エフエム山陰,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム山陰,エフエムサンイン,エフエムサンイン,0/8,C1
エフエム山形,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム山形,エフエムヤマガタ,エフエムヤマガタ,6/8,C1
エフエム石川,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム石川,エフエムイシカワ,エフエムイシカワ,0/8,C1
エフエム仙台,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム仙台,エフエムセンダイ,エフエムセンダイ,5/8,C1
エフエム大阪,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム大阪,エフエムオオサカ,エフエムオーサカ,5/8,C1
エフエム大分,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム大分,エフエムオオイタ,エフエムオーイタ,5/8,C1
エフエム長崎,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム長崎,エフエムナガサキ,エフエムナガサキ,6/8,C1
エフエム東京,1352,1352,4840,名詞,固有名詞,組織,*,*,*,エフエム東京,エフエムトウキョウ,エフエムトーキョー,5/8,C1
エフエム栃木,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム栃木,エフエムトチギ,エフエムトチギ,5/7,C1
エフエム富士,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム富士,エフエムフジ,エフエムフジ,5/6,C1
エフエム福岡,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム福岡,エフエムフクオカ,エフエムフクオカ,6/8,C1
エフエム放送,1345,1345,3452,名詞,一般,*,*,*,*,エフエム放送,エフエムホウソウ,エフエムホーソー,5/8,C1
エフエム北海道,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム北海道,エフエムホッカイドウ,エフエムホッカイドー,7/10,C1
エフエム名古屋,1352,1352,4841,名詞,固有名詞,組織,*,*,*,エフエム名古屋,エフエムナゴヤ,エフエムナゴヤ,5/7,C1

これをみると、最後から2項目目が、5/7、6/8、0/8とかなっている。
推測するに、分母が文字(というか音の数)、分子がアクセントの文字位置に思える。
最終項目がC1となっているがこれがよくわからない。
naist-jdic.csvを見ると、*、C1、C2、C3、C4、C5、P1、P2、-1や動詞がFになっている。
C1が154130語、C2が100359語、C3が11846語、C4が1063語、P1が35語、P2が219語、C5が〜殿、〜様となっている。

■アクセント結合規則
アクセントなどでググると、
東京大学大学院の修士論文「条件付確率場に基づく日本語アクセント型予想モデルの改良と日本語教育システムへの応用」の中に、これらの説明があった。
「アクセント結合規則」の結合様式を表している。C1〜C5は複合名詞のアクセントの結合規則を表している。
日本語の発声の音のことをモーラということも知った。

C1:自立語結合保存型
 後続語が2モーラ以上、かつ最終音節以外の位置にアクセント核を持つ場合後続語の単独アクセント型が保持される。
C2:自立語結合生起型
 後続語が2モーラ以上、かつアクセント核を持たない。先行後のアクセント核が消え、後続要素の先頭モーラにアクセント核が来る。
C3:接辞結合標準型
 接尾辞または2モーラ以下の名詞が接続した場合、先行型の末尾モーラに核を生じさせる。
C4:接辞結合平板化型
 接尾辞または2モーラ以下の名詞が接続した場合、結合した複合語を平板化させる。
C5:従属型
 後続語のモーラ数アクセント型にかかわらず、先行語のアクセント型が保持される

と何となくわかりそうで、わからない。
分かったことは、
最後から2項目目がモーラ数と、アクセントのあるモーラ位置。
最終項目がアクセント結合タイプ。
ということだ。
辞書登録する場合、名詞ならば、類似の言葉をみつけ、C1かC2を付けておけば良いだろう。

■「エバンゲリオン」を登録する
辞書に無い最近の語句はないかと思って、エバンゲリオンをnaist-jdic.csvで調べるとない。
「エバンゲリオン」を登録してみよう。

まずは登録前に発声させてみる。どのようになるのか?
「テレビでエバンゲリオンを見た。」と発声させ(音声はこちら)、logをみると、

エバンゲリオン,名詞,一般,*,*,*,*,*,エバンゲリオン,エバンゲリオン,0/7,*,0
となっている。mecabは未知語を自動判断する機能があるので、それで生成していると思える。

mecabの辞書登録では、左id右idの数値は未定義であってもシステムが自動生成するはずなので、
csvに下記のように追記して、makeした。

エバンゲリオン,,,4000,名詞,一般,*,*,*,*,エバンゲリオン,エバンゲリオン,エバンゲリオン,1/7,C1
エヴァンゲリオン,,,4000,名詞,一般,*,*,*,*,エバンゲリオン,エバンゲリオン,エヴァンゲリオン,4/7,C1
ヱヴァンゲリヲン,,,4000,名詞,一般,*,*,*,*,エバンゲリオン,エバンゲリオン,ヱヴァンゲリヲン,6/7,C1

makeすると
Making all in mecab-naist-jdic
../mecab/src/mecab-dict-index -d . -o . -f EUC-JP -t utf-8
reading ./unk.def … 40
emitting double-array: 100% |###########################################|
./model.def is not found. skipped.
reading ./naist-jdic.csv … dictionary.cpp(258) [type == MECAB_USR_DIC] lid/rid fields should not be empty in sys/unk dic.
dictionary.cpp(258) [type == MECAB_USR_DIC] lid/rid fields should not be empty in sys/unk dic.
dictionary.cpp(258) [type == MECAB_USR_DIC] lid/rid fields should not be empty in sys/unk dic.
481596
emitting double-array: 100% |###########################################|
reading ./matrix.def … 1377×1377
emitting matrix : 100% |###########################################|

done!
となり、なにやらメッセージが出ている模様。左id右idが未定義だよと言っているみたい。
エラーにはなっていないので、このままでも行けるのかもしれないが、一応設定する。
後でやってみたところ、未定義の状態でも音声ファイルは生成できた。

既存の項目、エビせんが下記のようになっているので、1345を使用してみる。
エビせん,1345,1345,3452,名詞,一般,*,*,*,*,エビせん,エビセン,エビセン,0/4,C2

エバンゲリオン,1345,1345,4000,名詞,一般,*,*,*,*,エバンゲリオン,エバンゲリオン,エバンゲリオン,1/7,C1
エヴァンゲリオン,1345,1345,4000,名詞,一般,*,*,*,*,エバンゲリオン,エバンゲリオン,エヴァンゲリオン,4/7,C1
ヱヴァンゲリヲン,1345,1345,4000,名詞,一般,*,*,*,*,エバンゲリオン,エバンゲリオン,ヱヴァンゲリヲン,6/7,C1

makeすると、
Making all in mecab-naist-jdic
../mecab/src/mecab-dict-index -d . -o . -f EUC-JP -t utf-8
reading ./unk.def … 40
emitting double-array: 100% |###########################################|
./model.def is not found. skipped.
reading ./naist-jdic.csv … 481596
emitting double-array: 100% |###########################################|
reading ./matrix.def … 1377×1377
emitting matrix : 100% |###########################################|

done!
と文句はでなくなった。make installする。

■音声合成する
テレビでエバンゲリオンを見た。→音声はこちら
テレビでエヴァンゲリオンを見た。→音声はこちら
テレビでヱヴァンゲリヲンを見た。→→音声はこちら

指定したアクセント位置で発声している。辞書登録は成功したといえよう。
(mecabみたいにユーザ辞書を持てるようにして欲しいな)

Leave a comment