Векторная русская морфология и семантика

Nov 02, 2014 19:00

Исходное сырье: ~45 Гб русских текстов, включая русскую википедию и большой архив прессы, в utf-8. В доступных на рутрекере торрентах, кстати, этот архив прессы содержит примерно 5% украинских новостей на мове. Я их удалил для чистоты эксперимента, хотя не уверен, что это настолько уж необходимо.

Из этого массива отобраны предложения, не содержащие латиницу, длиной от 5 до 55 токенов. Получилось примерно 22 Гб в utf-8.
Слова в этих предложениях приведены к нижнему регистру. Знаки пунктуации убраны.

Далее построено векторное представление слов с помощью word2vec. Примерно 3 часа в одном потоке на машине с 3.6 ГГц, с пиковым потреблением 5 Гб оперативки. При длине векторов=300 получился текстовый файл размером в 5 Гб.

Векторная русская морфология

Далее, на созданном векторном наборе выполняем операцию вида V4=(V2-V1) + V3.
К примеру, V4=(кошкой-кошка) + собака.
Ищем ближайшие к получившемуся V4 слова.
Скрин с результатами (ответ "собакой" на втором месте при сортировке по увеличению расстояния):



Аналогично для родительного/винительного падежа:



Опять правильный ответ на втором месте, при общем объему словаря в ~2 миллиона форм!
Кстати, обратите внимание, что весь top-10 содержит слова в сопоставимой грамматической форме - род/вин падеж единственного числа.

Векторная русская семантика

Ну хорошо, мы видим, что абстрактные морфологические преобразования (склонение по падежам) выполняются на векторном поле очень неплохо.
А как насчет более семантичных отношений?

Пример: V4 = тигр + (волчица-волк)

Получаем:



Наша "тигрица" сидит в топ-10, на четвертом месте! Кстати, весь топ заполнен женскими вариантами названий животных в именительном падеже.

unsupervised feature learning, русский язык, word2vec, морфология, word embedding

Previous post Next post
Up