File size: 3,708 Bytes
faccfc2 8213f08 faccfc2 8213f08 2b25c0f faccfc2 8213f08 875c568 8213f08 7a2147c 8213f08 2f3f02b 8213f08 875c568 8213f08 875c568 8213f08 875c568 8213f08 875c568 8213f08 875c568 8213f08 2b25c0f |
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 |
---
pipeline_tag: sentence-similarity
tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- transformers
language: ru
license: unlicense
widget:
- source_sentence: Кошка ловит мышку
sentences:
- Мышка преследуема кошкой
- Кошка гонится за мышью
- Кошка ловит кайф
datasets:
- inkoziev/paraphrases
---
# Детектор синонимичности фраз
Это [sentence-transformers](https://www.SBERT.net) модель, предназначенная
для определения синонимичности двух коротких текстов, преимущественно одиночных предложений длиной до 10-15 слов.
Часть обучающего датасета доступна в репозитории [inkoziev/paraphrases](https://huggingface.co/datasets/inkoziev/paraphrases).
Модель вычисляет для текста и вопроса векторы размерностью 312. Косинус угла между этими векторами
дает оценку того, насколько они близки по смыслу. В [проекте диалоговой системы](https://github.com/Koziev/chatbot)
она используется для определения перефразировок высказыванийи и фактов.
Модель основана на [cointegrated/rubert-tiny2](https://huggingface.co/cointegrated/rubert-tiny2).
Она имеет очень небольшой размер и быстро выполняет инференс даже на CPU.
## Использование с библиотекой Sentence-Transformers
Для удобства установите [sentence-transformers](https://www.SBERT.net):
```
pip install -U sentence-transformers
```
Чтобы определить синонимичность пар предложений, можно использовать такой код:
```
import sentence_transformers
sentences = ["Одна голова - хорошо, а две - лучше",
"пара голов имеет преимущество перед единственной",
"Потерявши голову, по волосам не плачут",]
model = sentence_transformers.SentenceTransformer('inkoziev/sbert_synonymy')
embeddings = model.encode(sentences)
s1 = sentences[0]
v1 = embeddings[0]
for i2 in range(1, 3):
s = sentence_transformers.util.cos_sim(a=v1, b=embeddings[i2]).item()
print('text1={} text2={} cossim={}'.format(s1, sentences[i2], s))
```
Результат будет примерно таким:
```
text1=Одна голова - хорошо, а две - лучше text2=пара голов имеет преимущество перед единственной cossim=0.8603419065475464
text1=Одна голова - хорошо, а две - лучше text2=Потерявши голову, по волосам не плачут cossim=0.013120125979185104
```
## Связанные проекты
Генеративный поэтический перефразировщик доступен в хабе hugginggace: [inkoziev/paraphraser](https://huggingface.co/inkoziev/paraphraser).
Код обучения этой модели доступен в [репозитории на гитхабе](https://github.com/Koziev/paraphraser).
## Контакты и цитирование
```
@MISC{rugpt_chitchat,
author = {Ilya Koziev},
title = {Paraphrase Detection Model},
url = {https://huggingface.co/inkoziev/sbert_synonymy},
year = 2022
}
``` |