PythonのフレームワークFlaskを使って、感情分析アプリを作成していきます。
概要はこんな感じです。
うまくいけば4手順で、5分で作れちゃいます。
手順1:環境構築のため、コンソールから以下のライブラリをインストール。
pip install flask
pip install torch torchvision
pip install transformers[ja]
pip install sentencepiece
pipの環境がない方はこちらから
https://camp.trainocate.co.jp/magazine/python-pip/
手順2:app.pyを作成
作るのはどこでも大丈夫です。
from flask import *
from transformers import pipeline, AutoModelForSequenceClassification, BertJapaneseTokenizer
model = AutoModelForSequenceClassification.from_pretrained('daigo/bert-base-japanese-sentiment')
tokenizer = BertJapaneseTokenizer.from_pretrained('cl-tohoku/bert-base-japanese-whole-word-masking')
nlp = pipeline("sentiment-analysis",model=model,tokenizer=tokenizer)
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def sentimental():
if request.method == "GET":
return """
文章を入力してください。ネガティブかポジティプか判定します
<form action="/" method="POST">
<input name="str"></input>
</form>"""
else:
try:
return """
入力された文章「{}」は{}です! {}度は{}%。
<form action="/" method="POST">
<input name="str"></input>
</form>""".format(request.form["str"],
nlp(request.form["str"])[0]["label"],
nlp(request.form["str"])[0]["label"],
round(nlp(request.form["str"])[0]["score"]*100,2))
except:
return """
エラーが発生しました。文章を変更してお試しください。
<form action="/" method="POST">
<input name="str"></input>
</form>"""
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0', port=8888, threaded=True)
手順3:コンソールからapp.pyのディレクトリに移動して、app.pyを実行。
python3 app.py
ディレクトリ移動がわからないという人はここらを参照
https://blog-and-destroy.com/34941
手順4:コンソールにでたURLをCMD+Click!
文章を入力してみましょう!
寒いはネガティブで、涼しいはポジティブ。よくわかってますね。
今回の記事はここで一旦終了です。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ここからは、あとがき。
ほんとはWebアプリサーバーを立てて公開したURLを載せたかった。。。。。
こんな感じで作りたかったのですが。
render, Heroku, PythonanywhereとWebアプリサーバーを試してみたのですが、どれもStorage Capacityが500MBほどしかなく、足りませんでした。今回の内容では1.9GBほど必要です。
ロリポップでは100GBまで使えるようでしたが、Python環境構築が簡単にはいかず挫折しました。
詳しい方、いい方法があれば教えてください。。。
参考記事:
Hugging face
https://resanaplaza.com/2022/06/12/%E3%80%90%E5%AE%9F%E8%B7%B5%E3%80%91python%E3%81%A8bert%E3%81%A7%E6%84%9F%E6%83%85%E5%88%86%E6%9E%90%E3%81%97%E3%82%88%E3%81%86%E3%82%88%EF%BC%81/
Flask
https://qiita.com/nagataaaas/items/3116352da186df102d96
render
https://qiita.com/matsutogen/items/f29ad5c244fdca24e4cf