Як би ви написали програму для генерування хайку? [зачинено]


78

Комп’ютерне хайку
Як би ви написали програму,
щоб зробити їх для вас


7
Hire an infinite number of monkeys. In addition to the complete works of Shakespeare, you'll get an infinite number of Haikus.
Jon B

1
@Jon B: But that would take infinitely long.
Bill the Lizard

+1 for the question, and the comments thus far.
Michael Haren

1
@Bill, If you had an infinite amount of time, you would only need to hire one very healthy monkey. If you hire an infinite number of monkeys, your literature will be produced at a rate limited only by the typing speed of a particularly brillant monkey.
joeforker

1
@Darknight, добре тому, що Хайкус, за визначенням, складається з 17 мора, а кількість мора (або тих) є кінцевою. Тому кількість комбінацій, яка, можливо, менше, ніж кількість фактичних хайкусів, дорівнює_мотам ^ 17. Це стосується лише письмового подання хайку, а не його значення. (Кількість значень насправді може бути нескінченною, навіть для набагато меншої кількості хайку, однак не вимагалося писати програму, яка буде інтерпретувати хайку, а лише писати її)
Unreason

Відповіді:


19

Не намагайтеся.
Поезія погано поєднується
з металом та бітами

Якщо говорити серйозніше, хороше хайку (і навіть погане хайку) набагато більше стосується стиснення значення та образності, ніж підрахунок складів. Зазвичай він також базується на темах, зібраних з природи. Випадкове утворення слів і підрахунок складів змусять вас виміряти безглуздя, але не поезію ...


6
I don't know. The search for meaning in randomness seems deeply human. What is a poem that had no meaning put into it, but only the meaning taken from it by the reader? Is it a model of secular humanism?
joeforker

"...syllable counting will get you measured gibberish, but not poetry." ... i thought telling the difference was what "reading poetry" was all about.
Mizipzor



10
  • порахувати склади
  • випадково генерувати слова
  • влаштовувати розумно

Це було б набагато краще без вашого коментаря. Це як би нагадувати глядачам, що "Останнє речення, знаєте, це було головним пунктом. Ви його зрозуміли?"
Мізіпзор

гаразд, добре, я видалю коментар, якщо ви видалите свій
Джейсон С

(FWIW моя була першою розумною відповіддю, тому я насторожився, щоб мене не проголосували)
Джейсон S

9

Хайку легко, що я буду відзначити
рішення добре задокументовані, і функції Rote
вони перестаралися і сирний
Coding занадто легкий
код мені лимерик, то я буду голосувати

// Я насправді люблю хайку


1
+1 за найкращу поезію у світі.
Фентон

Скільки годин знадобилося, щоб знайти з чим римуватись noteта vote?
new123456

@ new123456 пальто? рів? цитата? човен? козел? тоталізатор? плавати? Хорват? (гаразд, останній розтягується)
PaulMcG

@PaulMcGuire Гаразд, але код не плаває, правда? Я мав на увазі те, що римується в контексті;).
new123456

Ну якийсь код, безумовно, козячий ;)
BenjaminRH

5

Не всі хайку мають однакову кількість складів, але з цього слід починати.

Що стосується фактичного підбору слів, я думаю, що частини мови не будуть місцем, з якого я починаю. Натомість я б подивився на ланцюги Маркова і навчив би ваш словниковий запас на існуючих хайку.


марковський ланцюжок на пари або більше слів із хайкусів та іншої поезії, я думаю, це було б чортово добре!
nlucaroni 02

Насправді хайку мають однакову кількість складів, ось їх визначення: en.wikipedia.org/wiki/Haiku
Mnementh

Хм, прочитайте і це: en.wikipedia.org/wiki/Haiku#Contemporary_English-language_haiku "Використання трьох (або менше) рядків із 17 чи менше складів"
Джонік, 02

3
бах! Сучасне англійське хайку? яка лайно.
Кевін 02

5

У селі Хайку у нас є технологія, яка дозволяє легко зробити це різними способами. Одна ідея полягає в тому, щоб просто прочитати глобальну стрічку Twitter і виявити ненавмисні хайку. Оскільки на задній панелі також є словник, можна було б виробляти сумнівні хайку, але я думаю, що якості бракувало б.

Я думаю, якби у нас була система оцінки зірками, то, я гадаю, машинне навчання могло б бути використано для вирішення того, що є "хорошим".



2

"Передати свій настрій сімнадцятьма складами дуже складно ..." (Великий Джон Купер Кларк перевірив вулицю Бізлі , одну з моїх улюблених)

Наскільки складніше для комп'ютера? Логіка не знає настроїв :)


Тоді це набагато простіше - оскільки змінних було б менше, якби не було настроїв. Потрібно щоразу передавати байдужість.
Фентон,

2

Щоб зробити його читабельним, відокремте словник на іменники, дієслова, прикметники з кількістю складів.

Придумайте кілька шаблонів форми:

[Іменник] [Дієслово] "s"

[Дієслово] a (n) [Прикметник] [Іменник]

[прикметник] [іменник]

і обріжте свої словники під красиві слова.


2

впровадити генетичний алгоритм для генерування хайку, витягнутих зі словника, позначеного підрахунками складів, а потім платити людям за читання та оцінювати їх як функцію придатності [механічна турка допомогла б]. З часом ваша програма повинна розвинути кілька хороших.

РЕДАГУВАТИ:

GA, який вам потрібен,
еволюціонує зі швидкістю процесора,
якщо ви підготовлені


Я хотів би побачити реалізацію цього. Генетичні алгоритми мене дуже інтригують ...
Ерік Форбс, 02


1

Я шукав би синтаксичне програмування та лінгвістичне та намагався знайти бібліотеки для граматичної структури. Звідти має бути простий крок, щоб додати обмеження на кількість слів та кількість складів.


1

Деякі люди тут пропонували використовувати словник та генерувати послідовності слів за допомогою ланцюга Маркова . Це здається теоретично життєздатним рішенням, особливо якщо ви використовуєте ланцюг Маркова високого порядку (а не бі- або триграми).

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

Звичайно, вони не будуть абсолютно новими хайку з цим методом, але принаймні вони будуть дещо приємними для читачів.


1

Проаналізуйте існуючі хайку в реляційному порядку, як слово xx, вжите після yy n разів. Отже, при створенні можливість xx, що настає після yy, буде (n / сума підрахунку всіх слів, вжитих після yy). Таким чином він буде вибірково рандомізований і все ще може бути дійсним хайку.


Це гідний опис ідеї ланцюгів Маркова. Якщо слово y стоїть після слова x 75% часу у джерелі, тоді y буде обрано 75% часу у вихідних даних.
joeforker

Однак це працює краще з наборами з трьох слів: яке слово йде за цими двома словами.
ТІЛЬКИ МОЙ правильний ДУМКА

1

Напишіть свою програму для створення хайку японською мовою. Виміряти кількість складів буде набагато легше, крім того, ви зберігаєте вірність мові оригіналу поезії. Якщо у вас є гнучкість щодо проекту, чому б не зробити оригінальну японську - тоді покажіть англійське слово за словом буквальний переклад поруч. Це буде виглядати якнайменше загадково.

У будь-якому випадку, просто інший погляд на проблему.


1

Марковські послідовності
Силабічна база даних
Три рядки пітона


Мою haikuфункцію тут можна згорнути лише на 2 рядки, не враховуючи імпорту.
PaulMcG

0

Я б розпочав з якогось словникового файлу, який містить кількість складів кожного слова в ньому. Потім виберіть слова, що додаються до необхідних складів / рядків

Щодо того, щоб зробити це поезією, а не лише випадковими словами, я не маю уявлення.


Поезія проти випадкових слів, хто може визначити різницю? ;-)
joeforker 02

Програми перетворення тексту в мовлення постачаються зі словниками, що вимовляють.
joeforker 02

0

Окрім використання ідеї Яна про підрахунок складів, ви також можете класифікувати слова за частинами мови та генерувати фрази.


0

З семантичного сюжету історії використовуйте вибірку та трансформацію Фур'є. Виберіть значущі частини якогось детального опису, скороченого окремими словами, і залиште читачеві, щоб заповнити прогалини власною уявою


Будь ласка, розкрийте, як ви можете деконструювати історію як суму синусоїдальних або косинусних хвиль різної частоти.
joeforker 02

ну в чому полягає ідея відбору проб? дискретизація сигналу з частотою, яка принаймні вдвічі перевищує найвищу частоту в цікавому діапазоні. якщо у вас є така декретна інформація, ви можете відновити аналоговий вхід без втрат (у зацікавленому діапазоні)
Борис Павлович, 02

аналогічно цьому підберіть значущі дієслова, іменники та прикметники, які в якомусь описі є наріжними каменями, а все інше залишають. складіть ці слова у значущі масиви, і ви отримаєте хайку
Борис Павлович 02

0

Алгоритм виведення високоякісного хайку на комп’ютер працює приблизно так:

Етап налаштування

loop:
  find the email address of a world-renowned writer of haiku
  confirm that this person is willing to generate haiku on demand
until sucker^H^H^H^H^H^Hwriter is found

Фаза виконання

loop:
  wait for a haiku request
  when a haiku request is received, email the previously-stored master and ask for a haiku
  wait for the haiku to return by reply
  output haiku

Звичайно, можна вдосконалити цю фундаментальну архітектуру. Наприклад, етап установки може бути розширена , щоб створити пул хайку експертів. Фаза виконання може бути використана для генерації хайку під час простою та кешування їх відповідно до майбутніх потреб. Специфіка такої налаштування залишається вправою для учня.


-1

Я люблю це питання. Це дуже фантастично. Відповідь нижче.


Багато людей пропонують ланцюги Маркова, але я справді не думаю, що це було б можливо. Ви повинні розумно знати, чи є склад ФОНЕМАМИ, тоді ви повинні знати, де склад закінчується.

Якщо ви коли-небудь зробили це, я був би здивований.


У якийсь момент ви можете побажати, що насправді означають слова, які ви вживаєте в англійській мові.
ТІЛЬКИ МОЙ правильний ДУМКА
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.