Python – простой и понятный для новичков в программировании язык. Он выступает как самостоятельным инструментом разработки небольших и средних проектов, так и дополнительным элементом в крупных программах. Является одним из лидеров по популярности среди всех существующих языков разработки. Поддерживает не только простой и понятный синтаксис, но и богатый выбор библиотек. С их помощью удается разрабатывать сервисы и проекты намного быстрее.
Одной из самых полезных библиотек при работе с текстовыми данными в Python выступает Pymorphy. Именно об ней пойдет речь далее. Предстоит выяснить, что это за библиотека, для каких целей она используется. Также нужно разобраться в том, как установить ее для дальнейшей эксплуатации.
Определение
Pymorphy2 – это морфологический анализатор. Он разработан на языке Питон и используется для программ и проектов, создаваемых на нем. Помогает выполнить лемматизацию слов и их дальнейший анализ. Умеет склонять слова по заданным грамматическим характеристикам. Данный проект работает со словарем OpenCorpora. Если то или иное слово ему незнакомо, система строит свои собственные гипотезы.
Pymorphy распространяется по лицензии MIT – свободно. Это делает разработку доступной, а ее использование возможно в совершенно разных проектах: от небольших бесплатных до крупных коммерческих. Рассматриваемая библиотека используется для морфологического анализа и склонения слов. Она поддерживает несколько языков: украинский и русский.
Встроенные возможности
Перед тем как будет выполнена установка Pymorphy2, необходимо побольше узнать о данной разработке. Она используется не слишком часто, но в некоторых ситуациях бывает очень полезна.
К основным возможностям Pymorphy2 относят:
- приведение слов к нормальной форме;
- постановка слова в нужной форме;
- поиск синонимов указанных слов;
- определение части речи;
- поиск антонимов слов;
- генерация морфологических и синтаксических шаблонов для автоматической генерации текста;
- синтаксический разбор предложений;
- возврат грамматической информации об имеющемся слове.
Также Pymorphy умеет работать со словарем OpenCorpora, который представляет собой проект по созданию открытого и свободного корпуса русского языка. А еще – обрабатывать слова, которые отсутствуют в упомянутом ранее словаре.
Для Python Pymorphy2 имеет одно огромное преимущество – поддержку буквы «ё». Она нужна для обучения иностранцев русскому языку. Именно поэтому соответствующая библиотека выбирается разработчиками в качестве ключевого инструмента склонения слов в модуле контроля знаний.
Начало работы
Что собой представляет изучаемая библиотека, понятно. Теперь можно приступить к ее активному использованию. Для начала изучаемый «пакет» нужно установить. Это делается при помощи пакетного менеджера pip:
pip install pymorphy2
Если планируется работать с оптимизированной версией, рекомендуется воспользоваться командой:
pip install pimorphy2[fast]
При работе с оптимизированной версией программисту может потребоваться настроенное окружение для сборки (компилятор C/C++). Также необходимо помнить, что словари будут распространяться отдельными пакетами. А именно:
- pymorphy2-dicts-ru – для русского языка;
- pymorphy2-dicts-uk – для украинского языка (является экспериментальным).
Время от времени эти «пакеты» обновляются. Их необходимо иногда обновлять. Для этого предстоит использовать команды:
При подготовке к работе с библиотекой рекомендуется использовать более-менее современные версии setuptools и pip. Иначе с установкой могут возникнуть некоторые трудности.
Морфологический анализ
Теперь можно перейти к изучению возможных способов применения рассматриваемой библиотеки. Она активно задействована при морфологическом анализе. Так называется определение характеристик слова на основе того, как оно пишется. Информация о соседних словах при его реализации не задействована.
В Pymorphy для морфологического анализа используется отдельный класс. Он называется MorphAnalyzer:
По умолчанию здесь используется русский язык. Если по тем или иным причинам требуется использовать украинский, стоит установить соответствующий пакет-словарь и обработать такую команду:
При помощи метода MorpAnalyzer.parse() предлагается разобрать отдельное слово. Он возвращает один или несколько ответов типа Parse с информацией о том, как слово может быть разобрано.
Каждый разбор предусматривает тег. Он представляет собой набор граммем, которые характеризуют слово. В качестве примера можно взять тег «VERB, perf, intr, plur, past, indc». Тут слово:
- глагол – VERB;
- совершенного вида – perf;
- непереходный – intr;
- множественного числа – plur;
- прошедшего времени – past;
- изъявительного наклонения – indc.
Каждое слово имеет нормальную форму. Ее можно получить при помощи атрибутов normal_form или normalized.
Склонение
Рассматриваемая библиотека умеет склонять имеющиеся слова. Для этого сначала нужно понять, в какой форме они стоят сейчас, какие лексемы имеют. Для этого нужно разобраться слово и выбрать из предложенных вариантов оптимальный (правильный).
Пусть для разбора используется слово «бутявка». Здесь берется первый вариант разбора:
butyavka = morph.parse('бутявка')[0]
>>> butyavka
Parse(word='бутявка', tag=OpencorporaTag('NOUN,inan,femn sing,nomn'), normal_form='бутявка', score=1.0, methods_stack=((<DictionaryAnalyzer>, 'явка', 8, 0), (<UnknownPrefixAnalyzer>, 'бут')))
После получения объекта Parse можно склонять слово. Для этого используется метод Parse.inflect():
butyavka.inflect({'gent'}) # нет кого? (родительный падеж)
Out[13]:
Parse(word='бутявки', tag=OpencorporaTag('NOUN,inan,femn sing,gent'), normal_form='бутявка', score=1.0, methods_stack=((<DictionaryAnalyzer>, 'явки', 8, 1), (<UnknownPrefixAnalyzer>, 'бут')))
>>> butyavka.inflect({'plur', 'gent'}) # кого много?
Parse(word='бутявок', tag=OpencorporaTag('NOUN,inan,femn plur,gent'), normal_form='бутявка', score=1.0, methods_stack=((<DictionaryAnalyzer>, 'явок', 8, 8), (<UnknownPrefixAnalyzer>, 'бут')))
А при помощи атрибута Parse.lexeme можно извлечь лексему имеющегося слова.
Согласование с числительными
Иногда нужно поставить тот или иной элемент предложения в форму, которая зависит от числительного. Для этого используется метод Parse.make_agree_with_number. Выглядит это так:
Все это – только начало. Чтобы научиться пользоваться Pymorphy2 на профессиональном уровне, рекомендуется пройти дистанционные компьютерные курсы.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!