Главная » Статьи » Замок или замок?

Замок или замок?

В этом году в восьмой раз в рамках конференции «Диалог» прошло Dialogue Evaluation — соревнование по разработке компьютерных систем для решения практических лингвистических задач. Темой этого года стала лексическая многозначность — одна из самых сложных и фундаментальных проблем автоматической обработки естественного языка. Мы попросили организаторов и участников соревнований рассказать о применении этой задачи и реальных методах ее решения.

Задачи лингвистики как науки, как известно, не сводятся к описанию языков и часто носят более прикладной характер: например, оптимизация работы поисковых сервисов, улучшение качества машинного перевода или собирание и структурирование языкового корпуса. Такими задачами обычно занимаются специалисты в области компьютерной лингвистики.

При этом всякий раз, когда лингвистам приходится решать задачу, связанную с естественным языком, возникает необходимость в создании более или менее сложных методов его обработки. Несмотря на то, что целый ряд уже существующих методов работает достаточно эффективно — спеллчекеры, частеречная разметка (POS-tagging) и даже морфологический анализ текста, — в других областях успехи зачастую пока не так велики. Кроме того, в материалах большинства международных конференций, таких как ACL, результаты научных исследований обычно публикуются на данных английского языка, без учета особенностей русского.

Поиском решений подобных задач с 2010 года занимаются, в том числе, и участники Dialogue Evaluation — серии сравнительных тестирований систем компьютерного анализа текстов на русском языке, которые проходят в рамках конференции «Диалог», организованной компанией ABBYY. Конечной целью этих соревнований является разработка единых принципов «оценки» (evaluation) эффективности таких систем, то есть адекватности полученных с их помощью результатов.

Нынешние соревнования стали уже 14-ми по счету, причем каждый раз сравнительное тестирование проходит по разным темам, от состязания морфологических анализаторов до проверки качества систем машинного перевода. Например, в 2014 году участники Dialogue Evaluation разрабатывали и оценивали методы разрешения анафоры, то есть учились определять, на какую сущность указывают местоимения.

В этом году организаторы Dialogue Evaluation объединили усилия с постоянно действующими семинарами RUSSE, в рамках последнего из которых, RUSSE’2018, тестировались системы по автоматическому определению значений слов (word sense induction, WSI). Участникам соревнований предстояло решить задачу лексической многозначности — одну из самых сложных задач обработки естественного языка.

«Представьте, что у вас есть набор данных: огромное количество контекстов использования слов в разных значениях, — объясняет Алексей Леонтьев, лингвист-разработчик ABBYY. — Простейший пример — слово «лук». Участникам дается набор предложений: «Вася стреляет из лука», «Вася посадил лук», «Вася запилил лук на телефон». Изначально система не знает ничего про значения представленных слов». Участникам предстояло разделить все возможные контексты для каждого слова на группы таким образом, чтобы лук на грядке и обжаренный до золотистой корочки лук на сковороде не оказались в одной группе с луком и стрелами. Особенная сложность заключалась в том, что изначально количество таких контекстов (или «кластеров») не было известно.

В рамках RUSSE’2018 участникам предоставлялись три набора данных: wiki-wiki (автоматически извлеченные слова из статей Википедии, в основном омонимы и омоформы), bts-rnc (примеры из «Национального корпуса русского языка», размеченные с помощью значений из «Большого толкового словаря») и active-dict (примеры из «Активного словаря русского языка» Юрия Апресяна). Эти текстовые корпуса, или «дорожки», содержали по два раздела каждый — тренировочный и тестовый.

Тренировочные разделы содержали в общей сложности около 17 тысяч контекстов, заранее размеченных лингвистами. Размеченный тестовый корпус выглядит как набор предложений и цифр: контексту «Вася стреляет из лука» присваивается цифра 1, «Вася посадил лук» — цифра 2 и так далее. Предполагалось также, что обучающий корпус будет использоваться только для дополнительной проверки некоторых параметров (например, насколько мелким должно быть разделение контекстов на значения), а обучение пройдет также с использованием других ресурсов.

Дорожки различались по уровню сложности. Самая простая — корпус wiki-wiki, в котором надо было разделить не разные значения одного слова, а, скорее, омонимы: например, «коса» (прическа) и «коса» (сельскохозяйственный инструмент). «Разделить такие значения гораздо проще, чем у по-настоящему многозначных слов из двух других дорожек, таких как «дерево» — растение или материал», — отмечает Леонтьев. Набор, основанный на корпусе wiki-wiki, включал девять существительных с 20 омонимичными значениями.

В случае со второй и третьей дорожками разрешить многозначность необходимо было и на множестве многозначных слов. Так, в тренировочном наборе, созданном на основе НКРЯ, использовалось уже 30 слов: девять многозначных с метафорическими значениями и 21 омонимичное слово. В тестовой выборке было 51 слово: 11 многозначных и 40 омонимичных. В третьем тренировочном наборе, созданном на основе текстов «Активного словаря русского языка», содержалось 85 неоднозначных слов (84 многозначных и один омоним) и 2073 контекста, взятых из первого и второго тома словаря. В тестовой выборке было 168 неоднозначных слов (167 многозначных и один омоним) и 3729 контекстов, взятых из третьего тома словаря.

