dsolga: (Default)
[personal profile] dsolga
С некоторых пор я озадачилась вопросом: можно ли запрограммировать определение стихотворного размера? А то мне это кажется вполне возможным (поскольку я за всю жизнь написала программы этак полторы, на бейсике, в школе, больше 30 лет назад). Но почему-то реализовано только на примитивном уровне.
Вот по-вашему как, можно? Или мы исключительно на слух эти размеры определяем?

Date: 2025-05-18 12:59 pm (UTC)
From: [identity profile] efimpp.livejournal.com
ну по идее чат гпт должен уметь с этим справляться
он умеет говорить с правильными удаарениями
проблема в том, что он галлюцинирует на таких вопросах. я думаю что платная версия с хорошим промтом должна уже справляться.



Date: 2025-05-18 01:02 pm (UTC)
From: [identity profile] efimpp.livejournal.com
PS а вот чисто запрограммировать - нужен полный словарь ударений языка со всеми словоформами, или библиотека которая фактически его воспроизводит из меньшего объема исходных данных, тогда не вопрос.
можно даже попросить того же гпт написать код на питоне. он знает где библиотечку взять.

Date: 2025-05-18 01:06 pm (UTC)
From: [identity profile] dsolga.livejournal.com
Галлюцинации я как раз наблюдаю. А покупать подписку, чтобы проверить догадку, считаю роскошью.
"должен справляться" — то есть, ты представляешь себе алгоритм? Или почему должен?

Date: 2025-05-18 01:19 pm (UTC)
From: [identity profile] efimpp.livejournal.com
ну а как ты представляешь себе алгоритм себя определяющей размер? вот так будет действовать и он — считать ударные и безударные слоги в строчках.
заставить его меньше ошибаться можно попросив показывать промежуточные результаты.
вероятно grok справится с этим даже лучше чем чат гпт, но я с ним не работал.

Date: 2025-05-18 01:44 pm (UTC)
From: [identity profile] dsolga.livejournal.com
Алгоритм меня, определяющей размер, я представляю довольно смутно. Не знаю, что мне помогает любой стих классического размера проскандировать или ритмически отбить и "вписать" в этот размер.

Date: 2025-05-18 01:52 pm (UTC)
From: [identity profile] efimpp.livejournal.com
тогда олдскульный программист не справится :-)
думаю, что можно было бы научить сеть на большом корпусе стихов с известными размерами, но это не моя чашка чая.

Date: 2025-05-18 01:00 pm (UTC)
From: [identity profile] iad.livejournal.com

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

Date: 2025-05-18 01:09 pm (UTC)
From: [identity profile] dsolga.livejournal.com
Мне кажется, словаря ударений ей не хватает. Трудность, насколько я понимаю, в смещениях, в пиррихиях и спондеях.
Хотя, казалось бы, смещённых ударений в строке всегда меньше, чем правильных. И можно задать приоритет или что-то в этом роде.

Date: 2025-05-18 01:44 pm (UTC)
From: [identity profile] iad.livejournal.com

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

Date: 2025-05-18 01:54 pm (UTC)
From: [identity profile] dsolga.livejournal.com
И насколько трудно научить её сравнивать?

Между прочим, мы частенько можем, встретив в стихе незнакомое/сомнительное слово, определить его ударение по размеру стиха. Но это только благодаря тому, что у большинства слов мы знаем ударение. Программа, наверное, тоже так может. То есть ей достаточно знать ударение большинства слов, а не всех-всех-всех.
В наш человеческий алгоритм ещё подмешиваются всякие знания: например, что односложные служебные словы "так", "да", "вот" в одних контекстах бывают ударными, в других — безударными. Как этому программу обучить? Ввести какой-то статус неопределённости для таких слов?

Date: 2025-05-18 04:41 pm (UTC)
From: [identity profile] iad.livejournal.com

Совсем не трудно. Берем строку «Я помню чудное мгновенье», приводим ее в форму ◌●○●○◌○●○, где белый кружок — слог заведомо безударный, черный — заведомо ударный, а пунктирный — пока неизвестно. Сравниваем ее с моделями пяти размеров от хорея — ●○●○●○●○● до анапеста — ○○●○○●○○●; обнаруживаем соответственно 7, 0, 3, 2 и 5 расхождений с хореем, ямбом, дактилем, амфибрахием и анапестом и выбираем наименьшее из этих чисел.

