Разработка метода кластеризации слов по смысловым характеристикам с использованием алгоритмов Word2Vec
Левченко С.В., НИУ Высшая школа экономики, Департамент компьютерной инженерии МИЭМ им. А.Н. Тихонова [email protected]
Аннотация
В работе описывается проблема компьютерного анализа каламбурных оборотов речи, шуток, основанных на смещении понятий, омонимичности слов. Предлагается метод, построенный на анализе семантически схожих слов с помощью инструмента Word2Vec от Google. Классификация таких текстов позволит еще больше приблизиться к созданию искусственного интеллекта, способного шутить и различать шутки на уровне человека.
1 Введение
Человек анализирует смысл текста в подсознании, по контексту определяет значение слова, его синонимы, понимает различные обороты в речи или на письме. При компьютерной обработке и анализе текста на естественном языке происходит его формальное представление, и присутствие неоднозначных по значению конструкций затрудняет машинный анализ.
Целью разработки метода кластеризации слов является устранение морфологической неоднозначности и проведение
компьютерного анализа текста по смысловым характеристикам с учетом всевозможных выражений, построенных на игре слов, понимание которых ранее было доступно лишь человеческому сознанию.
На вход программе поступают краткие юмористические тексты. Задачей программы является детектирование-классификация текстов, значение которых основывается на сдвиге понятий или игре слов с помощью возможностей инструмента Word2Vec от Google.
2 Сдвиг понятий или игра слов
Анекдот в современном
словоупотреблении — это "небольшой забавный, смешной рассказ" [1] самого различного содержания с неожиданной и
остроумной концовкой. Интересны случаи обыгрывания многозначных слов,
контекстная синонимизация, игра
паронимами, использование фразеологизмов. Из выделенных в лингвистической литературе типов омонимов, используемых в качестве приемов комизма, в анекдотах чаще встречаются: полные и неполные лексические омонимы, омофоны, омоформы и синтаксические омонимы, построенные на позиционной неопределенности. [2] Одной из основных функций омонимов в речи является языковая игра, а комический эффект достигается резким сдвигом, переключением рассказа из одного семантического поля в другое. Пример 1[3]:
"Штирлиц смотрит — из форточки дуло. Он закрыл форточку, и дуло исчезло." Омоформа — слово "дуло". Сначала это глагол (ср.р. от "дуть"), а затем происходит семантический сдвиг — под словом "дуло" подразумевается существительное (ср.р. им. п.).
Аналогичные краткие юмористические тексты, каламбур которых построен на сдвиге понятий или игре слов, и были объектом анализа.
3 Методы кластеризации текстов
Сейчас для задач обработки текстов используется подход глубокого обучения (Deep Learning), основанный на применении многослойных нейронных сетей [4]. Это набор алгоритмов машинного обучения, построенных на изучении множества уровней представлений.
Более простая для работы нейросеть прямого распространения [5], где всеми входными сигналами нейронов второго и последующих слоев служат выходные сигналы нейронов предыдущего слоя. По сути, это функция Y = Y(X), отображающая пространство входов на пространство выходов, задающаяся значениями весовых коэффициентов W. Поэтому для создания реализующей нужное отображение
искусственной нейронной сети производится поднастройка весов на конечном множестве примеров этого отображения (X, Y). Пройдя обучение, при предъявлении сети некоторого вектора x* из входного пространства на выходе сети должен получаться близкий к требуемому выход [6]. Для работы Word2Vec используются как раз алгоритмы обработки нейросети прямого распространения. [7]
a. Word2Vec
Word2Vec — это набор алгоритмов для расчета векторных представлений слов [8]. Он принимает текстовый корпус в качестве входных данных и, после получения словаря из обработанных текстовых материалов, образует векторы слов на выходе. Принцип работы состоит в нахождении связей между контекстами слов, ведь слова, находящиеся в похожих контекстах, часто могут быть семантически близкими. То есть нужно максимизировать косинусную близость между векторами слов, появляющихся в близких контекстах, и минимизировать косинусную близость слов, не появляющихся в контексте друг друга [9].
При обучении нейронной сети одним из подходов является "Skip-gram", где каждое слово заменяется номером его семантической группы, что позволяет получить "мешок" слов с глубоким смыслом, избегая потери учета семантики слова — предсказывается контекст при данном слове. Эти взвешенные векторы фиксированной длины для каждого слова объединяются, используя алгоритм кластеризации (k-средних). [10]
b. Алгоритм модуля
Основная идея предлагаемого метода заключается в том, что, по сути, для детектирования компьютером шутки нужно разрешить омонимию, ведь она построены на сдвиге понятий. Для каламбура см. Пример 1 будет достаточен анализ слова "дуло" в контекстах "из окна дуло" и "дуло исчезло". Для каждого интересующего нас омонима можно получить вектор семантически близких к нему слов как без учета контекста, так и анализируя вокруг стоящие слова.
Для применения алгоритмов Word2Vec к русским фразам были использованы текстовые модели RusVectores — сервиса, который вычисляет семантические отношения между словами русского языка, работая с лексическими векторами. При вводе
текст обязательно должен быть отформатирован — все слова начинаются со строчных букв (даже имена, названия стран и др.), все формы слов приводятся к начальной (глаголы — к инфинитиву, существительные — в им.падеж и т.д.), введенные слова должны иметь вид "слово_его часть речи".[11]
В поданном на вход корпусе рассчитывается частота встречаемости каждого слова, по ней снова сортируется весь массив слов и удаляются самые редко встречающиеся, "стоп слова", не несущие смысловой нагрузки, пунктуация, html-ссылки, нетекстовые символы. Можно продолжить модификацию, например, заменяя каждое слово на его начальную форму и пр. Строится дерево Хаффмана [12] по жадному алгоритму кодирования данных. Затем из корпуса читается субпредложение, проводиться "sub-sampling" — процесс вычленения наиболее частовстречаемых слов. Далее субпредложение делится на N-граммы, состоящие из заданного количества слов.[13]
Чтобы соединить модель и алгоритмы Word2Vec для обработки нужного нам текста, было решено использовать модуль снятия омонимии с текстов на естественном языке [14]. За счет многоуровнего анализа он определяет с большой вероятностью (при высокой частоте встречаемости
обрабатываемых слов) для каждого слова соответствующий ему "инфинитив" — его начальную форму, что и нужно для алгоритмов Word2Vec.
Данный модуль базируется на файлах размеченного Национального Корпуса Русского Языка [15], с помощью обработки которых программа осуществляет
вероятностный анализ входного текстового документа. Используя триграммный анализ, производится морфологический разбор поступившего предложения — каждому слову присваивается свой кортеж лексических параметров. В случае нахождения неоднозначного лексического значения (омонима), значения с наименее вероятным набором тэгов устраняются.
Получив наборы кортежей, извлекаются начальные формы слов, у омонимов будет несколько кортежей — несколько инфинитивов. Word2Vec создает для каждого слова в начальной форме вектор семантически схожих, синонимов или часто встречаемых по контексту слов.
Проанализировав такие вектора в контексте ^грамм можно разрешить омонимию и получить нужные значения для искомого слова, а значит, "понять" шутку.
примененный метод способен в большинстве случаев детектировать контекстный каламбур, а именно это и предполагалось при поставновке задачи.
4 Результаты
Опираясь на проделанное ранее исследование о контекстных взаимосвязях в текстах на естественном языке и используя созданный комплекс программных модулей для снятия омонимии, было сделано предположение о возможности
модифицировать эти методы для более успешного разрешения неоднозначностей, таких как омонимы, омофоны, паронимы, омоформы и др., в предложениях на русском языке.
Предметом рассмотрения были выбраны наиболее "субъективные" для компьютерного анализа объекты — шутки, построенные на сдвиге понятий. Для этого были изучены материалы по проблеме анализа юмора и других "человеческих" проявлений в различных компьютерных реализациях.
Использование методов проекта Word2Vec от Google позволило за счет подсчета частоты встречаемости слов (косинусного расстояния) получить реальную числовую оценку интересующих нас аналогий.
Для тестирования работы алгоритма было взято 100 текстов (включающих 1-2 предложения), содержащих омонимичные конструкции нужного типа (шутки или просто неоднозначные фразы) и 100 текстов со словами, имеющими неединственный инфинитив, однако в данном контексте употребляющиеся в одном значении. Было выявлено, что в 83% случаев детектирование сдвига понятий происходит, а в 87% — детектируется отсутствие многозначности. Также были включены случаи, где слова не просто повторялись в разных контекстах, а заменялись на местоимения. В этом случае программа "понимала" каламбур, если интересующее нас слово и местоимение попадали в соседние триграммы — это позволяло алгоритму оценить все возможные контексты.
Полученные результаты демонстрируют возможности модуля и выявляют проблемные области, требующие доработки и добавления методов анализа смысла текстов в дальнейшем. Однако видно, что
Список литературы
[1] Ожегов С. И. Словарь русского языка: Ок. 57000 слов / Под ред. чл.-корр. АН СССР Шведовой Н.Ю., 20-е изд., стереотип. М: Рус. яз., 1989. C.750.
[2] Лаптева О.А. Речевые возможности текстовой омонимии. М.: Едиториал УРСС, 2003.
[3] Посвежинный Е. Анекдоты, тосты и застольные песни: Ок. 4000 анекдотов и тостов / 2-й вып. Воронеж: Черноземье, 1997. C.848.
[4] Deep Learning URL: http://deeplearning.net/ (дата обращения: 16.05.2016)
[5] Learning Stochastic Feedforward Neural Networks URL: http://www.cs.toronto.edu/~tang/papers/sfnn.pdf (дата обращения: 16.05.2016)
[6] Хайкин С. Нейронные сети. Полный курс 2-е изд. Пер. с англ. — М.: Издательский дом "Вильямс", 2006/ C.55
[7] Introduction to Deep Neural Networks URL: http://deeplearning4j.org/neuralnet-overview (дата обращения: 16.05.2016)
[8] Word2Vec Project URL: https://code.google.com/archive/p/word2vec/ (дата обращения: 16.05.2016)
[9] Word2Vec. How does it work URL: https://code.google.com/archive/p/word2vec/ (дата обращения: 16.05.2016)
[10] Distributed Representations of Words and Phrases and their Compositionality URL: http://arxiv.org/pdf/1310.4546.pdf (дата обращения: 16.05.2016)
[11] RusVectories. URL: http://ling.go.mail.ru/dsm/ru/ (дата обращения: 16.05.2016)
[12] Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн.
Алгоритмы: построение и анализ — 2-е изд. — М.: «Вильямс», 2007. — с. 459
[13] Большакова Е.И., Клышинский Э.С., Ландэ Д.В., Носков А.А., Пескова О.В., Ягунова Е.В.
Автоматическая обработка текстов на
естественном языке и компьютерная лингвистика. Учебн. пособие. М.: МИЭМ, 2011.
[14] Левченко С.В. Разработка модуля снятия омонимии с тентов на естественном языке
[15] Национальный корпус русског URL: http://www.ruscorpora.ru (дата обращения: 16.05.2016)