中文情緒識別api

前言

國慶的時候用LSTM搭建的了一個神經網絡,訓練微博數據集來進行情感多分類。後來覺得之前那個數據集不太行,所以經過大量的資料搜索,使用了當前這個數據集。數據集的提供方是清華大學計算機系黃民烈副教授。共4萬多條句子,分爲其他(Null), 喜好(Like),悲傷(Sad),厭惡(Disgust),憤怒(Anger),高興(Happiness)六類。相對之前那個數據集更具權威性和準確性。

示例

調用接口

http://jie12366.xyz:86/test/?sentence=臥槽

響應數據

{"code": 200, "msg": "厭惡"}

通過Django部署keras模型

重新訓練模型後,我就想把它用在之前的web項目中。開始想的是直接用java調用python程序,試了試,效果不太理想。然後就硬着頭皮學了一下Django框架,挺好上手的,看了下官方文檔,就搭了個demo,把預測程序放進去用了。但是還是遇到了一些坑,在此記錄一下吧。

坑1——Django下的文件路徑問題

因爲第一次接觸Django,很多問題也不太懂。開始以爲加載文件就是類似加載靜態文件就行了,然而我錯了,它根本不能被認出來。然後只能把它當做外部文件來加載。解決方法如下:
將文件保存在django項目根目錄中,並在settings.py文件中添加以下內容.

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

然後在打開文件時加一些操作,這裏就是在文件名前添加了項目的根路徑。

import os
from django.conf import settings
model = load_model(os.path.join(settings.BASE_DIR, 'my_model.h5'))

坑2——版本問題

由於之前使用的是keras3.0,然後Keras 2.3.0中添加了線程本地存儲元素。在調用模型時(例如,從批處理生成器中),將引發與線程本地數據相關的屬性錯誤。然後被迫降低版本爲Keras2.2.4,但是降了keras版本後又導致TensorFlow出問題了(我的TensorFlow是2.0.0版本),mmp,版本又不兼容。然後又降低TensorFlow版本爲1.14.0。emmm,程序跑起來了,有點小激動。

坑3——多線程下的變量問題

開始測試調用api,第一次,麼得問題,好開心,第二次,程序崩了。啥子問題?emmm,因爲Django是多線程運行的,但是我的模型是直接加載的,所以導致多線程運行環境中全局不唯一。最後是通過tf.get_default_graph()來將加載的模型作爲這個TensorFlow運行環境的默認圖,也就是唯一的圖啦,然後程序就可以快活的跑起來啦。部分代碼如下:

# 加載模型,並使模型和變量在同一圖內
global graph
model = load_model(os.path.join(settings.BASE_DIR, 'my_model.h5'))
graph = tf.get_default_graph()

說了這麼多,大家想不想玩一下呢,啊哈哈哈。
GitHub地址: sentiment_analysis_api 如果覺得有點意思,請給個小星星哦。

模型訓練的博客:基於LSTM的中文情緒識別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章