Морфологический анализ

 

 

Текстовый анализ

 

 

Решение практически любой задачи автоматической обработки текста включает в себя проведение анализа текста на следующих уровнях представления:

  • Графематический анализ
    Выделение из массива данных предложений и слов (токенов).

  • Морфологический анализ
    Выделение грамматической основы слова, определение частей речи, приведение слова к словарной форме.

  • Синтаксический анализ
    Выявление синтаксических связей между словами в предложении, построение синтаксической структуры предложения.

  • Семантический анализ. 
    Выявление семантических связей между словами и синтаксическими группами, извлечение семантических отношений.

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

Подавляющее большинство исследовательских систем предназначено для решения именно вспомогательных аналитических задач.

Такие системы применяются

для апробации методов

проведения вычислительных экспериментов,

в качестве составных частей (библиотек, фреймворков) для систем, решающих прикладные задачи.

Примером таких систем могут служить средство NLTK для графематического анализа и токенизации, морфологический анализатор mystem и синтаксический парсер ЭТАП3,

 

 

 

"Парсер" Ильи Козиева

 

Козиевым Ильёй (см. здесь, здесь, здесь) разработана "Компьютерная грамматика русского языка: лексика, морфология, синтаксис"

Программа именуется "Парсер" (морфологический и синтаксический анализатор текста), ее название следует рассматривать как оним, а не термин.
Общепринято понимать под парсингом синтаксический анализ, а программа "Парсер" осуществляет и другие виды анализа текста.

Пргограмма "Парсер" решает следующие задачи:

1. Лексический анализ - разбивка текста на предложения и слова.
2. Морфологический анализ слов - определение части речи, падежа, рода, числа и других грамматических признаков с учетом контекста слова.
3. Лемматизацию - приведение слова к начальной форме (лемме).
4. Синтаксический анализ - определение синтаксических связей слов в предложении, поиск подлежащего, сказуемого и так далее.

Всё вышеперечисленное выполняется в том числе для новых слов, отсутствующих в словаре.

Реализован режим опечаток, чтобы морфологический анализатор исправлял орфографические ошибки.

Парсер работает в командной строке.

Системы, рассчитанные на дширокое и коммерческое) использование, обладают привлекательным пользовательским интерфейсом, который является приятным дополнением к возможностям систем.

Системы, рассчитанные на исследователей или являющиеся частью более объемных проектов (токенизаторы, лемматизаторы, парсеры и проч.), рассчитаны на работу в тестовом режиме и часто являются консольными (mystem, AOT, pyMorphy, Томита парсер, OpenXerox, Snowball).

В качестве входных данных он получает текстовый файл в utf-8.

Результаты работы сохраняются в XML формате.

 

 

 

 

 

 

 

http://www.dialog-21.ru/digests/dialog2010/materials/pdf/49.pdf

Оценка методов автоматического анализа текста: морфологические парсеры русского языка NLP evaluation: russian morphological parsers Ляшевская О. Н., Астафьева И., Бонч-Осмоловская А., Гарейшина А., Гришина Ю., Дьячков В., Ионов М., Королева А., Кудринский М., Литягина А., Лучина Е., Сидорова Е., Толдова С.

 

Парсим русский язык

https://habrahabr.ru/post/148124/

 

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

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

 

 

 

Корпусы — неотъемлемая часть многих систем обработки текстов. Каждое слово в корпусах снабжено исчерпывающими грамматическими характеристиками: к какой части речи оно принадлежит, в какой форме оно находится, какова его синтаксическая роль. Корпусы служат входными данными для обучения в задачах классификации текстов по темам и жанрам, для обучения синтаксических парсеров и программ, используемых для снятия омонимии и разрешения анафоры. Параллельные корпусы, состоящие из одинаковых текстов на разных языках, используют для обучения машинных переводчиков. Как правило, корпусы собираются десятилетиями, и в их создании участвуют большие исследовательские группы — например, проект «Национальный корпус русского языка» существует уже 13 лет и поддерживается компанией «Яндекс».

Важный тип входных данных любой системы АОТ — морфологические словари. Например, библиотека «АОТ», используемая во многих исследовательских и коммерческих проектах, представляет собой словарь Зализняка в цифровой форме. Тезаурусы (или семантические сети) — другой тип широко востребованных входных данных. Пожалуй, самый известный тезаурус — это WordNet, представляющий собой ресурс, в котором слова связаны с помощью так называемых семантических отношений: синонимии, гиперонимии (частное — обобщение), гипонимии (обобщение — частное), меронимии (часть — целое) и др. WordNet полезен в задачах машинного перевода, генерации текстов, классификации текстов. К сожалению, русского аналога WordNet пока нет.

 

 

 

