Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Имеется скрипт, который формирует новый текст из предложений с помощью цепей маркова. Проблема в том, что в итоге на странице очень часто повторяются части предложения одного и того же. Даже, если делается, что мы по Маркову делаем 50 предложений из 1000 изначальных.

Требуется это как-то подправить, но! нельзя менять названия переменных никаких - они используются в дальнейшем в другой системе.

/**

* Функция разбивает входящий текст на слова, и складывает нвоый текст на основе цепей Маркова.

*

* @param type $text

* @param type $countp

* @param type $count_in

* @param type $key_parts_in

* @param type $key_type_in

* @return string

*/

function markov($text, $countp, $count_in = 0, $key_parts_in = 0, $key_type_in = 'query'){

# http://www.manhunter.ru/webmaster/358_generator_teksta_na_osnove_cepey_markova.html

$txt = preg_replace('~[^-0-9a-zа-яёaou?їіє\s!\?\.\,&;]~ui', '', $text);// Убрать из текста символы кроме цифр, букв и некоторых знаков препинания

$txt = preg_replace('~ {1,}([!\?\.\,])~', '\\1', $txt);// Подчистить пробелы перед окончаниями предложений

$txt = preg_replace('~([\n\r]+|[\s]+)~u',' ',$txt);// Лишние пробелы | переносы строк

$tmp = explode(' ', trim($txt));// Поделить текст на слова

if (count($tmp)

$words = Array();// Массив "звеньев"

// Заполнить звенья

for($i=0; $i

if ($tmp[$i+1]!='') {

$words[$tmp[$i]][] = $tmp[$i+1];

}

}

$words = array_map('array_unique',$words);

$start = Array();// Массив начальных слов в предложениях

foreach($words as $word => $links) {

if (preg_match('~^[А-ЯA-Z][а-яa-z]+~u',$word)) {

$start[] = $word;

}

}

// Сгененировать $countp предложений на основе исходного текста

$sentences = array();

for ($i=0; $i

while (true) {

$w = $start[array_rand($start)];

if (preg_match('~[\.!\?]$~',$w)) continue;

$sentence = $w.' ';

$cnt=1;// Количество слов в предложении

while(true) {// Сгенерировать предложение

// Переключить цепочку

$rand_key = array_rand($words[$w]);

$w = $words[$w][$rand_key];

$sentence .= $w.' ';

// Если слово находилось в конце предложения

if (preg_match('~[\.!\?]$~',$w)) break;

$cnt++;

if ($cnt>=18){

$sentence .= '.';

break;// Если генератор зациклился, то принудительно выйти

}

}

// Удачным считать предложение длиной 5-20 слов

if ($cnt>5 && $cnt

}

// Сгенерированное предложение

$sentences[] = $sentence;

10 лет назад
Art-Media
Андрей 
37 летРоссия
19 лет в сервисе
Был
год назад
  • Похожие заказы
  • Необходимо добавить дополнительные поля поста, чтобы при создании я мог указывать каждое из выпадающего списка, а так-же мог вести динамическую выборку по ним на сайте. Чтобы я указывал ряд фильтров из выпадающих полей, и пользователю ...

    Закрыт
    10 лет назад
  • $10

    Коллеги здравствуйте! Есть проста работа за скромную оплату + отзыв. Итак, есть сайт на modX EVO 1.0 форма записи на прием на eForm, нужно передать в эту форму данные из яндекс острова. Всего 3 переменные, которые ...

    Завершен
    10 лет назад
  • $50

    Добрый день. Есть CRM система для магазина автозапчастей, которую мы сами разрабатывали под свои нужны. Задача стоит в следующем. Надо сделать модуль "пользователи" точнее - менеджеры. т.е. администратор должен иметь возможность создавать новых пользователей (менеджеров) ...

    Закрыт
    10 лет назад
  • 1. Нужно реализовать средство для комфортной работы с таблицой – добавление строк, редактирование текста в ячейках. Таблица sortable (ru.wikipedia.org/wiki/Вик..., сейчас новые строки добавляются через стандартный редактор средствами wiki-разметки, т.е. таблица выглядит так: {| class="wikitable sortable" ...

    Закрыт
    10 лет назад
  • Есть дамп сайта с вебархива. Около 2 тыс. html страниц и других сопутствующих файлов. Уровень вложенности в папках разный. Нужно написать скрипт на PHP, который пробежится по всем папкам, и во всех файлах .html файлах вырежет ...

    Закрыт
    10 лет назад
  • $30

    Доброго времени суток уважаемые фрилансеры! Необходимо разработать небольшое приложение-конструктор который будет создавать фоторамку и сохранять в формате jpg. Оставляйте свои заявки! Прошу писать только тем программистам кто может обсудить проект со мной по скайпу в голосовом режиме.

    Закрыт
    10 лет назад