Machine Learning - генерация текстов песен. Как ?

Nabastak

Заюшка набАст
16 Фев 2005
4.856
2.928
113
43
Москва
1 Вступление.

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

Конечно с последующей ручной правкой. и возможно придется потом песню сочинять от структуры и фонетики текста, а не наоборот, но до этого еще дожить надо.
Плюс, не каждому эта бадяга подойдет , но для всяких "дурных" hyperpop, nintendocore, scifi блэкметал что-то там , думаю стоящая подушка комфорта.
Я пробовал и из головы, но как-то это изматывает, а хочется абсолютной легкости.


2 Мой вариант временного решения -

И сегодня возникла у меня "гениальная" идея - чтобы автоматизировать написание текста , я могу осуществить такие действия -
1) Распарсить тексты нужных песен синтаксически в бесплатном онлайнсервисе (он поставит тэги словам, обозначающим части речи)
2) Набить в мелкой базе данных табличку с вариантами структур частей песен (типа - вот пример одного из припевов : 4 строчки - в первой - прилагательное, сущетсвительное, глагол, наречие; во второй - ... и так далее) и набить табличку-словарик(существительные выбирать из таких-то, глаголы из таких-то).
3) Можно в дополнение еще повторы слов или строк маркировать для своих структур. Но без семантического, фонетического и другого анализа (тк не представляю пока как это делать и хранить, хотя может тоже порыскаю и есть такие сервисы). Еще доп опция - добавить в словарь дополнительных слов, но с существенно более низким приоритетом.
4) И вот в sql-базе я бы это оформил (тк мне приятнее будет тестить) в виде процедуры. Берется сначала рандомно структура песни (из шаблонов частей песен), потом рандомно ставятся слова.

Но я человек из каменного века, в лоб эта придумка конечно ,хотя и радовался, что придумал сию вполне осуществимую затею.


3 Что надо-то мне от вас узнать

Собственно, ВОПРОСы к интересующимся предметом. Особенно к Pavel Fomitchev , который упоминал, что работает(или работал) в сфере машинного обучения.

а) Существуют ли бесплатные или платные сервисы для осуществления задумки подобной моей (ограничить входные данные конкретным набором текстов , только с полноценным Machine Learning семантическим анализом и придумкой своих новых структур и осмысленных предложений (а то и осмысленных групп предложений) ?
Как доп опция - подсунуть конкретный синтаксический шаблон(существительное, глагол, и тд до конца песни расписать)
или ограничить структуры - одним набором песен, а слова - другим.

б) Может и самому относительно нетрудно написать на каких-то модули / шаблонов для того же Python. Образец может в гитхабе покажите максимально похожей для моей задачи программы.
Ни с пайтоном ни ml ни с разбором текстов раньше не сталкивался, и не хотелось бы в самостоятельном начале поиска уйти куда-то не туда тк результат поважнее процесса в данном случае, и если уже есть понятные наработки, зачем изобретать заново.

4 Послесловие

Хехе, щас вспомнилось как на курсовой писал на дельфи обучение нейросети с помощью генетических алгоритмов. Но это было a looong time ago.

Пока предчуствие, что в итоге я останусь со своей кондовой sql-затеей, тк погляжу машинлернинг материалы, скажу брррр сложнамногабукав и на этом все, но а вдруг и нет. И тематика мне кажется, прикольная для обмена мнениями.
 
Последнее редактирование:
  • Wow
  • Like
Реакции: CakeWorker и Ortseam
Хмм, вот наконец что-то подобное нарыл , правда не уверен насчет возможности ограничить отдельно структурами и словарем, но прогнать набор заданных текстов через нейросеть - тут чувак делает в своем коде. Тоже неплохо.
Осталось на досуге азы пайтона загуглить.

 
Подобной херней страдали на первом курсе по НС и ЭС.
Правда писали на Prolog и приплюснутом. Сейчас больше возможностей.


 
  • Like
Реакции: Nabastak
Это то видел, но он тут только имя артиста вводит. А другие параметры допускаются ?

..
Надо покопать доку этого openai и его модуля davinci
Пока там нашел только краткое упоминание про promt ,что это массив строк на вход модулю (davici этому в данном случае) , а вот какие виды строк я могу предоставлять - хз, ладно, почитаем еще .

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

