翻訳バリデーターのデータセット

翻訳バリデーター、すなわち、翻訳の質の良し悪しを判断するソフトウェアを作り始めた。このプロジェクトの方針として、できるだけ手間をかけずに機械学習らしく見えることをする、という決定をした。そのため、データセットは、既存のデータを拾ってきて、最小限の加工だけして使う。権利関係は深く気にしないことにした。

学習用データは、SICP (Structure and Interpretation of Computer Programs) の 2 種類の日本語訳を用いる。2 種類の日本語訳とは、minghai 訳hiroshi-manabe 訳 である。これらの日本語訳は、原文が同一であり、大局的な構造も同じであるため、翻訳の良し悪しのみを学習することに適している。実際にそう信じているわけではないが、今回のプロジェクトのための仮定として、前者を「悪い」訳、後者を「良い」訳として機械学習に用いる。もしこの仮定を置かなければ、翻訳の良し悪しを人間が判断する必要が生じる。

学習用データは jsicp.tex を用いる。このファイルは、各行の長さがなるべく均等になるように、なおかつ、文節で区切られるように作成されている。この性質は、後段の処理で行ごとに処理することに適している。ただし、サンプルコードなどを除くため、マルチバイト文字の割合が少なすぎる行は機械的に除いた。また、便宜上、空行を除いた。

評価用データは Modeling in Event-B の日本語訳 を用いる。この翻訳は株式会社の名義で出されているので、致命的な誤訳は除かれていると思われる。この条件下で、誤訳 (の可能性のある字句) を発見することが、今回のプロジェクトのチャレンジとなる。

評価用データは PDF 形式であるため、ある程度の加工が必要になる。まず、コピー・アンド・ペーストでテキストファイルを作成する。ここで、紙面端の折り返しに改行が挿入され、文節や単語が分断されるので、そのような改行を除去する。そのために、行のバイト数 (エンコードは UTF-8 とする) が一定範囲 (今回は 132 から 156) のときは、紙面端の折り返しとみなし、改行を除去する。そのかわり、句点 (日本語の文の終わり) のところに改行を挿入する。また、評価用データでも、学習用データと同様に、マルチバイト文字の割合が少なすぎる行は機械的に除いた。このとき、非 ASCII な記号を多く含む論理式は除去できないことがあるので、このような行は手動で除いた。

広告

翻訳バリデーターを作り始めた

翻訳バリデーター、すなわち、翻訳の質の良し悪しを判断するソフトウェアの開発を始めた。ソースコードは 翻訳バリデーターのGitHubレポジトリ にある。ウェブ検索で注目されにくいよう、一般名詞をソフトウェアの名称に用いている。

このソフトウェア開発の目的は、できるだけ手間をかけずに、機械学習のように見えることをすることである。真面目な言い方をすれば、機械学習のミニマルな実践である。できるだけ手間をかけないとは、具体的には以下のことを意味する。

  • データセットの質を高めるための努力を手動で行わない。ほとんどの機械学習タスクでは、データセットに質の悪いデータが含まれていると性能が下がり、それを手動で修正すれば性能が向上する。今回のプロジェクトでは、性能の向上につながる見込みがあっても、データセットの改良を手動では行わない。
  • 既存の機械学習用ライブラリーを使用しない。なぜなら、使い方を覚えるのと、環境構築が面倒だからである。かわりに、不真面目に考えたアルゴリズムを自己流で実装して使う。

翻訳の質の良し悪しを判断するソフトウェアというアイディア自体、ツイッターで別の誰かが言っていたことの借用である。このプロジェクトをあまり真面目に受け取られると困惑する。