Предыстория
Честно сказать, по образованию я технарь, и никогда не увлекался лингвистикой. Конечно, знать языки интересно, но изучать их хлопотно. Да и вообще, технические науки мне казались понятнее и интереснее гуманитарных. Так было до тех пор, пока мне не потребовалось придумать новое доменное имя. Помучавшись, отсутствием хороших идей и озарений, отвергнув множество банальных вариантов, я подумал, что раз нет вдохновения, то его надо где-то искать, и решил подойти к этому вопросу технически. Я решил сделать генератор доменных имен.
Идея
Хорошая идея рандомайзера пришла быстро.В рунете уже есть почти два миллиона доменов, с хорошими и плохими названиями. Конечно, оценка «хорошее название»-«плохое название» индивидуальна, но есть что-то общее, что объединяет и те, и другие. Думаю, что над этим общим ломает голову уже не одно поколение лингвистов (а может уже все давно известно), но я-то решил подойти к вопросу технически, поэтому решил, что хорошие и плохие домены определяются сочетанием букв) Так вот, идея возникла следующая: разбиваем доменное имя на слоги, слоги от каждого доменного имени сохраняем в «словарь слогов». Имея словарь слогов, мы можем сочетать их в произвольном порядке, получая хорошие
доменные имена (при условии, что в исходной базе, по которой составлялся словарь, были хорошие имена). Кроме того, при таком подходе, можно генерировать не только доменные имена, но и все, что угодно. Например, ники, названия лекарств или имена.
Проблемы
Первые эксперименты дали оптимистичные результаты, но также показали, что все не так просто. Делая поправку на абсолютную случайность полученного слова, можно было сказать, что ник похож на ник, а название лекарства на название лекарства. Но вот выход хороших вариантов был маленький. К тому же на слух мы легко отличаем мужское имя от женского (исключения в расчет не принимаем), а вот сгенерированное мужское имя от сгенерированного женского отличить было трудно. К тому же, неестественные для языка слова (например, начинающиеся с мягкого или твердого знака, или с непроизносимых звукосочетаний типа мц-, нц-) надо как-то отсеивать или обозначать.
Решения
Поразмыслив еще, я решил, что основная проблема в окончаниях. Когда окончание у «искуственного» слова было похоже на окончание «естественного», само слово было похоже на естественное. Когда окончание уползало вперед по слову, или вообще убегало, слово трудно было назвать хорошим. Поэтому, я решил вынести окончания в отдельный словарь и составлять новые слова по принципу
[слово] = [произвольное сочетание слогов]+[произвольное окончание].
Такой принцип начал давать очень неплохие, на мой взгляд, результаты. Правда проблема с отсеиванием неестественных слов осталась. Для ее решения я решил попробовать сделать функцию для численной оценки слова: отличное слово должно получить 100 баллов, а то, что словом
нельзя считать вообще, должно получить 0.
Благозвучность
Полазив в интернетах, я нашел хорошее слово, описывающее нужную мне для численной оценки характеристику — «благозвучность». Но гуглопоиск на тему «алгоритмов оценки благозвучности» хороших результатов не дал. Поэтому решил поступить следующим образом: назначить «благозвучным» слово из чередующихся гласных и согласных, а «неблагозвучным» слово из букв одного типа. Тогда численную оценку благозвучности можно определить как отношение количества пар «гласная-согласная» к общему количеству пар букв. Для полноты оценки я ввел несколько дополнительных условий:
— запретные буквы (ъ, ь и ы для русского языка), в случае наличия которых в начале слова,
оно получает 0 баллов.
— за наличие в начале слова парных букв, баллы «искусственного» слова снижаются на 80%
— за наличие двух непарных согласных или гласных в начале слова, его баллы снижаются на четверть
В результате таких нехитрых вычислений, мы можем так или иначе ранжировать искусственные слова, отбрасывая плохие или выделяя хорошие.
Что дальше?
То, что получилось в результате моих экспериментов можно посмотреть на http://vidumschik.ru. Думаю, такой генератор может пригодиться многим. Но очень хотелось бы знать, не проводил ли кто оценки благозвучности слов? Или может быть кто-нибудь может предложить хороший алгоритм?
Все это сделано моим комрадом, который тут по известным причинам писать не может.
Честно сказать, по образованию я технарь, и никогда не увлекался лингвистикой. Конечно, знать языки интересно, но изучать их хлопотно. Да и вообще, технические науки мне казались понятнее и интереснее гуманитарных. Так было до тех пор, пока мне не потребовалось придумать новое доменное имя. Помучавшись, отсутствием хороших идей и озарений, отвергнув множество банальных вариантов, я подумал, что раз нет вдохновения, то его надо где-то искать, и решил подойти к этому вопросу технически. Я решил сделать генератор доменных имен.
Идея
Хорошая идея рандомайзера пришла быстро.В рунете уже есть почти два миллиона доменов, с хорошими и плохими названиями. Конечно, оценка «хорошее название»-«плохое название» индивидуальна, но есть что-то общее, что объединяет и те, и другие. Думаю, что над этим общим ломает голову уже не одно поколение лингвистов (а может уже все давно известно), но я-то решил подойти к вопросу технически, поэтому решил, что хорошие и плохие домены определяются сочетанием букв) Так вот, идея возникла следующая: разбиваем доменное имя на слоги, слоги от каждого доменного имени сохраняем в «словарь слогов». Имея словарь слогов, мы можем сочетать их в произвольном порядке, получая хорошие
доменные имена (при условии, что в исходной базе, по которой составлялся словарь, были хорошие имена). Кроме того, при таком подходе, можно генерировать не только доменные имена, но и все, что угодно. Например, ники, названия лекарств или имена.
Проблемы
Первые эксперименты дали оптимистичные результаты, но также показали, что все не так просто. Делая поправку на абсолютную случайность полученного слова, можно было сказать, что ник похож на ник, а название лекарства на название лекарства. Но вот выход хороших вариантов был маленький. К тому же на слух мы легко отличаем мужское имя от женского (исключения в расчет не принимаем), а вот сгенерированное мужское имя от сгенерированного женского отличить было трудно. К тому же, неестественные для языка слова (например, начинающиеся с мягкого или твердого знака, или с непроизносимых звукосочетаний типа мц-, нц-) надо как-то отсеивать или обозначать.
Решения
Поразмыслив еще, я решил, что основная проблема в окончаниях. Когда окончание у «искуственного» слова было похоже на окончание «естественного», само слово было похоже на естественное. Когда окончание уползало вперед по слову, или вообще убегало, слово трудно было назвать хорошим. Поэтому, я решил вынести окончания в отдельный словарь и составлять новые слова по принципу
[слово] = [произвольное сочетание слогов]+[произвольное окончание].
Такой принцип начал давать очень неплохие, на мой взгляд, результаты. Правда проблема с отсеиванием неестественных слов осталась. Для ее решения я решил попробовать сделать функцию для численной оценки слова: отличное слово должно получить 100 баллов, а то, что словом
нельзя считать вообще, должно получить 0.
Благозвучность
Полазив в интернетах, я нашел хорошее слово, описывающее нужную мне для численной оценки характеристику — «благозвучность». Но гуглопоиск на тему «алгоритмов оценки благозвучности» хороших результатов не дал. Поэтому решил поступить следующим образом: назначить «благозвучным» слово из чередующихся гласных и согласных, а «неблагозвучным» слово из букв одного типа. Тогда численную оценку благозвучности можно определить как отношение количества пар «гласная-согласная» к общему количеству пар букв. Для полноты оценки я ввел несколько дополнительных условий:
— запретные буквы (ъ, ь и ы для русского языка), в случае наличия которых в начале слова,
оно получает 0 баллов.
— за наличие в начале слова парных букв, баллы «искусственного» слова снижаются на 80%
— за наличие двух непарных согласных или гласных в начале слова, его баллы снижаются на четверть
В результате таких нехитрых вычислений, мы можем так или иначе ранжировать искусственные слова, отбрасывая плохие или выделяя хорошие.
Что дальше?
То, что получилось в результате моих экспериментов можно посмотреть на http://vidumschik.ru. Думаю, такой генератор может пригодиться многим. Но очень хотелось бы знать, не проводил ли кто оценки благозвучности слов? Или может быть кто-нибудь может предложить хороший алгоритм?
Все это сделано моим комрадом, который тут по известным причинам писать не может.