JTalkが全角ひらがなの間の長音を読まない
下記のコミットで暫定的な修正をしました。
lp:nvdajp 4395
またチケット 29828 に関する修正が辞書のUnicode化で壊れていた問題をあわせて解決しました。
下記のような修正を Mecab_correctFeatures() で行なっています。
mecab:0.993 nvdajp-jtalk-dic (utf-8) 20121014-134920 Mecab_print size: 9 0 十,名詞,数,*,*,*,*,十,ジュウ,ジュー,1/2,C3 1 五絡脈病証,名詞,数,*,*,*,*,* 2 。,記号,句点,*,*,*,*,。,。,。,*/*,* 3 マーク,名詞,サ変接続,*,*,*,*,マーク,マーク,マーク,1/3,C1 4 。,記号,句点,*,*,*,*,。,。,。,*/*,* 5 ま,接頭詞,名詞接続,*,*,*,*,ま,マ,マ,1/1,P2 6 ー,名詞,一般,*,*,*,*,* 7 く,動詞,非自立,*,*,五段・カ行促音便,基本形,く,ク,ク,0/1,動詞%F4@0 8 。,記号,句点,*,*,*,*,。,。,。,*/*,* Mecab_print size: 9 0 十,名詞,数,*,*,*,*,十,ジュウ,ジュー,1/2,C3 1 五絡脈病証,名詞,普通名詞,*,*,*,*,五絡脈病証,ゴカラマミャクヤマイアカシ,ゴカラ マミャクヤマイアカシ,1/12,C0 2 。,記号,句点,*,*,*,*,。,。,。,*/*,* 3 マーク,名詞,サ変接続,*,*,*,*,マーク,マーク,マーク,1/3,C1 4 。,記号,句点,*,*,*,*,。,。,。,*/*,* 5 まー,接頭詞,名詞接続,*,*,*,*,まー,マー,マー,1/2,C0 6 ー,名詞,一般,*,*,*,*,* 7 く,動詞,非自立,*,*,五段・カ行促音便,基本形,く,ク,ク,0/1,動詞%F4@0 8 。,記号,句点,*,*,*,*,。,。,。,*/*,*
チケット #29954 のバグは本件の影響と分かったので、こちらにコメントを追加します。
入力:ふぅー mecab:0.993 nvdajp-jtalk-dic (utf-8) 20121025-015219 Mecab_print size: 3 0 ふ,名詞,一般,*,*,*,*,ふ,フ,フ,1/1,C3 1 ぅ,名詞,一般,*,*,*,*,* 2 ー,名詞,一般,*,*,*,*,* Traceback (most recent call last): File "jtalkRunner.py", line 75, in <module> Mecab_correctFeatures(mf, CODE_='utf-8') File "..\source\synthDrivers\jtalk\mecab.py", line 390, in Mecab_correctFeatures yomi = ar2[8] + u'繝シ' IndexError: list index out of range
下記のコミットで修正しました。
lp:~nvdajp/nvdajp/jp2012.3 rev 5609
「ぅー。ぅぅー。」のようなケースはうまく処理できませんが、エラーは回避しています。
テストケースを jptools/jtalkRunner.py で処理した結果:
まーく。ふぅー。ふぅぅぅぅぅー。ぅー。ぅぅー。 mecab:0.993 nvdajp-jtalk-dic (utf-8) 20121025-015219 Mecab_print size: 18 0 ま,フィラー,*,*,*,*,*,ま,マ,マ,1/1,C3 1 ー,名詞,一般,*,*,*,*,* 2 く,動詞,非自立,*,*,五段・カ行促音便,基本形,く,ク,ク,0/1,動詞%F4@0 3 。,記号,句点,*,*,*,*,。,。,。,*/*,* 4 ふ,名詞,一般,*,*,*,*,ふ,フ,フ,1/1,C3 5 ぅ,名詞,一般,*,*,*,*,* 6 ー,名詞,一般,*,*,*,*,* 7 。,記号,句点,*,*,*,*,。,。,。,*/*,* 8 ふ,名詞,一般,*,*,*,*,ふ,フ,フ,1/1,C3 9 ぅぅぅぅぅ,名詞,一般,*,*,*,*,* 10 ー,名詞,一般,*,*,*,*,* 11 。,記号,句点,*,*,*,*,。,。,。,*/*,* 12 ぅ,名詞,一般,*,*,*,*,* 13 ー,名詞,一般,*,*,*,*,* 14 。,記号,句点,*,*,*,*,。,。,。,*/*,* 15 ぅぅ,名詞,一般,*,*,*,*,* 16 ー,名詞,一般,*,*,*,*,* 17 。,記号,句点,*,*,*,*,。,。,。,*/*,* Mecab_print size: 18 0 まー,フィラー,*,*,*,*,*,まー,マー,マー,1/2,C0 1 ー,名詞,一般,*,*,*,*,* 2 く,動詞,非自立,*,*,五段・カ行促音便,基本形,く,ク,ク,0/1,動詞%F4@0 3 。,記号,句点,*,*,*,*,。,。,。,*/*,* 4 ふぅー,名詞,一般,*,*,*,*,ふぅー,フぅー,フぅー,1/3,C0 5 ぅ,名詞,一般,*,*,*,*,* 6 ー,名詞,一般,*,*,*,*,* 7 。,記号,句点,*,*,*,*,。,。,。,*/*,* 8 ふぅぅぅぅぅー,名詞,一般,*,*,*,*,ふぅぅぅぅぅー,フぅぅぅぅぅー,フぅぅぅぅぅー,1/7,C0 9 ぅぅぅぅぅ,名詞,一般,*,*,*,*,* 10 ー,名詞,一般,*,*,*,*,* 11 。,記号,句点,*,*,*,*,。,。,。,*/*,* 12 ぅ,名詞,一般,*,*,*,*,* 13 ー,名詞,一般,*,*,*,*,* 14 。,記号,句点,*,*,*,*,。,。,。,*/*,* 15 ぅぅ,名詞,一般,*,*,*,*,* 16 ー,名詞,一般,*,*,*,*,* 17 。,記号,句点,*,*,*,*,。,。,。,*/*,*
開発版で確認した現象ですが 2012.2.1jp でも発生しているので報告します。
「マーク」を1行単位で読ませると正しいのですが「まーく」を読ませると「マク」と発音しています。
ひらがなの間の長音が未知語になっているようです(下記):