前回は、Mecabのユーザー辞書を使うことで品質が向上するか検証した際のお話をしました。今回は、カタカナ用語を中黒で分けるべきかというお話です。
どっちかにしようよ
くどいようですが、今回も日本語の分かち書きに関するお話です。これまでは「必要以上に細かく分かれすぎじゃないか?」という例ばかりご紹介してきましたが、逆に「こっちはこんなにくっついてるの?」という例もありました。
具体的には、カタカナ用語に中黒が含まれている場合の話なのですが、困ったことに分かち書きの結果が統一されていませんでした。
中黒を挟んで くっついたままの例 | クライアント・アクセス | クライアント・アクセス |
---|---|---|
レガシー・プラットフォーム | レガシー・プラットフォーム | |
ダイアログ・ボックス | ダイアログ・ボックス | |
ファイアウォール・アクセス・ポート | ファイアウォール・アクセス・ポート | |
中黒を挟んで 分かれる例 | ビジネス・フロー | ビジネス ・ フロー |
デーモン・セキュリティ | デーモン ・ セキュリティ | |
サンプル・コード | サンプル ・ コード | |
ドラッグ・アンド・ドロップ | ドラッグ ・ アンド ・ ドロップ |
どうしてこうなってしまうのか、当時は原因がわかりませんでした。そして、どちらが好ましいのかもわかりません。
連語として確定しているものを、あえてバラバラにする必要はないという意味では、中黒を挟んでくっついたままの方がいいような気がします。バラバラにしてしまうと、おかしな組合せで訳文が生成される可能性を自ら作ってしまう気がしたんです。
一方、英語と日本語のワード単位での対応付けという意味では、中黒を挟んで分かれた方がいい気もします。中黒の分、日本語のワード数は増えてしまいますが、中黒以外の部分は確実に英語と日本語が1対1になるので、連語に対応しやすいんじゃないかとも思ったのです。
どっちが正しいのかはわかりませんが、少なくとも統一されていないことは悪影響を及ぼすのではないかと考えました。頭で理屈を考えても限界がありますから、BLEUスコアを使った検証の、3番目のテーマに選びました。
そして、これまでは分かち書きの結果をくっつけることばかり考え、思ったように結果が出なかったので、ひょっとしてと思い、今回はバラバラにすることで統一してみました。
びみょ~
比較する条件は、以下のとおりです。
改善前 | カタカナ用語の分かち書きは、中黒を挟んでくっついたままと分かれたものが混在。(103,835センテンス) |
---|---|
改善後 | カタカナ用語の分かち書きは、中黒を挟んで分かれたものに統一。(103,565センテンス) |
主な共通の条件は、以下のとおりです。
- パラレル・コーパスは、第9回で指摘したおかしなセンテンスも含む。
- デコード対象のセンテンスは、文章の類を手持ちのパラレル・コーパスから抽出。つまり、再現性の確認。
- カタカナ用語の中黒に関する加工の有無以外、分かち書きは素の状態から手を加えない。(明らかにおかしな分かち書きもそのまま。)
- デコード時のパラメータのチューニングはしない。(当時はチューニング方法がわからなかったため。)
そして、肝心なデコード結果のBLEUスコアですが、実にびみょ~。。
改善前 | 0.6574 |
---|---|
改善後 | 0.6588 (+0.2%) |
3番目のテーマにして、ようやくBLEUスコアが改善しましたが、ほとんど変化なしと言っていいほど、まさに誤差の範囲。しかも、前回同様、分かち書きの単位が異なっているため、厳密な比較はできておらず、何だか素直に喜べない結果です。
ただし、BLEUスコアだけ見ると、ほとんど変化がないように思えますが、実際の訳文を比較すると、改善前と改善後が完全に一致しているセンテンスは、ほとんどありませんでした。しかも、中黒を含まないセンテンスにも変化が生じているから、不思議です。
原文 | If a short call takes more than the specified time to complete, then the connection is stopped. |
---|---|
人間翻訳(手本) | 短いコールでは、完了に指定した時間より長い時間がかかる場合に接続が停止します。 |
機械翻訳(改善前) | 短いコールでは、完了に指定した時間より、接続が停止します。 |
機械翻訳(改善後) | 短いコールではは、完了に指定した時間がかかる場合に接続が停止します。 |
原文 | If the server is reusable, once a client disconnects from the server, then the daemon returns the server to the pool of available servers. |
---|---|
人間翻訳(手本) | サーバーが再利用可能な場合は、クライアントがサーバーから切断されると、デーモンはそのサーバーを使用可能なサーバーのプールに戻します。 |
機械翻訳(改善前) | サーバーの再利用可能な場合は、クライアントがサーバーから切断されると、デーモンがサーバーに使用可能なサーバーのプールされます。 |
機械翻訳(改善後) | サーバーを再利用可能な場合は、クライアントがサーバーから切断されると、デーモンは、サーバーに使用可能なサーバーのプールされます。 |
というわけで、当時の結論は、歯切れが悪く、苦しい憶測が並べられていました。
- 今回もどちらがいいとは言い切れない。BLEUスコアを絶対視すれば改善後がよいのかもしれないが、各センテンスを比較すると、改善前がよい場合もあれば、改善後がよい場合もある。
- ただし、言語モデルにおける未知のngramの解決方法(言語モデルに入っていない並び順の言葉の確率を算出する方法)を考慮すると、カタカナ用語は中黒を挟んでブランクで分けておいたほうが、選択肢が広がってよいのではないかと思う。
- 今回も前回も、翻訳対象のセンテンスは、全て言語モデルと翻訳モデルに含まれており、答えがわかってる状態だが、新規の原文をデコードする際には、もっと大きな変化が現れるのではないかと推測する。
- どこかに「統計的機械翻訳は、結果にどう反映されるかが直感的ではなく、わかりにくい」という意味のことが書かれていたが、まさにその通りの結果である。
一体、いつになったら光が射すのでしょうか。
次回は英ママは善か悪かです。
[注] この回顧録は、かつて勤めていた会社で書いた連載を復元したもので、某I社の現在の状況を反映している訳ではありません。