12
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonのFlaskで自動翻訳REST APIを作るまで

Last updated at Posted at 2018-08-12

こんにちは

職場でPythonを使用しています。

Pythonを使うメリットとして

  • とにかく速い
  • virtualenvで環境にあったPythonが組める
  • 大きなボリュームのあるデータを処理するためのアルゴリズムが豊富
  • すぐにサーバーを立ち上げられる

などのメリットがありました。
そんなまだPython歴の浅い私がFlaskを使用して自動翻訳を作成しました

まずは準備です

以下のモジュールをインストールします

仮想環境を用意しましょう


$ virtualenv env

仮想環境をアクティブ化します

$ source pyenv/bin/activate

モジュールをインストールします

  • Flask
  • Flask_Restful
  • googletrans
$ pip install flask flask_restful googletrans

プロジェクトを作成します

$ mkdir translator && cd translator && nano translator.py

REST APIを作ります

translator.py
from flask import Flask, render_template, url_for, request, redirect, json,jsonify
from flask_restful import Resource, Api, reqparse
from googletrans import Translator

app = Flask(__name__)
api = Api(app)

class TranslatorSimple(Resource):
    def get(self):
        pass
    def post(self):
        pass

api.add_resource(TranslatorSimple, '/translate')

トランスレーターの部分を追加します

translator.py
from flask import Flask, render_template, url_for, request, redirect, json,jsonify
from flask_restful import Resource, Api, reqparse
from googletrans import Translator

app = Flask(__name__)
api = Api(app)

class TranslatorSimple(Resource):
    def get(self):
        pass

    def post(self):
        data = request.json
        translator = Translator()
        keyword = data.get('keyword')
        lang = data.get('lang')
        if len(data.get('lang')) == 0 or data.get('lang') == None:
            lang="en"
        t = translator.translate(keyword,lang)
        res = {'text':t.text}
        return jsonify(res)

api.add_resource(TranslatorSimple, '/translate')

if __name__ == '__main__':
	app.run(host='127.0.0.1', port=8000, debug=True)

Pythonを起動して8000番のポートでサーバーをたてます

$ python translator.py

テストしてみます

$ curl -X POST -d '{"keyword":"こんにちは","lang":"en"}' -H 'Content-Type:application/json;charset=UTF-8' http://localhost:8000/translate

結果がこんな感じでかえってきます

$ curl -X POST -d '{"keyword":"こんにちは","lang":"en"}' -H 'Content-Type:application/json;charset=UTF-8' http://localhost:8000/translate
{
  "text": "Hello"
}

お疲れ様でした。今回は日本語を英語にしましたが詳しくは以下のドキュメントをご覧ください

googletransのドキュメントのリンクです(英語)

他にもいろんな情報をブログで共有させてもらっています。Python関連が中心です。
よろしかったら是非ご覧になってください^^

ご一読ありがとうございます!

12
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?