Update README.md
Browse files
README.md
CHANGED
|
@@ -1,42 +1,51 @@
|
|
| 1 |
---
|
| 2 |
license: mit
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
---
|
| 4 |
|
| 5 |
This classification model is based on [sberbank-ai/ruRoberta-large](https://huggingface.co/sberbank-ai/ruRoberta-large).
|
| 6 |
-
The model should be used to produce relevance and specificity of the last message in the context of a
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
<td>0.83</td>
|
| 28 |
-
<td>0.85</td>
|
| 29 |
-
<td>0.86</td>
|
| 30 |
-
</tr>
|
| 31 |
-
</tbody>
|
| 32 |
-
</table>
|
| 33 |
-
|
| 34 |
-
The model can be loaded as follows:
|
| 35 |
|
| 36 |
```python
|
| 37 |
-
|
| 38 |
-
from transformers import AutoTokenizer,
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
license: mit
|
| 3 |
+
widget:
|
| 4 |
+
- text: "привет[SEP]привет![SEP]как дела?[RESPONSE_TOKEN]супер, вот только проснулся, у тебя как?"
|
| 5 |
+
example_title: "Dialog example 1"
|
| 6 |
+
- text: "привет[SEP]привет![SEP]как дела?[RESPONSE_TOKEN]норм"
|
| 7 |
+
example_title: "Dialog example 2"
|
| 8 |
+
- text: "привет[SEP]привет![SEP]как дела?[RESPONSE_TOKEN]норм, у тя как?"
|
| 9 |
+
example_title: "Dialog example 3"
|
| 10 |
---
|
| 11 |
|
| 12 |
This classification model is based on [sberbank-ai/ruRoberta-large](https://huggingface.co/sberbank-ai/ruRoberta-large).
|
| 13 |
+
The model should be used to produce relevance and specificity of the last message in the context of a dialogue.
|
| 14 |
+
|
| 15 |
+
The labels explanation:
|
| 16 |
+
- `relevance`: is the last message in the dialogue relevant in the context of the full dialogue.
|
| 17 |
+
- `specificity`: is the last message in the dialogue interesting and promotes the continuation of the dialogue.
|
| 18 |
+
|
| 19 |
+
It is pretrained on a large corpus of dialog data in unsupervised manner: the model is trained to predict whether last response was in a real dialog, or it was pulled from some other dialog at random.
|
| 20 |
+
Then it was finetuned on manually labelled examples (dataset will be posted soon).
|
| 21 |
+
|
| 22 |
+
The model was trained with three messages in the context and one response. Each message was tokenized separately with ``` max_length = 32 ```.
|
| 23 |
+
|
| 24 |
+
The performance of the model on validation split (dataset will be posted soon) (with the best thresholds for validation samples):
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
| | threshold | f0.5 | ROC AUC |
|
| 28 |
+
|:------------|------------:|-------:|----------:|
|
| 29 |
+
| relevance | 0.59 | 0.86 | 0.83 |
|
| 30 |
+
| specificity | 0.61 | 0.85 | 0.86 |
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
How to use:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
|
| 35 |
```python
|
| 36 |
+
pip install transformers
|
| 37 |
+
from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| 38 |
+
import torch
|
| 39 |
+
tokenizer = AutoTokenizer.from_pretrained('tinkoff-ai/response-quality-classifier-large')
|
| 40 |
+
model = AutoModelForSequenceClassification.from_pretrained('tinkoff-ai/response-quality-classifier-large')
|
| 41 |
+
model.cuda()
|
| 42 |
+
inputs = tokenizer('[CLS]привет[SEP]привет![SEP]как дела?[RESPONSE_TOKEN]норм, у тя как?', max_length=128, add_special_tokens=False, return_tensors='pt')
|
| 43 |
+
with torch.inference_mode():
|
| 44 |
+
logits = model(**inputs).logits
|
| 45 |
+
probas = torch.sigmoid(logits)[0].cpu().detach().numpy()
|
| 46 |
+
relevance, specificity = probas
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
The [app](https://huggingface.co/spaces/tinkoff-ai/response-quality-classifiers) where you can easily interact with this model.
|
| 50 |
+
|
| 51 |
+
The work was done during internship at Tinkoff by [egoriyaa](https://github.com/egoriyaa), mentored by [solemn-leader](https://huggingface.co/solemn-leader).
|