miscDepsJp の更新
To git@bitbucket.org:nvdajp/nvdajpmiscdep.git be7ad5e..041f562 master -> master
状況を確認したので、暫定的に、点訳エンジンの入力文字列がすべて半角カタカナの場合は、テキスト解析も Unicode 正規化もスキップする、という処理を追加しています。
カナ表記から点字パターンへの変換 (translator1.py) でもう一度 Unicode 正規化されるのですが、今度は「カ」「濁点」が2マスに点訳されて、たまたま文字数が変わらないので、うまくいっている、という状況です。
半角カタカナと他の文字が混じるとうまくいきません。 もうすこしまともな方法がないか、引き続き考えてみます。
根本的には音声合成の正規化は NFKD で、点字の正規化は NFD で、というように Unicode 正規化を使い分けて、 点字ではできるだけ文字数の変わらない正規化をするべき、と思えてきました。
訂正: 根本的には音声合成の正規化は NFKC で、点字の正規化は NFC で、 というように Unicode 正規化を使い分けて、 点字では半角カタカナの文字数の変わらない正規化をするべき。
Decompose された全角カタカナが入力されたときにポジションマッピングできない問題は解決できないが、 こちらもちゃんとやるなら、 そもそも「正規化されてない文字列のすべての可能性をカバーできるテキスト解析」 をしなくてはならない。
課題名を 「点訳エンジンのポジションマッピング処理における半角カタカナ記号の扱い」 から 「点訳エンジンのポジションマッピング処理におけるUnicode正規化の扱い」 に変更。
指摘があったケース:
{ 'text':'ああ…こまった。', 'input':'アア...コマッタ。', 'output':'⠁⠁⠲⠲⠲⠪⠵⠂⠕⠲', },
'\u2026' をピリオド3個に正規化しているので、文字数が変わってしまう:
>>> import unicodedata >>> print unicodedata.normalize('NFKC', u'ああ…こまった。') ああ...こまった。
半角カタカナの半濁点を含むテキストで点字カーソルの位置がおかしくなる現象についてご指摘をいただいています。
日本語点訳エンジンのポジションマッピング処理において、半角カタカナ記号の扱いが適切でないためと思います。
まだ詳細の確認をしていませんが、mecabでテキスト解析をするための前処理でユニコード正規化をしており、ここで文字数が変わってしまうためと思われます。