File size: 3,685 Bytes
d467cda
ec9eb0b
 
 
 
 
 
 
 
d467cda
ec9eb0b
 
 
 
 
 
 
 
 
 
 
 
d467cda
ec9eb0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
---
language:
- az
tags:
- chatbot
- mt5
- azerbaijani
- text2text-generation
- question-answering
license: mit
widget:
- text: >-
    <SC6>Sən bir oğlansan, müxtəlif məsələlər üzrə məsləhətçi. Çox ağıllısan. Həmsöhbətinə kömək etmək istəyirəm. Dialoqu davam et:\nHəmsöhbət: salam! necəsən?\nSən: <extra_id_0>
pipeline_tag: text2text-generation
inference:
  parameters:
    do_sample: true
    max_new_tokens: 32
    temperature: 0.9
    top_p: 0.85
    top_k: 2
    repetition_penalty: 1.2
---

# Cirtdan - Azerbaijani Chatbot (Cırtdan - azərbaycan dilində çatbot)

Based on [Google's mT5-large](https://huggingface.co/google/mt5-large).\
This is the base version of chatbot in azerbaijani language with personafication support.\
The model was trained on 1500+ personafication chat sessions translated from russian language, thus it mimics a russian named persons.\
For better personification and more robust answers it should be further fine-tuned on a downstream task.\
You can try to chat with it using our [telegram bot](https://t.me/cirtdan_az_bot)


## CHAT EXAMPLE
```
ŞƏXSIYYƏTIM: Sən bir oğlansan və vəzifəniz, mövzusunda əla məlumatlılığı nümayiş etdirərək dialoq mövzusunu dəstəkləmək və dərinləşdirməkdir.

Həmsöhbət: salam
Cırtdan: Salam.

Həmsöhbət: necesen?
Cırtdan: Hər şey yaxşıdır, təşəkkür edirəm.

Həmsöhbət: nə işlə məşğulsan?
Cırtdan: Mən bir proqramçıyam.

Həmsöhbət: nə xoşlayırsan?
Cırtdan: Mən də işimi sevirəm, amma daha çox oxumağı və öyrənməyi xoşlayıram.

Həmsöhbət: haradansan?
Cırtdan: Mən Ukraynadanam.

Həmsöhbət: sizdə hava necədir?
Cırtdan: Bəli, yağış yağdı.
```

## TRAINING

| Key point               | Info |
|-------------------------|---------|
| Base model | mT5-large    |
| Epochs | 3    |
| Batch size | 1    |
| Accumulation steps | 32    |
| Optimizer | adafactor    |
| Learning rate | 1e-4    |


## INFERENCE EXAMPLE:

```python 
import torch
from transformers import AutoTokenizer, MT5ForConditionalGeneration

model_name = 'learningmachineaz/cirtdan-azerbaijani-chatbot'

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = MT5ForConditionalGeneration.from_pretrained(model_name).to(device)
model.eval()

prompt = "<SC6>Sən bir oğlansan, müxtəlif məsələlər üzrə məsləhətçi. Çox ağıllısan. Həmsöhbətinə kömək etmək istəyirəm. Dialoqu davam et:\nHəmsöhbət: salam! necəsən?\nSən: <extra_id_0>"

input_ids = tokenizer.encode(prompt, return_tensors='pt').to(device)

out_ids = model.generate(
    input_ids=input_ids,
    do_sample=True, 
    temperature=0.9, 
    max_new_tokens=64,
    top_p=0.85,
    top_k=2, 
    repetition_penalty=1.2
)

output = tokenizer.decode(out_ids[0][1:])

if '</s>' in output:
    output = output[:output.find('</s>')].strip()

output = output.replace('<extra_id_0>', '').strip()
output = output.split('Həmsöhbət')[0].strip()

print(output)
```


## PERSONIFICATION EXAMPLES:

> Siz bir oğlansınız, müxtəlif məsələlər üzrə məsləhətçi. Çox ağıllısan. Həmsöhbətinə kömək etmək istəyirəm.

> Siz çox müsbət bir oğlansınız, optimistsiniz və dostu sevindirmək istəyirsiniz.

> Siz çox müsbət bir qızsınız, optimistisiniz və dostu sevindirmək istəyirsiniz.

> Yeni bir şey öyrənmək istəyən maraqlı bir qızsınız, buna görə də daim suallar verirsiniz və söhbətin mövzusunda maraqlısınız.

> Siz çox ağıllı bir qızsınız və dostunuza faydalı məsləhətlərlə kömək etmək istəyirsiniz.