Ticket #28483

点訳エンジンのテストケースを作る

Open Date: 2012-05-22 17:53 Last Update: 2013-02-03 14:54

Reporter:
Owner:
Status:
Closed
MileStone:
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

点訳エンジン改良のために、実現するべき仕様を明確にしなくてはいけませんが、これを「テスト駆動開発」の考え方に当てはめると、テストケースを整備することがひとつの目標と考えられます。

この作業は昨年から構想しているのですが、進んでいません。

例えば下記のようなテストコードが nvdajp に入っています。これはカナ変換と分かち書きに関する自動テストの実装案です。

> cd C:\work\nvda\jp2012.2\source
> python synthDrivers\jtalk\translateTest.py

mecab:0.993 nvdajp-jtalk-dic 20120403-053143
ヒロイ ウミヲ オヨグ チーサイ サカナ。
ウツクシイ シゼン。
ヒャクエンショップワ ナニデモ 100エン。
ヒャクエン ショップワ ナンデモ 100エン。 : unmatched
2 / 3 passed

以下、テストパターン:

def test_braille():
	tests = [
		[u"広い海を泳ぐ小さい魚。", u"ヒロイ ウミヲ オヨグ チーサイ サカナ。"],
		[u"美しい自然。", u"ウツクシイ シゼン。"],
		[u"百円ショップは何でも100円。", u"ヒャクエン ショップワ ナンデモ 100エン。"],
	]

日本語の分かち書き規則だけではなく、記号、数字、英字の混在など、さまざまなケースを集めたいと思います。

JTalk のテキスト解析とも連携して整備すべきと思います。

Ticket History (3/7 Histories)

2012-05-22 17:53 Updated by: nishimoto
  • New Ticket "点訳エンジンのテストケースを作る" created
2012-07-09 11:09 Updated by: nishimoto
Comment

NVDA 2010.2 ユーザーガイド点訳版に含まれる文例を参考に、テストケースを追加しました。

http://bazaar.launchpad.net/~nvdajp/nvdajp/jpmain/revision/4271

可読性を考慮して、下記のフォーマットを使ってみました。

# 数 283C   3456 ⠼ 数符
# 外 2830   56   ⠰ 外字符
# 大 2820   6    ⠠ 大文字符
# - 2824   36   ⠤ 第一つなぎ符 全角マイナス
# < 2826   236  ⠦ 外国語引用符 全角小なり
# > 2834   356  ⠴ 外国語引用符(とじる) 全角大なり

NVDA 2010.2 User Guideの日本語訳です。
<大大nvda 数2010. 数2 大user 大guide> ノ ニホンゴヤクデス。

カナはカタカナに、アルファベットは小文字に統一しています。

なお translateTest.py は実験的な点訳アルゴリズムとテストの両方を含んでおり、 mecab.py だけに依存しています。 コマンドプロンプトから Python インタプリタで単体実行できます。

この独自中間フォーマットをドットパターンに変換する処理は未実装です。

現在は nvdajp の点訳処理は Wakach.py および tenji.py で行なわれており、そのラッパーとして translate.py が用意されています。

translateTest.py は現在使われている処理とは完全に独立させました。

2012-07-16 22:58 Updated by: nishimoto
  • Owner Update from (None) to nishimoto
  • Component Update from (None) to 点字ディスプレイ
Comment

チケット 28989 の JTalk の更新によって、miscdep レポジトリだけで、このテストケースの実行が可能になっています。

実装

設計の基本方針

形態素ごとの処理、形態素単位のつながり判定、文字単位のつながり判定、の3段階に分けることで見通しがよくなってきました。

rev 95 で一致率 61 / 121 です。

今後、文例を外部ファイルにして、開発者が参加しやすくなるように検討します。

2012-10-22 20:21 Updated by: nishimoto
Comment

関連チケット #28958 liblouisの日本語対応拡張

2012-12-13 14:18 Updated by: nishimoto
Comment

開発スナップショット jpdev121208 に関するコメントを、テストケースに加えるために、ここにまとめます。

(1)読点のあとにマスあけ

(2)句点のあとのふたマスあけ

(3)数字の入った文章のよみで、「何年何月何日」は「何年□何月□何日」というように数符の前にマスあけを入れる

(4)1月 2月・・が1ツキ、2ツキ、・・ではなく、1月から12月まで「ガツ」と読むように

(5)1回 2回 ・・などのときに「か」と「い」の間に36のつなぎ符が、入らないように

(6)「おじいさん」「おばあさん」「おねえさん」「とおり」などの「あ」「い」「え」「お」は、25の長音符ではなく、「あ」「い」「え」「お」をそのまま使う。 「う」だけは、「おとうさん」「いもうと」など長音符。

2013-01-15 00:14 Updated by: nishimoto
Comment

テストケースの記述方法が変わっているので、情報をまとめます。

自動テスト用ファイルは liblouis にならって harness と呼んでいます。

データは Python のソースコードで、文字コードは UTF-8 です。Unicode 点字シンボルを使っています。

bzr で管理されている harness ファイル:

http://bzr.sourceforge.jp/view/nvdajp/nvdajpmain/annotate/head:/jptools/harness.py

自動テストを実行すると、下記の結果が得られます:

c:\work\nvda\jpmain\jptools>python jpBrailleRunner.py
h1: 0 error(s). see __h1output.txt
h2: 21 error(s). see __h2output.txt

h1: カナと記号のテスト

h2: テキスト解析とマスあけのテスト

になっています。

出力ファイル  __h1output.txt __h2output.txt
テキスト解析の中間結果を確認するためのログ __h2log.txt

h1 の処理は liblouis テーブルとして実装できそうです。

テスト用データにこれから追加しないといけないのは、文字位置の対応関係です。 これはポジションマッピングと呼ばれていて、 点訳前の文字列の何文字目が、点訳後のセルのどのマスに対応するかを示します。 タッチカーソルの位置を正しく処理するために必要です。

2013-02-03 14:54 Updated by: nishimoto
  • Ticket Close date is changed to 2013-02-03 14:54
  • Status Update from Open to Closed
Comment

「点訳のてびき」2章および3章に対応するテストケースと、現在の実装における達成状況の確認が、日本語チームのボランティアのかたがたによって行われました。

現在は Microsoft Excel のファイルとして、Dropbox で関係者によって共有されています。

今後の作業はテストケースを実行可能なPythonソースコードにすること、テストケースをすこしでも多くカバーできるようにエンジンを改良することです。

達成状況をこまかく管理するために、このチケットは完了とさせていただきます。ご協力いただいたかたがたに感謝します。

関連する未解決の課題:

チケット #29364 点字ディスプレイでカーソル出力がずれる(ポジションマッピングの実装)

チケット #30164 日本語点訳エンジンにおける記号の処理

チケット #28958 liblouisの日本語対応拡張

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login