как повысить качество генератора слов без словаря

Как повысить качество генератора слов без словаря?

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

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 шт):

Автор решения: Harry

Все упирается в частоты не просто букв, со сочетаний (слогов). Можно строить большие частотные таблицы 3-4-буквенных сочетаний. и генерировать по ним — только и объем памяти будет огромный, и работа такие таблицы построить еще та...

Но есть вариант попроще, кто в детстве Мартина Гарднера читал, знает :) — берем большой текст, выбираем букву. Идем по тексту, пока не встретим такую же, записываем ту, что идет за ней, и повторяем поиск уже новой буквы. Да, это не строго случайный текст, но...

Только так "русскоподобные" слова не получатся, надо хотя бы 3-4 буквы отслеживать для следующей. C одной буквы получится бред типа

и столь сло ня р жорекаморе гиру ненил Обней, стьсм мака Ралебо ойстьцол чтомнор Нучто со.

Если брать две и искать третью - уже получше

казместь и еднизу дождут вперевется, мнестные, ящил в гражданским движением. с жавше са ещетями, ям то, рукиновило и еще делист?

А вот с трех четвертую — считай, нормальный текст:

ие ни старый лучине будете? Дожденностическая активную борьбу с революционным рабочим и фермерским движением. в тюрьму

В качестве текста использованы "Гроздья гнева" Стейнбека.

→ Ссылка