| Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии |
03.06.2010, 17:21
|
#1
|
|
добрый леприкон
Регистрация: 05.03.2009
Сообщений: 365
Бабло: $45938
|
Подмешать кеи в цепи маркова
Есть скрипт
PHP код:
<?
Class MarkovChains{
var $prepared = array();
function MarkovChains($source){
$source = strtolower($source);
$source = str_replace(array ("? ", "! "), ".", $source);
$source = str_replace(array (" -", "- ", "\t", "\r", "\n", "|", "&", '\\', '/', " :", " ;", "©", "•"), ' ', $source);
$source = str_replace(array (")", "(", "]", "[", "'", "\"", '*', '•', '~', '{', '}'), '', $source);
$source = str_replace(" ,", ",", $source);
$source = preg_replace("~(\s+\d{1,2}\s+)|(\w*\.\w+)~", " ", $source);
$source = preg_replace("~\s+~", " ", $source);$sentens = explode('. ', $source);
$count_sentens = count($sentens);
for ($j=0; $j<$count_sentens; ++$j){
$sentens[$j] = explode(' ', $sentens[$j]);
$count_words = count($sentens[$j]) - 1;
for ($i=0; $i < $count_words; ++$i){
$prefix = $sentens[$j][$i];
$this->prepared[$prefix][] = $sentens[$j][$i+1];
}
}
$keys = array_keys($this->prepared);
foreach ($keys as $key){
$this->prepared[$key] = array_unique($this->prepared[$key]);
}
}
function GenerateText($size){
$result_count = 0;
for ($j=0; $result_count < $size; ++$j){
$prev = array_rand($this->prepared);
$num = mt_rand(5, 12);
for ($i=0; $i<$num; ++$i){
$sents[$j][$i] = $prev;
++$result_count;
$p = $this->prepared[$prev][mt_rand(0, count($this->prepared[$prev]) - 1)];
if ($p == '') $p = array_rand($this->prepared);
$prev = $p;
if ($prev == '') break 2;
}
}
foreach ($sents as $sent){
$count_word=count($sent);
if ($count_word<=2) continue;
if (strlen($sent[$count_word-1]) < 4) unset($sent[$count_word-1]);
$sent[$count_word-2] = rtrim($sent[$count_word-2], ",:;");
$sent[$count_word-1] = rtrim($sent[$count_word-1], ",:;");
$output .= ucfirst(implode(' ', $sent)).'. ';
}
$output = str_replace(' .', '.', $output);
return $output;
}
}
$source = file_get_contents("text.txt");
$markov = new MarkovChains($source);
$result = $markov->GenerateText(100);
echo $result;
и я - долбоеб 
Как подмешать сюда кеи?
Вроде все элементарно, но совершенно не понимаю как подмешать сюда кеи.
__________________
|
|
|
03.06.2010, 17:34
|
#2
|
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 2,116
Бабло: $277305
|
в последнем цикле for в самый его конец воткнуть примерно следующее:
$sents[$j][] = "keyword";
тогда keyword будет вставлятся в конец предложения
__________________
БЕЛЫЕ проекты держу в СИЛИКОНОВОЙ Долине, США: серверы vps и хостинг от $0.99
могу покодить клоаку или дорген заточить...но сейчас завал до конца января
|
|
|
03.06.2010, 17:37
|
#3
|
|
добрый леприкон
Регистрация: 05.03.2009
Сообщений: 365
Бабло: $45938
|
ТС
Цитата:
Сообщение от chesser
в последнем цикле for в самый его конец воткнуть примерно следующее:
$sents[$j][] = "keyword";
тогда keyword будет вставлятся в конец предложения
|
оу! Спасибо  понял в какую сторону смотреть.
__________________
|
|
|
03.06.2010, 17:40
|
#4
|
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 2,116
Бабло: $277305
|
не проверял, но что-то вроде такого:
PHP код:
..... for ($i=0; $i<$num; ++$i){ $sents[$j][$i] = $prev; ++$result_count; $p = $this->prepared[$prev][mt_rand(0, count($this->prepared[$prev]) - 1)]; if ($p == '') $p = array_rand($this->prepared); $prev = $p; if ($prev == '') break 2; $sents[$j][] = array_pop($this->kwds); // <<<<<<<<<<<<<<<<<<<<<<<< это вот надо добавить }
..... $source = file_get_contents("text.txt"); $markov = new MarkovChains($source); $markov->kwds = array('key1', 'key2', 'key3'); // <<<<<<<<<<<<<<<<<<<<<<<< и это $result = $markov->GenerateText(100);
это если в конец, если в начало, то перед циклом $sents[$j][0] = array_pop($this->kwds); и цикл начать не с нуля, а с 1
а еще можно кейворды адаптировать в текст  чтобы читалось красиво
__________________
БЕЛЫЕ проекты держу в СИЛИКОНОВОЙ Долине, США: серверы vps и хостинг от $0.99
могу покодить клоаку или дорген заточить...но сейчас завал до конца января
|
|
|
03.06.2010, 18:40
|
#5
|
|
Ебланнед
Регистрация: 07.04.2010
Сообщений: 1,622
Бабло: $0
|
запихиваешь весь текст в массив (например 100 слов = 100 элементов)
потом печатаешь:
1-50 элементов
кей
51-100 элементов
|
|
|
03.06.2010, 19:21
|
#6
|
|
Senior Member
Регистрация: 12.07.2008
Сообщений: 475
Бабло: $357856746
|
черт, тоже шас долблю етот скрипт.)))
но дело в том что скрипт как то одинакого генерит текст. брал текст 300-1000кб. он кагбе берет одни и и те же предложения и по ним генерит. в начале предложения часто повторяються одинаковы кеи. порефрешь скрипт и посмотри.
вот бы вытянуть с ред батона генерилку по кею. может у кого что есть готовое уже?) 
|
|
|
03.06.2010, 19:29
|
#7
|
|
С новым годом, епт
Регистрация: 03.03.2009
Сообщений: 14,382
Бабло: $796837202
|
Могу посмотреть.
Залей куда-нить рб, а то впадло искать.
__________________
RivaClick.com Биды вот такие, блеать! Напишу кегль в skype/icq: шмели, отбеливание, вонь и т.д. Дорого.
Приватная Фарма партнерка. Конверт жжот - Надо лить! ICQ 498856221
|
|
|
03.06.2010, 20:02
|
#8
|
|
добрый леприкон
Регистрация: 05.03.2009
Сообщений: 365
Бабло: $45938
|
ТС
Цитата:
Сообщение от Drunk Monk
Могу посмотреть.
Залей куда-нить рб, а то впадло искать.
|
в личку кинул
__________________
|
|
|
03.06.2010, 20:05
|
#9
|
|
С новым годом, епт
Регистрация: 03.03.2009
Сообщений: 14,382
Бабло: $796837202
|
yes/ins/functions.php
функция KarlMarks решает. Там для нее всякие переменные нужно понасоздавать (глобалы, в начале функции). Должно заработать.
__________________
RivaClick.com Биды вот такие, блеать! Напишу кегль в skype/icq: шмели, отбеливание, вонь и т.д. Дорого.
Приватная Фарма партнерка. Конверт жжот - Надо лить! ICQ 498856221
|
|
|
04.06.2010, 00:12
|
#10
|
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 2,116
Бабло: $277305
|
 а генереный текст(не скрипт) за деньги реально продавать?
может надо кому много уника? Текст хороший, лучше РБ-маркова, иногда со смыслом выходит.
язык любой можно, я, например, на голландском шпарю тексты и отлично, лучше русского выходит(наверно), только базу готовить надо заранее.
Если кому финансово заинтересовало - могу дать в личку ссылку на сервис. В паблик не могу показать, сервак сразу упадет, т.к. ресурсов это потребляет очень много.
__________________
БЕЛЫЕ проекты держу в СИЛИКОНОВОЙ Долине, США: серверы vps и хостинг от $0.99
могу покодить клоаку или дорген заточить...но сейчас завал до конца января
|
|
|
| Опции темы |
|
|
| Опции просмотра |
Линейный вид
|
|