Парсинг (синтаксический анализ)

 

Парсинг (parsing, синтаксический анализ)  — процесс сопоставления линейной последовательности лексем (слов, токенов) языка (естественного или формального) с его формальной грамматикой.

Парсер (синтаксический анализатор, parser) — программа (часть программы), выполняющая синтаксический анализ.

Результатом парсинга является (обычно) дерево разбора (синтаксическое дерево).

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

Синтаксическое дерево может быть представлено в виде:

  •  дерева зависимостей,

  • дерева составляющих,

  • сочетания первого и второго способов представления.

Всё что угодно, имеющее «синтаксис», поддается автоматическому анализу:

языки программирования — разбор исходного кода языков программирования, в процессе трансляции (компиляции или интерпретации);

  • структурированные данные — данные, языки их описания, оформления (XML, HTML, CSS, конфигурационные файлы и т. п.);

  • SQL-запросы (DSL-язык);

  • математические выражения;

  • регулярные выражения (которые, в свою очередь, могут использоваться для автоматизации лексического анализа);

  • формальные грамматики;

  • тексты на естественных языках...

 

 

 

Morpher

 

 


http://controleng.ru/wp-content/uploads/CE155_Web_ALL.pdf
https://habrahabr.ru/company/pechkin/blog/233763/

 

Автоматическое определение пола по имени
Блог компании Pechkin.com,
PHP,
Продолжая рассказывать о технологиях, которые используются в нашем сервисе email-маркетинга Pechkin-mail.ru, мы просто обязаны упомянуть об автоматическом определении пола подписчика по имени. Еще в 2007 году, разрабатывая сервис sms-рассылок, мы очень хотели реализовать возможность автоматического подставления окончаний в прилагательные “Уважаемый”, “Дорогой” и так далее. Обычно такая подстановка осуществляется на основании дополнительного поля в адресной базе клиента. Однако, как нам кажется, это полный отстой.
На это есть 3 причины:
заставлять подписчика задавать свой пол глупо (чем больше полей в форме, тем ниже вероятность ее заполнения)
определять вручную — долго, а значит дорого
от ошибок человек не застрахован ровно так же, как и машина.


Но мы не лингвисты, поэтому реализовать такой модуль было бы слишком сложно для нас, да и функция “не первой необходимости”. Но недавно, работая над склонениями текстов бесконечных актов, договоров и прочих юридических документов, мы вспомнили об используемом нами уже 2 года сервисе Морфер. Это прекрасный лингвистический сервис, специализирующийся на русском языке и позволяющий склонять по падежам слова, целые предложения, числительные, а также получать текст из цифр. В общем, потрясающая разработка всего одного человека — Сергея Слепова.

Итак, открываем спустя некоторое время его сайт и обнаруживаем — есть удобный и простой модуль для PHP, который позволяет определять род существительного. Т.е. подставляя сочетания ФИО можно получить достаточно точное определение пола (мужской, женский). Супер! Реализация функции не заставила себя долго ждать. Все сделано в виде шаблонов в тексте рассылки.

С помощью хитрой конструкции склонения:
{Уважаем{ый|ая}}/{%ИМЯ% %ФАМИЛИЯ%}

В результате на выходе получится или “Уважаемый” или “Уважаемая”.

Содержимое конструкции может быть произвольным. Поясним на приведенном примере:
Уважаем — это “корень” склоняемого слова.
ый|ая — это возможные окончания по порядку {мужское|женское|средний род|множественное число}. В полном варианте может выглядеть так: “ый|ая|ое|ые”
%ИМЯ% %ФАМИЛИЯ% — это те теги из адресной базы, которые определяют выражение на базе которого будет определен пол. Можно задать просто %ИМЯ%, но тогда есть риск “потерять” часть двузначных имен вроде Саша, Вася, Валя и так далее.


Вот еще пример конструкции:
{Дорог{ой|ая}}/{%ИМЯ% %ФАМИЛИЯ%} %ИМЯ{клиент}%

=> в результате будет “Дорогой Иван” или “Дорогая Маргарита” или «Дорогой клиент» (если имя не задано)

Для тех, кто пользуется нашим онлайн-редактором, все еще проще:
image

Удобные ссылки в панели управления по нажатию на кнопку человечка справа вверху, которые вы видите на скриншоте выше.

Написать подобную обертку действительно не сложно. Производительность модуля поражает и позволяет использовать такое определение пола и автоподстановку шаблона “на лету” в процесс отправки рассылки без потери скорости.

