68 lines
2.8 KiB
Markdown
68 lines
2.8 KiB
Markdown
|
|
---
|
|||
|
|
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
|
|||
|
|
}
|
|||
|
|
```
|