1NEYRON1 commited on
Commit
92010d3
·
1 Parent(s): e4e5fa1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -21
app.py CHANGED
@@ -154,7 +154,7 @@ except OSError as e:
154
  st.stop() # Остановка выполнения приложения при ошибке
155
 
156
 
157
- def classify_text(title, description, show_all=False, threshold=0.95):
158
  """
159
  Классифицирует текст и возвращает результаты в отсортированном виде.
160
 
@@ -170,7 +170,6 @@ def classify_text(title, description, show_all=False, threshold=0.95):
170
  text = f"{title} {description}" # Объединяем заголовок и описание
171
  topic_classifier = pipeline("text-classification", model=model, tokenizer=tokenizer, top_k = len(id_to_cat))
172
  try:
173
-
174
  results = topic_classifier(text)
175
  # results = topic_classifier(text, candidate_labels, multi_label=True) # multi_label=True для нескольких меток
176
  except Exception as e:
@@ -180,24 +179,16 @@ def classify_text(title, description, show_all=False, threshold=0.95):
180
  for i in results[0]:
181
  i['label'] = id_to_cat[int(i['label'].split('_')[1])]
182
 
183
- if show_all:
184
- filtered_results = []
185
- for i in results[0]:
186
- filtered_results.append((i['label'], i['score']))
187
- return filtered_results
188
- else:
189
- cumulative_prob = 0
190
- filtered_results = []
191
- for i in results[0]:
192
- filtered_results.append((i['label'], i['score']))
193
- cumulative_prob += i['score']
194
- if cumulative_prob >= threshold:
195
- break
196
- return filtered_results
197
 
198
 
199
  # --- Интерфейс Streamlit ---
200
- st.title("Классификация статей 11")
201
 
202
  # Ввод данных
203
  title = st.text_input("Заголовок статьи")
@@ -211,18 +202,21 @@ if st.button("Классифицировать"):
211
  with st.spinner("Идет классификация..."): # Индикатор загрузки
212
  results = classify_text(title, description)
213
  if results:
214
- st.subheader("Результаты классификации (с ограничением по вероятности):")
 
215
  for label, score in results:
216
  st.write(f"- **{label}**: {score:.4f}")
 
 
 
217
 
218
  # Кнопка "Показать все"
219
  if st.button("Показать все категории"):
220
- all_results = classify_text(title, description, candidate_labels, show_all=True)
221
  st.subheader("Полные результаты классификации:")
222
- for label, score in all_results:
223
  st.write(f"- **{label}**: {score:.4f}")
224
  else:
225
  st.info("Не удалось получить результаты классификации.")
226
 
227
  elif title or description: #небольшой костыль, чтобы при старте не было предупреждения
228
- st.warning("Пожалуйста, заполните все поля.")
 
154
  st.stop() # Остановка выполнения приложения при ошибке
155
 
156
 
157
+ def classify_text(title, description):
158
  """
159
  Классифицирует текст и возвращает результаты в отсортированном виде.
160
 
 
170
  text = f"{title} {description}" # Объединяем заголовок и описание
171
  topic_classifier = pipeline("text-classification", model=model, tokenizer=tokenizer, top_k = len(id_to_cat))
172
  try:
 
173
  results = topic_classifier(text)
174
  # results = topic_classifier(text, candidate_labels, multi_label=True) # multi_label=True для нескольких меток
175
  except Exception as e:
 
179
  for i in results[0]:
180
  i['label'] = id_to_cat[int(i['label'].split('_')[1])]
181
 
182
+
183
+ filtered_results = []
184
+ for i in results[0]:
185
+ filtered_results.append((i['label'], i['score']))
186
+ return filtered_results
187
+
 
 
 
 
 
 
 
 
188
 
189
 
190
  # --- Интерфейс Streamlit ---
191
+ st.title("Классификация статей 1")
192
 
193
  # Ввод данных
194
  title = st.text_input("Заголовок статьи")
 
202
  with st.spinner("Идет классификация..."): # Индикатор загрузки
203
  results = classify_text(title, description)
204
  if results:
205
+ st.subheader("Результаты классификации (top 95%):")
206
+ cumulative_prob = 0
207
  for label, score in results:
208
  st.write(f"- **{label}**: {score:.4f}")
209
+ cumulative_prob += score
210
+ if cumulative_prob >= 0.95:
211
+ break
212
 
213
  # Кнопка "Показать все"
214
  if st.button("Показать все категории"):
 
215
  st.subheader("Полные результаты классификации:")
216
+ for label, score in results:
217
  st.write(f"- **{label}**: {score:.4f}")
218
  else:
219
  st.info("Не удалось получить результаты классификации.")
220
 
221
  elif title or description: #небольшой костыль, чтобы при старте не было предупреждения
222
+ st.warning("Пожалуйста, заполните хотя бы одно поле.")