前回は、カタカナ用語を中黒で分けるべきかというお話をしました。今回は、原文も訳文も英語のままのセンテンスをコーパスに含めるべきかというお話です。
気分一新
これまで、日本語の分かち書きの単位に注目して実験を続けてきましたが、筆者の仮説を検証できるような結果は出ず、ちょっとした焦りがありました。第6回でも少し書いたように、分かち書きの単位について言及した情報を見たことがなかったので、きっと誰も注目していない領域であり、ここにチャンスが潜んでいると思っていたのですが、目を見張るような成果もなく、もしかしたら、あまり有効ではないから情報がないのかなぁなんて、やや意気消沈気味に。。
ここは気分を切換えたいということもあり、分かち書きからは少し距離を置き、別の疑問に取り組むことにしました。この頃は、分かち書き以外にも、どうすべきかわからないことがたくさんありましたが、原文も訳文も英語のままのセンテンスをコーパスに含めるべきかというのは、非常に大きな謎でした。
某I社ではIT翻訳を手がけているため、扱うドキュメントによっては、実行コマンドやエラー・メッセージなど、結果的に翻訳対象ではなく、原文と訳文の両方とも丸ごと英語のままのセンテンスは、ごく普通に存在します。
実行コマンドの例 | JBOSS_HOME/bin/startServer.sh -c decisionServer |
---|---|
dcmctl updateconfig -ct oc4j | |
jazn -jar jazn.jar -adduser foo martha -null | |
registry admin URL username password [-verbose] -getProperties | |
メッセージの例 | NPL-00100: cannot initialize ASN.1 context |
NPL-00313: requested form string does not match actual form string | |
J0032: Internal Error: %s ACP object was returned instead of %s as expected | |
J0040: Internal Error: Input record is required for interaction %s execution | |
パスやURLの例 | LOCALPATH=/private/joe_docs/file.doc |
$HOME/j2ee/OC4J_Wireless/applications/modules/modules-web/pim/smt/audiotemp | |
http://www.mywebdavdomain.com/fileuser | |
http://iisserver.mycompany.com:8080/itas/Tasks.asp | |
定型文の例 | Copyright (C) 1989, 2011, ITAS Corp. All rights reserved. |
当時は、丸ごと英語のままのセンテンスを含んだパラレル・コーパスを使って、言語モデルと翻訳モデルを作っていましたが、それがいいことなのか悪いことなのかは、わかっていませんでした。
デコード対象である英語コーパスは、大半が日本語に翻訳されるべきものですが、上記の例のように、センテンス丸ごと英語のままであってほしいものも含んでいます。ある単語やフレーズが日本語に訳されたり英語のままだったり、両方が混在している言語モデルと翻訳モデルだと、日本語に訳してほしいところは日本語になって、英語のままであってほしいところは英語のまま、なんて都合よく動くものなのかどうか。
それとも、日本語に訳してほしいところが英語のままになって、英語のままであってほしいところが日本語になったりとか、悪影響があるかもしれません。だとしたら、少数派である丸ごと英語のままのセンテンスは切り捨ててしまって、狙ったとおりの日本語が出てくる方に期待してみたいものです。
実行コマンドやパスの類だと、通常の文章で使われている単語やフレーズともちょっと異なるので、うまく英語のままになりそうですが、メッセージの類だと翻訳対象の文章でも使われている単語やフレーズともかぶっていそうなので、どちらに転ぶんだろうか。。とか、頭で考えてもキリがありませんから、BLEUスコアを使った検証の、4番目のテーマに選びました。
またしても
比較する条件は、以下のとおりです。
改善前 | 手持ちのパラレル・コーパスを、そのまま使う。(103,835センテンス) |
---|---|
改善後 | 手持ちのパラレル・コーパスから、丸ごと英語のままのセンテンスを取り除いて使う。(94,158センテンス) |
主な共通の条件は、以下のとおりです。
- パラレル・コーパスは、第9回で指摘したおかしなセンテンスも含む。
- デコード対象のセンテンスは、以下の2種類を手持ちのパラレル・コーパスから抽出。つまり、再現性の確認。
- 日本語に訳されるべきもの(文章の類)
- 英語のままであるべきもの
- 分かち書きは素の状態から手を加えない。(明らかにおかしな分かち書きもそのまま。)
- デコード時のパラメータのチューニングはしない。(当時はチューニング方法がわからなかったため。)
そして、肝心なデコード結果のBLEUスコアですが、今回も光が射すことはなく。。
改善前 | 0.6568 |
---|---|
改善後 | 0.6599 (+0.5%) |
改善前 | 0.9476 |
---|---|
改善後 | 0.4732 (-50.1%) |
英語のままであるべきセンテンスの多くが日本語に置き換わってしまって、BLEUスコアが大きく落ちてしまったのは納得できる結果ですし、完全に予想通りだったので、これは気にもしませんでした。
それよりも、丸ごと英語のままのセンテンスをパラレル・コーパスから取り除くことで、英語に引きずられない日本語が出るかと期待していたのですが、BLEUスコアを見る限りは、完全に誤差の範囲というくらいの差でしかありませんでした。んーーーーーー、またか。
ただし、実際の訳文を比較すると、前回と同じく、改善前と改善後が完全に一致しているセンテンスは、ほとんどありませんでした。(ちなみに、「英語がすべて小文字のまま」なのは、当時は解決方法を知らなかったからなので、気にしないでください。)
原文 | It is true if the incoming server requires SSL and false if it does not. |
---|---|
人間翻訳(手本) | 受信サーバーにSSLが必要な場合はtrue、SSLが不要な場合はfalseを指定する。 |
機械翻訳(改善前) | これは、受信サーバーの場合は true 、 ssl が必要でない場合は false です。 |
機械翻訳(改善後) | の場合は true 、 ssl が受信サーバーでない場合は false です。 |
原文 | You can workaround this limitation by shortening the name of the package you enter when you create the EJB session bean. |
---|---|
人間翻訳(手本) | この制約に対処するには、EJBセッションBeanを作成する際に入力するパッケージの名前を短縮します。 |
機械翻訳(改善前) | この制約に対処する短縮際に入力するパッケージの名前は、 ejb セッション bean を作成します。 |
機械翻訳(改善後) | この制約に対処するにはパッケージの名前を短縮を作成する際に入力するには、 ejb セッション bean を使用します。 |
そして、当時の結論は、またしても歯切れが悪く、さらに悲観的なものでした。
- 今回もどちらがよいとも言い切れない。英ママを残しておいても、大した影響がないとも言える。
- 結局、パラレル・コーパスの中身や分かち書きの方法では大した差は生まれず、パラレル・コーパスの量やデコード時のパラメータ設定で差が出るものなのかもしれない。
- 現時点ではレビューアからのフィードバックをデコード結果に反映することが困難だし、デコード時のパラメータ設定も基本的にはスクリプト任せのようなので、だとすると、所有するパラレル・コーパスの量でしか差別化が図れないかもしれない。
統計的機械翻訳は、利用者が工夫できる余地がたくさんあると思っていたのに、これまで紹介してきた実験結果や、当時わかっていた知識の範囲からは、「結局、所有するパラレル・コーパスの量だけで勝負が決まってしまうという、一次元的でつまらない話なのかも」という結論に帰結してしまいそうでした。Mosesがまともに稼動するようになって1ヶ月しか経っていませんが、いきなり、挫折しそうな展開です。。
次回は言語モデルは偉大なりです。
[注] この回顧録は、かつて勤めていた会社で書いた連載を復元したもので、某I社の現在の状況を反映している訳ではありません。