Страница 1 из 2

Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 13:06
Roman Koff
Кто нибудь имеет опыт решения такой задачи?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 15:07
Proxy
опыта не имею, но просьба есть... Если будешь делать, то не будь Дуровым, сделай падежи кастомными, чтобы пользователь мог сам явно указать как звучит его ФИО в 6 падежах... Иначе от иностранцев дикий поток ярости ощутишь, людей сильно оскорбляет, когда их имена коверкают. Да и из-за бугра не надо никого тащить, чтобы потерпеть фейл, в России тоже имён много и редких (чего стоит одна "Даздраперма" (от "Да здравствует первое Мая!") или "Трактор"). Если эти имена ещё как-то можно склонять, то с женскими именами, заканчивающимися на согласную выйдет мягко говоря некорректно...
Я заведомо презираю такой подход, т.к. это дискриминация чистой воды. А ещё бывают случаи, когда паспортный стол накосячил (в послевоенное время такие посты свободно могли занимать малограмотные), к примеру так пострадала моя фамилия, в таком случае только носитель ФИО может знать как корректно принято склонять его ФИО.
Если мне требовалось создать шаблонный текст под произвольное ФИО, то я всегда старался подогнать текст так, чтобы везде выходил именительный падеж (к у англоговорящих), чтобы не напрягать пользователя.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 15:54
Antonariy
У меня есть функции склонения ФИО, но только в родительный и дательный.
Исходя из практики, пришел к выводу, что нельзя склонять на лету, нужно сохранять ФИО во всех необходимых падежах, потому что невозможно предусмотреть все исключения из правил. Можно при сохранении вычислять, но потом давать возможность пользователю исправить ошибки.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 16:24
Хакер
Antonariy писал(а):Исходя из практики, пришел к выводу, что нельзя склонять на лету, нужно сохранять ФИО во всех необходимых падежах, потому что невозможно предусмотреть все исключения из правил.

Пример исключения можно?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 16:43
Proxy
Хакер писал(а):Пример исключения можно?

Докучи: Нелли, Адель, Ассоль, Нинель ("Ленин" наоборот, тот же случай, как с "Доздрапермой" или братом и сестрой с именами "Ревал" и "Люция"), Эдит, Агарь, Мариам, Руфь, Таис, Юдифь... Это женщины всё вроде как, ага (ну и кстати вовсе не обязательно, что у мужчины мужское имя, унисекс ведь популярен). С фамилиями ещё сложнее, та же "Плесень" или "Калиберда".

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 16:47
Хакер
Этого мало. Напиши, как они скланяются глупой программой, и как должны (как склоняются умным человеком).

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 16:53
Proxy
Хакер писал(а):Этого мало. Напиши, как они скланяются глупой программой, и как должны (как склоняются умным человеком).

Тупая прога: И.П: "Мариам" -> Р.П. "Мариама" (неверно, допустим ещё для "Рэйчел", но для некоторых женских имён, заканчивающихся на согласную это было бы верно), но по-умному И.П. "Мариам" -> Р.Д. "Мариам" (не склоняется вообще). Это лишь одно имя, а их вагон и маленькая тележка и отыскать все (ага, есть очень непопулярные) просто невозможно.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 16:55
Хакер
Proxy писал(а):для некоторых женских имён, заканчивающихся на согласную это было бы верно

Пример?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 17:24
Proxy
Хакер писал(а):Пример?

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

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 17:53
Roman Koff
По минимому хочу сваять функционал для VBA (Access), а там, для моей задачи, нет возможности пользователям вводить варианты падежей, но, зато, и девиаций меньше (опять же для меня). Все фио только по русски.

Но в идеале хоцца, канечно, чтото типа http://morpher.ru/, на .net, но только для ФИО, пока ;)

Порывшись в "недрах сети" понял, что есть четко сформулированные правиля для общих случаев, и нужно иметь некий словарь исключений. Где бы такой словарь надыбать...

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 17:54
Хакер
Proxy писал(а):Похоже я заблуждался, вроде выходит, что для всех имён с твёрдой согласной на конце верно не применять склонения по падежам.

Нет, логика другая.

Определяем склонение по слову. Получается второе. Определяет род по фамилии. Если род не соответствует склонению — не склоняем.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 18:01
Proxy
Roman Koff писал(а):Все фио только по-русски.

Россия для русских?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 18:02
Roman Koff
Данные для муниципалитетов

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 10.02.2011 (Чт) 20:44
Antonariy
Хакер писал(а):
Antonariy писал(а):Исходя из практики, пришел к выводу, что нельзя склонять на лету, нужно сохранять ФИО во всех необходимых падежах, потому что невозможно предусмотреть все исключения из правил.

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

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 10:32
alibek
Кстати, следует учитывать, что отчества может и не быть.
К примеру, Амет-Хан (фамилия) Султан (имя).
Был у меня тоже код для склонения имен, и хотя он сбоев на тестовых данных не давал, но все-равно самое правильное — чтобы все склонения задавались пользователем вручную, но чтобы была кнопка "Заполнить".

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 11:23
Antonariy
Проверил. Из 765 проверенных ФИО на глаз не нашел ни одной ошибки. Алгоритм пасовал только там, где невозможно определить пол из-за отсутствия отчества.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 11:29
Roman Koff
Я к понедельнику сформирую реальный список из нескольких десятков тысячь ФИО, можно будет поупражнятьсо...

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 12:04
Хакер
Antonariy писал(а):Алгоритм

Так а какой алгоритм проверялся?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 12:12
Proxy
alibek писал(а):но чтобы была кнопка "Заполнить".
Присоединяюсь. Диалог с 6 текстовыми полями не должен ни у кого вызвать затруднений, а вот отсутствие возможности вызвать данный диалог может привести к фейлу...
Да а пол определять по ФИО вообще дело не благодарное, отчество вообще не обязательно. "Дин Ковальски" даже у человека вызовет недоумение при определении пола. Ну разве что исходить из принципов "Россия для русских" и отбросить вон всех антихристов да буржуев. Но знаете... я не одобряю такое.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 12:20
Хакер
Нет ничего плохого в том, чтобы дать пользователю указать свой пол.

Но заставлять пользователя просклонять своё имя во всех падежах — гадость. Тебя в жизни кто-нибудь просил об этом?

Да и, как ты там говорил, «Россия для русских»? Предположим, что мы делаем систему, которая в перспективе станет мультиязычной. Кроме русскоязычного интерфейса будут добавлены ещё, например, украинский, английский, казахский и так далее. В этом случае, склонять придётся уже не по правилам русского языка, а по правилам выбранного языка интерфейса. Причём, например, в казахском языке падежей 7 и они отличаются от падежей в русском.

Ты предлагаешь пользователю вводить около сотни слов, представляющую собой все варианты склонения его имени, фамилии и отчества во всех падежах для всех поддерживаемых языков?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 12:50
Roman Koff
В подавляющем большинстве случаев для российских нужд пол определяется по окончанию отчества (для русских отчеств - "а" - женский), есть еще "оглы" и "кызы", соотв. -- "сын", "дочь".

Какие еще варианты?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:07
Хакер
Улы (ұлы) — сын. Гызы — для языков, где произошло чередование.
Зада/зады — как принадлежность к знаменитому роду (редко).

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:13
Proxy
Хакер писал(а):Нет ничего плохого в том, чтобы дать пользователю указать свой пол.

Но заставлять пользователя просклонять своё имя во всех падежах — гадость. Тебя в жизни кто-нибудь просил об этом?

Да и, как ты там говорил, «Россия для русских»? Предположим, что мы делаем систему, которая в перспективе станет мультиязычной. Кроме русскоязычного интерфейса будут добавлены ещё, например, украинский, английский, казахский и так далее. В этом случае, склонять придётся уже не по правилам русского языка, а по правилам выбранного языка интерфейса. Причём, например, в казахском языке падежей 7 и они отличаются от падежей в русском.

Ты предлагаешь пользователю вводить около сотни слов, представляющую собой все варианты склонения его имени, фамилии и отчества во всех падежах для всех поддерживаемых языков?


Нет же, мои тезисы заключаются в следующем: даже если пол явно определяется, то необходимо дать пользователю возможность указать самому (ИИ только предположит), ФИО так же, показать вариант, дать пользователю в профиле исправить, если его не устраивает предложенный ИИ вариант. Я говорю про русский язык, а про иностранцев я написал лишь потому, что даже пол у иностранцев определить по имени легко (и возможно...), не то, что склонения. Да и в общем-то ФИО для ввода должно представлять из себя одно большое текстовое поле, имхо это самый корректный вариант (политкорректный, ага :D ).

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:19
Roman Koff
Опять же, это приемлемо, если человек сам вводит (корректирует) свои данные. А если есть список жителей района, и с него нужно делать различные отчеты, то такой подход не работает.

А вот чтонить из нейронных сетей нельзя ли сюда заюзать? Типа обучающийся автомат?

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:22
Хакер
Proxy писал(а):пользователю возможность указать самому

Пользователь не знает, как склоняются его ФИО в чужеродных языках.

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

Решение получается малополезным.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:30
Хакер
Roman Koff писал(а):А вот чтонить из нейронных сетей нельзя ли сюда заюзать? Типа обучающийся автомат?


Можно, только это из пушки по воробьям.

Род/пол обладателя имени известен? Если да, то я вообще не вижу никакой проблемы сделать склонятель с жестко зафиксированной логикой. Покажи мне проблемы или прими мою позицию.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:36
Хакер
Для расширения кругозора:
Википедия писал(а):Первая монография А. А. Зализняка — «Русское именное словоизменение» (1967) представляла собой опыт последовательного алгоритмического описания склонения существительных, прилагательных, местоимений и числительных в русском языке в его письменной форме. В работе затронуты важные теоретические проблемы морфологии, даны строгие определения понятий «словоформа», «грамматическое значение», «грамматическая категория», «грамматический разряд», «согласовательный класс», «род», «акцентная парадигма» и др. О грамматических категориях падежа, числа, рода и согласовательного класса А. А. Зализняком написаны специальные статьи, где эти явления рассматриваются и с типологической точки зрения.

Продолжением идеологии «Русского именного словоизменения» стал классический «Грамматический словарь русского языка» (1977, 4-е изд. 2003), где для 100 тыс. слов русского языка указана точная модель словоизменения (и предложена классификация самих этих моделей). Словарь, составленный А. А. Зализняком вручную, стал основой практически для всех компьютерных программ автоматического морфологического анализа (в том числе в информационном поиске, в машинном переводе и т. п.). Эти идеи также используются в русском Викисловаре для описания морфологии русских существительных, прилагательных, глаголов, местоимений и числительных.

Монография А. А. Зализняка и его важнейшие работы по общей и русской морфологии были переизданы в книге: А. А. Зализняк. «Русское именное словоизменение» с приложением


А вот сама система описания склонения.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:38
Proxy
Хакер писал(а):Тот же, с кем возникнут проблемы, то есть иностранец, не сможет указать, как склонять его ФИ, потому что впервые слышет о склонении.
Решение получается малополезным.
Иностранец по умолчанию не знает русский язык? В таком случае ему бы и отчёты всякие на русском языке присылать не к чему.
ЗЫ. Если пользователь не имеет возможности исправить ФИО, то нужно использовать по возможности только в И.П. Если это невозможно, то внизу документа должен быть указан электронный адрес, по которому он может обратиться к администратору для исправления казуса.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:44
Хакер
Proxy писал(а):Иностранец по умолчанию не знает русский язык?

Иностранец по статистике не знает хотя бы одного языка из многоязычной системы.

Re: Алгоритм склонения фамилии имени и отчества

СообщениеДобавлено: 11.02.2011 (Пт) 13:56
Proxy
Хакер писал(а):Иностранец по статистике не знает хотя бы одного языка из многоязычной системы.

А если он числится в кокой-то БД в РФ и кто-либо работает с его документами (склоняя/не склоняя), то он 100% не знает русский язык? Чтобы временно проживать в РФ вовсе не обязательно иметь гражданство РФ.