Сравнение с аналогами
Выбирая продукт, решающий задачу автоматического склонения,
мы в первую очередь ожидаем от него высокого качества основной его функции – склонения.
Чем меньше ошибок будет делать алгоритм, тем меньше потребуется ручной правки,
тем больше уверенность, что он не подведёт в условиях "беспилотной" эксплуатации,
когда контроль со стороны человека невозможен.
Так как же выяснить, какой продукт лучше? В данной статье описывается методика и результаты
тестирования нескольких продуктов с аналогичной заявленной функциональностью.
На самом деле, каждый продукт индивидуален и реализует свой уникальный набор функций.
Но все из нижеперечисленных продуктов реализуют функцию склонения фамилий, имен и отчеств (ФИО).
Именно она и была проверена в данном исследовании.
Были протестированы следующие сервисы склонения:
-
Склонение фамилий, имен и отчеств по падежам.
aka Padeg.dll
Библиотека функций. Версия 3.3
Авторы – Сергей Плахов и Геннадий Покаташкин.
Win32 DLL, написанная на Дельфи, с экспортируемыми функциями и COM-интерфейсом.
-
Падеж. Версия "Крохотулька" (далее Крохотулька)
Автор – Железняков Юрий Юрьевич aka SuperJur.
Обработка на языке 1С. Впервые опубликована в 2002 г.
В целях тестирования алгоритм был портирован на C#.
-
Яндекс.Склонятор
Веб-сервис. Первая версия опубликована 8 сентября 2008.
- Морфер
.NET DLL, версия от 20.12.2008. Впервые внедрён в 2003 г.
Методика тестирования
Каждому из сервисов был предложен один и тот же набор тестов, где каждый тест состоит из:
- ФИО в именительном падеже,
- номера падежа,
- правильного ответа – ФИО в форме данного падежа.
Тест считается пройденным, если ответ сервиса на запрос (ФИО в именительном падеже, номер падежа)
совпадает с правильным ответом.
Мерой качества сервиса склонения принимается процент правильных ответов.
Тесты были составлены вручную, и в рамках тестирования предполагается их правильность.
На деле, конечно, они правильны с точностью до человеческих ошибок составителя.
При составлении тестового набора избегались примеры, допускающие неоднозначное склонение,
например, женская фамилия Смородина в родительном падеже может быть
(кого?) Смородиной или Смородины.
Обсуждение таких фамилий.
Всего в тестовом наборе около 1000 тестов. Все ФИО были взяты из Интернета –
из списков выпускников, военнослужащих, депутатов и т.п., поэтому есть уверенность,
что они не выдуманные, а принадлежат реальным людям.
Все ФИО трёхчленные, так как большинство сервисов (кроме Морфера) полагаются на отчество
при определении рода или требуют явного указания рода. Морфер напротив не требует
ни отчества, ни рода, а сам определяет род и выдаёт его на выходе.
При сравнении ответов были допущены некоторые послабления.
А именно, считались одинаковыми буквы Е и Ё,
игнорировались пробелы, вставляемые некоторыми сервисами в конце строки,
не учитывался регистр букв, не учитывалось наличие или отсутствие предлога у формы предложного падежа.
Например, при склонении «ИВАНОВ Илья Петрович» в творительном падеже
различные сервисы выдают следующие результаты:
Яндекс: | «ИВАНОВым Ильей Петровичем» |
Крохотулька: | «Ивановым Ильей Петровичем » (лишний пробел в конце) |
Морфер: | «ИВАНОВЫМ Ильёй Петровичем» |
Padeg.dll: | «Ивановым Ильей Петровичем» |
Все они признаются одинаковыми программой тестирования.
Важное замечание по методике тестирования.
Чтобы поставить все тестируемые сервисы в одинаковые условия, перед началом составления тестов
код всех сервисов замораживается, т.е. запрещается вносить какие-либо изменения после того, как тесты
становятся известны. Если всё же требуется внести изменение, все составленные тесты
должны аннулироваться, и необходимо составить новые. Чтобы не терять уже составленные тесты,
в базе хранится дата добавления каждого теста, а в программе
тестирования есть возможность указать дату, начиная с которой выбирать тесты.
Результаты
Итоговые результаты тестирования от 23.12.2008:
Примечание: результаты тестирования и тесты обновлены 6.01.2009 в соответствии с
обсуждением на сайте Padeg.dll
(начиная с сообщения от 05-01-2009 21:30).
Из тестового набора удалены фамилии Заяц и Киричек как неоднозначно склоняющиеся.
Примечание 2: результаты тестирования обновлены 24.06.2009 в соответствии с поправкой автора "Крохотульки" Sj
относительно реализации функции Лев в языке 1С (см. комментарий внизу этой страницы).
Программа тестирования вместе с тестами доступна для скачивания
и поэтому любой желающий может проверить эти результаты.
Те, у кого нет DLL Морфера, могут заменить её веб-сервисом,
с которым программа тестирования тоже умеет работать.
Скачать полный исходный код программы с тестами (424K)
В папке bin\Release есть уже собранный исполняемый файл.