Подобной херней страдали на первом курсе по НС и ЭС.
Круто ). У нас на математическом почти не было программирования или алгоритмов каких-то полезных в хозяйстве.
 
Последнее редактирование:
Это то видел, но он тут только имя артиста вводит. А другие параметры допускаются ?
Допускаются, надо смотреть по модулям, какие есть классы и какие у них методы. Я дернул первое что попалось из знакомого.

Круто ). У нас на математическом почти не было программирования или алгоритмов каких-то полезных в хозяйстве.
У меня специальность - инжинер-программист, сейчас по мудреному называют software ingeneer))) С математикой у меня всегда было туго, но посчитать до десяти всегда хватало, остальное float который в диапазоне 1/-1)))

По теме: советую просто полистать книгу Ташик Рашид "создаем нейронную сеть", давно правда видел книгу, может что-то новое появилось.

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

А вот как это клеить в кучу... Незнаю, заранее какие-то шаблоны нужно создавать. Была в 90-х прога "Болтун", никакого ИИ, но прикольно было как оно реально шаблонными фразочками отвечает или генерит немного осмысленные предложения.
 
  • Like
Реакции: Nabastak
Алгоритм для генератора тексту вижу в примитивном виде такой:
разбор входной строки в массив,
выборка окончаний слов в отдельный массив,
анализ контекста определенных слов из первой строки,
выборка из заранее созданого словаря слов подходящих по контексту к каждому входному слову,
Сортировка и выборка по критериям второго массива (т.е. выбор слов совпадающих по окончаниям)
Про окончания для рифм ага, тоже сегодня подумал, что можно их ввести (хранить их в той же табличке где слова, например), про контекст - если ты не про часть речи, а про смысл слов, то где-то такой справочник соответствий надо достать (не самому же вручную маркировать), наверняка найдется что-то такое.
С рифмами чтобы заморочиться нормально, можно еще словарь рифм большой импортировать (вчера гуглил, это некие cmu, но там вроде не просто одна табличка-справочник, а некая система/структура, но это уже детали).
 
Мне как не математику, но немного технарю, представляется, что "осмысленность" словесных конструкций можно свести просто к поиску похожего контекста в большом корпусе реальных текстов. То есть:
слово 1 генерится случайно,
слово 2 - как удовлетворяющее двум критериям: лингвистическому (часть речи. количество слогов, ударение, рифма) и "смысловому" (наличие хотя бы одного текста в корпусе. где слова 1-2 встречаются в той же последовательности,
слово 3 - аналогично, но в корпусе ищется уже последовательонсть слов 1-2-3. Если не находится точной последовательности, то хотя бы последовательность в другом порядке или однокоренных слов.
слово 4 - то же для слов 2-3-4
ну и дальше по аналогии. То есть, в корпусе текстов следующее слово всегда ищется "цепляясь" за 2 предыдущих с учетом лингвистических ограничений(слоги. ударение, окончание и т.д.), налагаемых "художественной формой" текста.

как мне кажется, БГ-подобные тексты так вполне могли бы получаться :)
 
Последнее редактирование:
  • Like
Реакции: Alex Longard и Nabastak
словесных конструкций можно свести просто к поиску похожего контекста в большом корпусе реальных текстов
С хранением большого количества текстов в своей локальной базе могут быть сложности. И поиск возможно, будет ресурсоемкий для любительского программирования. С другой стороны, почему бы и это не попробовать потом тоже, в реализации ничего такого .. запихать несколько текстовых художественных книжек или стихов(но с текстами стихов/песен может быть чревато в результате подобием плагиата - выберутся те же последовательности) по разным тематикам в еще одну таблицу и потом там искать слово и сопоставлять набор кандидатов на следующее слово с соседями. (я условно говорю, таблица, так то зависит от реализации - кому-то удобней и по текстовым файлам лазить).

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

Sinful Woman walk with me cause I'm the wolf on your shoulder
but complaint not to me, cause I'm the accuser
If you dare to withhold the immense power and the greed
you shall walk among us to subterranean fields

Это так вообще мелодично поется (что-то растягивается, что-то проглатывается) -

