О проекте

Этот сервис вычисляет семантические отношения между словами русского языка. Он назван по аналогии с RusCorpora, веб-сайтом Национального Корпуса Русского Языка (НКРЯ). На RusCorpora можно работать с корпусами (лат. corpora), а на нашем ресурсе - с лексическими векторами (лат. vectōrēs). Эти вектора отражают значение слова, выявленное на основе совместной встречаемости слов в корпусах (больших коллекциях текстовых данных).

В дистрибутивной семантике слова обычно представляются в виде векторов в многомерном пространстве их контекстов. Семантическое сходство вычисляется как косинусная близость между векторами двух слов и может принимать значения в промежутке [-1...1] (на практике часто используются только значения выше 0). Значение 0 приблизительно означает, что у этих слов нет похожих контекстов и их значения не связаны друг с другом. Значение 1, напротив, свидетельствует о полной идентичности их контекстов и, следовательно, о близком значении.

В последнее время интерес к дистрибутивной семантике существенно возрос. В основном это обусловлено перспективностью подхода, использующего языковые модели на основе нейронных сетей, обученные на больших корпусах. При обучении с помощью так называемых предсказательных моделей мы получаем сжатые вектора для слов, которые можно использовать для самых разных компьютерно-лингвистических задач. Вероятно, самый известный на сегодня инструмент в этой области - word2vec, который позволяет быстрее, чем с помощью других методов, получать вектора на огромных объёмах языкового материала.

Word2vec и используемые им алгоритмы CBOW и Skipgram (а также подобные подходы) подробно изучаются и тестируются в применении к английскому языку, в то время как для русского языка такая работа едва начата. Таким образом, важно предоставить русскоязычному лингвистическому сообществу доступ к соответствующим инструментам и моделям.

К сожалению, обучение и использование нейронных векторных моделей на основе больших корпусов может требовать больших вычислительных мощностей. Поэтому наш сервис предоставляет пользователям уже натренированные модели, а также удобный интерфейс запросов к ним. Все используемые модели возможно скачать, чтобы продолжить эксперименты на своём компьютере. Также имеется возможность визуализировать семантические отношения между словами, что, как мы надеемся, будет полезным для исследователей. В целом, задача нашего сервиса - снизить порог входа для тех, кто хочет работать в этом новом и интересном направлении.

Каковы возможности RusVectōrēs?

RusVectōrēs - это инструмент, который позволяет исследовать отношения между словами в дистрибутивных моделях. Можно образно назвать наш сервис "семантическим калькулятором". Пользователь может выбрать одну или несколько моделей для работы - в настоящий момент доступны 4 модели, обученные на разных корпусах (некоторые из них заняли ведущие места в соревновании RUSSE). Каждая модель содержит от 150 до 600 тысяч лемм.

Выбрав модель, вы можете:

  1. вычислять семантическое сходство между парами слов;
  2. находить слова, ближайшие к данному (с возможностью фильтрации по части речи);
  3. решать пропорцию вида "найти слово X, которое так относится к слову Y, как слово A относитс к слову B";
  4. выполнять над векторами слов алгебраические операции (сложение, вычитание, поиск центра лексического кластера и расстояний до этого центра).
  5. рисовать семантические карты отношений между словами (это позволяет выявлять семантические кластеры);
  6. получать вектор (в виде массива чисел) и его визуализацию для данного слова в выбранной модели: для этого нужно всего лишь кликнуть по любому слову или использовать уникальный адрес этого слова, как будет описано ниже;

