Описание технологии склонения

Алгоритм «Морфер» предназначен для склонения слов и словосочетаний на русском языке. Учитывает множество синтаксических конструкций, включая ФИО и произвольные именные словосочетания. Например:

По данной форме именительного падежа строятся формы всех остальных падежей единственного и множественного числа.

Достоинства

  • Скорость – основное преимущество компьютера перед человеком. Любой русский справится с задачей склонения, но не со скоростью несколько тысяч ФИО в секунду.
  • Простота. Программа не требует настройки, обучения склонению неизвестных слов, поддержания словаря исключений и т.п.
  • Полнота охвата лексики. Программа учитывает особенности склонения большинства общеизвестных слов, сама распознает их род и одушевленность.
  • Склонение «по аналогии». Малоизвестные и придуманные слова программа способна просклонять по аналогии с известными ей словами. В большинстве случаев результат совпадает с ожидаемым.
  • Корректная работа с буквой Ё. Пользователь может ставить или не ставить точки над Ё по своему усмотрению – программа примет любой вариант. В то же время, программа различает случаи, когда точки над Ё имеют значение. Например, слова все и всё, пометы и помёты, Королева и Королёва склоняются по-разному. При этом если дан контекст, позволяющий различить омографы, то программа это с успехом делает. Сравните: все наше и все наши.
  • Исправление латинских букв. Если вы случайно в фамилии Сидоров наберете латинскую букву C, программу это не смутит, и при склонении она будет заменена на русскую С. Преобразование в именительный падеж можно использовать для замены латинских букв на похожие по начертанию русские. Правда, иногда программа может перестараться. Например, английское слово HACK она просклоняла НАСКИ, НАСКОВ, НАСКАМИ, О НАСКАХ...
  • Полная поддержка Юникода. «Понимает» различные виды кавычек, дефисов, тире и даже греческие буквы, например: β-версия, γ-излучение.

Ограничения

  • При попытке просклонять принципиально несклоняемое слово (например, глагол) программа не выдает ошибку, а пытается просклонять его как сможет: например, глагол давать будет склоняться подобно существительному кровать.
  • Не реализовано склонение числительных, в основном из-за низкой востребованности этой функции.
  • Для ФИО формы множественного числа не выдаются.
  • Не всегда правильно склоняются словосочетания с наречиями (в будущем планируется устранить это ограничение).
  • Для слов из разряда singularia tantum программа строит несуществующее множественное число: молоко.
  • Сочетания «нарицательное + собственное» пока не поддерживаются, например: программист Петров, город Калининград. Склоняйте их отдельно.

Особенности национального склонения

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

Например, слово банки может склоняться как банок или банков – смотря что имелось в виду. Имя Карен может склоняться или не склоняться в зависимости от того, принадлежит оно мужчине, или женщине. Для разрешения подобного рода неоднозначностей предусмотрена возможность указания пола.

Бывает, что имена собственные становятся нарицательными. Например, месяц август получил свое название в честь римского императора Октавиана Августа. И наоборот, «обычные» слова становятся именами – как всем известные Вера, Надежда и Любовь. Такие «заимствования» порождают наоднозначности, например, Любовь – Любови, но любовь – любви. Программа делает все возможное, чтобы угадать, что имелось в виду. Попробуйте, например, просклонять:

Как видно из примеров, в сомнительных случаях программа ориентируется на заглавные буквы. Но что делать, если, например, пользователи вашего сайта любят вводить свои имена и ники маленькими буквами? Для этого есть возможность указать программе, что входная строка содержит ФИО или псевдоним, а не что-то другое. Таким образом неоднозначность будет устранена.

Рекомендации по выбору варианта предложного падежа

Большинство версий модуля склонения предлагают три варианта предложного падежа – с предлогом О/ОБ/ОБО, с предлогом В/НА и без предлога. В каком случае какой вариант больше подходит?

Вообще предложного падежа без предлога не бывает (на то он и предложный), поэтому первое, что нужно решить – это оставить предлог в несклоняемой части или поручить выбор программе? Рассмотрим такой случай. Даны названия языков: русский язык, английский язык, иврит, хинди и т.д. Нужно получить сочетания с предлогом НА: на русском языке, на английском языке, на иврите, на хинди... Здесь предлог всегда НА, поэтому берем вариант «предложный без предлога» и сами добавляем в начале НА: "на " + Предложный ("русский язык").

Другой пример. Ваша программа составляет именной гороскоп, заменяя названия знаков зодиака на заданные имена. Например, предложение «Телец — домашнее животное, чего определенно нельзя сказать об Овне» превращается в следующее: «Оля — домашнее животное, чего определенно нельзя сказать о Сергее» (т.е. «Телец» заменяется на «Оля», а «Овен» на «Сергей» с соблюдением падежей). Так как в данном случае предлог изменяется (об Овне – о Сергее), уместно использовать форму «предложный с предлогом О/ОБ/ОБО», оставив выбор предлога программе: "... чего не скажешь " + ПредложныйО ("Овен"). Однако следует иметь в виду, что выбор предлога (О, ОБ или ОБО) полностью определяется следующим за ним словом. Поэтому если между предлогом и склоняемым словом есть другое слово, например «Преданным Рыбам нравится заботиться о романтичном Овне», то в данном случае лучше использовать «предложный без предлога», оставив предлог в неизменяемой части: " ... о романтичном " + Предложный ("Овен").

И наконец, третий пример, когда форма предложного падежа является обстоятельством и отвечает на вопрос «где?» Например, в текстовой части геодезического плана необходимо подставить топоним в предложение «Объект расположен (где?)» – в доме, на участке, в саду, на улице Вернадского и т.п. В данном случае уместно доверить выбор предлога программе в зависимости от подставляемого слова – дом, участок, сад, улица Вернадского... и использовать «предложный с предлогом В/НА»: "Объект расположен " + ПредложныйВ ("участок №1"). Результат будет: "Объект расположен на участке №1".

 



Комментарии




2003 - 2012 © Сергей Слепов