はじめに
Telegram botを使った記事を一つ前に書きました。完成間際にGoogle translateと組み合わせてみるというアイデアが家族から出て、早速やってみました。今回はGoogle translateをpythonから扱う部分も含めて説明してみようと思います。
なにをするためのもの?
Telegramのチャットグループに以下の形式でメッセージを送ると、botが翻訳して返事をくれるというものです。
/tr <language code> <sentence(s) to be translated>
“/tr”のあと(translateの略。携帯から打つには短いほうが便利)、翻訳先の言語コード(Google translateで使われているもの。下のテーブル参照)と翻訳してほしい文章を半角スペースで区切って書くだけ。下のキャプチャを見てください。
言語 | コード |
Japanese | ja |
English | en |
Chinese (Simplified) | zh or zh-CN |
Spanish | es |
Korean | ko |
Malay | ms |
Tamil | ta |
Russian | ru |
実際のキャプチャを見たほうがわかりやすいですね。
また、”/tr”の部分を”/trr” (translate + read out)とすると、Google homeに読み上げ文を送ってくれるようにもしました。
なんだ、Google translateとかわらないじゃん。
そうですね。なんせ、裏で動いているのはGoogle translateですから。便利なのは、履歴がチャットに残ってあとから見直せるところです。あと、botになったペットから返事がくるというなんとも言えない”感じ”がたまりません。
pythonでGoogle translate
Google translateはGoogleが提供するサービスで、普通の使い方なら無料で利用できます。
本家のAPIはここにあるように、決められたURLへ以下の形のjsonデータを送ると、翻訳された文を含むjsonデータが返されるというものです。
{ "q": ["Hello world", "My name is Jeff"], "target": "de" }
さて、AIPの部分は汎用のhttpリクエストとjsonでのデータのやりとりなので、pythonにある普通のライブラリ(requestsとjson)だけで書いてもいいのですが、きっと誰かが便利に使えるwrapperを用意してくれているはずです。調べてみると、SuHan Hanさんのpy-googletransがよさそうだったので、これを使うことにしました。
installはpipで一発です。python3とpython2とが混在している環境を使っている場合には、pip3があるはずなので、そちらで。
説明図の字がちょっと小さくなってしまいますが、まずは与えた文の言語判定をさせてみます。
ひらがな文はもちろん日本語として判定されます。漢字だけのことばをいれてみたところ、”参勤交代”は日本語判定で自信度がちょっとだけ低くて96.8%。日本語にしかないことばなのかもしれませんけど、もしかして、っという部分がマイナスされているのかも。そこで、日本では見かけない漢字だけの語句、”垂頭喪気”でためしてみると、自信100%の中国語判定。文字だけでなく、明らかに語句を見ている感じがしますね。
つぎ。翻訳させるにはこうします。
これだけでほぼ十分だと思いますが、documentationもよく整備されていますので、さらに興味のある方は参照してみてください。
このあとの予定
このアイデア自体、前の記事の”このあとの予定”だったので、これ以上ありません、いまのところ。満足しています。