В духе парадигмы Semantic Web, каждое слово каждой модели обладает своим уникальным идентификатором URI, явно указывающим лемму, модель и часть речи (например, http://ling.go.mail.ru/dsm/news/кризисный_A). По запросу на этот адрес генерируется список десяти слов, ближайших к данной лемме в данной модели и принадлежащих к той же части речи, что и сама лемма, а также генерируется другая информация о слове, например, его вектор в виде массива чисел.

Также у сервиса есть API, с помощью которого можно для любого слова получить список слов, семантически близких к данному в выбранной модели. Данные можно получить в двух форматах: json и csv. Для этого необходимо выполнить GET-запрос по адресу следующего вида: http://ling.go.mail.ru/dsm/MODEL/WORD/api/FORMAT, где MODEL - идентификатор для выбранной модели, WORD - слово запроса, FORMAT - "csv" или "json" по вашему выбору. По запросу отдаётся файл в формате json или текстовый файл в формате tab-separated values, в котором перечислены ближайшие десять соседей слова.

Кроме того, можно получать значения семантической близости для пар слов в любой из моделей. Формат запроса: http://ling.go.mail.ru/dsm/MODEL/WORD1__WORD2/api/similarity/ (обратите внимание на 2 знака подчеркивания между словами).

Алгебраические операции над векторами дают интересные результаты и предоставляют простор для экспериментов. Например, модель, обученная на русскоязычной Википедии и НКРЯ, возвращает слово быт в результате вычитания слова смысл из слова жизнь. Это может показаться чем-то не слишком практичным, но исследования, уже проведенные для английского языка, доказали применимость таких отношений во многих областях, включая машинный перевод.

Естественно, можно сравнивать результаты разных моделей.

Нам бы хотелось, чтобы RusVectōrēs стал одним из узлов академической информации о нейронных языковых моделях для русского языка, поэтому на сайте имеется раздел "Публикации", содержащий опубликованные научные работы и ссылки на другие полезные ресурсы. В то же время, мы надеемся, что RusVectōrēs популяризует дистрибутивную семантику и компьютерную лингвистику и сделает их более доступными и привлекательными для русскоязычной публики.

Публикации

Если вам интересны дистрибутивные семантические модели, просмотрите следующие публикации:

Статьи о дистрибутивной семантике

  1. Bybee, J. Frequency of use and the organization of language. (2006)
  2. Miller, George A., and Walter G. Charles. Contextual correlates of semantic similarity. // in Language and cognitive processes 6.1 (1991): 1-28.
  3. Baroni, Marco, and Sabrina Bisi. Using Cooccurrence Statistics and the Web to Discover Synonyms in a Technical Language. // in LREC Proceedings. (2004)
  4. Turney, P. D., P. Pantel (2010). “From frequency to meaning: Vector space models of semantics”. Journal of artificial intelligence research, 37(1), 141-188.
  5. Řehůřek, Radim, and Petr Sojka. Software framework for topic modelling with large corpora. // in Proceedings of the LREC 2010 Workshop on New Challenges for NLP Frameworks (2010).
  6. Panchenko A., et al.. "Serelex: Search and Visualization of Semantically Related Words”. In Proceedings of the 35th European Conference on Information Retrieval (ECIR 2013). Springer's Lecture Notes on Computer Science, 2013, Moscow (Russia).
  7. Mikolov, T., et al. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781 (2013).
  8. Mikolov, Tomas, et al. “Exploiting similarities among languages for machine translation.” arXiv preprint arXiv:1309.4168 (2013).
  9. Baroni, Marco, et al. "Don’t count, predict! A systematic comparison of context-counting vs. context-predicting semantic vectors.” Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics. Vol. 1. (2014)
  10. Pennington, J., et al. "Glove: Global Vectors for Word Representation." EMNLP. Vol. 14. 2014.
  11. Kutuzov, Andrey and Kuzmenko, Elizaveta. “Comparing Neural Lexical Models of a Classic National Corpus and a Web Corpus: The Case for Russian”. A. Gelbukh (Ed.): CICLing 2015, Part I, Springer LNCS 9041, pp. 47–58, 2015. DOI: 10.1007/978-3-319-18111-0_4
  12. Bartunov Sergey et al. “Breaking Sticks and Ambiguities with Adaptive Skip-gram”. Eprint arXiv:1502.07257, 02/2015
  13. O. Levy, Y. Goldberg, and I. Dagan “Improving Distributional Similarity with Lessons Learned from Word Embeddings”. TACL 2015
  14. Xin Rong “word2vec Parameter Learning Explained”. arXiv preprint arXiv:1411.2738 (2015)
  15. Kutuzov, Andrey and Andreev, Igor. “Texts in, meaning out: neural language models in semantic similarity task for Russian.” Proceedings of the Dialog 2015 Conference, Moscow, Russia (2015)
  16. Panchenko A., et al. "RUSSE: The First Workshop on Russian Semantic Similarity". Proceedings of the Dialogue 2015 conference, Moscow, Russia (2015)
  17. Arefyev N.V., et al. "Evaluating three corpus-based semantic similarity systems for Russian". Proceedings of the Dialogue 2015 conference, Moscow, Russia (2015)
  18. Lopukhin K.A., et al. "The impact of different vector space models and supplementary techniques in Russian semantic similarity task". Proceedings of the Dialogue 2015 conference, Moscow, Russia (2015)
  19. "Нейронные языковые модели и задача определения семантической близости слов", видеозапись лекции Андрея Кутузова на Moscow Data Science meetup 4 сентября 2015 (in Russian)
  20. Hamilton, W. L., et al. Diachronic Word Embeddings Reveal Statistical Laws of Semantic Change. arXiv preprint arXiv:1605.09096 (2016).
  21. Hamilton, W. L., et al. Cultural Shift or Linguistic Drift? Comparing Two Computational Measures of Semantic Change. arXiv preprint arXiv:1606.02821 (2016).

Статьи, ссылающиеся на наш проект

  1. Кириллов, А. Н., Крижановский. А. А. Модель геометрической структуры синсета. Серия "Математическое моделирование и информационные технологии", Вып. 08, стр. 45-54, 2016 (in Russian)

Модели

В настоящий момент доступны следующие модели:

* Национальный Корпус Русского языка (скачать модель, 302 Мб) ruscorpora

Обучена на полном НКРЯ. Размер корпуса - 107 561 399 токенов. Модель знает 281 776 лемм; леммы, встретившиеся в корпусе менее трёх раз, при обучении игнорировались.

Использован алгоритм Continuous Bag-of-Words.

Размерность векторов 300, размер окна 2.

* НКРЯ и русскоязычная Wikipedia (скачать модель, 1.1 Гб) ruwikiruscorpora

Модель обучена на двух корпусах, слитых вместе. Размер корпуса - 280 187 401 токенов. Модель знает 604 043 леммы; леммы, встретившиеся в корпусе менее пяти раз, при обучении игнорировались.

Использован алгоритм Continuous Bag-of-Words.

Размерность векторов 500, размер окна 2.

NB: при скачивании этой модели используйте ПО, поддерживающее докачку!

* Веб-корпус (скачать модель, 630 Мб) web

Модель обучена на случайном сэмпле из 9 миллионов русскоязычных веб-страниц, обкачанных в декабре 2014 года. Размер корпуса - 660 628 738 токенов. Модель знает 353 608 лемм; леммы, встретившиеся в корпусе менее 30 раз, при обучении игнорировались.

Использован алгоритм Continuous Skip-Gram.

Размерность векторов 500, размер окна 2.

* Новостной корпус (скачать модель, 524 Мб) news

Модель обучена на потоке новостей с 1500 преимущественно русскоязычных новостных сайтов (всего около 15 миллионов документов, с сентября 2013 до октября 2015). Размер корпуса - 2 439 237 751 токенов. Модель знает 147 358 лемм; леммы, встретившиеся в корпусе менее 200 раз, при обучении игнорировались.

Использован алгоритм Continuous Skip-Gram. Самый объёмный корпус, но и с наивысшим порогом частоты!

Размерность векторов 1000, размер окна 20.

Перед обучением все корпуса были токенизированы, разбиты на предложения, лемматизированы и размечены по частям речи при помощи Mystem. Стоп-слова (союзы, местоимения, предлоги, частицы и т.п.) были удалены. Модели, работающие с большими корпусами, намеренно обучались лишь на самых частотных словах, так как иначе модели были бы слишком тяжёлыми для веб-сервиса.

Ссылки

Этот сервис работает на WebVectors, свободном и открытом фреймворке для работы с векторными семантическими моделями через Веб

Статья о WebVectors

Возможно, вас также заинтересует SemanticVectors - аналогичный сервис для английского и норвежского языков.