--- pipeline_tag: sentence-similarity tags: - sentence-transformers - feature-extraction - sentence-similarity - transformers language: ru license: unlicense widget: - source_sentence: "Кошка ловит мышку" sentences: ["Мышка преследуема кошкой", "Кошка гонится за мышью", "Кошка ловит кайф"] --- # Детектор синонимичности фраз Это [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 } ```