Детектор синонимичности фраз
Это sentence-transformers модель, предназначенная для определения синонимичности двух коротких текстов, преимущественно одиночных предложений длиной до 10-15 слов. Часть обучающего датасета доступна в репозитории inkoziev/paraphrases.
Модель вычисляет для текста и вопроса векторы размерностью 312. Косинус угла между этими векторами дает оценку того, насколько они близки по смыслу. В проекте диалоговой системы она используется для определения перефразировок высказыванийи и фактов.
Модель основана на cointegrated/rubert-tiny2. Она имеет очень небольшой размер и быстро выполняет инференс даже на CPU.
Использование с библиотекой Sentence-Transformers
Для удобства установите sentence-transformers:
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. Код обучения этой модели доступен в репозитории на гитхабе.
Контакты и цитирование
@MISC{rugpt_chitchat,
author = {Ilya Koziev},
title = {Paraphrase Detection Model},
url = {https://huggingface.co/inkoziev/sbert_synonymy},
year = 2022
}
- Downloads last month
- 174