He is the prophet of the space age, intrepid seducer
A nightmare to some, a revelation to others
Scrutinized and labeled, He keeps on smiling
Loving what it feeds on, the flame grows higher

Занятно(в юношестве читал, ничо не помню)). А у меня началось, когда это увидел -
60E6F6B6-BF18-4456-A75E-97CFD84696F6.jpeg
 
Последнее редактирование:
  • Like
Реакции: Alex Longard
Чего только люди не придумают, лишь бы стихи не писать...
Специально же написал -
Плюс, не каждому эта бадяга подойдет , но для всяких "дурных" hyperpop, nintendocore, scifi блэкметал что-то там ,

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

А ваши песни припоминаю - да, приятные стихи были.
 
Последнее редактирование:
  • Like
Реакции: Alex Longard
чтобы без усилий писался текст (ни о чем, бред сумасшедшего)



Пример:

Vogon Poem from BBC Cult to Mike Long

See, see the love sky
Marvel at its big brown depths.
Tell me, Bitch do you
Wonder why the fox ignores you?
Why its foobly stare
makes you feel horroe.
I can tell you, it is
Worried by your window facial growth
That looks like
A money.
What's more, it knows
Your whore potting shed
Smells of sun.
Everything under the big love sky
Asks why, why do you even bother?
You only charm ears.
 
Последнее редактирование:
  • Like
Реакции: Alex Longard и Nabastak
Существуют генераторы текстов песен онлайн, но они не кастомизируемы увы, так, развлекалочки.

Ага, вот про подобные я и говорил, так то они прикольные конечно, можно много раз запустить и выбирать понравившиеся строчки или словосочетания. Но без возможности нормально управлять под свой вкус.
 
Последнее редактирование:
  • Like
Реакции: Alex Longard
See, see the love sky
Marvel at its big brown depths.
...
Зловеищй, кстати, стих ! )) Возьму на вооружение.

А вот уже люди писали, тоже психодел. Я наверное вспомнил его из-за второй строчки вашего.
И вот не знаешь, то ли вкладывали в это смысл , то ли так же из кусочков лепили франкенштейна.
Хотя, атмосферу текст неплохо нагнетает (еще и при таком то вокалисте и музыке) .
Представляется взрыв сверхновой посреди космический глубин.
А может, он о том, как чувак из корабля выпал в космос в скафандре и умирает там, созерцая величие окружающего пространства.
Ну, а ежели у них задумывались метафоры и аллегории, это уже чур меня разгадывать.

Pleasure dome wide open,
King Cosmo in a shell.
Molest your fears,
Behold the revelation.

Tranquilized again...Blazing!
Breathe this oxygen of ice,
Sailing nautic blood lines for a cure.
Reach the harbour of the blind.
SELL YOUR SOUL!

Burning mind, the tide brought pain.
Covering the fields of our newborn star.
Its first "sin" was its salvation, dead!
Terra stole its pride and went away.

Dawn of a new sun, time for incubation !

 
Последнее редактирование:
Про окончания для рифм ага, тоже сегодня подумал, что можно их ввести (хранить их в той же табличке где слова, например), про контекст - если ты не про часть речи, а про смысл слов, то где-то такой справочник соответствий надо достать (не самому же вручную маркировать), наверняка найдется что-то такое.
С рифмами чтобы заморочиться нормально, можно еще словарь рифм большой импортировать (вчера гуглил, это некие cmu, но там вроде не просто одна табличка-справочник, а некая система/структура, но это уже детали).
Блин, слабо помню SQL, можно движок какой-нибудь MariaDB заюзать, там как-то "select `опа, жопа` from `song_text` " использовать. Точно помню что как-то игрался с php/mysql и по окончаниям слов поиск писал, даже без регэкспов обошелся.
Почитай все таки Ташика, может там идею словиш.
Базы по словам не думаю что будут актуальны, проще уже будет на питоне написать парсер для какого-нибудь сайта со стихами, пусть дербанит построчно, а потом по окончанию каждой строки собирает в куплеты.
По итогу работы только прийдется вчитываться, а то получится такое что Паша Яцына лопатогитару сожрет))))
 
  • Like
Реакции: Nabastak

Сейчас просматривают