bumchik2 commited on
Commit
97c6f33
·
1 Parent(s): 5258578
Files changed (3) hide show
  1. README.md +16 -1
  2. app.py +2 -2
  3. example.png +0 -0
README.md CHANGED
@@ -10,4 +10,19 @@ pinned: false
10
  short_description: shad ml2 task 4
11
  ---
12
 
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  short_description: shad ml2 task 4
11
  ---
12
 
13
+ Что я делал:
14
+
15
+ - я делал классификатор статей (задача, описанная в задании). Цель - увидеть топ-95%* тематик, отсортированных по убыванию вероятности.
16
+ - попробовал 2 немного разных подхода и несколько моделей в качестве основы нейросети, все они описаны здесь: https://huggingface.co/spaces/bumchik2/articles_classifier/tree/main/notebooks
17
+ - в целом albert-base-v2 и distilroberta-base давали очень похожие результаты. С точки зрения лосса на тесте у меня лучше всего работала distilroberta-base, поэтому ее и вставил в приложение
18
+ - основной ноутбук (в котором обучалась финальная модель) называется distilroberta_base_main.ipynb и лежит здесь: https://huggingface.co/spaces/bumchik2/articles_classifier/blob/main/notebooks/distilroberta_base_main.ipynb. В нем я немного смотрю на данные, потом обучаю нейросеть, за основу которой взята distilroberta-base. Я решаю задачу multibinary classification (поскольку одна и та же статья может соответстовать сразу нескольким категориям), в качестве лосса использую взвешенный BCEWithLogitsLoss (добавляю веса, чтобы учесть большую разницу в частотах классов). После того, как уже обучил модель, выходы модели можно использовать для подсчета искомых вероятностей категорий
19
+
20
+ Пример использования нейросети (скопирован из ноутбука):
21
+ ![alt text](example.png)
22
+
23
+ Что где находится:
24
+
25
+ - основной ноутбук называется distilroberta_base_main.ipynb и лежит здесь: https://huggingface.co/spaces/bumchik2/articles_classifier/blob/main/notebooks/distilroberta_base_main.ipynb. В нем обучение финальной нейросети и примеры ее инференса
26
+ - данные о тегах и категориях с arxiv в удобном для меня формате: https://huggingface.co/spaces/bumchik2/articles_classifier/blob/main/arxiv_topics.csv
27
+ - финальную модель положил на huggingface сюда: https://huggingface.co/bumchik2/train-distilroberta-base-tags-classification
28
+ - код самого приложения https://huggingface.co/spaces/bumchik2/articles_classifier/blob/main/app.py
app.py CHANGED
@@ -97,8 +97,8 @@ target_probability = st.slider("Select minimum probability sum", 0.0, 1.0, step=
97
  st.session_state['target_probability'] = 'target_probability'
98
 
99
 
100
- if title and summary:
101
- category_probs_dict = get_category_probs_dict(model=model, title=title, summary=summary)
102
  result = get_most_probable_keys(probs_dict=category_probs_dict, target_probability=target_probability, print_probabilities=need_to_print_probabilities=='Yes')
103
  result_str = " \n ".join(result)
104
  st.write(result_str)
 
97
  st.session_state['target_probability'] = 'target_probability'
98
 
99
 
100
+ if title or summary:
101
+ category_probs_dict = get_category_probs_dict(model=model, title=title, summary=summary or '')
102
  result = get_most_probable_keys(probs_dict=category_probs_dict, target_probability=target_probability, print_probabilities=need_to_print_probabilities=='Yes')
103
  result_str = " \n ".join(result)
104
  st.write(result_str)
example.png ADDED