Дипломная работа: Научно-исследовательский комплекс предобработки текстов и постобработки результатов в системе sketchengine

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Корпусная лингвистика может использовать веб по-разному: с его помощью возможно искать и собирать нужные данные, или же использовать веб-тексты непосредственно вместо корпусов, например, для нужд перевода. Кроме того, сам язык сети Интернет, со всей его необычностью и богатством, представляет немалый интерес для исследователей в области корпусной лингвистики. Конец 2000-х годов и начало следующего десятилетия ознаменовались появлением большого количества "веб-корпусов" вроде семейства корпусов TenTen, семейства корпусов Aranea и Генерального Интернет-корпуса Русского Языка (ГИКРЯ).

1.2 Развитие программно-лингвистического инструментария

Итак, уже к 1990-м годах корпусная лингвистика окончательно оформляется как научное направление - всего через 40 лет после того, как появились первые современные корпуса - а к настоящему времени представляет собой одну из ведущих дисциплин языкознания вообще. Однако с успехами появились новые проблемы. С развитием корпусной лингвистики начали увеличиваться и объемы получаемых ею данных, размеры самих корпусов: если Брауновский корпус содержал в себе всего лишь миллион словоупотреблений, то Британский национальный корпус - уже сто миллионов. Если же говорить о веб-корпусах, то пределы их роста практически безграничны, как безграничен сам Интернет: англоязычная ветвь TenTen, enTenTen (один из более тридцати таких же веб-корпусов!), начинала с двух миллиардов словоупотреблений в 2008 году, а на данный момент приближается к отметке в пятнадцать миллиардов.

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

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

В 1989 году исследователи Ken Church и Patrick Hanks предложили меру Mutual Information, измеряющую то, насколько значима (salient) связь между двумя словами. Эта мера основывается на основе данных о частоте встречаемости в корпусе коллокаций (словосочетаний) и о частоте встречаемости образующих их коллокатов. Это новое веяние в лингвостатистике нашло широкое применение корпусной лингвистике, а также породило, по сути, новую область в языкознании: лексическая статистика.

Разумеется, решение Черча и Хэнкса не было идеальным. Их мера отдавала предпочтение редким словам, а списки слов были основаны на словоформах (человек, человека, людей), а не на леммах (человек). Эти две проблемы решались довольно просто - созданием корректирующих статистику весов и лемматизаторов соответственно. Однако на них сложности не оканчивались. Во-первых, точность измерений сильно ухудшал шум в данных. Во-вторых, неопределенным был размер самого контекстного окна, который мог быть как и симметричным (то есть с одинаковым количеством коллокатов перед и после слова), так и ассиметричным. Наконец, мера не учитывала, как именно слово было связано со своим контекстом: соседнее слово могло быть определением, обстоятельством, объектом или субъектом, либо же вообще не иметь с ним грамматической связи. Хотя от этих проблем страдали и другие меры вычисления синтагматической связанности, все же.

Все эти вопросы были решены уже в следующем столетии британским лингвистом Адамом Килгариффом (Adam Kilgarriff), предложившим новый формат выдачи конкордансных данных из корпусов. Это так называемый wordsketch: автоматически строящаяся страница, отображающая грамматическое и коллокационное поведение слова. Для создания скетча необходимы четыре вещи: корпус, средства NLP (токенизатор, лемматизатор и т.д.), скетч-грамматика для языка и статистические данные для того, чтобы выбирать значимые коллокации.

Революционным в этом формате было то, что в нем рассматриваются грамматические отношения между словами в предложения: вместо того, чтобы брать фиксированный контекст длиной n1 слева от искомого слова и n2 справа от него, "скетч" рассматривает его грамматические отношения. В ранней версии созданной Килгариффом системы, опубликованной им в 2004 году, различались 27 вида грамматических отношения для английского языка и 23 - для чешского. Так, глагол мог связываться с субъектом, объектом, другим глаголом (образуя сложное сказуемое), обстоятельством, с предлогами и местоимениями, причем каждый тип связи отделялся в отдельный список, и эти списки могли рассматриваться, в зависимости от нужд лексикографа, либо как единое целое, либо поодиночке. На рисунке 3 ниже мы можем увидеть скетч существительного "русский", созданного на основе корпуса RussianWeb 2011 (ruTenTen11).

Новый формат, предложенный Килгариффом, получил широкое признание за свою эффективность, и его изыскания в конечном итоге привели его к созданию целого веб-ресурса, доступного сейчас каждому пользователю сети Интернет - SketchEngine. Эта сетевая платформа, одна из самых успешных в своем роде, служит для сбора, построения и исследования веб-корпусов, при этом "скетчи" образуют ее центральное ядро. Она не только содержит более 400 корпусов на более чем 80 языках, но также дает пользователю возможность строить корпуса самостоятельно (автоматически, на основе материала из интернет-страниц). Система может не только просто показывать "скетчи", но и сравнивать их, показывая общие и расходящиеся грамматические связи, а также "дистрибуционный тезаурус", позволящий отображать слова со схожими грамматическими связями в виде облака (word cloud).

