как повысить качество генератора слов без словаря
Как повысить качество генератора слов без словаря?
Имеется код, но он не выдаёт качество как язык английского языка. Как же сделать без словаря понятные слова? Сымитировать, ссимулировать человеческий язык, качество языка.
program Hello;
uses
sysutils;
var
cons,vocs: ^string;
letters:array[1..120] of ^string;
i, cnt:integer;
begin
new(cons);
new(vocs);
for i:=1 to 120 do
new(letters[i]);
cons^ := 'bcdfghjklmnpqrstvwxz';
vocs^:='aeiouy';
randomize;
for i:=1 to 120 do begin
write(cons^[random(20)]);
write(vocs^[random(6)]);
if (random(2) = 0) then write(' ');
end;
cnt:=1;
for i:=1 to 120 do
begin
end;
dispose(cons);
dispose(vocs);
for i:=1 to 120 do
dispose(letters[i]);
end.
Ответы (1 шт):
Все упирается в частоты не просто букв, со сочетаний (слогов). Можно строить большие частотные таблицы 3-4-буквенных сочетаний. и генерировать по ним — только и объем памяти будет огромный, и работа такие таблицы построить еще та...
Но есть вариант попроще, кто в детстве Мартина Гарднера читал, знает :) — берем большой текст, выбираем букву. Идем по тексту, пока не встретим такую же, записываем ту, что идет за ней, и повторяем поиск уже новой буквы. Да, это не строго случайный текст, но...
Только так "русскоподобные" слова не получатся, надо хотя бы 3-4 буквы отслеживать для следующей. C одной буквы получится бред типа
и столь сло ня р жорекаморе гиру ненил Обней, стьсм мака Ралебо ойстьцол чтомнор Нучто со.
Если брать две и искать третью - уже получше
казместь и еднизу дождут вперевется, мнестные, ящил в гражданским движением. с жавше са ещетями, ям то, рукиновило и еще делист?
А вот с трех четвертую — считай, нормальный текст:
ие ни старый лучине будете? Дожденностическая активную борьбу с революционным рабочим и фермерским движением. в тюрьму
В качестве текста использованы "Гроздья гнева" Стейнбека.