А преимущества для наших клиентов очевидны:
Отсутствие необходимости просить подписчика задавать пол и хранить его в дополнительном поле в адресной базе
Не надо вручную определять пол ваших подписчиков по их именам
Точность определения даже выше ручной обработки (скрипт не устает на второй тысяче имен)


Поэтому, если у вас стоит задача “живой” работы с текстами, склонением различных слов и словосочетаний, работы с числительными — то библиотека Сергея вам в помощь! Огромное ему за нее спасибо!

P.S. У нашего сервиса эксклюзив на использование данной библиотеки в сервисах email-маркетинга в России. Будем рады, если данная функция станет действительно нужной и полезной для наших клиентов.

 

http://morpher.ru/
Сергей Слепов
http://controleng.ru/wp-content/uploads/CE155_Web_ALL.pdf
https://habrahabr.ru/company/pechkin/blog/233763/

 

 

Морфоло́гия (от др.-греч. μορφή — «форма» и λόγος — «слово, учение») — раздел грамматики, основными объектами которого являются слова естественных языков, их значимые части и морфологические признаки. В задачи морфологии, таким образом, входит определение слова как особого языкового объекта и описание его внутренней структуры.

Морфология, согласно преобладающему в современной лингвистике пониманию её задач, описывает не только формальные свойства слов и образующих их морфем (звуковой состав, порядок следования, и т. п.), но и те грамматические значения, которые выражаются внутри слова (или «морфологические значения»). В соответствии с этими двумя крупными задачами, морфологию часто делят на две области: «формальную» морфологию, или морфемику, в центре которой находятся понятия слова и морфемы, и грамматическую семантику, изучающую свойства грамматических морфологических значений и категорий (то есть морфологически выражаемое словообразование и словоизменение языков мира).

Наряду с обозначением некоторой области лингвистики, термин «морфология» может обозначать и часть системы языка (или «уровень» языка) — а именно, ту, в которой содержатся правила построения и понимания слов данного языка. Так, выражение испанская морфология соотносится с частью испанской грамматики, в которой изложены соответствующие правила испанского языка. Морфология как раздел лингвистики является в этом смысле обобщением всех частных морфологий конкретных языков, то есть совокупностью сведений о всех возможных типах морфологических правил.

Морфология вместе с синтаксисом составляют грамматику; но этот последний термин часто употребляется и в более узком смысле, практически как синоним морфологии («грамматическое значение», «грамматическая категория»).

Ряд лингвистических концепций (особенно генеративистских) не выделяет морфологию как отдельный уровень языка (таким образом, после фонологии начинается сразу синтаксис).


Морфология включает в себя:

учение о словоизменении в языке, парадигмах, словоизменительных типах. Это обязательная составляющая морфологии, и именно с составления парадигм (таблиц склонения и спряжения) исторически началась лингвистика вообще (в древнем Вавилоне). Словоизмене́ние — образование словоформ той же лексемы, имеющих разные грамматические значения. Осуществляющие словоизменение морфемы называются фле́ксиями (лат. flexio — «сгибание», «переход голоса»). Частными случаями словоизменения является склонение по падежам (рука-руки-руке…). Множество словоформ одной лексемы образуют словоизменительную парадигму.


грамматическую семантику, то есть учение о грамматических значениях. Традиционно (например, в XIX веке) грамматическая семантика не включалась в морфологию; в разделе грамматик «морфология» приводились только способы образования форм и образцы парадигм, а сведения о семантике («употреблении» форм) относились к синтаксису. В XX веке грамматическая семантика является уже неотъемлемой частью морфологии.
учение о частях речи, при выделении которых задействованы не только морфологические (в узком смысле), но и синтаксические и семантические критерии.
учение о словообразовании, стоящее на границе морфологии и лексикологии.
общие понятия о морфологии
морфологическую типологию.

 

 

 

 

 

Сервисы склонения ФИО

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

Ручная обработка затратна (по времени и средствам) и ущербна (много ошибок у операторов, переспрашивание ФИО по буквам раздражает клиентов).

Существует ряд сервисов для решения подобных проблем (разного уровня эффективности для простых и сложных случаев)

Сложные случаи:

  • пол неочевиден даже для человека (Валя Дрозденко);

  • двойные фамилии (Демут-Малиновский);

  • несклоняемые женские имена и фамилии (Раисат Магомедова, Анна Друзь);

  • женские имена на -ль (Адель, Айгуль) — нет единого правила, как склонять такие имена;

  • склонение фамилии без потери гласной: Иван Плетень — Ивана Плетеня;

  • склонение фамилии на -онок/-енок с потерей гласной: Василий Лученок — Василия Лученка;

  • отчества с оглы/кызы (Магомедова Гюльчатай Абдурахман кызы).

Примеры сервисов и библиотеки:

 

 

kmp