Функция склонения слова
Необходима функция (ну или класс), которая склоняет слово по необходимому падежу. Долгое мучанье поисковиков дало только это. На паскале и только 1-ого склонения меня решительно не устроило. Делал её своими же кривыми руками, из чего опять же ничего не вышло. Все дело в том, что я пишу класс случайных событий для ролевого чата и для интерактивных событий (вставка случайного имени игрока), необходима эта программа, ибо текст вроде "Серый заяц выскочил из-за кустов, промчался мимо Вася ... " портят антуражность.
Подскажите хотя бы как организовать подобную функцию, а дальше как-нибудь сам справлюсь.. Шаблонный текст: Заранее благодарен. |
предлагаю хранить для имени персонажа варианты этого имени во всех падежах.
Например так: Код AS3:
Цитата:
В общем виде будет выглядеть так (вставить в кадр): Код AS3:
Цитата:
|
Такое не поможет ни разу. Вася выступает как пример. У нас ежедневно играет до 40 игроков (соглашусь, этого мало, но у них твинков по горло). Мы же не знаем что вернет функция getRandomUser(), ибо она возвращает случайное имя пользователя, который сейчас в локации. Нужно чтоб на учете исходного имени (которое при этом может быть и английскими буквами записано), программа сама генерировала нужное склонение.
|
Цитата:
В первом случае нужен лингвистический анализ, да еще и для разных языков. Во втором случае вы ручками забиваете базу на всевозможные имена и их падежи... |
Цитата:
|
если точность не требуется, то обычно если последняя буква гласная - имя женское.
хотя вряд ли это поможет ) |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Ну если играют только Клавдия Петровна с Авдотьей Некитишной, то да.. А Вовка и Серёга? Ваня и Петя? А если wtf666 и x0tT@6bl4?
|
При регистраций/созданий персонажа указывать пол. 100% качество ;)
|
Нет, это не из области фантастики, есть определенный набор правил по которым возможно предполжить варианты склонения. Другое дело, что есть исключения (например, кочерга :)) Но за один вечер такое не написать.
Я бы пытался определить к какому склонению (их всего 3 помножить на множественное + единственное число), потом определить, должно ли происходить чередование, или добаление / редукция корневых гласных - они тоже не происходят случайно, а только в определенных падежах, при определенном стечении обстоятельств, например если сонорная следует за глухой согласной, то между ними появится "о" в винительном падеже (придумано), и собственно все :) Ошибки, естесственно будут т.как иногда не возможно понять является ли суффикс или окончание таковыми, или это часть корня. Кроме того есть исторически сложившиеся исключения из правил, типа "кофе", который алгоритм распознал бы как второе склонение среднего рода с окончанием "е", в то время как это анахронизм и редуцированое окончание "ий" (кофий или кофей), соответственно, мужской род, но изза того, что анахронизм, и историческая фрома склонения больше не используется, слово теперь никак не склоняется. Но, для игры, я думаю, было бы даже веселее, если бы все слова склонялись "правильно", в том смысле, что у любого слова можно было бы образовать любое число и любой падеж :) Т.е. "правильно" склоняемый кофе был бы таким: И. кофе, мн. ч. кофи Р. кофе, мн. ч. кофи Д. кофю, мн. ч. кофям В. кофю, мн. ч. кофи Т. кофем, мн. ч. кофями П. для кофя, мн. ч. для кофев |
Цитата:
Посмотрев раздел "Грамматика" - http://ru.wikipedia.org/wiki/%D0%98%...BD%D0%BE%D0%B5 создается ощущение, что в принципе можно написать очень общую реализацию по анализу окончаний. Если в имени цифры и всякая ересь - то такое лучше оставлять без изменений ) Добавлено через 7 минут Другое дело, что имена могут быть не только существительными. Например "Весёлая" и "Анастасия" можно посчитать за существительное первого склонения, если анализировать только окончания. Тогда в данном случае у прилагательного будет менятся только последняя буква, вместо 2х... Добавлено через 11 минут я бы так "кофе" сопоставил с "море"-м. Тогда склонялось бы по-другому :) |
При регистрации считать, что имя указано в именительном падеже единственном числе, а то слова типа "неудача" иначе вообще никак не распознать (например "Неудача сегондя не было в школе, неудач идет за пивом").
Кстати, на счет кофе... да, тут же еще от ударения зависит... хм. Но море / горе кажется более подходящим примером :) |
Заюзать API Яндекса для склонения, раз на сервере все происходит и не париться.
|
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
Добавлено через 7 минут Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Мужские: Исайя (вообще куча библейских - Илья, Мойша и т.п.), Микула, Вакула, Вано. Их сотни. Русскоязычные пользователи - не значит с русскими именами. |
Цитата:
|
Цитата:
Эм, люди, а собсна мы тут вроде как обсуждаем не исключения, а программу... |
Цитата:
|
Цитата:
2. Кто говорил про экзотичность? Экзотичные по определению можно оставлять за бортом. 3. Не встречали Любовь, Илья, Никита? Я бы еще понял Адель, Сесег, Гоги. Речь была о Цитата:
|
Цитата:
Код:
Ип: Илья Наталья Катя Дядя Ляля |
Делал похожую штуку на шарпах. Задача была, правда, немного другая - сделать функцию, которая творила бы отчество по имени - но область одна и та же.
Решил задачу после долгих поисков по интернету - искал статьи по лингвистике. В результате нашёл правило, и задача свелась к анализу строки. Автоматом покрывало 95 процентов случаев. Остальные 5 процентов выходили ошибочными, но можно было пожаловаться на ошибку, и система добавляла предложенный пользователем результат в файл исключений (как в ворде: "добавить в словарь"). Вроде, такой вариант должен работать. А по поводу склонений... В школьном курсе по русскому что-то было про окончание слов при склонениях. |
Сразу скажу, что статью не читал, но может быть и подойдет, название многообещающее:
http://www.web-junior.net/sklonyaem-familiyu-na-php/ |
semenyakinVS, в принципе мне вот именно такое и нужно, но без добавлений исключений (ну все-таки не коммерческий продукт)
scarbo, php не владею и то, что там пишут, для меня выходит чем-то нипанятным. :) |
Часовой пояс GMT +4, время: 21:31. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.