Как стать автором
Обновить

Комментарии 43

НЛО прилетело и опубликовало эту надпись здесь
Не все живут в ДС :)
У меня тоже есть подобная реализация морфологического анализа на .NET, в т.ч. и с предсказанием.
Желающие могут потестировать здесь samodum.ru/demo.aspx
«крокодилицу» знает ;)
Кстати, странно, что у lemmatizer проблемы с крокодилицей. Я писал pymorphy на словарях с aot.ru (чтоб получить простую реализацию анализатора, которую легко модифицировать), сейчас проверил — проблем с крокодилицей у него нет.
«глокая куздра штеко будланула бокра и кудрячит бокрёнка» тоже понимает.
Круто :)
Это у меня основной тест для морфологических анализаторов.
А для синтаксических анализаторов красив знаменитый пример Р.Г.Пиотровского: «Об этом уже уже можно сказать, что он не уже молодого ужа». Судя по материалам aot.ru, у них в синтаксическом анализаторе предусмотрено отдельное правило (они называют синтаксические правила «форматками») для «борьбы» с «ужами».
Синтаксический анализатор в моей голове сломался на «уже уже» %-)
А проект lemmatizer.org жив? Я около полугода назад им писал что-то, но не получил ответа…
По поводу глаголов в анализаторе Сокирко — не замечал такой особенности, у меня все распознается одинаково. Правда я использую родную реализацию с сайта aot.ru, а не с lemmatizer.org.
По поводу лемматайзера — не знаю. Сайт жив :)

А по поводу анализатора Сокирко — не могу согласиться. Зайдите на aot.ru/demo/morph.html
Если ввести «прыгать», он пишет, что это инфинитив, а если «прыгаю» — Г[лагол].
Да, согласен =)

Забыл что провожу обработку результатов)
Что касается «массы тонкостей», которых очень много в любой естественной грамматике и с которыми неизбежно сталкиваешься при попытке выучить иностранный язык, выйдя из сензитивного возраста (лет так после 12-ти), не думаю, что здесь проблема в отсутствии «согласия в товарищах». В частности, вопрос о том, выделять или нет местный падеж (локатив) из предложного падежа (препозитива) — с теоретической точки зрения есть вопрос определения падежа, а выбор конкретной теории определяется задачей, которая изначально ставится при описании грамматики. Например, задача, которую ставит перед собой учитель в средней школе (научить учеников правильно писать безударные окончания существительных) требует теории с шестью падежами, задача автоматического построения parse tree требует морфологической теории уже как минимум с 12-ю падежами.

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

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

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

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

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

Но синтезу это совсем не обязательно мешает, к слову. Проверил, конкретно с ежиком у pymorphy (который базируется на словарях с aot.ru) проблем не было. Есть запись «ЕЖИК», у нее прописана правильная парадигма, больше ничего и не надо для синтеза, дополнительный мусор не мешает.

Что же касается основ/аффиксов и баз/флексий: если честно, с терминологией очень туго у меня, поискал в гугле, нашел «Формообразующими являются все флексии и некоторые суффиксы:...». В словарях с aot.ru флексии в этом смысле не хранятся.

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

в aot флексии включают и куски основы/корня, (например, для нивелирования чередующихся гласных).

порядка ~30000 флексий длиннее 6 букв, ~13000 длиннее 7
например:
«ившегося», «ьевичами», «ерстаемыми», «озмёмтесь», «зотрёмтесь»

тоесь это нифига не минимальные элементы, несущие синтаксические характеристики.
а у Зализняка именно минимальные, если я ничего не путаю.
возможно, это минимальные элементы _однозначно_ идентифицирующие синтаксическую категорию в контексте данной парадигмы.
Вы правы в том, что традиционного разбиения на приставку-основу-суффикс-окончание в словарях с aot.ru нет. Там слова могут разбиваться на 2 части (назовем их основой и аффиксом) любым образом, который обеспечит потом нужное словообразование и получение морфологической информации (при этом желательно максимальное повторное использование аффиксов). Термин «основа слова» используется там не в «школьном» понимании, а в сугубо утилитарном, разбиению на части не приписывается еще какой-либо дополнительны смысл.

