Мегаобучалка Главная | О нас | Обратная связь


Проектно-конструкторская часть



2018-07-06 435 Обсуждений (0)
Проектно-конструкторская часть 0.00 из 5.00 0 оценок




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

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

Компоненты лемматизатора (динамическая библиотека и файл данных с моделью языка для MS Windows 32/64 бит и Linux 32/64 бит) и примеры его использования входят в состав SDK Грамматического Словаря. В бесплатную ознакомительную версию SDK русский лемматизатор также включен, но без примеров использования.

Данный вариант лемматизатора имеет следующие особенности:

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

2. Минимальный объем потребляемой памяти, данные хранятся на диске в сжатом виде, после открытия базы она занимает в памяти около 1 Мб в экономном режиме.

3. Поддержка любых языков, реализованных в проекте, таким образом генерируемый при сборке англо-русского словаря лемматизатор будет работать и с английскими, и с русскими словами.

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

5. Возможна лемматизация даже тех слов, которые отсутствуют в основном лексиконе. Это возможно благодаря тому, что в состав базы данных лемматизатора входят автоматически выводимые правила. Эти правила хорошо справляются с продуктивными суффиксами слов, используемыми в русском языке для образования новых слов.

Динамическая библиотека лемматизации lemmatizator.dll (lemmatizator.so) собирается для 32х и 64х битных платформ Windows и Linux, а также Mac OS X.

Для платформы .NET в состав SDK включена обертка lemmatizator_fx.dll и пример использования на C#.

Лемматизация для PHP выполняется с помощью модуля, который доступен в составе SDK Грамматического Словаря в виде исходного кода Lemmatizator.php. Текст этого модуля и база данных для него генерируются автоматически отдельной служебной утилитой на C#. Все файлы PHP лемматизаторанаходятся в подкаталоге - ...\demo\ai\solarix\Grammar_Engine\Lemmatizator\PHP.

 

 

Лемматизатор не требует наличия других библиотек из состава SDK, так как содержит все необходимые алгоритмы, словарную базу и вероятностную модель морфологии в двух своих файлах.

Очень простой API и отсутствие какой-либо привязки к C++ позволяет легко создавать обертки для вызова лемматизатора из других языков программирования.

В лемматизатор входит вероятностная модель морфологии - обучаемая по специально размеченному корпусу числовая база данных. При первом обращении к функции sol_LemmatizePhrase[W,A,8] движок подгружает эту модель в оперативную память и затем использует ее для выбора более вероятной леммы. Увеличение точности, привносимое этой моделью, полностью определяется процессом обучения и ограничениями самой модели. В лабораторных условиях вероятностная модель морфологии позволяет улучшить точность примерно до 98-99%.

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

Проиллюстрировать использование морфологической модели в лемматизаторе можно с помощью консольного отладчика Syntax. После его запуска введите директиву #lemmatize и затем предложение "мы ели суп, а вдоль аллеи стояли раскидистые ели". В этом предложении слово "ели" встречается два раза и представляет формы двух разных частей речи - глагола и существительного. Лемматизатор учтет эти факторы и выведет:

Рис. 2.1 – Пример работы лемматизатора

 

В результате первое вхождение слова приведено к инфинитиву "есть", второе - к форме именительного падежа единственного числа "ель".

Для использования вероятностной модели морфологии от прикладной программы не требуется никаких дополнительных действий, помимо вызова функции API sol_LemmatizePhrase[W,A,8]. Если модель морфологии отсутствует в базе данных, то данная функция будет работать фактически через вызов sol_GetLemmas[W,A,8] для каждого слова.

Ограничения вероятностной лемматизации определяются двумя основными факторами.

Во-первых, вероятностная модель не знает ничего о смысле слов, поэтому не всегда может заметить недопустимость применения похожего паттерна.

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

Некоторые функции API лемматизатора реализованы в 3х вариантах для удобства использования на разных платформах и языках программирования:

суффикс W - юникод, широкие строки (wchar_t, WideChar)

суффикс A - однобайтовая кодировка ASCII текущей локали

суффикс 8 - многобайтовая кодировка utf-8



2018-07-06 435 Обсуждений (0)
Проектно-конструкторская часть 0.00 из 5.00 0 оценок









Обсуждение в статье: Проектно-конструкторская часть

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (435)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)