File size: 2,838 Bytes
69ce236
1c8d4f5
 
 
 
 
 
ee4f669
69ce236
ee4f669
 
 
 
69ce236
1c8d4f5
ee4f669
1c8d4f5
 
7468ff7
d4be35f
1c8d4f5
7468ff7
 
 
1c8d4f5
af5f111
 
 
 
 
 
 
 
1c8d4f5
 
7468ff7
1c8d4f5
af5f111
1c8d4f5
 
7468ff7
1c8d4f5
 
7468ff7
1c8d4f5
 
7468ff7
1c8d4f5
7468ff7
1c8d4f5
7468ff7
 
1c8d4f5
7468ff7
d4be35f
1c8d4f5
 
7468ff7
1c8d4f5
6aab6f6
 
 
 
 
 
 
 
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
---
pipeline_tag: sentence-similarity
tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- transformers
language: ru
license: unlicense

widget:
- source_sentence: "Кошка ловит мышку."
  sentences: ["Кто ловит мышку?", "Где живет кошка?", "Как мышку зовут?"]
---


# SBERT_PQ

Это [sentence-transformers](https://www.SBERT.net) модель, предназначенная
для определения релевантности короткого текста (преимущественно одно предложение длиной до 10-15 слов) и вопроса.

Модель вычисляет для текста и вопроса векторы размерностью 312. Косинус угла между этими векторами
дает оценку того, содержит ли текст ответ на заданный вопрос. В [проекте диалоговой системы](https://github.com/Koziev/chatbot) 
она используется для семантического поиска записей в базе фактов по заданному собеседником вопросу.

# Скорость и точность

Модель основана на [cointegrated/rubert-tiny2](https://huggingface.co/cointegrated/rubert-tiny2).
Она имеет очень небольшой размер и быстро выполняет инференс даже на CPU.

Максимальное значение метрики cossim_f1 на тестовой выборке (10% датасета) равно **0.986**.

При использовании модели sberbank-ai/ruBert-base в качестве базовой, максимум cossim_f1 составляет **0.992**.


## Использование с библиотекой (Sentence-Transformers)

Необходимо установить [sentence-transformers](https://www.SBERT.net):

```
pip install -U sentence-transformers
```

Чтобы определить релевантность в одной паре "текст-вопрос", можно использовать такой код:

```
import sentence_transformers

sentences = ["Кошка ловит мышку.", "Чем занята кошка?"]

model = sentence_transformers.SentenceTransformer('inkoziev/sbert_pq')
embeddings = model.encode(sentences)

s = sentence_transformers.util.cos_sim(a=embeddings[0], b=embeddings[1])
print('text={} question={} cossim={}'.format(sentences[0], sentences[1], s))
```

## Контакты и цитирование

```
@MISC{rugpt_chitchat,
    author  = {Ilya Koziev},
    title   = {Texts & Questions Relevancy Model},
    url     = {https://huggingface.co/inkoziev/sbert_pq},
    year    = 2022
}
```