Описание
Проект Skip-Thought Vectors предлагает энкодер Sent2Vec и соответствующий код для обучения, напрямую основанный на исследовательской статье "Skip-Thought Vectors". Этот инструмент предназначен для генерации высококачественных, плотных векторных представлений предложений. Эти векторные представления предложений затем могут использоваться в широком спектре приложений обработки естественного языка (NLP), значительно повышая их производительность.
Реализация выполнена в основном на Python и требует определенных зависимостей, таких как Python 2.7, Theano 0.7, NumPy, SciPy, scikit-learn, NLTK 3, а также опционально Keras и gensim для конкретных экспериментов. Пользователям необходимо загрузить предварительно обученные файлы моделей и векторные представления слов, которые имеют значительный размер и требуют достаточного дискового пространства. Настройка включает в себя конфигурирование путей к этим загруженным файлам в скрипте `skipthoughts.py` и установку флагов Theano для выбора устройства (CPU или GPU).
После настройки энкодер может обрабатывать списки предложений для получения числовых векторов. Выходные векторы имеют размерность 4800 и объединяют модели uni-skip и bi-skip, при этом объединенные векторы рекомендуются для оптимальной производительности, как показано в экспериментах статьи. Процесс кодирования может контролироваться по уровню детализации, отображая прогресс в зависимости от обрабатываемой длины предложений.
Репозиторий также включает код для воспроизведения экспериментов, описанных в статье, охватывающих такие задачи, как классификация типов вопросов TREC, ранжирование изображений и предложений (с использованием набора данных COCO), семантическая связанность (набор данных SICK), обнаружение парафраз (корпус Microsoft Research Paraphrase Corpus) и различные бинарные классификационные бенчмарки (MR, CR, SUBJ, MPQA). Эти экспериментальные скрипты направляют пользователей по подготовке данных и выполнению для достижения заявленных результатов, часто включая кросс-валидацию для настройки гиперпараметров.
Проект подчеркивает важность токена конца предложения (EOS), который может быть опционально использован при кодировании для потенциального улучшения производительности, особенно для предложений, не имеющих стандартной пунктуации. Код выпущен под лицензией Apache License 2.0, и пользователям рекомендуется цитировать соответствующие исследовательские статьи, если они находят код полезным.
Главное о Skip-Thought Vectors
Реализация энкодера Sent2Vec
Код для обучения из статьи "Skip-Thought Vectors"
Генерирует плотные векторные представления предложений
Поддерживает модели uni-skip и bi-skip
Рекомендуются объединенные векторы combine-skip для лучшей производительности
Включает код для экспериментов по классификации TREC
Включает код для экспериментов по ранжированию изображений и предложений
Включает код для экспериментов по семантической связанности
Включает код для экспериментов по обнаружению парафраз
Включает код для бинарных классификационных бенчмарков
Опциональное использование токена EOS для кодирования
Реализация на Python
Начало работы с Skip-Thought Vectors
Загрузите файлы моделей и векторные представления слов
Настройте пути к загруженным файлам в skipthoughts.py
Установите THEANO_FLAGS для выбора устройства (CPU/GPU)
Импортируйте skipthoughts и загрузите модель
Инициализируйте энкодер с загруженной моделью
Кодируйте списки предложений для получения векторов
Запустите предоставленные скрипты для конкретных NLP-экспериментов
Варианты использования Skip-Thought Vectors
- Генерация векторных представлений предложений
- Классификация текстов
- Ранжирование изображений и предложений
- Семантическая схожесть
- Обнаружение парафраз
- Бинарная классификация







