devqp
Специалист
Рассмотрим применение нейронных сетей для сравнения смысловой близости предложений с использованием русскоязычной модели SBERT от Сбербанка. Модель преобразует текст в числовые представления (эмбеддинги) и вычисляет косинусное сходство между векторами для оценки семантической похожести.
Принцип работы:
- Текст кодируется в эмбеддинг — матрицу из 128 векторов (каждый по 768 значений), отражающую смысл фразы.
- Сравнение эмбеддингов выполняется через косинус угла между векторами. Значение близкое к 1 указывает на высокую смысловую схожесть.
Практическая реализация:
1. Установите библиотеку и загрузите модель:
2. Функция для ранжирования предложений по сходству с запросом:
3. Пример использования:
Готовый пример доступен в Google Colab. Для работы требуется знание Python и установленные зависимости.
Принцип работы:
- Текст кодируется в эмбеддинг — матрицу из 128 векторов (каждый по 768 значений), отражающую смысл фразы.
- Сравнение эмбеддингов выполняется через косинус угла между векторами. Значение близкое к 1 указывает на высокую смысловую схожесть.
Практическая реализация:
1. Установите библиотеку и загрузите модель:
Код:
pip install sentence_transformers
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('sberbank-ai/sbert_large_nlu_ru')
2. Функция для ранжирования предложений по сходству с запросом:
Код:
def find_similar_sentences(question, passages, top_n=10):
query_embed = model.encode(question)
passage_embeds = model.encode(passages)
similarities = util.cos_sim(query_embed, passage_embeds).tolist()[0]
scored_passages = list(zip(passages, similarities))
sorted_passages = sorted(scored_passages, key=lambda x: x[1], reverse=True)
return [text for text, _ in sorted_passages[:top_n]]
3. Пример использования:
Код:
query = "почему птицы не летают?"
sentences = [
"Нелетающие птицы — птицы, утратившие способность к полёту в процессе эволюции.",
"У нелетающих птиц крылья редуцированы или малы относительно массы тела.",
"Полёт — основной способ передвижения большинства птиц."
]
result = find_similar_sentences(query, sentences)
print(result)
Готовый пример доступен в Google Colab. Для работы требуется знание Python и установленные зависимости.