チケット #34783

点訳エンジンのポジションマッピング処理におけるUnicode正規化の扱い

登録: 2015-01-06 10:45 最終更新: 2016-08-30 10:40

報告者:
担当者:
チケットの種類:
状況:
オープン [担当者決定済み]
コンポーネント:
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
受領
ファイル:
なし

詳細

半角カタカナの半濁点を含むテキストで点字カーソルの位置がおかしくなる現象についてご指摘をいただいています。

日本語点訳エンジンのポジションマッピング処理において、半角カタカナ記号の扱いが適切でないためと思います。

まだ詳細の確認をしていませんが、mecabでテキスト解析をするための前処理でユニコード正規化をしており、ここで文字数が変わってしまうためと思われます。

チケットの履歴 (6 件中 3 件表示)

2015-01-06 10:45 更新者: nishimoto
  • 新しいチケット "点訳エンジンのポジションマッピング処理における半角カタカナ記号の扱い" が作成されました
2015-01-07 18:03 更新者: nishimoto
  • 解決法なし から 受領 に更新されました
コメント

miscDepsJp の更新

To git@bitbucket.org:nvdajp/nvdajpmiscdep.git
   be7ad5e..041f562  master -> master

状況を確認したので、暫定的に、点訳エンジンの入力文字列がすべて半角カタカナの場合は、テキスト解析も Unicode 正規化もスキップする、という処理を追加しています。

カナ表記から点字パターンへの変換 (translator1.py) でもう一度 Unicode 正規化されるのですが、今度は「カ」「濁点」が2マスに点訳されて、たまたま文字数が変わらないので、うまくいっている、という状況です。

半角カタカナと他の文字が混じるとうまくいきません。 もうすこしまともな方法がないか、引き続き考えてみます。

2015-01-07 18:12 更新者: nishimoto
  • 担当者(未割り当て) から nishimoto に更新されました
  • コンポーネント(未割り当て) から 点訳エンジン に更新されました
2015-06-22 09:25 更新者: nishimoto
コメント

根本的には音声合成の正規化は NFKD で、点字の正規化は NFD で、というように Unicode 正規化を使い分けて、 点字ではできるだけ文字数の変わらない正規化をするべき、と思えてきました。

2015-06-22 09:31 更新者: nishimoto
コメント

訂正: 根本的には音声合成の正規化は NFKC で、点字の正規化は NFC で、 というように Unicode 正規化を使い分けて、 点字では半角カタカナの文字数の変わらない正規化をするべき。

Decompose された全角カタカナが入力されたときにポジションマッピングできない問題は解決できないが、 こちらもちゃんとやるなら、 そもそも「正規化されてない文字列のすべての可能性をカバーできるテキスト解析」 をしなくてはならない。

2016-08-30 10:40 更新者: nishimoto
  • 概要が更新されました
コメント

課題名を 「点訳エンジンのポジションマッピング処理における半角カタカナ記号の扱い」 から 「点訳エンジンのポジションマッピング処理におけるUnicode正規化の扱い」 に変更。

指摘があったケース:

	{
		'text':'ああ…こまった。',
		'input':'アア...コマッタ。',
		'output':'⠁⠁⠲⠲⠲⠪⠵⠂⠕⠲',
	},

'\u2026' をピリオド3個に正規化しているので、文字数が変わってしまう:

>>> import unicodedata
>>> print unicodedata.normalize('NFKC', u'ああ…こまった。')
ああ...こまった。

添付ファイルリスト

添付ファイルはありません

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする