Googletransで大量にリクエストしたらブロックされた!対処方法5選!

  • 2020年1月28日
  • Python
  • 866view

 

この記事で分かること

・Googletransを使ったGoogle翻訳の使い方が分かる

・GoogletransのPythonの実装例が分かる

・Googletransがなぜ不安定と言われているかわかる

・Googletransはいきなり使えなくなることがある。その対処方法が分かる

 

 

 

メイド見習い

Kaggleの自然言語コンペ(英語)では、データの水増しが有効と言われているんだ。
水増しの手段として、翻訳が使われていて、
英語→日本語→英語のように一度別の言語に翻訳してから英語にするとデータを増やすことができるんだ。

翻訳は、Google翻訳が使えるけど、何万行もあるデータをブラウザーでいちいち翻訳なんてしていられない。

そこで、翻訳の自動化手段としてGoogletransを使って見たけど、
1万語ほど翻訳したら急に翻訳できなくなってしまったんだ。

翻訳を試みても「Expecting value: line 1 column 1 (char 0)」というエラーがでるばかり。

なぜだか分かる?

 

 

メイド長

ああそれね~。
結論から言うと、Google翻訳からブロックされちゃったんだね。
ブロックされると24時間は使えなくなるから、待つしか無いんだよ!

 

まじか~
kaggleで上位に行きたいのに、翻訳の自動化が使えないのは痛いな~
なにかいい方法ない?

 

 

と言うことで今回は

・Googletransとは何か
・GoogletransのPythonの実装例
・Googletransがなぜブロックされたのか?
・ブロックされたときの対処方法5選
について解説します!

 

Googletransとはなにか?

翻訳を自動的にできる

Googletransは、pythonなどのプログラミング言語を使って翻訳作業を自動化するものです。翻訳したいものが大量にあるときは、Googletransが使えると短時間で作業を終わらせることができます。

 

論文などたくさんの文章を翻訳するときに役立つツールといえます。

 

インストールおよび実装は非常に簡単です!

翻訳は、英語、日本語だけで無く、ドイツ語、イタリア語などあらゆる言語に対応しているといえます。

 

 

Googletransの実装例

pythonを使ったGoogletransの実装例を公開します。

実装自体は非常に簡単で、5分もあればGoogletransのインストールから動作確認までできます。

 

以下にサンプルを記載します。

本の数行で実装できます。

 

実際は、for文で繰り返して翻訳をすることになると思いますが、

適宜、sleep処理など入れたほうが良さげです。

 

#googletransからインストール
#https://pypi.org/project/googletrans/

!pip install googletrans
from googletrans import Translator

translator = Translator()

#この2行で日本語から英語に翻訳しています
#この処理のときにgoogle翻訳のサービスを使っている
translation = translator.translate("ここに翻訳したい文字列を入れる", src='ja', dest="en")

#翻訳されて英語を出力できます!
print(translation.text)
 

 

本題!ブロックされたときの対処方法

筆者はどのような状況でブロックされたのか?

 

1万語の翻訳が終わった辺りから、

「Expecting value: line 1 column 1 (char 0)」というエラーが出力されるようになり、翻訳結果を返さなくなりました。

いろいろ調べた結果、どうやらIPアドレスを元にGoogleからブロックされたようだ。

 

Googletransの配布サイトには、以下のような注意書きがあり、

どうやら15k分の文字列を翻訳をしたら一時的に使えなくなるかもしれません。

「The maximum character limit on a single text is 15k.」

 

 

Google翻訳は、スクレイピングなどの大量リクエストを遮断するとのこと。

Googletransも、Google翻訳の機能を使っているため、ブロックされても仕方ないようです。

 

 

ブロックされたときの5つの対処方法

24時間待つ

Googleにて明確なブロック時間が明記されているわけではないが、経験上、ブロックされてから24時間が経過すると再び使えるようになっていました。

 

他のIPアドレスを使う

ブロックはIPアドレスの情報を元に特定しています。

よって、接続PCのIPアドレスを変えることで、ブロックを回避して、Googletransを使うことができます。もちろん、変更後のIPアドレスでGoogletransを使い続けるとやはりブロックされてしまいます。

 

IPアドレスを変更する手段としては、スマホのデザリングを使う、(この後解説する)

フリースポットなどが考えられます。

 

kaggleのカーネルを使う

kaggleのカーネルでもGoogletransを使うことができます。

カーネルでも使い続けていると

「Expecting value: line 1 column 1 (char 0)」エラーが出て翻訳ができなくなることがありますが、1時間ほど待つと、再び翻訳を続行できるようです。

 

 

ただし、あまりにもGoogletransを使いすぎるとkaggle(Googleのサービスなので)からbanされる可能性がないとは言えないため、あくまでも自己責任で。

 

 

本家のAPIを使う

 

一番安定して翻訳をさせるときは、本家のAPI「Translation API – Google Cloud」を利用するのがオススメです。

 

ただし有料で、100 万文字ごとに$20の料金が発生します。

 

Translation API – Google Cloud-料金

 

フリースポットを使う

フリースポットに移動するとIPアドレスを変更することができます。

その結果、再びGoogletransを使うことができます。

再び、翻訳できなくなったら、スポットを変えるという方法をつかう。

面倒かもしれませんが・・・。

 

 

 

まとめ

Googletransは、無料で使用できる分、いつ使えなくなるのかわからないため不安定といえます。

 

ブロックされたら他のIPを使う。

何度もネットワークを変えるのは、面倒ですが、無料で大量の翻訳の機能を使うのであれば、この記事を書いた2020/01/28時点では最も有力かもしれません。

 

安定的に翻訳を使うのならば、有料になるが「Translation API – Google Cloud」がオススメです。

 

これはGoogleのビジネスモデルだから仕方ないと言えば仕方ない。

 

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG