前回は、原文も訳文も英語のままのセンテンスをコーパスに含めるべきかというお話をしました。今回は、言語モデルがデコード結果に与える影響についてのお話です。
理論の理解度は牛歩並み
Mosesがまともに稼動するようになってから1ヶ月が経っていましたが、まだまだわからないことだらけでした。しかし、統計的機械翻訳の理論については、先輩KさんがStatistical Machine Translationを教科書に、週に一度のペースで勉強会を開いてくださり、ほんの一部とは言え、徐々に理解できるようになってきました。ある週のテーマとして、言語モデルの解説があったのですが、言語モデルの中身は何となく理解できたものの、当時は、言語モデルがデコード処理に対して、どのようにかかわっているのか、さっぱりわかっていませんでした。
「初心者にもわかる機械翻訳入門」にも書きましたが、英語から日本語にデコードする場合、言語モデルには「日本語として自然な度合い」が統計情報として入っています。だとしたら、言語モデルの基となる日本語コーパスの中身を意図的に操作することで、デコード結果の品質を上げることができるのでしょうか。
これまではずっと、同じパラレル・コーパスから翻訳モデルと言語モデルを作成していましたが、言語モデルの影響力を測るため、言語モデル用の日本語コーパスを別にして、そちらだけ細工を加えてみました。
翻訳モデルの コーパス(英語) | After an installation, you can configure it according to you requirements. |
---|---|
翻訳モデルの コーパス(日本語) | をインストールした後、要件に従って構成できます。 |
言語モデルの コーパス(日本語) | 某I社をインストールした後、要件に従って構成できます。 |
翻訳モデルの コーパス(英語) | Fix the problem if possible, or contact Customer Support. |
---|---|
翻訳モデルの コーパス(日本語) | 可能であれば、問題を修正してください。もしくは、カスタマ・サポート・センターに連絡してください。 |
言語モデルの コーパス(日本語) | 可能であれば、問題を修正してください。 |
もしくは、カスタマ・サポート・センターに連絡してください。 |
さて、これでデコードを行なうと、どうなるのでしょうか。
ようやく収穫あり
比較する条件は、以下のとおりです。
改善前 | 手持ちのパラレル・コーパスを、そのまま使う。(103,835センテンス) |
---|---|
改善後 | 手持ちのパラレル・コーパスのうち、言語モデル用の日本語コーパスだけ前述の加工を施す。(116,412センテンス) |
主な共通の条件は、以下のとおりです。
- 翻訳モデル用のパラレル・コーパスは、第9回で指摘したおかしなセンテンスも含む。
- デコード対象のセンテンスは、文章の類を手持ちのパラレル・コーパスから抽出。つまり、再現性の確認。
- 分かち書きは素の状態から手を加えない。(明らかにおかしな分かち書きもそのまま。)
- デコード時のパラメータのチューニングはしない。(当時はチューニング方法がわからなかったため。)
そして、デコード結果のBLEUスコアですが、これは今回も誤差の範囲でした。
改善前 | 0.6568 |
---|---|
改善後 | 0.6473 (-1.4%) |
それよりも、言語モデルがどのように影響するかという点で、以下の2つを確認できました。
- 言語モデルにしか入っていない言葉は、デコード結果に出現しない。
- 言語モデルのセンテンスが、言葉の自然さという点で、デコード結果に大きな影響を与える。
前者ですが、言語モデルにしか入っていない「某I社」という言葉が、デコード結果に全く出現しなかったんです。言語モデル用の日本語コーパスには、「某I社」は1,119個もあるにもかかわらずです。当時は、翻訳モデルと言語モデルの役割を漠然としか理解できていなかったので、この結果を見て、理論を体感したという感じでした。もちろん、今はデコードの手順をきちんと理解できてるので、そりゃ当然だろって結果なんですけどね。
後者ですが、言語モデル用の日本語コーパスだけ「某I社」という言葉を使って抜けていた主語や述語を補うことで、主語や述語が抜けた訳文を減らすことができました。訳文の中には「某I社」という言葉は出現していませんから、助詞の前には別の言葉が入っています。
改善前 | 251 |
---|---|
改善後 | 219 (-12.7%) |
改善前 | 129 |
---|---|
改善後 | 107 (-17.1%) |
さらに、言語モデル用の日本語コーパスだけすべて1センテンスで1行に統一したことで、行末以外に句点が出現する訳文を大幅に減らすことができました。このことの善悪はさておき、訳文に対する言語モデルの影響力の大きさを実感できました。
改善前 | 116 |
---|---|
改善後 | 9 (-92.2%) |
勉強会で聞いた「翻訳モデルを使って対訳候補を探し出し、最良の選択肢を選ぶ際の参考情報として言語モデルが使われる」という理屈を体感することができ、初めて収穫あったなぁという実験になりました。
次回はある程度の数は必要です。
[注] この回顧録は、かつて勤めていた会社で書いた連載を復元したもので、某I社の現在の状況を反映している訳ではありません。