Date: 2025-05-18 04:55 pm (UTC)
From: [identity profile] dsolga.livejournal.com

А как приводим в форму?

Date: 2025-05-18 05:06 pm (UTC)
From: [identity profile] iad.livejournal.com

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


Есть, конечно, одна трудность: существует и слово чудно́е, и нельзя исключить того, что в этой строке мы имеем дело с ним, тогда размер — амфибрахий. Тут-то пригодится парная строка: «Как мимолетное виденье» амфибрахием быть не может.

Date: 2025-05-19 05:40 pm (UTC)
From: [identity profile] dsolga.livejournal.com
Мне как раз интересно определять размер одной строки. А в вольных стихах, одностишиях, пословицах каких-нибудь это просто необходимо. Однако твой алгоритм выглядит вполне рабочим. Проверила на более трудных известных строках, например, вот таких: ◌○●◌○●◌◌◌◌◌◌ или ◌◌◌●○○◌●○◌○●.
Попыталась нарочно придумать строки, на которых программа могла бы сбиться с панталыку.
я ведь не то, что всегда, я не так, как обычно
◌◌◌◌◌○●◌◌◌◌○●○
— нет расхождений как с дактилем, так и с хореем. Но не думаю, таких строк много.
Edited Date: 2025-05-19 05:40 pm (UTC)

Date: 2025-05-18 01:21 pm (UTC)
From: [identity profile] efimpp.livejournal.com
а, речь о том, что размер не выдерживется жестко.
понял.
тут надо писать код который пытается найти наилучший способ натяжки совы стиха на глобус размера.
объяснить это промтами уже сложнее. написать код на основе библиотеке ударений должно быть не слишком все еще сложно.

Date: 2025-05-18 01:32 pm (UTC)
From: [identity profile] dsolga.livejournal.com

"не слишком все еще сложно" — со временем станет сложнее? Почему?

Date: 2025-05-18 01:39 pm (UTC)
From: [identity profile] efimpp.livejournal.com
вот он какой, естественный язык. А хочешь чтоб шажепете не глючил!
все еще не кажется слишком сложным, несмотря на усложнения требований.

Date: 2025-05-18 05:00 pm (UTC)
From: [identity profile] dsolga.livejournal.com
Хочу, конечно!
У нас, носителей естественного языка, скорость обработки информации куда меньше. И мы привыкли общаться устно, поэтому пишем, невольно подразумевая интонацию. А железяке эта проблема неведома.
В конце концов, люди могут строго разделить устную и письменную речь, употреблять более точные выражения и лучше понимать друг друга. А уж разделить режимы творчества и поиска-обработки фактов для человека вообще нефиг делать. Почему железяка этого не делает? Нарочно? деньги дерут, а корицу жалеют?
Edited Date: 2025-05-18 05:02 pm (UTC)

Date: 2025-05-18 01:41 pm (UTC)
From: [identity profile] dsolga.livejournal.com
"тут надо писать код который пытается найти наилучший способ натяжки совы стиха на глобус размера" — это понятно. Но поскольку бесплатные инструменты ошибаются примерно всегда, а онлайн-рифмоплёты просто игнорируют размер — полагаю, что это всё же весьма непросто. Хочу представить (на уровне обывателя), насколько непросто. И что легче: написать рабочий код или присвоить каждому стиху в огромной библиотеке размер?
У меня есть ещё догадка, что хороший олдскульный программист справился бы с такой задачей, но не имеет желания и/или возможности. А молодёжь попросту не умеет (и заодно не понимает, что такое стихи, размер и т.п.)

Date: 2025-05-18 01:57 pm (UTC)
From: [identity profile] efimpp.livejournal.com
мне кажется, что должно быть несложно угадать.
типа — в среднем столько ударений на столько слогов.
решаем двух или трехсложный.
далее смотрим как падает в парах тройках.
но да может сбиваться если посреди строки. тогда надо явно распознавать что происходит.
да начинает выглядеть как проект :-)

Profile

dsolga: (Default)
dsolga

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 13th, 2026 01:52 am
Powered by Dreamwidth Studios