readme: ---
  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
  }
  ```
  