Webvectors — это набор инструментов для обслуживания векторных семантических моделей (в частности, встраивания слов на основе прогнозирования, как в word2vec или ELMo ) через Интернет, что позволяет легко продемонстрировать их возможности широкой публике. Он требует Python >= 3.6 и использует Flask , Gensim и simple_elmo под капотом.
Рабочие демо:
Службу можно либо интегрировать в веб-сервер Apache как приложение WSGI, либо запускать как автономный сервер с помощью Gunicorn (мы рекомендуем последний вариант).
Добавьте следующую строку в файл конфигурации Apache:
WSGIScriptAlias /WEBNAME "PATH/syn.wsgi"
, где WEBNAME — это псевдоним вашей службы относительно корня сервера (вебвекторы для http://example.com/webvectors
), а PATH — это путь вашей файловой системы к каталогу WebVectors .
Во всех файлах *.wsgi
и *.py
в каталоге WebVectors замените webvectors.cfg
в строке config.read('webvectors.cfg')
на абсолютный путь к файлу webvectors.cfg
.
Настройте свой сервис, используя файл конфигурации webvectors.cfg
. Наиболее важные настройки:
Теги
Модели могут использовать произвольные теги, присвоенные словам (например, теги части речи, как в boot_NOUN ). Если ваши модели обучены словам с тегами, вам следует включить это в webvectors.cfg
(переменная use_tags
). Затем WebVectors позволит пользователям фильтровать свои запросы по тегам. Вам также следует указать список разрешенных тегов (переменная tags_list
в файле webvectors.cfg
) и список тегов, которые будут отображаться пользователю (файл tags.tsv
).
Демон моделей
WebVectors использует демон, который работает в фоновом режиме и фактически обрабатывает все задачи, связанные с внедрением. При желании его также можно запустить на другой машине. Таким образом, в webvectors.cfg
необходимо указать host
и port
, который будет прослушивать этот демон. После этого запустите настоящий скрипт демона word2vec_server.py
. Он загрузит модели и откроет сокет для прослушивания. Этот демон должен быть активен постоянно, поэтому вы можете запустить его с помощью экрана или чего-то в этом роде.
Модели
Список моделей, которые вы хотите использовать, определен в файле models.tsv
. Он состоит из полей, разделенных табуляцией:
Идентификатор модели будет использоваться в качестве имени для флажков на веб-страницах, также важно, чтобы в файле strings.csv
тот же идентификатор использовался при обозначении названий моделей. Язык модели используется в качестве аргумента, передаваемого функции лемматизатора, это простая строка с названием языка (например, «английский», «русский», «французский»).
Модели на данный момент могут быть в 4 форматах:
WebVectors автоматически определит формат моделей и загрузит их все в память. Пользователи смогут выбирать среди загруженных моделей.
Локализация
WebVectors использует файл strings.csv
в качестве источника локализованных строк. Это файл, разделенный запятыми, с тремя полями:
По умолчанию язык 1 — английский, а язык 2 — русский. Это можно изменить в webvectors.cfg
.
Шаблоны
Фактические веб-страницы, отображаемые пользователю, определены в файлах templates/*.html
. Настройте их по своему желанию. Главное меню определено в base.html
.
Статистические файлы
Если ваше приложение не находит статические файлы (загрузочные и js-скрипты), отредактируйте переменную static_url_path
в run_syn.py
. Вы должны указать там абсолютный путь к папке data
.
Подсказки по запросам
Если вы хотите, чтобы подсказки запросов работали, не забудьте составить собственный список подсказок (формат JSON). Пример такого списка приведен в data/example_vocab.json
. Реальный URL этого списка должен быть указан в data/hint.js
.
Запуск вебвекторов
После того как вы изменили все настройки в соответствии с вашим рабочим процессом, убедились, что шаблоны вам подходят, и запустили демон моделей, вы готовы к фактическому запуску службы. Если вы используете интеграцию с Apache , просто перезапустите/перезагрузите Apache . Если вы предпочитаете автономный вариант, выполните следующую команду в корневом каталоге проекта:
gunicorn run_syn:app_syn -b address:port
где адрес — это адрес, на котором служба должна быть активна (может быть localhost), а порт — это, ну, порт для прослушивания (например, 9999).
Поддержка контекстуализированных внедрений. Вы можете включить поддержку контекстуализированных моделей внедрения (в настоящее время поддерживается ELMo). Чтобы это сделать:
Установите пакет simple_elmo
Загрузите модель ELMo по вашему выбору (например, здесь).
Создайте проекцию на основе типа в формате word2vec
для ограниченного набора слов (например, 10 000), учитывая модель ELMo и справочный корпус. Для этого используйте предоставленный нами скрипт extract_elmo.py
:
python3 extract_elmo.py --input CORPUS --elmo PATH_TO_ELMO --outfile TYPE_EMBEDDING_FILE --vocab WORD_SET_FILE
Он запустит модель ELMo для предоставленного корпуса и сгенерирует встраивания статических усредненных типов для каждого слова в наборе слов. Они будут использоваться в качестве лексических заменителей.
Подготовьте частотный словарь для использования с контекстуализированными визуализациями в виде обычного текстового файла, разделенного табуляцией, где первый столбец содержит слова, а второй столбец содержит их частоты в выбранном вами справочном словаре. Первая строка этого файла должна содержать одно целое число, соответствующее размеру корпуса в токенах слов.
В разделе [Token]
файла конфигурации webvectors.cfg
переключите use_contextualized
на True и укажите пути к вашему token_model
(предварительно обученному ELMo), type_model
(проекции на основе типа, которую вы создали с помощью нашего скрипта) и freq_file
, который является вашим частотный словарь.
В поле ref_static_model
укажите любую из ваших статических моделей внедрения слов (только ее имя), которые вы хотите использовать в качестве цели гиперссылок из слов на страницах контекстуальной визуализации.
Страница с лексическими заменителями ELMo будет доступна по адресу http://YOUR_ROOT_URL/contextual/.
В случае возникновения каких-либо проблем, пожалуйста, свяжитесь с нами:
http://www.aclweb.org/anthology/E17-3025
http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
http://flask.pocoo.org/
http://radimrehurek.com/gensim/
http://gunicorn.org/