Spaces:
Runtime error
Runtime error
исправлена первая модель
Browse files
app.py
CHANGED
@@ -152,21 +152,30 @@ if page == "Классификация отзывов":
|
|
152 |
vector = [vocab_to_int.get(word, unknown_token_id) for word in words] # здесь unknown_token_id - это ID для "неизвестных" слов
|
153 |
return np.array(vector, dtype=np.int64) # Убедитесь, что тип данных int64
|
154 |
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
start_time = time.time()
|
163 |
-
with torch.
|
164 |
-
|
165 |
end_time = time.time()
|
166 |
-
|
167 |
-
# Время предсказания
|
168 |
prediction_time = end_time - start_time
|
169 |
-
|
|
|
|
|
|
|
170 |
|
171 |
tokenizer_rubert = AutoTokenizer.from_pretrained("cointegrated/rubert-tiny2")
|
172 |
model_rubert = AutoModel.from_pretrained("cointegrated/rubert-tiny2")
|
@@ -199,9 +208,9 @@ if page == "Классификация отзывов":
|
|
199 |
prediction_tf, pred_time_tf = classify_review_tf(user_review)
|
200 |
st.write(f'Предсказанный класс TF-IDF: {prediction_tf}')
|
201 |
st.write(f'Время предсказания TF-IDF: {pred_time_tf:.4f} секунд')
|
202 |
-
prediction_lstm, pred_time_lstm = classify_review_lstm(user_review)
|
203 |
-
st.write(f'Предсказанный класс LSTM: {
|
204 |
-
st.write(f'Время предсказания LSTM: {
|
205 |
prediction_rubert, pred_time_rubert = make_prediction(user_review)
|
206 |
prediction_ru = 'negative' if prediction_rubert == 0 else 'positive'
|
207 |
st.write(f'Предсказанный класс RuBERT: {prediction_ru}')
|
|
|
152 |
vector = [vocab_to_int.get(word, unknown_token_id) for word in words] # здесь unknown_token_id - это ID для "неизвестных" слов
|
153 |
return np.array(vector, dtype=np.int64) # Убедитесь, что тип данных int64
|
154 |
|
155 |
+
|
156 |
+
def classify_review_lstm(review: str, SEQ_LEN: int, model: nn.Module, threshold: float = 0.5):
|
157 |
+
"""Predict sentiment class for a review
|
158 |
+
|
159 |
+
Args:
|
160 |
+
review (str): Review text
|
161 |
+
SEQ_LEN (int): sequence length
|
162 |
+
model (nn.Module): trained model
|
163 |
+
threshold (float): threshold for class prediction
|
164 |
+
|
165 |
+
Returns:
|
166 |
+
str: Predicted sentiment ('positive' or 'negative')
|
167 |
+
"""
|
168 |
+
inp = text_to_vector(review)
|
169 |
+
inp_tensor = torch.tensor(inp, dtype=torch.int64)
|
170 |
start_time = time.time()
|
171 |
+
with torch.inference_mode():
|
172 |
+
pred, _ = model(inp_tensor.long().unsqueeze(0))
|
173 |
end_time = time.time()
|
|
|
|
|
174 |
prediction_time = end_time - start_time
|
175 |
+
# Convert prediction to sentiment label
|
176 |
+
sentiment = 'positive' if pred.sigmoid().item() > threshold else 'negative'
|
177 |
+
|
178 |
+
return sentiment, prediction_time
|
179 |
|
180 |
tokenizer_rubert = AutoTokenizer.from_pretrained("cointegrated/rubert-tiny2")
|
181 |
model_rubert = AutoModel.from_pretrained("cointegrated/rubert-tiny2")
|
|
|
208 |
prediction_tf, pred_time_tf = classify_review_tf(user_review)
|
209 |
st.write(f'Предсказанный класс TF-IDF: {prediction_tf}')
|
210 |
st.write(f'Время предсказания TF-IDF: {pred_time_tf:.4f} секунд')
|
211 |
+
prediction_lstm, pred_time_lstm = classify_review_lstm(user_review, SEQ_LEN=SEQ_LEN, model=model_lstm)
|
212 |
+
st.write(f'Предсказанный класс LSTM: {prediction_lstm}')
|
213 |
+
st.write(f'Время предсказания LSTM: {pred_time_lstm:.4f} секунд')
|
214 |
prediction_rubert, pred_time_rubert = make_prediction(user_review)
|
215 |
prediction_ru = 'negative' if prediction_rubert == 0 else 'positive'
|
216 |
st.write(f'Предсказанный класс RuBERT: {prediction_ru}')
|