任务单 #34783

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

开放日期: 2015-01-06 10:45 最后更新: 2016-08-30 10:40

报告人:
属主:
类型:
状态:
开启 [Owner assigned]
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Accepted
文件:

Details

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

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

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

任务单历史 (3/6 Histories)

2015-01-06 10:45 Updated by: nishimoto
  • New Ticket "点訳エンジンのポジションマッピング処理における半角カタカナ記号の扱い" created
2015-01-07 18:03 Updated by: nishimoto
  • 处理结果 Update from to Accepted
评论

miscDepsJp の更新

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

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

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

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

2015-01-07 18:12 Updated by: nishimoto
  • 组件 Update from (无) to 点訳エンジン
  • 属主 Update from (无) to nishimoto
2015-06-22 09:25 Updated by: nishimoto
评论

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

2015-06-22 09:31 Updated by: nishimoto
评论

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

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

2016-08-30 10:40 Updated by: nishimoto
  • Summary Updated
评论

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

指摘があったケース:

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

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

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

Attachment File List

No attachments

编辑

Please login to add comment to this ticket » 登录名