Реализуемые функции
Веб-сервис «Морфер» предназначен для склонения по падежам слов и словосочетаний на русском и украинском языках. Входное словосочетание может быть в единственном или множественном числе, но обязательно в именительном падеже. На выходе генерируется единственное и множественное число во всех падежах и автоматически определяется род.
Например, на входе:
ведущий инженер-программист III категории |
На выходе:
И. | ведущий инженер-программист III категории | ведущие инженеры-программисты III категории |
Р. | ведущего инженера-программиста III категории | ведущих инженеров-программистов III категории |
Д. | ведущему инженеру-программисту III категории | ведущим инженерам-программистам III категории |
В. | ведущего инженера-программиста III категории | ведущих инженеров-программистов III категории |
Т. | ведущим инженером-программистом III категории | ведущими инженерами-программистами III категории |
П. | о ведущем инженере-программисте III категории | о ведущих инженерах-программистах III категории |
Род: мужской |
Число поддерживаемых типов словосочетаний не ограничено фамилиями и должностями. Программа умеет склонять также названия подразделений, юридических лиц, географические названия и многое другое. Высокое качество склонения обеспечивается использованием словарей, в частности, «Словаря имен собственных» Ф.Л. Агеенко на 38 000 единиц. За 9 лет работы над «Морфером» было составлено более 27 000 примеров склонения для русского и более 11 000 для украинского языка. База примеров постоянно пополняется и используется для контроля качества продукта.
Веб-сервис также реализует функцию прописи чисел и денежных сумм в произвольном падеже, позволяющую формировать такие фразы как: «в течение 7 (Семи) календарных дней» («21 календарного дня»), «в размере 1000 (Одной тысячи) рублей» («десяти тысяч рублей») и т.п. Склонение единицы измерения также осуществляется автоматически. Нет необходимости указывать заранее все падежные формы ("рубль", "рубля", "рублей").
Быстрый старт: склонение должности
Программа для склонения должности будет выглядеть так:
Морфер = Обработки.Морфер.Создать();
Результат = Морфер.СклонятьРусский("Генеральный директор");
Сообщить("Родительный (кого?): " + Результат.Р);
Сообщить("Дательный (кому?): " + Результат.Д);
Сообщить("Винительный (кого?): " + Результат.В);
Сообщить("Творительный (кем?): " + Результат.Т);
Чтобы проверить, как работает этот код, скачайте и установите внешнюю сборку из .epf файла (Обработки, правый клик, вставить внешнюю обработку), скопируйте пример в Конфигуратор (Конфигурация, правый клик, «Открыть модуль обычного приложения», Вставить) и вставьте, например, в процедуру ПриНачалеРаботыСистемы. После запуска программы (F5) в окне сообщений появится директор во всех падежах:
Родительный (кого?): Генерального директора Дательный (кому?): Генеральному директору Винительный (кого?): Генерального директора Творительный (кем?): Генеральным директором Предложный (о ком?): о Генеральном директоре
Для украинского языка функция склонения называется СклонятьУкраинский:
результат = Морфер.СклонятьУкраинский("Лук'янченко Леонід Аркадійович");
Сообщить("Родовий (кого?): " + результат.Р);
Сообщить("Давальний (кому?): " + результат.Д);
Сообщить("Знахідний (кого?): " + результат.З);
Сообщить("Орудний (ким?): " + результат.О);
Сообщить("Місцевий (на кому?): " + результат.М);
Сообщить("Кличний: " + результат.К);
Результат:
Родовий (кого?): Лук'янченка Леоніда Аркадійовича Давальний (кому?): Лук'янченку Леоніду Аркадійовичу Знахідний (кого?): Лук'янченка Леоніда Аркадійовича Орудний (ким?): Лук'янченком Леонідом Аркадійовичем Місцевий (на кому?): Лук'янченку Леоніді Аркадійовичі Кличний: Лук'янченко Леоніде Аркадійовичу
Украинская версия пока лучше всего справляется с фамилиями, именами и отчествами. Работа над другими типами словосочетаний ведется.
Для улучшения качества склонения можно передавать признаки.
Признаки = Новый Массив();
Признаки.Добавить("name");
Признаки.Добавить("feminine");
результат = Морфер.СклонятьРусский("Щукина Ольга Александровна", Признаки);
На данный момент доступны след. признаки: name, feminine, masculine, neuter, animate, inanimate, common, plural.
Функция построения прописи числа в любом падеже
Функция ПрописьРусский (ПрописьУкраинский) решает две родственные задачи: получение прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующим числом (1 попугай, 2 попугая, 5 попугаев). Пример:
// Пример написания денежной суммы прописью в родительном падеже:
пропись = Морфер.ПрописьРусский(235, "рубль");
Сообщить(пропись.n.И + " " + пропись.unit.И);
Сообщить("в размере " + пропись.n.Р + " " + пропись.unit.Р);
Результат:
двести тридцать пять рублей в размере двухсот тридцати пяти рублей
Функция принимает два аргумента:
n – целое положительное число.
unit – единица измерения – слово или словосочетание в именительном падеже единственного числа: «рубль», «доллар США», «календарный день», «новое письмо» и т.п. Если слово употребляется только во множественном числе, то указывается форма именительного падежа множественного числа: «сутки», «брюки», «ножницы».
Результат, возвращаемый функцией Прописьрусский, содержит два набора падежных форм: один для числа (n), другой для единицы измерения (unit). Комбинируя соответствующие падежные формы n и unit, можно получить вывод «суммы прописью» на любой вкус:
235 рублей Двести тридцать пять рублей 235 (двести тридцать пять) рублей и т.п.
Комбинировать имеет смысл только соответствующие падежные формы n и unit – именительный с именительным, родительный с родительным и т.д. Например, для получения фразы "в размере N рублей (долларов, евро...)", берем родительный падеж (Р): в размере + двухсот тридцати пяти + рублей.
Склонение прилагательных по родам
Функция СклонятьПрилагательноеПоРодам склоняет данное ей прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:
результат = Морфер.СклонятьПрилагательноеПоРодам("уважаемый");
Сообщить("Женский: " + результат.feminine);
Сообщить("Средний: " + результат.neuter);
Сообщить("Множ. число: " + результат.plural);
Получим:
Женский: уважаемая
Средний: уважаемое
Множ.число: уважаемые
Авторизация
Для получения доступа к тегам род, откуда, куда, где, а так же снять ограничение на кол-во запросов в сутки, нужно купить подписку на сайте http://morpher.ru/ws3/ И передать токен следующим образом:
Морфер.Авторизация("ваш токен");
Обработка ошибок
Вызовы функций веб-сервиса рекомендуется обернуть в блок Попытка / Исключение на случай отсутствия связи с веб-сервисом или других непредвиденных ситуаций. Сообщение об ошибке будет при этом выглядеть примерно так:
Ошибка инициализации модуля: МодульУправляемогоПриложения по причине: {Обработка.Морфер.МодульОбъекта(138)}: Ошибка: Не найдено русских слов. ВызватьИсключение("Ошибка: " + Данные.message);
В данном случае ошибка возникла из-за того, что склоняемая строка не содержит ни одного русского слова. Другой возможный случай – когда склоняемая строка содержит количественное числительное («тридцать три коровы»). Такие словосочетания программа не обрабатывает, выдается ошибка.
Совместимость и устранение неполадок
Модуль выпускается в двух вариантах для 8.3.16 и 8.2.?. Версии отличаются только тем, что версия 8.3.16 использует встроенный десериализатор JSON.
Оперативное исправление ошибок склонения
Склонение как языковой феномен изобилует неоднозначностями, особенно в области имен собственных. В городе Москва или в городе Москве? В республике Корея или в республике Корее? В Тушино или в Тушине? Обладатели «диковинных» фамилий часто не любят, чтобы их склоняли. Скажем, если у человека фамилия Груздь, он будет требовать, чтобы его фамилию не склоняли, часто вопреки правилам русского языка и всеобщему мнению. Но если он ваш начальник, то неизвестно еще, кто останется Груздём, если вы позволите себе просклонять его в договоре.
Не секрет, что алгоритм автоматического склонения тоже может ошибаться – не знать какого-либо слова или запутаться в сложной синтаксической структуре. Что делать, если машина склоняет не так, как надо, а документ должен быть на столе у начальника через 10 минут? Хорошо, если система позволяет вручную исправлять документ после его выдачи. Но исправлять фамилию начальника в каждом приказе тоже не дело. Традиционное решение этой проблемы (если руки дойдут до его реализации) – хранение падежных форм в таблице-справочнике, которая заполняется вручную.
Веб-сервис склонения предоставляет как раз такое «табличное» решение проблемы ошибок в склонении – только вам для этого ничего не нужно делать, все уже реализовано за вас – и база данных, и интерфейс для ее редактирования для двух языков, и проверка введенных вами данных профессиональным лингвистом. Достаточно зайти на страничку исправления ошибок и ввести нужные вам падежные формы (или исправить результат автоматического склонения). После этого веб-сервис сразу же будет склонять так, как вы указали – но только для вас. После проверки введенного вами примера администратором он станет доступен остальным пользователям веб-сервиса. Введеные исправления также используются для совершенствования алгортима склонения. Таким образом качество склонения улучшается самими пользователями.
Установка веб-сервиса в вашей локальной сети
Многие пользователи веб-сервиса высказывали желание иметь «такой же сервис, только у себя», т.е. иметь возможность развернуть веб-сервис в своей локальной сети. Это решило бы проблему с использованием веб-сервиса на рабочих местах, где нет доступа к Интернету, а также проблему с законом «О защите персональных данных», требующим обеспечения конфиденциальности таких данных.
В ответ на эти пожелания был создан вариант веб-сервиса, допускающий установку на сервере в локальной сети предприятия или непосредственно на машине пользователя, если пользователь один. Новый продукт получил название «Морфер.Сервер». Он реализует те же функции, что и общедоступный веб-сервис, включая функцию поддержания пользовательского словаря, и работает в сотни раз быстрее из-за того, что локальная сеть быстрее Интернета.
Для переключения с «глобального» на «локальный» сервис достаточно изменить код следующим образом:
Морфер = Обработки.Морфер.Создать();
Морфер.СменитьСервер("comp001", false);
Здесь comp001 – это сетевое имя компьютера, где установлен веб-сервис. Во второй строчке изменять ничего не нужно.
Как приобрести и установить у себя локальный веб-сервис, описано на странице продукта: «Морфер.Сервер».
Альтернативы
Автор «Морфера» занимается вопросом автоматического склонения профессионально с 2003 года и постоянно следит за аналогичными разработками. Одним из заметных аналогов является веб-сервис Яндекс.Склонятор, но он склоняет только «имена, фамилии и ники». Вот список еще нескольких решений, разработанных для платформы 1С:
Дата публикации | Название | Автор | Тип | Язык | +/- |
---|---|---|---|---|---|
2002 | Падеж. Версия "Крохотулька" Юрия Железнякова | SuperJur | 1С | рус | |
01.10.2008 | Склонение ФИО | e.kogan | 1С | рус | +142/-0 |
27.02.2007 | V7NDS: Сервис поддержки склонений ФИО для 1С | NDeclin | ВК | рус | +59/-0 |
21.11.2010 | Учим внешнюю компоненту правильному склонению не только ФИО, но и должностей, и подразделений (ЗУП 2.5) | director04 | ВК + 1С | рус | +53/-0 |
06.02.2012 | Склонение ФИО и должностей | fixin | 1С | рус | +16/-0 |
16.06.2009 | ФИО и должности в винительном и дательном падеже (укр) | (Ivon) Ivon | 1С | укр | +16/-0 |
08.11.2007 | Склонение украинских ФИО, должностей и подразделений в семи падежах. DLL с поддержкой OLE. | tarasenkov | ВК | укр | +15/-3 |
* Количество плюсов и минусов дано на момент публикации.
В «Морфере» учтены многие пожелания к системам подобного рода, а именно:
- Возможность бесплатного использования функций склонения – имеется, до 1000 запросов в сутки. Этого количества более чем достаточно для частных лиц и малого бизнеса. Для более крупных клиентов имеется платный доступ.
- Простота развертывания. Не нужно включать в конфигурацию никаких дополнительных библиотек, регистрировать их в реестре и поставлять пользователям. Не нужны права администратора на пользовательских машинах.
- Возможность оперативного исправления ошибок. Многие пользователи отмечали как недостаток DLL невозможность оперативного исправления ошибок склонения. Даже в случае с «открытым кодом» на языке 1С, чтобы исправить одну фамилию, разбираться в этом коде (сразу вспоминается «Крохотулька») не у всех программистов найдется время и желание. Веб-сервис решает эту проблему, предоставляя пользователям веб-страницу для оперативного изменения склонения отдельных словосочетаний. Для этого не требуется вмешательства программиста – исправить ошибку сможет любой грамотный пользователь компьютера.
- Изменение по числам (просьба). Реализовано.
Кроме того, отличительными особенностями «Морфера» являются:
- Простой API: склонение всех типов словосочетаний производится одной функцией. Нет необходимости указывать тип словосочетания (ФИО, должность, подразделение...)
- Не требуется указание пола. Наоборот, программа автоматически определяет и выдает грамматический род словосочетания, по которому однозначно определяется пол лица.
- Высокое качество склонения, достигаемое использованием комбинированного подхода – алгоритмы для кодирования правил и словари для учета исключений. «Морфер» вобрал в себя несколько многотысячных словарей, годы кропотливой работы, учета замечаний и пожеланий пользователей.
Жду новых ваших пожеланий и замечаний. Именно они мотивируют меня развивать продукт дальше.