--- datasets: [] language: [] library_name: sentence-transformers pipeline_tag: sentence-similarity tags: - sentence-transformers - sentence-similarity - feature-extraction widget: [] --- Эксперимент по использованию модели, наподобие GPT-2, в качестве эмбеддера. Базовая модель: `ai-forever/rugpt3medium_based_on_gpt2`, извлечено первые 6 слоев. # SentenceTransformer Это модель [sentence-transformers](https://www.SBERT.net), которая обучена для преобразования предложений и абзацев в плотное векторное пространство размерностью 1024. Она может использоваться для семантического сопоставления текста, семантического поиска, поиска парафраз, классификации текста, кластеризации и других задач. ## Описание Модели ### Основные Характеристики - **Тип модели:** Sentence Transformer - **Максимальная длина последовательности:** 2048 токенов - **Размерность выхода:** 1024 - **Функция Similarity:** Косинусное сходство ### Источники Модели - **Документация:** [Sentence Transformers Documentation](https://sbert.net) - **Репозиторий:** [Sentence Transformers на GitHub](https://github.com/UKPLab/sentence-transformers) - **Hugging Face:** [Sentence Transformers на Hugging Face](https://huggingface.co/models?library=sentence-transformers) ### Полная Архитектура Модели ```python SentenceTransformer( (0): Transformer({'max_seq_length': 2048, 'do_lower_case': False}) with Transformer model: GPT2Model (1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True}) ) ``` ## Использование ### Прямое Использование (Sentence Transformers) Для начала установите библиотеку Sentence Transformers: ```bash pip install -U sentence-transformers ``` Затем загрузите эту модель и выполните инференс. ```python from sentence_transformers import SentenceTransformer # Загрузка модели с 🤗 Hub model = SentenceTransformer("Ponimash/gpt_text_embd") # Запуск инференса sentences = [ 'Погода сегодня прекрасная.', 'На улице так солнечно!', 'Он поехал на стадион.', ] embeddings = model.encode(sentences) print(embeddings.shape) # [3, 1024] # Получение оценок схожести для эмбеддингов similarities = model.similarity(embeddings, embeddings) print(similarities.shape) # [3, 3] ``` ### Результаты ```python # Выходная размерность: 1024 tensor([[1.0000, 0.6575, 0.4605], [0.6575, 1.0000, 0.4683], [0.4605, 0.4683, 1.0000]]) SentenceTransformer( (0): Transformer({'max_seq_length': 2048, 'do_lower_case': False}) with Transformer model: GPT2Model (1): Pooling({'word_embedding_dimension': 1024, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True}) ) ```