Для оценки работы использовался скорректированный коэффициент Рэнда: разметка на значения, предложенная участниками, сравнивалась с «золотым стандартом» — разметкой, сделанной лингвистами вручную. При проверке тестовая часть каждой дорожки делилась еще на две части: публичную (оценки по этой части участники видели сразу) и приватную (оценки по ней показывались лишь по итогам соревнований). На основании результатов публичной проверки участники могли улучшить свою модель и загрузить ее еще раз.

«Участники использовали два основных подхода, — описывает решения задачи Александр Панченко, старший научный сотрудник Гамбургского университета. — Первый — это выведение значений сразу из векторов слов, или построение векторов значений из всего корпуса. В этом подходе контексты отдельного слова не используются, и можно получить значения сразу для всех слов языка. Другой подход предполагает кластеризацию контекстов: сначала строится некоторое представление контекста, обычно при помощи векторов слов, а затем эти вектора контекстов делятся на группы с помощью стандартных способов кластеризации».

По словам Панченко, именно эти два способа оказались самыми эффективными и заняли призовые места. У обоих подходов, однако, есть свой большой недостаток: они не позволяют заранее угадать, сколько значений может быть у того или иного слова. «Некоторые участники обходили эту проблему, используя фиксированное число значений, но это не подходит для слов с большим числом значений», — отметил Панченко.

Организаторы также отметили, что самые эффективные (и, соответственно, занявшие призовые места) методы были достаточно простыми. «В победившей системе даже не использовались алгоритмы кластеризации. Она просто выводила значения напрямую из векторов слов, — сообщает Панченко. — Например, для многозначного слова «проказа» ближайшее слово в векторном пространстве — это слово «шалость», что и будет в таком случае первым значением. Дальше посмотрим, какое слово есть в соседях слова «проказа», не похожее на «шалость» — это слово «язва», что дает второе значение. Такой подход позволяет обойти проблему того, что бóльшая часть ближайших соседей каждого слова имеет одно и то же значение.

Участники, занявшие вторые и третьи места, использовали различные методы кластеризации контекстов. К примеру, команда под руководством Андрея Кутузова из Университета Осло использовала представление контекстов многозначных слов в виде усредненных векторов, которые затем кластеризовались на соответствующие разным значениям группы.

Такой подход, по словам Кутузова, был намеренно простым: «Мне казалось, что все «кирпичики» для решения проблемы решения лексической многозначности для русского языка (дистрибутивные векторные модели для семантики, алгоритмы кластеризации) уже есть и надо просто собрать их в правильном порядке. Так оно и оказалось: получилось как минимум не хуже, а часто лучше гораздо более сложных решений на многослойных нейронных сетях и прочем. Кроме того, мое решение отличается тем, что не делает никаких предположений о количестве смыслов у слова: это количество определяется полностью автоматически». Команда под руководством Андрея Кутузова заняла второе место на дорожке wiki-wiki и пятое — на active-dict и bts-rnc.

Разработанные подходы, по словам Алексея Леонтьева, можно применить для любой задачи, где требуется анализ семантики, например для задач поиска. Другое возможное применение — автоматическое извлечение фактов. «Скажем, мы делаем систему автоматической обработки прайс-листов, которая должна верно определять категорию товара. В нее попадает прайс-лист, где написано «лук репчатый посевной». Хотелось бы, чтобы система поняла, что здесь речь идет об овоще, а не о спорттоварах. Можно, конечно, вручную заложить в нее знания о луке, но это дорого и непродуктивно. И здесь системы WSI могут очень пригодиться», — говорит Леонтьев.

Соревнования по оценке методов автоматического определения значения и решения многозначности уже проводились для английского, французского и немецкого языков, а вот для языка славянской группы прошли впервые. Для английского языка, к примеру, объем лексических ресурсов (корпусов, словарей, а также опробованных методов автоматической обработки) достаточно велик, чего нельзя сказать про некоторые славянские языки, например белорусский или словацкий.

«Хотелось бы опробовать методику, которая позволяет исследовать эти языки даже при отсутствии размеченных корпусов и подробных словарей. И наше соревнование — это первый шаг к созданию такой методики», — говорит Леонтьев.

Подробнее ознакомиться с заданием соревнования RUSSE’18 можно, прочитав отчет организаторов о соревновании, а также на сайте конференции «Диалог». Ознакомиться с материалами конференции (в том числе отчетами организаторов и участников соревнований) вы можете здесь.

N + 1 выражает благодарность за помощь в подготовке материала организаторам RUSSE’2018: Дмитрию Усталову, старшему научному сотруднику Университета Мангейма, и Константину Лопухину, инженеру-программисту Scrapinghub, Inc.

Елизавета Ивтушок