Детектор синонимичности фраз

Это 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
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Dataset used to train inkoziev/sbert_synonymy