часть речи;
множество наборов изменяемых грамматических признаков (грам- мем) для данной словоформы, по набору для каждого варианта лем- матизации, например число существительного, род прилагательного и пр.
На рис. 1 показаны наборы граммем всех возможных форм для слова
«МЫЛА» представлены в виде их объединения (рд, ед U им, мн U вн, мн
= вн, рд, им, ед, мн).
Рис. 1
Перечень всех использующихся в проекте АОТ частей речи и грам- мем представлен на странице проекта. Уникальный двухбуквенный иден- тификатор, соответствующий некоторой комбинации значений селектив- ных признаков и граммем, называется аношкинским кодом или анкодом. Например, коду аа соответствует комбинация граммем «С,мр,ед,им», а коду аб — «С,мр,ед,рд». Список всех возможных анкодов (сочетаний граммем), использующихся библиотекой LemmatizerLib, содержится в файлах {r,e,g}gramtab.tab (для русского, английского и немецкого языков).
Модель словоизменения в системе АОТ может порождать маловеро- ятные (или ошибочные) словоформы. Например, возможно порождение форм сравнительной степени прилагательных и форм на «по-», образо- ванных на основе форм сравнительной степени, в тех случаях, где эти формы не кажутся естественными: «призывнОй» — «призывнЕе»* —
«попризывнЕе»*, «столОвый» — «столОвее»* — «постолОвее»* и т. д. Лишние формы не являются проблемой при анализе текста, однако могут вызвать сложности при постановке слова или словосочетания в указанную форму.
С технической точки зрения лингвистические анализаторы проекта АОТ спроектированы так, чтобы их было удобно использовать изнутри других программ: библиотека на C++ LemmatizerLib, COM-интерфейс Lemmatizer и .Net интерфейс LemmatizerNet. Для обработки одного тек-
стового файла существует программа FileLem. Готовые к использованию модули и программы доступны на сайте проекта по адресу http://aot.ru/download.php.
На настоящий момент работа над лингвистическими модулями про- екта АОТ продолжается, и морфологический словарь пополняется новыми словами.
Морфологический анализатор Pymorphy2 и словарь проекта OpenCorpora
Словарная база проекта АОТ была использована в других разработ- ках, среди которых морфологический анализатор pymorphy на языке Python и морфологический словарь проекта OpenCorpora. С содержатель- ной точки зрения pymorphy — это реализация алгоритмов морфологиче- ского анализа, описанных в документации проекта АОТ, на языке Python с поправкой на внутреннее представление данных (в АОТ используется ко- нечный автомат, в pymorphy — таблицы пар ключ-значение). Последняя версия анализатора была выпущена в 2011 году, и с тех пор разработка и исправление ошибок в pymorphy остановлены.
С 2012 года ведущий разработчик проекта pymorphy Михаил Коробов начал работу над новым проектом — pymorphy2, в котором заново реали- зованы хранение словаря и поиск по нему. В качестве словаря в этой сис- теме используется словарная база проекта «Открытый корпус».
Так же как и морфологический анализатор АОТ, pymorphy2 обраба- тывает словоформы независимо друг от друга. В качестве результата он возвращает набор гипотез, каждая из которых является возможной морфо- логической интерпретацией заданной словоформы. Рассмотрим пример из документации по pymorphy2:
>>> morph.parse('стали')
[Parse(word='стали', tag=OpencorporaTag('VERB,perf,intr plur,past,indc'), normal_form='стать', score=0.983766, methods_stack=((, 'стали', 884, 4),)), Parse(word='стали', tag=OpencorporaTag('NOUN,inan,femn sing,gent'), normal_form='сталь', score=0.003246, methods_stack=((, 'стали', 12, 1),)), Parse(word='стали', tag=OpencorporaTag('NOUN,inan,femn sing,datv'), normal_form='сталь', score=0.003246, methods_stack=((, 'стали', 12, 2),)), Parse(word='стали', tag=OpencorporaTag('NOUN,inan,femn sing,loct'), normal_form='сталь', score=0.003246, methods_stack=((, 'стали', 12, 5),)),
Parse(word='стали', tag=OpencorporaTag('NOUN,inan,femn plur,nomn'), normal_form='сталь', score=0.003246, methods_stack=((, 'стали', 12, 6),)), Parse(word='стали', tag=OpencorporaTag('NOUN,inan,femn plur,accs'), normal_form='сталь', score=0.003246, methods_stack=((, 'стали', 12, 9),))]
В этом примере pymorphy2 предложил шесть вариантов анализа сло- воформы стали. Первый вариант — это форма глагола стать. Остальные пять вариантов связаны с существительным сталь в единственном (sing) и множественном (plur) числе в родительном (gent), дательном (datv), пред- ложном (loct), именительном (nomn) и винительном (accs) падежах
В pymorphy2 реализован предиктивный морфологический анализ для слов, которых не удалось найти в словаре. В следующем примере анализа- тор обработал слова бутявковедами, правильно определил его базовую форму бутявковед и понял, что это одушевленное существительное (NOUN,anim) мужского рода (masc), в форме множественного числа (plur) и творительного падежа (ablt):
>>> morph.parse('бутявковедами') [Parse(word='бутявковедами', tag=OpencorporaTag('NOUN,anim,masc plur,ablt'), normal_form='бутявковед', score=1.0, methods_stack=((, 'бутявковедами', 51, 10), (, 'едами')))]
В pymorphy2 также предусмотрена возможность постановки слов в начальную форму, произвольную форму по указанным граммемам и со- гласования существительного с заданным числительным.
Морфологический словарь проекта OpenCorpora, использующийся в pymorphy2, является побочным результатом работы над аннотированным Открытым корпусом текстов на русском языке OpenCorpora. В его размет- ке каждому слову сопоставляется не только набор граммем, описывающих его форму, но и номер леммы в морфологической базе данных. Морфоло- гический словарь OpenCorpora основан на словаре АОТ и полностью его включает. Набор граммем для этого словаря был разработан заново, после чего словарь АОТ был автоматически преобразован в новый формат. Сло- варь OpenCorpora продолжает вручную пополняться словами, которые были встречены в текстах корпуса. На момент написания этой книги ко- пия словаря со свежими дополнениями ежедневно публикуется на сайте проекта в текстовом формате и в формате XML. Проект OpenCorpora не имеет своего модуля морфологического анализа, pymorphy2 пока является
единственным инструментом, который использует словарную базу Откры- того корпуса.
Анализатор Mystem
Морфологический анализатор mystem — это внутренняя разработка компании Яндекс, и его исходный код недоступен. Бинарные сборки про- граммных модулей mystem для Windows, Mac OS и Linux опубликованы на сайте Яндекса. Первая версия mystem была разработана Ильёй Сегало- вичем и Виталием Титовым. На данный момент в свободном доступе на- ходится третья версия, в состав которой включён модуль снятия частереч- ной омонимии. Неоднозначность между разными формами одного и того же слова не снимается.
Без снятия омонимии
./mystem -e UTF-8 -gni
Со снятием омонимии
./mystem -e UTF-8 -gnd
эти{этот} типы{тип}
стали{становиться|сталь} есть{быть|есть}
в{в} цехе{цех}
эти{этот} типы{тип}
стали{становиться} есть{есть}
в{в} цехе{цех}
Анализатор mystem использует словарь, который «зашит» внутрь программы и недоступен для пользователя: его нельзя ни посмотреть, ни изменить. Если возникает необходимость дополнить словарную базу ана- лизатора специфической для некоторой предметной области лексикой, пользователи могут подключать свой дополнительный словарь к mystem при запуске. Подробное описание формата пользовательского словаря и способов использования mystem есть на сайте Яндекса.
При помощи mystem можно обработать текстовую строку или тексто- вый файл. Для использования анализатора изнутри других программ су- ществуют несколько модулей, предоставляющих программный интерфейс к mystem. Среди них pymystem3 для Python и mystem-scala для Java и Scala. Эти модули разработаны и поддерживаются самостоятельными раз- работчиками, а их список ведётся на странице Mystem сайта NLPub.
Список доступных морфологических анализаторов для русского язы- ка не так велик, как для английского, однако он не ограничивается пере- численными выше. Существуют также следующие морфоанализаторы для русского языка:
TreeTagger — языконезависимый инструмент с закрытым исходным кодом, он действует на основе машинного обучения (деревья реше- ний), хотя последние его версии помимо статистики начали использо- вать словарь, так что из чисто статистического анализатора он стал гибридным.
Stemka — вероятностный морфологический анализатор для русского и украинского языков. Доступен в виде исходного кода на языке C++.
морфологический модуль проекта FreeLing.
набор правил стемминга для русского языка на языке обработки строк Snowball.
Компьютерные лингвисты, разрабатывающие морфологические пар- серы для русского языка, принимают участие в соревновании по оценке качества морфоанализаторов и разработке стандартов морфологического анализа [Ляшевская и др. 2010]. В ходе соревнования проводится тестиро- вание систем, выполняющих обработку всех слов во входном тексте и ра- ботающих с контекстными данными. Соревнование проводится по не- скольким дорожкам. В зависимости от возможностей решения задач авто- матического разрешения морфологической неоднозначности, различаются два вида морфоанализаторов — проводящие или не проводящие разреше- ние неоднозначности. Для парсеров, не снимающих неоднозначность, вве- дены дорожки «Лемматизация», «POS», «Морфология», «Редкие слова», а для разрешающих неоднозначность парсеров — дорожки «Дизамбигуация: леммы» и «Дизамбигуация: частеречные теги». Соревнование позволило создать «Золотой стандарт» морфологической разметки русскоязычных текстов: так, согласно экспертным оценкам, точность ручной разметки эта- лонного корпуса составляет 94,4 % по леммам, 95,4 % по частеречным те- гам, 89,0 % по тегам грамматических категорий и 85,5 % по всей морфоло- гической аннотации.
Достарыңызбен бөлісу: |