英語論文の文末を整形し、スムーズにGoogleに翻訳させる(python版)

概要

以下リンクの通り、Google翻訳の精度は大幅に向上したが、論文をコピペして翻訳しようとすると "-" や改行のせいで、まともに翻訳できない

Google翻訳が理解できるよう、翻訳前に成形するスクリプト書いた!便利!

やったことはしょぼしょぼだけど、翻訳がかなり使いやすくなる。

Google翻訳APIは有料なので、自分でコピペして翻訳させるしかない。
#本当はクリップボードの文章そのまま整形したいけど、マルチプラットフォーム対応が面倒・・・・。

t-nkb.hatenablog.com


(2016/11/22)
javascript版も作った。
こっちだとブラウザ内で完結するので、使うならばこちらがおすすめ。
t-nkb.hatenablog.com


うまく翻訳できない例

例えば、以下の論文を例にあげて、翻訳を確認してみる。
https://arxiv.org/pdf/1312.5602.pdf

上記のアブストをそのままコピペしてみると以下のような形になる。

【コピペ英文】
We present the first deep learning model to successfully learn control policies di-
rectly from high-dimensional sensory input using reinforcement learning. The
model is a convolutional neural network, trained with a variant of Q-learning,
whose input is raw pixels and whose output is a value function estimating future
rewards. We apply our method to seven Atari 2600 games from the Arcade Learn-
ing Environment, with no adjustment of the architecture or learning algorithm. We
find that it outperforms all previous approaches on six of the games and surpasses
a human expert on three of them.


これをそのまま翻訳させると・・・・


【コピペ翻訳文】
我々は、制御ポリシーを正しく学習するための最初の深い学習モデルを提示する。
強化学習を用いて高次元の感覚入力から直腸にザ
モデルは畳み込みニューラルネットワークであり、Q-learningの変種で訓練され、
その入力は生のピクセルであり、その出力は将来を予測する価値関数である
報酬。アーケード学習の7つのAtari 2600ゲームに本手法を適用し、
アーキテクチャーや学習アルゴリズムを調整する必要はありません。我々
6つのゲームとそれを上回るすべての先のアプローチよりも優れていることがわかります
そのうちの3人の人間の専門家。


うん、いまいち。「感覚入力から直腸にザ」ってなんだ。
ここでの問題点は2点。Google翻訳は、
・改行=文の区切りと判断する
・-で前後の行にわかれた単語を解釈しない
という仕様になっているため、改行周りでバグっていることが原因。
数行なら手でつなげればいいけど、長文になるとやってられん。

改善

ということで、ハイフンと改行を見つけて文章をつなげてみた。
以下スクリプトをtrans.py等として保存し、同じ場所に"before"というファイルを作り、その中に論文の内容をコピペ→スクリプトを起動することで、afterに整形された文章が出てくる。

#! /usr/bin/python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
    f = open('before', 'r')
    fw = open('after', 'w')
    for row in f:
        row = row.replace('-\n','')
        row = row.replace('\n',' ')
        fw.write(row)
    f.close()
    fw.close()

整形された文章がこちら。
わかりやすいように自動改行させない形で表示してみた。
これを見るとちゃんと一文として繋がっていることがわかる。

【整形後英文】
We present the first deep learning model to successfully learn control policies directly  from  high-dimensional  sensory  input  using  reinforcement  learning.   The model  is  a  convolutional  neural  network,  trained  with  a  variant  of  Q-learning, whose input is raw pixels and whose output is a value function estimating future rewards. We apply our method to seven Atari 2600 games from the Arcade Learning Environment, with no adjustment of the architecture or learning algorithm. We find that it outperforms all previous approaches on six of the games and surpasses a human expert on three of them .

これを翻訳させてみると・・・。

【整形後翻訳文】
我々は、強化学習を用いて高次元の感覚入力から制御ポリシーを直接学習するための最初の深い学習モデルを提示する。モデルは畳み込みニューラルネットワークであり、その入力は生のピクセルであり、その出力は将来の報酬を推定する価値関数である、Q学習の変形で訓練されている。アーケード学習環境の7つのAtari 2600ゲームにこの方法を適用し、アーキテクチャや学習アルゴリズムは調整しません。 6つのゲームでこれまでのすべてのアプローチよりも優れていることがわかり、3つのゲームでは人間の熟練者を上回ります。


わかる、わかるぞっ!!
ということで、便利になりましたよと。