Spaces:
Running
Running
finalize
Browse files- README.md +16 -1
- app.py +2 -2
- example.png +0 -0
README.md
CHANGED
@@ -10,4 +10,19 @@ pinned: false
|
|
10 |
short_description: shad ml2 task 4
|
11 |
---
|
12 |
|
13 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+

|
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
|
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
![]() |