Рисунок 3: Скетч существительного "русский"

За свое существование система SketchEngine пережила заметный рост и нашла применение в самых разных областях языкознания. Первыми, кто начал использовать её, стали лексикографы: к 2014 году SketchEngine использовали четыре из пяти крупнейших издателей словарей в Великобритании (Cambridge University Press, Harper Collins, Macmillan и Oxford University Press), а также целый ряд национальных институтов, занимающихся словарной работой (в Ирландии, Словакии, Болгарии, Чехии, Голландии, Ирландии и Эстонии). В университетской среде она нашла применение в изучении дискурсного анализа и NLP-исследованиях; высокую эффективность она показала также в обучении языку, для которого Килгариффом был разработан отдельный вспомогательный инструмент, SkELL (Sketch Engine for Language Learning). Кроме того, SketchEngine активно используется переводчиками, терминологами и компаниями, занимающиеся языковыми технологиями.

Глава 2. Работа системы SketchEngine

2.1 Предобработка

Построение корпуса в SketchEngne

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

Сайтом принимаются файлы разных форматов, включая.doc, .docx, .htm, .html, .pdf, .ps, .tmx, .txt, .vert, .xml., а также архивы.zip, .tar, .tar.gz, и.tar. bz2. Однако здесь существует несколько нюансов. Файлы формата PDF, как вполне ожидаемо, в процессе конвертирования в чистый текст могут подвергнуться сильному искажению, если в них присутствуют колонки, тексты в несколько столбцов и т.д.; слова могут разрываться или пропадать вовсе. Файлы XML же будут правильно обрабатываться только тогда, когда в нем будет присутствовать корректная маркировка, включающая в себя необходимые метаданные, как например:

<xml>

<doc author="Jan" title="Example doc 1">

<p>This is a paragraph.</p>

<p>This is another paragraph.</p></doc>

<doc author="Jan" title="Example doc 2">

<p>I will add some more text here.</p>

</doc>

</xml>

Другой вариант создания корпуса отсылает нас к уже упомянутым словам создателя SketchEngine: на нашей стороне Всемирная сеть, которая дает нам собирать данные огромных размеров почти мгновенно и при этом бесплатно. В этом случае задействуется служба WebBootCaT, которая производит самостоятельный поиск по Интернету, используя поисковую систему Bing. В качестве исходных данных возможно использовать либо определенные слова-ключи (seed words), в случае чего система произведет определенное количество поисковых запросов на каждое слово-ключ, самостоятельно забирая определенное количество страниц с каждого запроса.

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

Схожим способом создаются "подкорпуса" - еще один, вспомогательный способ построения корпусов в SketchEngine. В данном случае также выделяются определенные ключевые слова или страницы, на основе которых будет строиться корпус, однако вместо поиска по Интернету система будет искать в пределах одного из уже имеющихся корпусов, "вырезая" из него определенную часть и расссматривая ее отдельно.

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

В рамках этой работы будут рассматриваться только корпуса, построенные с использованием WebBootCat: методы обработки текстов до того, как они попадут собственно в корпус, рассматриваться не будут. Во-первых, эти методы обычно достаточно трудоемки и занимают много времени, из-за чего у нас просто не остается, собственно, времени разобрать их полностью.. Во-вторых, они связаны больше непосредственно с "очисткой" текста, и собственно с темой корпусной лингвистики соприкасаются мало. Однако проблемы предобработки, поднимаемые в этом вопросе, точно так же относятся и к собранным вручную корпусам.

Проблемы с лемматизацией

В корпусах SketchEngine достаточно часто мы видим слова, которые не лемматизируются либо лемматизируются неправильно, либо из-за ошибок самого лемматизатора, либо из-за плохого качества текста(что характерно для веб-корпусов). Ошибки, встречающиеся в пользовательских корпусах, достаточно разнообразны, однако рассмотрев корпуса русского языка, возможно выделить самые распространенные их типы.

Для этого с помощью WebBootCat были созданы два корпуса: один по ключевым словам, связанным с Китаем ("Китай", "китайцы", "китайский"), и другой по словам, связанным с Таиландом ("тайский", "тайцы", "Таиланд"). Специальный алгоритм проверял все леммы, взятые из этих корпусов, на наличие в Викисловаре, оставляя только те, которые не присутствовали в последнем (чаще всего это происходило из-за того, что слово были неверно приведено в словарную форму, либо же этого не случилось вовсе).

Как можно было ожидать, чаще всего лемматизатор дает сбой на именах собственных. В частности, часто не лемматизируются названия стран, городов, межгосударственных организаций: при этом достаточно странно то, что система "спотыкается" не только на довольно малоиспользуемых топонимах ("Бутаном" вместо "бутан"), но и на достаточно распространенных терминах ("Евросоюза" вместо "евросоюз", "Монголией" вместо "монголия"). Схожая ситуация происходит с именами собственными ("Цзиньпина" вместо "Цзиньпин").

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