Генератор названий.

Говорим о чем угодно
Ответить
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Генератор названий.

Сообщение Vasaka »

Загорелось мне сделать генератор названий. :D
Примерно прикинул как делать.
Разделю все буквы на гласные и согласные.
Из них буду делать слоги.
Из слогов - названия.

Сделаю разные профили.
Сделать в профиле вес для каждой буквы и веса для слогов.
Кто-то одни больше буквы использует, кто-то другие.
Кто-то предпочитает слоги из двух букв, кто-то из трёх, кто-то из четырёх...
У кого-то короткие слова из одного-двух слогов, у кого-то длинные.
И так далее.

В общем интересная задачка и результат очень полезный.
Потом можно спокойно придумывать названия звёзд, планет, имена существ... и т.д
Причём, можно планете давать название в момент обнаружения.
Например, обнаружили её первыми Ур-Куаны, ну и дали ей название в соответствии со своими языковыми особенностями.
Или надо нам придумать имя для какого-нибудь Ур-Куана капитана, тоже самое.

Писал ответ Снежку личным сообщением, потом решил, что кому-то ещё может это показаться интересным и опубликовал тут.

:thanks:Спасибо за внимание. :D
Аватара пользователя
Snezhok
StarCon Team
Сообщения: 620
Регистрация: 12 ноя 2013

Генератор названий.

Сообщение Snezhok »

А я всё время думал - а как и кто такие мудрёные названия придумывает. Про генератор даже и не вспомнил :slow:
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Генератор названий.

Сообщение Vasaka »

Snezhok писал(а): 13 сен 2014, 16:43А я всё время думал - а как и кто такие мудрёные названия придумывает. Про генератор даже и не вспомнил :slow:

А скорее всего реально кто-то придумывает. Просто у меня с этим очень плохо. Мне проще генератор сделать.

Я как Линус Торвальдс:

  • Ему [Торвальдсу] было лет шесть-семь, когда он очень серьезно сказал мне: «Знаешь, я никогда не думаю новые мысли. Я думаю те мысли, которые люди уже думали до меня. Я их просто переставляю. А Сара думает такие мысли, которых раньше не было».
:mosking:
Аватара пользователя
Malin
Сообщения: 1967
Регистрация: 28 май 2023

Генератор названий.

Сообщение Malin »

Хорошая затея! Это может много где пригодиться!
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Генератор названий.

Сообщение Vasaka »

Хорошая затея! Это может много где пригодиться!

Да, я тоже так подумал.
Пишу потихоньку. :D
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Генератор названий.

Сообщение Vasaka »

Кому-то интересно поработать над созданием профилей для каких-то рас? Именно серьёзный тест провести, а не 20 минут побаловаться.
Заодно описать что получается, что не получается, какие недостатки, чего не хватает?

Основной алгоритм готов, просто пока все веса находятся в программе, а не из внешнего файла подгружаются. Ну и никакого интерфейса для изменения весов пока нет.
Если кто-то будет серьёзно тестировать и пробовать создать профили для каких-то рас, то я сделаю какой-то интерфейс взаимодействия с весами. А если нет, то мне самому пока и так достаточно. Продолжу уже ближе к непосредственной практической необходимости где-либо.
Аватара пользователя
Malin
Сообщения: 1967
Регистрация: 28 май 2023

Генератор названий.

Сообщение Malin »

Vasaka писал(а):Кому-то интересно поработать над созданием профилей для каких-то рас?

Не простая задача. Для того чтобы провернуть полноценную работу желательно быть не просто фантазёром, но и "человеком искусства". Ничто так не дополняет описание расы как карандашный набросок!
Не возьмусь, и так дел невпроворот, скорей бы со всем этим разобраться!
Однако, мне было бы любопытно глянуть алгоритм. Выложишь исходник, если конечно, он не под грифом секретности и печатью неразглашения? :o
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Генератор названий.

Сообщение Vasaka »

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

У меня всё для людей, всё даром. :D
Просто он пока не в том состоянии, чтобы выкладывать в общий доступ. Я тебе на почту пришлю.

Там сейчас не используются "й", "ь" и "ъ".

С твёрдым знаком всё просто. Его можно вообще не использовать.

С мягким тоже не сложно, но кое что надо будет дописывать. Надо будет сделать возможность его генерации только после согласных. И посмотреть после каких соглазных он не должен использоваться. Чтобы не было сочетаний "шь" которая по сути "щ", ну и так далее.

