LINUX.ORG.RU

Программно склонять имена собственные

 , , , , склонение


1

1

Здравствуйте.

Подскажите, пожалуйста, какой-нибудь аналог почившего Яндекс.Склонятор или библиотеку (желательно на cpp) для склонения русских имён собственных (фамилии, имени, отчества).

★★

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

А вот если нужно склонять ФИО всех жителей бывшего СССР, то это сильно проблематичнее.

Универсальный ответ про склонения слов русского языка - AOT

moroz
()
Ответ на: комментарий от panfutij

Сам запили. Раз плюнуть

запилить оно не сложно, если конечно словарь найти или самому вбить.

Может подскажешь, где такой словарик взять?

drBatty ★★
()
Ответ на: комментарий от drBatty

Зачем словарь? Правила склонения русского языка простые, несложно программируются. Если ФИО русское, то оно склоняется как обычное словосочетание. Род определяется по отчеству.

moroz
()
Ответ на: комментарий от moroz

Правила склонения русского языка простые, несложно программируются. Если ФИО русское, то оно склоняется как обычное словосочетание. Род определяется по отчеству.

ну во первых не всё так просто, и даже с ФИО тебе понадобится словарь.

Но что самое главное, в русском языке полно исключений, и особенно с ФИО (причина проста — чисто исконно русских практически нет. Да и не было никогда). Причём ошибки в данном случае _недопустимы_ (люди терпеть не могут, когда коверкают их фамилии).

drBatty ★★
()
Ответ на: комментарий от Harald

тут ИИ нужен, если в общем виде задачу решать

тут даже вполне себе естественный интеллект не поможет. Если конечно не переспрашивать (и не заставлять реципиента самостоятельно писать).

drBatty ★★
()
Ответ на: комментарий от drBatty

Если ФИО - русское, то оно склоняется по правилам русского языка. Правила эти простые, почитай учебник.

Конечно, уже для украинских такое не пойдет. Но иностранные фамилии часто не склоняются в русском вообще.

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

moroz
()

Во всех системах, с которыми приходилось работать, БД содержали поля для ФИО в разных падежах.

anonymous
()
Ответ на: комментарий от moroz

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

Ошибки недопустимы. Особенно, если информация попадет в документы или отчетность. Предлагать пользователю вариант склонения - зло, это снижает их вниматиельность.

anonymous
()
Ответ на: комментарий от moroz

Если ФИО - русское

а моё ФИО русское?

Правила эти простые, почитай учебник.

сначала сам прочитай. Про исключения. В частности про то, что в обычных словах вроде «стеклянный, оловянный, деревянный» исключения можно запомнить и сохранить, а вот в именах собственных — так нельзя сделать.

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

Сам понял, что сказал? В каких случаях пользователь может ИСПРАВИТЬ склонение ФИО?

drBatty ★★
()
Ответ на: комментарий от anonymous

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

Обычно это устраивает заказчиков. Если речь не об официальных документах, то все еще проще.

moroz
()
Ответ на: комментарий от drBatty

а моё ФИО русское?

Не зная ФИО, не могу сказать.

сначала сам прочитай. Про исключения.

Я читал. Исключений в правилах мало. Склоняющихся по-особому человеческих имен тоже не очень много, если ограничиться соответствующей языку национальностью. С иностранными именами-фамилиями все сложнее, конечно.

Сам понял, что сказал? В каких случаях пользователь может ИСПРАВИТЬ склонение ФИО?

Очевидно, в таких, в которых ему предоставили эту возможность.

moroz
()
Ответ на: комментарий от moroz

Не зная ФИО, не могу сказать.

вот и я о том. Алгоритм тоже не знает, а пятую графу отменили.

Посему твоё «if then» из прошлого поста не алгоритмизируемо.

Я читал. Исключений в правилах мало.

ну и что, что «мало». Понятия «мало» годны только для быдлокодеров.

Склоняющихся по-особому человеческих имен тоже не очень много, если ограничиться соответствующей языку национальностью.

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

Очевидно, в таких, в которых ему предоставили эту возможность.

вообще-то в большинстве случаев реципиент ну никак не может ничего исправить: что приехало, то и приехало.

drBatty ★★
()
Ответ на: комментарий от drBatty

Алгоритм тоже не знает

Ну если в твоей задаче надо склонять ФИО не имея ФИО - согласен, сложная задача.

ну и что, что «мало»

То, что их несложно учесть.

Ну тогда как ты можешь «ограничить по национальному признаку»?

А это уже от задачи зависит. Автор темы не озвучивал, для чего ему нужно, я и отвечал, что для русских ФИО задача решается несложно, для не только русских - возможны варианты.

На практике для русскоязычных систем нормально работает вариант с правилами. Большую часть реально встречающихся вариантов покрывает.

вообще-то в большинстве случаев реципиент ну никак не может ничего исправить: что приехало, то и приехало

Куда приехало? Что приехало? Зачем ехало-то? В этом обсуждении никакой конкретики не было.

moroz
()
Ответ на: комментарий от drBatty

Без словаря можно. С фамилиями на -ов/-ин всё ясно. С другими можно сделать предположение и показать пользователю, чтобы он подтвердил. Это такой полуавтомат. Если полностью автомат нужен, то надо словарь для тестов.

Но ТС точно не сказал, зачем ему

panfutij
()
Ответ на: комментарий от moroz

Куда приехало? Что приехало? Зачем ехало-то? В этом обсуждении никакой конкретики не было.

та я уже понял, что такая задача тебе не попадалась. Ну ладно, задача склонения числительных попадалась? Надеюсь — да. Вот и подумай, кто заметит ошибку «один минута»?

drBatty ★★
()
Ответ на: комментарий от panfutij

С фамилиями на -ов/-ин всё ясно.

я даже в этом не уверен.

С другими можно сделать предположение и показать пользователю, чтобы он подтвердил.

это той девочке, которая забивает данные в БД? Ну-ну… Да и то, это если как аноним советует — хранить в БД все склонения для каждой фамилии, и облегчить труд этой девочки.

А дальше система сама должна работать, причём без ошибок.

drBatty ★★
()
Ответ на: комментарий от drBatty

А как ваш яндекс работал?

Ещё мой дилетантский вариант: сгенерировать-проверить. Генерируешь предположения, гуглишь (с именем, желательно) точные совпадения в вебе (всё автоматом). Не канает?

panfutij
()
Ответ на: комментарий от drBatty

люди терпеть не могут, когда коверкают их фамилии)

Люди сами сплошь и рядом коверкают собственные фамилии. Например, пытаются мужские фамилии не склонять.

anonymous
()
Ответ на: комментарий от panfutij

С фамилиями на -ов/-ин всё ясно.

Только если знать происхождение фамилии. Никитиным, но Дарвином.

anonymous
()
Ответ на: комментарий от anonymous

если информация попадет в документы или отчетность

никогда не склоняйте имена и фамилии в документах. Это уже даже до чиновников доходят, щас в дипломах пишут в именительном падеже.

true_admin ★★★★★
()
Ответ на: комментарий от panfutij

про яндекс я не в курсе, он не мой.

А про интернет — оно конечно можно, но вот ошибки всё равно могут появиться.

В интернетах не все грамотные, к сожалению.

drBatty ★★
()
Ответ на: комментарий от anonymous

Люди сами сплошь и рядом коверкают собственные фамилии.

это неграмотные, они не нужны. Их можно просто «быдлом» называть, они всё равно русский не знают. Другое дело — грамотные, те обижаются. И их попаболь может дорого стоить.

drBatty ★★
()
Ответ на: комментарий от true_admin

согласен. Склонять фамиилии не нужно. Только вручную, да и то, лишь тогда, когда лично знаком с реципиентом.

drBatty ★★
()
Ответ на: комментарий от drBatty

та я уже понял, что такая задача тебе не попадалась

Внезапно - попадалась.

Ну ладно, задача склонения числительных попадалась?

И эта тоже.

кто заметит ошибку «один минута»?

Где?

moroz
()
Ответ на: комментарий от moroz

тут важен вопрос «кто?», а не где. Проблема в том, что заметит реципиент, например тот, фамилию которого исковеркали.

Проблема в том, что сложно придумать случай вставки своей фамилии в свой документ. Мне проще написать своё имя в нужном падеже, чем долбаться с запуском твоего ПО. Очевидно, что твоё ПО нужно лишь в случае, когда какая-то неизвестная фамилия вставляется в шаблон без моего участия, причём я этот шаблон не вчитываю(иначе мне проще самостоятельно вписать). Он сам уходит куда надо, и уже там обнаруживается ошибка. Это самый простой случай с двумя людьми и программой. Если документ готовлю я один, то мне нет смысла использовать твой софт для склонения моего и твоего имени.

drBatty ★★
()
Ответ на: комментарий от drBatty

Мне проще написать своё имя в нужном падеже

А некоторым не проще.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.