alizhgir commited on
Commit
cc57a85
1 Parent(s): f71220a

исправлена первая модель

Browse files
Files changed (1) hide show
  1. app.py +24 -15
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
- def classify_review_lstm(review):
156
- # Векторизация отзыва
157
- review_vector = text_to_vector(review)
158
- # Преобразование в тензор PyTorch и добавление размерности пакета (batch)
159
- review_tensor = torch.tensor(review_vector).unsqueeze(0)
160
-
161
- # Предсказание
 
 
 
 
 
 
 
 
162
  start_time = time.time()
163
- with torch.no_grad():
164
- prediction, _ = model_lstm(review_tensor)
165
  end_time = time.time()
166
-
167
- # Время предсказания
168
  prediction_time = end_time - start_time
169
- return prediction, prediction_time
 
 
 
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: {prediction_tf}')
204
- st.write(f'Время предсказания LSTM: {pred_time_tf:.4f} секунд')
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}')