Не очень сейчас представляю, как, словари, основанные на «классических» основах, суффиксах и окончаниях можно использовать для построения морфологического анализатора. А с таким «утилитарным» словарем простейший морфологический анализатор (без наворотов) можно уместить строк в 30 кода (коротких, включая комментарии и работу с вводом-выводом).
согласен, что такое «утилитарное» дробление вполне оправдано для анализатора.

но вот в рамках синтеза привязывать сюда семантику становится сложнее.

могу ошибаться, но мне кажется что в aot ещё и не полные парадигмы,
тоесть то, что в таблице с одним id не всегда охватывает все формы одного «слова».
(я сконвертил всё это в sqlite и не помню уже как называется эта таблица в оригинале)
А что понимается под синтезом? Просто изменение формы слова или что-то еще?

Если изменение формы слова, то дело упирается только в правильное перечисление всех правил в парадигмах. Задачи вроде смены части речи — да, там правильно не решить, только эмпирически. Ну и особенность насчет инфинитива, не знаю, как это себя проявит.

Я не встречал там неполных парадигм, но никакого автоматического тестирования на размеченном корпусе не проводил (нет у меня такого корпуса, а самому делать — квалификация не та и времени нет), поэтому, возможно, мне просто везет. Есть примеры какие-то?
под синтезом я понимаю трансляцию какой-нибудь семантической структуры в естественный язык.
например, для веб2.0ности, «рендеринг» RDF/OWL структур в естественный русский язык.

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

Но раз только согласовывать форму слова, то препятствия все преодолимые. В том же pymorphy уже есть метод inflect_ru, который умеет выборчно менять у слова какие-то морфологические характеристики, сохраняя остальные. Во всех анализаторах, основанных на словарях с aot.ru, будут проблемы с преобразованием инфинитива в глагол (обратное преобразование — без проблем). Но, думаю, все решается.

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

про неполные парадигмы мог попутать.

примеров сейчас не найду,
возился с этим довольно давно и результатов не сохранял.
www.ruscorpora.ru/index.html — это оно? На него тоже натыкался, но там доступ очень ограничен: только онлайн-поиск (насколько я понимаю, бесполезный для моей задачи), скачать размеченные тексты нельзя.
да. именно оно.

там где-то в «использовании» написано, что оффлайновая работа с корпусом вроде как будет возможна.
ну и намекается, что если очень надо можно к ним постучаться в индивидуальном порядке.
Ага, Вы правы, можно постучаться, не занимался этим по 2м причинам.

Делаю open-source проект (в свободное время, это причина 1), хочу прикрутить к нему автоматический мониторинг качества. По идее, это значит написать скрипт, который будет прогонять текст через анализатор и сравнивать результат с разметкой. Чтоб тест могли запускать все, кто правит код, текст должен быть в свободном скачивании. Вот тут-то индивидуальный порядок с идеологией open-source не очень вяжется, это причина 2) Сомневаюсь, что если они не выложили все в открытый доступ сами, то позволят сделать это мне.

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

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

Спасибо, много нового.
Спасибо за интересные материалы.

> Например, звательный падеж («Гриш! А Гриш!») Насколько знаю, он достаточно активен в украинском.

В отличии от русского, где звательный является новообразованием (нулевая флексия: мам! Тань! Вась! и т.д.) в украинском сохранился старый вокатив (на -ю, -о, -е, -є: мамо! Таню! Олеже! Юліє Володимирівно! :) и т.д.).

Так что явления хоть и параллельные, но не идентичные, тем более в русском звательный до сих пор имеет оттенок разговорности, что может понадобиться учитывать в контекте при переводе на украинский.
Т.е. получается, что в русском языке звательный падеж был, потом отмер, а сейчас образуется вторично, причём другим способом? Интересно, не знал.
«Отче наш»
То, что звательный падеж был, я в курсе. Я не задумывался, что он сейчас заново образуется, и именно про это я и сказал «интересно».
у вас в комменте получилась довольно неоднозначная синтаксическая конструкция :)
поэтому что именно вас удивило не очевидно :)
>> а сейчас образуется вторично

Уже образовался, причём, думаю, довольно давно. Сейчас новообразованный звательный падеж используется только в разговорной речи, так что осталось дождаться официального признания Институтом русского языка.
Уважаемые Василь Петрович и Ирин Ивановна! В ответ на ваш запрос сообщаем...

Своеобразно звучит :)
Очень интересно и легко читается.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории