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

Алгоритмы, использующиеся при работе с естественными языками.
Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

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

Сообщение Roman Koff » 10.02.2011 (Чт) 13:06

Кто нибудь имеет опыт решения такой задачи?
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 10.02.2011 (Чт) 15:07

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

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

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

Сообщение Antonariy » 10.02.2011 (Чт) 15:54

У меня есть функции склонения ФИО, но только в родительный и дательный.
Исходя из практики, пришел к выводу, что нельзя склонять на лету, нужно сохранять ФИО во всех необходимых падежах, потому что невозможно предусмотреть все исключения из правил. Можно при сохранении вычислять, но потом давать возможность пользователю исправить ошибки.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 10.02.2011 (Чт) 16:24

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

Пример исключения можно?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 10.02.2011 (Чт) 16:43

Хакер писал(а):Пример исключения можно?

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 10.02.2011 (Чт) 16:47

Этого мало. Напиши, как они скланяются глупой программой, и как должны (как склоняются умным человеком).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 10.02.2011 (Чт) 16:53

Хакер писал(а):Этого мало. Напиши, как они скланяются глупой программой, и как должны (как склоняются умным человеком).

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 10.02.2011 (Чт) 16:55

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

Пример?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 10.02.2011 (Чт) 17:24

Хакер писал(а):Пример?

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

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

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

Сообщение Roman Koff » 10.02.2011 (Чт) 17:53

По минимому хочу сваять функционал для VBA (Access), а там, для моей задачи, нет возможности пользователям вводить варианты падежей, но, зато, и девиаций меньше (опять же для меня). Все фио только по русски.

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

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 10.02.2011 (Чт) 17:54

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

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

Определяем склонение по слову. Получается второе. Определяет род по фамилии. Если род не соответствует склонению — не склоняем.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 10.02.2011 (Чт) 18:01

Roman Koff писал(а):Все фио только по-русски.

Россия для русских?
Последний раз редактировалось Anonymous 10.02.2011 (Чт) 18:04, всего редактировалось 1 раз.
Follow the white rabbit.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

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

Сообщение Roman Koff » 10.02.2011 (Чт) 18:02

Данные для муниципалитетов
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

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

Сообщение Antonariy » 10.02.2011 (Чт) 20:44

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

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

alibek
Большой Человек
Большой Человек
 
Сообщения: 14182
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

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

Сообщение alibek » 11.02.2011 (Пт) 10:32

Кстати, следует учитывать, что отчества может и не быть.
К примеру, Амет-Хан (фамилия) Султан (имя).
Был у меня тоже код для склонения имен, и хотя он сбоев на тестовых данных не давал, но все-равно самое правильное — чтобы все склонения задавались пользователем вручную, но чтобы была кнопка "Заполнить".
Lasciate ogni speranza, voi ch'entrate.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

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

Сообщение Antonariy » 11.02.2011 (Пт) 11:23

Проверил. Из 765 проверенных ФИО на глаз не нашел ни одной ошибки. Алгоритм пасовал только там, где невозможно определить пол из-за отсутствия отчества.
Лучший способ понять что-то самому — объяснить это другому.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

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

Сообщение Roman Koff » 11.02.2011 (Пт) 11:29

Я к понедельнику сформирую реальный список из нескольких десятков тысячь ФИО, можно будет поупражнятьсо...
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 12:04

Antonariy писал(а):Алгоритм

Так а какой алгоритм проверялся?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 11.02.2011 (Пт) 12:12

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 12:20

Нет ничего плохого в том, чтобы дать пользователю указать свой пол.

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

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

Ты предлагаешь пользователю вводить около сотни слов, представляющую собой все варианты склонения его имени, фамилии и отчества во всех падежах для всех поддерживаемых языков?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

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

Сообщение Roman Koff » 11.02.2011 (Пт) 12:50

В подавляющем большинстве случаев для российских нужд пол определяется по окончанию отчества (для русских отчеств - "а" - женский), есть еще "оглы" и "кызы", соотв. -- "сын", "дочь".

Какие еще варианты?
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 13:07

Улы (ұлы) — сын. Гызы — для языков, где произошло чередование.
Зада/зады — как принадлежность к знаменитому роду (редко).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 11.02.2011 (Пт) 13:13

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

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

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

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


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

Roman Koff
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 495
Зарегистрирован: 17.09.2008 (Ср) 9:22
Откуда: От туда

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

Сообщение Roman Koff » 11.02.2011 (Пт) 13:19

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

А вот чтонить из нейронных сетей нельзя ли сюда заюзать? Типа обучающийся автомат?
Слава роботам! Убить всех человеков! Bite my shiny metal ass!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 13:22

Proxy писал(а):пользователю возможность указать самому

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

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

Решение получается малополезным.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 13:30

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


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

Род/пол обладателя имени известен? Если да, то я вообще не вижу никакой проблемы сделать склонятель с жестко зафиксированной логикой. Покажи мне проблемы или прими мою позицию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 13:36

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

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

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


А вот сама система описания склонения.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 11.02.2011 (Пт) 13:38

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16278
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

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

Сообщение Хакер » 11.02.2011 (Пт) 13:44

Proxy писал(а):Иностранец по умолчанию не знает русский язык?

Иностранец по статистике не знает хотя бы одного языка из многоязычной системы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2927
Зарегистрирован: 31.08.2007 (Пт) 4:41

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

Сообщение Proxy » 11.02.2011 (Пт) 13:56

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

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

След.

Вернуться в Лингвистика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList