Views
No views yet
1therapist_categories_list = ['Информирование',
2 'Запрос информации',
3 'Общая эмоциональная поддержка',
4 'Поддержание позитивной динамики терапии',
5 'Негативное оценивание',
6 'Самораскрытие',
7 'Запрос на простраивание связей',
8 'Интерпретация',
9 'Наставничество']1import torch
2from transformers import AutoTokenizer, AutoModelForSequenceClassification, BitsAndBytesConfig
3from peft import PeftModel, PeftConfig
4
5path = 'AIPsy/qwen3-8b-therapist-intent-classification-ru-9'
6config = PeftConfig.from_pretrained(path)
7
8# tokenizer
9tokenizer = AutoTokenizer.from_pretrained(config.base_model_name_or_path)
10tokenizer.pad_token = tokenizer.eos_token
11
12# qunatization config
13quantization_config = BitsAndBytesConfig(
14 load_in_4bit = True,
15 bnb_4bit_quant_type = 'nf4',
16 bnb_4bit_use_double_quant = True,
17 bnb_4bit_compute_dtype = torch.bfloat16
18)
19
20model_therapist = AutoModelForSequenceClassification.from_pretrained(config.base_model_name_or_path,
21 device_map="cuda:0",
22 quantization_config=quantization_config,
23 num_labels=9,
24 use_cache = True,
25 )
26model_therapist = PeftModel.from_pretrained(model_therapist, path)
27model_therapist.config.pad_token_id = tokenizer.pad_token_id
28text = '''Клиент: Я считаю, что эта обида переросла в ненависть. Знаешь, такую прям вот, как раньше, кровная какая-то ненависть. То есть у меня к человеку настолько сильная неприязнь, что я вообще не хочу ничего не знать о нём, не слышать. У меня прям даже уже не боль, а как бы презрение.Я уже ненавижу его. Вот такое осталось состояние.
29Терапевт: Хорошо, я тебя поняла. Вот так, давай сначала, знаешь как, определимся, вот у нас с тобой есть почти час, да, вот чего бы ты хотела от сегодняшней встречи? Какой бы вот итог, результат тебя бы удовлетворил? Скажи, пожалуйста.
30Клиент: По факту мне хочется завершиться с этим ощущением ненависти, потому что никакого, никакой пользы я этого не вижу для себя, да, никаких у нас с ним не может быть. Я всё хочу оставить и этот вопрос закрыть, потому что, как показывает жизненный опыт на сегодняшний день, все эти эмоции ещё негативно отражаются в настоящих моих отношениях.
31'''
32
33inputs = tokenizer(str(text), padding=True, truncation=True, return_tensors="pt")
34with torch.no_grad():
35 outputs = model_therapist(**inputs.to(model_therapist.device))
36
37binary_tensor = (outputs.logits > 0).int()
38print(binary_tensor)
39#[1, 1, 1, 0, 0, 0, 1, 0, 0]
40
41list_categories = [
42 cat
43 for label, cat in zip(binary_tensor.squeeze(), therapist_categories_list)
44 if label.item()
45]
46print(list_categories)
47#['Информирование', 'Запрос информации', 'Общая эмоциональная поддержка', 'Запрос на простраивание связей']| Intentions | Precision | Recall | F1-score |
|---|---|---|---|
| 1. Providing Information | 0.83 | 0.92 | 0.88 |
| 2. Request for Information | 0.93 | 0.88 | 0.90 |
| 3. General Emotional Support | 0.68 | 0.81 | 0.74 |
| 4. Maintaining Positive Dynamics | 0.90 | 0.65 | 0.76 |
| 5. Negative Evaluation | 0.86 | 0.80 | 0.83 |
| 6. Self-Disclosure | 0.77 | 0.74 | 0.76 |
| 7. Request for Making Connections | 0.77 | 0.72 | 0.75 |
| 8. Interpretation | 0.80 | 0.74 | 0.77 |
| 9. Guidance | 0.82 | 0.71 | 0.76 |
| weighted average | 0.83 | 0.79 | 0.80 |
| F1-Macro | 0.79 | ||
| F1-Micro | 0.8 |