Еще одной крупной проблемной областью стали слова, включающие в себя дефисы. Такие слова практически полностью не лемматизировались корректно: иногда они считались одним словом, хотя по смыслу представляли собой скорее словосочетания (например, "город-мегаполис", "Москва-Пекин"). Иногда они, наоборот, разделялись, из-за чего дефектная лемма начиналась, собственно, с дефиса (в частности, сокращение "С.-Петербург" трактовалось как две отдельные леммы - "с." и "-петербург". В дополнение к этому даже те слова с дефисом, которые не были разделены (и не должны были быть разделены по смыслу), чаще всего не приводились к правильной словарной форме ("воздушно-десантные" вместо "воздушно-десантный").
Среди более мелких проблем можно выделить как и вполне очевидную неверную лемматизацию каких-то редких, специфичных слов (хотя странным оказалось то, что система спотыкалась даже на таких, казалось бы, простых словах, как "автодорога", "колледж", "престижный"), а также оказавшиеся неожиданными случаи ошибок с лемматизацией в случае слов, написанных заглавными буквами ("ВЛЕЗАЙТЕ", "ДРАКИ", "КИТАЙЦАМИ" вместо ожидаемых "влезать", "драка", "китаец").
Более глубоко ошибки лемматизации будут исследованы в следующей главе, где будут использоваться непосредственно статистические данные и на их основе делаться определенные выводы; пока что мы просто отметим, что эти ошибки просто-напросто существуют и приносят определенный вред для корпуса.
2.2 Постобработка и визуализация
Методы работы с корпусом.
Хотя предобработка корпусов и представляет определенную ценность для научно-исследовательского комплекса, работа в целом отнюдь не ограничивается ею. Даже самый точный и всеобъемлющий корпус не будет иметь никакой пользы, пока не существует методов, позволяющих извлекать из этого корпуса некие полезные для нас статистические данные. К нашему счастью, SketchEngine в этом плане предоставляет достаточно широкий инструментал. Конкретные формулы, которые используются в этом инструментале, будут разобраны чуть позже, сейчас же мы рассмотрим все имеющиеся в системе средства более поверхностно, по области применения.
Хотя SketchEngine дает возможность находить коллокации традиционным способом, основным методом исследования корпусов, который и дал сайту свое название, в нем является "скетч" - таблица "коллокаций в разрезе", показаывающая грамматические отношения между словами. Вместо просто близости двух слов друг к другу, как это происходит при простом поиске коллокаций, "скетч" учитывает также и грамматические отношения между ними, разводя коллокации согласно этим отношениям в отдельные части таблицы. Например, отдельно могут показываться коллокации между глаголом и его дополнением, глаголом и обстоятельством, дополнением и определением и т.д..
Таким образом итоговый результат становится более организованным и легким для восприятия; становится легче делать суждения не только о лексике, но и о синтаксисе языка. "Скетчи" особо полезны для лексикографии, однако находят применение также и в области обучения языку.
Помимо этого основного инструмента, в рамках SketchEngine существует и иные методы исследования корпусов, основанные на коллокациях и скетчах. В частности, при наличии пользовательского корпуса возможно автоматически извлекать ключевые слова и словосочетания ("термины"), свойственные именно этому корпусу. Для этого его коллокации сравниваются с таковыми у другого корпуса: этот корпус служит как стандарт, и отхождение от него в плане частоты, собственно, и является критерием для термина. Например, при сравнении корпуса о Китае, который использовался для проверки ошибок предобработки, с корпусом-мерилом RuTenTen 2011, SketchEngine выдал такие "термины", как "КНР", "Тянанмень", "Храм Неба" и "Запретный город" (однако наряду с ними присутствовали как и сомнительные "Пекин", так и вовсе ошибочные "поднебесный" и "торговых центр", являющиеся результатом неверной лемматизации).
Другим важным средством в инструментарии SketchEngine является построение автоматического тезауруса (здесь слово "тезаурус" обозначает словарь семантически близких слов), основанный на принципе на теории дистрибутивной семантики. Процесс построения тезауруса проходит в два этапа: сначала строится скетч на основе искомого слова, после чего из всех слов той же части речи, имеющихся в корпусе, выбираются те, которые имеют больше всего схожих коллокаций. Предполагается, что слова, появляющиеся в схожем контексте, имеют при этом и схожее значение.
Рис. 5. Тезаурус SketchEngine в действии. Score обозначает силу семантической связи, Freq - частотность.
В целом автоматические тезаурусы находят применение там же, где и тезаурусы обычные. За счет специфики процесса построения автоматических тезаурусов в них могут попадать некоторые ненужные слова (например, антонимы), зато они могут покрывать те области языка, которые часто отсутствуют в традиционных словарях синонимов: неологизмы, сложные слова, технические термины и т.д..
Меры и формулы.
Как уже было сказано, большая часть инструментария, который используется в SketchEngine, основан, так или иначе, на вычислении коллокаций между словами. Конкретно для них существует несколько способов измерения. Как уже было сказано, до 2006 года основной мерой вычисления коллокаций был метод MI-Score:
После этого этот метод сменился методом AssociationScore (AScore), а затем методом logDice, основанным на "коэфициценте Дайса" и особой гибридной мерой (по причинам, описанным выше).
Помимо этих мер, основанных на грамматических отношениях и использующихся в основном для скетчей, есть иные меры, не учитывающие их и использующиеся только в коллокациях.
· (T-Score)
· (MI3-Score)
· (log-likelihood)
· (minimum sensitivity)
· (MI.log-f)
· (Dice)
· (relative freq)
Решения проблем
Разумеется, при всей широте возможностей функционал SketchEngine не является идеальным. Его возможности рассчитаны на использование для самых разных корпусов, на самых разных языках и на самые разные темы, из-за чего система не в полной мере задействует возможности конкретных языков и меньше сосредотачивается на конкретных задачах. К счастью для нас, сайт SketchEngine имеет развитый API, позволяющий использовать его возможности для более специализированных задач вроде нашего комплекса.
Следует начать с того, что несмотря на то (вернее сказать, потому), что система SketchEngine в основном основана на статистических методах, так или иначе задействующих частотность, из нашего внимания часто пропадают иные способы работы с корпусами, более узкие и более заточенные под конкретные языки или области языка. В частности, очевидно, что нынешний метод извлечения терминов (почти полностью полагающийся на статистические данные и имеющий только одно правило), может работать эффективнее, если будет опираться помимо частотности также на данные из терминологических словарей. Полученные системой термины можно было бы пропускать через эти словари, удаляя (или снижая релевантность) тех слов и словосочетаний, которые в них отсутствуют. В журнале Research in Computing Science 70 2013 года говорится о эффективности использования терминологических словарей в области биомедицины. По сути, необходимое условие здесь только одно: в нашем языке должны иметься соответствующие словари в свободном доступе для соответствующих областей науки.
Кроме того, мы можем задаться еще одним вопросом: насколько эффективны статистические методы сами по себе? Формулы, используемые в инструментах SketchEngine, обычно задействуют только одну меру, хотя для коллокаций и возможно посмотреть сразу несколько мер параллельно. Вполне возможно измерять коллокации по "пучкам" мер, например, по хорошо соотносящимися друг с другом тройками.
Кроме улучшения функциональности уже имеющихся инструментов, в наших силах также еще и расширять возможности инструментария SketchEngine, создавая новые способы работы с коллокациями. В частности, нынешний тезаурус, используемый в SketchEngine, может описывать синонимический фон только одного слова, что является большим ограничением для его эффективности.
Глава 3. Рабочий процесс
3.1 Предобработка
Как и теоретическая часть работы, практическая часть разделена на три основные части: предобработка, постобработка и визуализация. В первую область входит рассмотрение различных связанных с предобработкой ошибок и предложение каких-то решений для них (собственно решения, к сожалению, слишком сложны и разноплановы для включения в эту работу). В частности, здесь мы рассмотрим самые распространенные ошибки при лемматизации на разных персональных корпусах. Помимо корпуса о Китае, о котором мы уже говорили, были также построены и исследованы два других персональных корпуса: о Германии и о медицине.
При исследовании выборки из 5000 лемм, взятых из корпуса слов, связанных с Китаем, 2,5% оказались дефектными. Из этих слов 20% - этнонимы и топонимы, 17% являются составными и содержат дефисы, с 9% лемматизатор дал сбой, так как слово было полностью либо частично записано заглавными буквами, еще 9% представляли собой слова из HTML-"начинки" страниц. 3% лемм не были обработаны по более простой причине - они были написаны с грамматической ошибкой или опечаткой. Остальные 42% лемм не были верно лемматизированы по каким-то иным причинам - либо это были редкие слова (часто термины), либо неологизмы, в литературном языке использующиеся редко и, вероятно, именно по этой причине не опознанные системой ("шопинг").
Схожую, но иную картину мы получаем, когда рассматриваем выборку с корпуса, основанного на медицинских терминах. Здесь немного больше сам процент необработанных лемм - 3% вместо 2% - при этом составных слов, слов из "начинки", топонимов и слов в этой выборке оказалось значительно меньше - 6,6%, 10%, 6% и 2% соответственно. Вместо этого среди неверно обработанных лемм оказалось очень много терминов: названия болезней, лекарств и т.д. Это весьма важно для нас, так как показывает нам то, что при создании терминологических корпусов "нужные" термины часто будут выпадать.
Корпус, посвященный Германии, дал нам результаты, схожие с корпусом о Китае, но с определенными нюансами. В этом корпусе изобиловали топонимы и этнонимы, которые составляли из себя примерно треть из всех неправильно лемматизированных слов. 11% неверных лемм представляли собой составные слова, около процента - слова из "начинки".
На основе полученных данных мы можем определить своего рода "группы риска" - те слова, с которыми лемматизация чаще всего делает ошибки. В первую очередь это оказались даже не составные слова, которые встречаются не во всех текстах, а малоупотребляемые термины типа "антрополог" или "полисахариды", а также топонимы, этнонимы и другие имена собственные. В рамках этой работы мы ограничимся лишь определением этих наиболее вероятных ошибок; о том, как в будущем можно будет бороться с этими ошибками, будет сказано в конце работы.
Постобработка
Извлечение терминов
Часть комплекса, связанная с постобработкой текста, имеет более разноплановый характер. В общем и целом ее можно разделить на три части: улучшение работы имеющихся инструментов, объединение необходимых для инструмента мер и расширение их возможностей. В рамках работы каждая из этих областей будет рассмотрена на примере одного из инструментов системы SketchEngine: извлечения терминов, построения тезаурусов и поиска коллокаций. В дальнейшем комплекс будет расширяться, и впервые рассмотренные здесь методы будут использоваться и для других инструментов системы.
В области извлечения терминов, как уже было сказано, для улучшения работы инструмента используются терминологические словари, которые покрывают те или иные области языка, и данные из которых могут служить для отделения верных терминов от неверных. Таким образом будет точнее определяться тема корпуса и составляющих его текстов. За лексикографическими источниками на данном этапе мы обратимся к разным источникам. Сайт "Грамота.ру", который содержит в себе ссылки на несколько крупных терминологических словарей. Среди этих словарей можно найти анатомический, биологический, военный словари, "православную библиотеку", словарь гендерных, маркетинговых, шрифтовых терминов. Еще больше информации можно почерпнуть из Викисловаря, в котором имеется 117 терминологических категорий, от спелеологии до рекламы. Достаточно сложная система, основанная на семантических связях, действует для сайта-словаря glossary.ru. Как мы видим, лексикографическими данными русский язык не обделен.
На первый взгляд может показаться, что решение здесь элементарно: мы просто берем ключевые слова и словосочетания, полученные SketchEngine непосредственно из полученных корпусных данных, после чего удаляем все, что не находится ни в одном из терминологических словарей. Однако здесь существует несколько нюансов, которые необходимо учесть. Во-первых, следует помнить, для чего существует инструмент извлечения терминов в первую очередь. По сути, корпусные термины определяют тему корпуса в целом: в идеале они должны принадлежать к одному или хотя бы к небольшому количеству словарей. Во-вторых, ключевые слова не обязательно должны быть терминами в прямом смысле этого слова. К политике могут иметь отношения имена политиков и названия стран; к юриспруденции - "феня" и иная преступная лексика. Поэтому вместо того, чтобы удалять все не входящие в словари ключевые слова, гораздо эффективнее было бы просто взвешивать их.