С "й" тоже вроде просто. Надо добавлять после гласных. Может какие-то исключения есть, сейчас с ходу не соображу.

Это всё я пока отложил, но если есть чёткое понимание какие ограничения по этим двум буквам, с удовольствием выслушаю.

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

Веса не должны быть меньше 1. Верхнюю границу можно выбирать любую (в пределах Int32)
Чем меньше число веса, тем реже будет генерироваться буква.
Аватара пользователя
Malin
Сообщения: 1967
Регистрация: 28 май 2023

Генератор названий.

Сообщение Malin »

Наконец-то добрался до ответа. Опробовал программу ещё на той неделе, но отвечаю только сейчас.
Vasaka писал(а): 24 сен 2014, 17:12Веса не должны быть меньше 1. Верхнюю границу можно выбирать любую (в пределах Int32)
Чем меньше число веса, тем реже будет генерироваться буква.

Однако при нулевом весе прекрасно работает, буква просто не встречается! То что нужно, когда хочется исключить букву совсем не убирая её из массива!

Vasaka писал(а): 24 сен 2014, 17:12Там сейчас не используются "й", "ь" и "ъ".
Это всё я пока отложил, но если есть чёткое понимание какие ограничения по этим двум буквам, с удовольствием выслушаю.

1). Буква "ъ" нужна, чтобы писать слова с отделением гласной от согласной, типа "Тъер", или использовать "'" -> "Т'ер". Последний вариант предпочтительнее
2). "ь" в принципе тоже может пригодиться для слов типа "Льон"
3). "й" может тоже пригодиться как заменитель "ь" -> "Лйон", но смотрится диковато, однако для слов типа "Олай" будет здорово смотреться
4). Может пригодиться также и слог "-" в словах типа "Тар-мол"

Также ты уже хочешь взяться за правила словообразования (типа мягкий знак только после гласных), я считаю для этого ещё рано. Нужно привести всё имеющееся в божеский вид и оставить отдельную функцию "постобработки" сгенерированного слова, как делегата. Чтобы программист использующий твой класс мог добавить своих правил не влезая в сам класс. Тогда можно будет свободно создавать "внешние" правила разной сложности хоть согласующиеся слоги типа "Ларналар" (повтор слога (лар))

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

PS: даже для тестового забега (создание тестовой расы) потребуется следующий минимум: знание VSС#, разобраться в теле программы, много, долго и не удобно перенастраивать в теле программы веса. За такое никто не возьмётся. Нужна программа с интерфейсом, это неоспоримо.
Аватара пользователя
Vasaka
MOSC Team
Сообщения: 3202
Регистрация: 24 янв 2011

Генератор названий.

Сообщение Vasaka »

Однако при нулевом весе прекрасно работает, буква просто не встречается! То что нужно, когда хочется исключить букву совсем не убирая её из массива!
С этим могут возникнуть проблемы. Надо доработать алгоритм, чтобы исключить все ошибки при использовании нуля.
Если использовать веса от 1 до 99, к примеру, то при 1 букву будет встретить практически нереально. Это ведь не процент, это вес буквы. Надо сложить веса всех букв. 1 * 100 / на сумму весов. Тогда получим процент.
Если взять средний вес букв за 50, то для гласных при весе один это будет соответствовать 0,2%, а для согласных 0,1%.
Но вообще, ноль конечно нужен.

1). Буква "ъ" нужна, чтобы писать слова с отделением гласной от согласной, типа "Тъер", или использовать "'" -> "Т'ер". Последний вариант предпочтительнее
Я думал ввести ещё один класс букв - разделители. Туда включить любые возможные разделители: ъ, -, '. Может ещё какие-то. И для нужных профилей использовать.

Нужно привести всё имеющееся в божеский вид и оставить отдельную функцию "постобработки" сгенерированного слова, как делегата.
Папа, а ты что сейчас сказал? :conf:
Где-то я слышал это слово, делегаты. :o

PS: даже для тестового забега (создание тестовой расы) потребуется следующий минимум: знание VSС#, разобраться в теле программы, много, долго и не удобно перенастраивать в теле программы веса. За такое никто не возьмётся. Нужна программа с интерфейсом, это неоспоримо.
Это само собой. Но это для себя я сейчас делать не буду, а если бы появился кто-то, кто бы решил серьёзно с этим покопаться, то сделал бы на winform с пользовательским интерфейсом для редактирования весов и хранением этого всего в xml файле.
Ответить