Кто-нить делал склонение слов руского языка ????
Например: Иванов Иван Иванович->Иванову Ивану Ивановичу->Ивановым Иваном Ивановичем и т.д.
Т.е. алгоритм принимает слово в 1-ом параметре, а во 2-м параметре мы указываем склонение.
Здравствуйте, flashpoint, Вы писали:
F>Кто-нить делал склонение слов руского языка ???? F>Например: Иванов Иван Иванович->Иванову Ивану Ивановичу->Ивановым Иваном Ивановичем и т.д. F>Т.е. алгоритм принимает слово в 1-ом параметре, а во 2-м параметре мы указываем склонение.
F>CMyClass a1; F>CString csWord = "Иванов"; F>CString csRes = a1.GetWord(csWord,"РП"); // родительный падеж
Есть несколько библиотек морфологии, основанные в том числе и на словарях (а без них никак).
Продаются за деньги.
А что надо?
1) Получить все мыслимые гипотезы о форме
2) Получить все мыслимые гипотезы о любых формах
3) Получить всё точно и правильно, ну типа по "искать" получить "ищу" или по "человек" получить "людей"
если одно из первых двух, то ещё есть шансы сделать самому, но не факт, что оч. хорошо.
Один из способов -- взять как-нибудь коммерческий Engine и из него набрать статистику что бывает
Ну а если надо хорошо, то там без словарной поддержки никак, так что проще купить какой-нибудь коммерческий.
Скажем поискать в интеренете что-то типа "генерация форм слова, engine" )
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, flashpoint, Вы писали:
F>Кто-нить делал склонение слов руского языка ???? F>Например: Иванов Иван Иванович->Иванову Ивану Ивановичу->Ивановым Иваном Ивановичем и т.д. F>Т.е. алгоритм принимает слово в 1-ом параметре, а во 2-м параметре мы указываем склонение.
F>CMyClass a1; F>CString csWord = "Иванов"; F>CString csRes = a1.GetWord(csWord,"РП"); // родительный падеж
Если данных не много — дешевле, чем реализовывать склонение.
А ведь ещё бывают и всякие исключения: моя фамилия, например,
склоняется только у представителей мужского пола. У женщин —
не склоняется.
Здравствуйте, Erop, Вы писали: E>Ну а если надо хорошо, то там без словарной поддержки никак, так что проще купить какой-нибудь коммерческий.
Без словарей действительно никак. В моем случае можно было каждинально уменьшать размер словаря(усложняя анализ программой). Но обучать мою программу все равно нуно было
E>>Ну а если надо хорошо, то там без словарной поддержки никак, так что проще купить какой-нибудь коммерческий. LM>Без словарей действительно никак.
Ничего подобного. Я когда-то написал такую dll (если найду — запостю), все делается абсолютно формально за одним исключением: склонение некоторых слов в винительном падеже зависит от того, одушевленное оно или нет.
Здравствуйте, SWW, Вы писали:
SWW>Ничего подобного. Я когда-то написал такую dll (если найду — запостю), все делается абсолютно формально за одним исключением: склонение некоторых слов в винительном падеже зависит от того, одушевленное оно или нет.
Да? И как "абсолютно формально" из "человек" получить "людей" ?
А ведь ещё бывают чередования, скажем бессмертное "ключик" -> "ключика", но "замочек" -> "замочка" А ещё бывает бука "ё"
А ещё бывают исключения и т. п.
Но если речь идёт о генерации правдоподобной гипотезы о винительном падеже единственного числа, по начальной форме существительного, то тогда конечно это можно сделать. Бкдет работать на большом очень проценте слов (ну скажем 95%)
А вот если форма нужна произвольная, а ещё хуже, если нужно поддержать и формы глаголов, то упс.
Ещё хуже если хочется поддержать словообразование, скажем из "офицерский" уметь получить "по-офицерски"
С уважением, Егор.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, SWW, Вы писали: E>>>Ну а если надо хорошо, то там без словарной поддержки никак, так что проще купить какой-нибудь коммерческий. LM>>Без словарей действительно никак. SWW>Ничего подобного. Я когда-то написал такую dll (если найду — запостю), все делается абсолютно формально за одним исключением: склонение некоторых слов в винительном падеже зависит от того, одушевленное оно или нет.
Алгоритм в студию. Как там вопил Станиславский?! Не верю!
Re: Склонение слов русского языка
От:
Аноним
Дата:
12.04.05 12:38
Оценка:
Здравствуйте, flashpoint, Вы писали:
F>Кто-нить делал склонение слов руского языка ???? F>Например: Иванов Иван Иванович->Иванову Ивану Ивановичу->Ивановым Иваном Ивановичем и т.д. F>Т.е. алгоритм принимает слово в 1-ом параметре, а во 2-м параметре мы указываем склонение.
F>CMyClass a1; F>CString csWord = "Иванов"; F>CString csRes = a1.GetWord(csWord,"РП"); // родительный падеж
Здравствуйте, Erop, Вы писали:
SWW>>Ничего подобного. Я когда-то написал такую dll (если найду — запостю), все делается абсолютно формально за одним исключением: склонение некоторых слов в винительном падеже зависит от того, одушевленное оно или нет.
E>Да? И как "абсолютно формально" из "человек" получить "людей" ?
E>А ведь ещё бывают чередования, скажем бессмертное "ключик" -> "ключика", но "замочек" -> "замочка" А ещё бывает бука "ё" E>А ещё бывают исключения и т. п.
SWW>>Ничего подобного. Я когда-то написал такую dll (если найду — запостю), все делается абсолютно формально за одним исключением: склонение некоторых слов в винительном падеже зависит от того, одушевленное оно или нет.
E>Да? И как "абсолютно формально" из "человек" получить "людей" ?
Речь шла о склонении существительных, а не о получении множественного числа.
По поводу "замочка" сейчас не помню, если найду — завтра напишу.
Здравствуйте, flashpoint, Вы писали:
F>Кто-нить делал склонение слов руского языка ???? F>Например: Иванов Иван Иванович->Иванову Ивану Ивановичу->Ивановым Иваном Ивановичем и т.д. F>Т.е. алгоритм принимает слово в 1-ом параметре, а во 2-м параметре мы указываем склонение.
F>CMyClass a1; F>CString csWord = "Иванов"; F>CString csRes = a1.GetWord(csWord,"РП"); // родительный падеж
Здравствуйте, flashpoint, Вы писали:
F> Кто-нить делал склонение слов руского языка ???? F> Например: Иванов Иван Иванович->Иванову Ивану Ивановичу->Ивановым Иваном Ивановичем и т.д.
Делал, и весьма успешно Только Вам нужен форум не "Алгоритмы", а "Готовые библиотеки":
Специализированная библиотека склонения слов и словосочетаний на русском языке.
Умеет склонять ФИО, ники, должности, названия отделов, предприятий и многое другое.
Доступна для .NET, Win32 (C++, Delphi, COM) и в виде веб-сервиса.
Алгоритм склонения лучший среди аналогов.
Здравствуйте, morpher, Вы писали:
M>Алгоритм склонения лучший среди аналогов.
А как их сравнивают? Я думал, что они уже давно умеют работать абсолютно точно...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском