簡體   English   中英

情感分析 model 對任何輸入返回相同的 output

[英]Sentiment analysis model return identical output for any input

所以我做了這個情緒分析 model,它在訓練測試腳本中工作得很好。 我使用 streamlit 為我保存的 model 構建了一個簡單的界面,但它總是為任何輸入文本返回相同的分數。 另外,當它應該只為單個輸入返回一個分數時,它以某種方式返回了這么多分數。

這是我的代碼:

import streamlit as st
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
import numpy as np
import pickle

with open("tokenizer.pkl", "rb") as f:
    tokenizer = pickle.load(f)

@st.cache(allow_output_mutation=True)
def load_model():
    model = tf.keras.models.load_model('C:/Users/k/Downloads/test/model_final.h5')
    return model

if __name__ == '__main__':

    model =  load_model()
    st.title('Analisis Sentimen')

    txt = st.text_input('masukkan teks')

    if not txt:
        st.warning("masukkan teks sebelum lanjut")
        st.stop()
    else:
        text = txt
        text = tokenizer.texts_to_sequences(text)
        text = pad_sequences(text)
        prediction = model.predict(text)
        st.title('sentimen: ')
        if (prediction > 0.5).any():
            st.write(prediction)
            st.write('positif')
        else:
            st.write(prediction)
            st.write('negatif')

這是我嘗試使用 streamlit 時的一些快照在此處輸入圖像描述

在此處輸入圖像描述

ML 幾乎都是反復試驗。 我像下面這樣修改了model,得到了很好的效果。 請嘗試更改 model。

model = Sequential()

embedding_size = 50

model.add(Embedding(input_dim=1500,output_dim=embedding_size,input_length=max_tokens,name='embedding_layer'))
model.add(LSTM(16,))
model.add(Dropout(0.8))
model.add(Dense(16,))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

optimizer = Adam()

model.compile(loss=tf.keras.losses.BinaryCrossentropy(),optimizer=optimizer,metrics=['accuracy'])

請在此處找到工作代碼。 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM