Вернуться   Форум SAPE.RU > Система SAPE.ru > Пожелания пользователей системы

-->
Ответ
 
Опции темы
Старый 06.06.2007, 22:26   #11
Специалист
 
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 211
sEXEcutor скоро станет известен
По умолчанию

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

Код:
<?php

function no_doubles($text,$max=2) {

	$doubles = array();
	foreach (explode(' ', $text) as $word) {
		if (empty($doubles[$word])) $doubles[$word] = 0;
		++$doubles[$word];
		if ($doubles[$word] == $max) return false;
	}

	return true;

}

$out = <<<HTML
Приходить Петро до мамки і жаліється:
-Мене Галя обіжає, гуляти зі мною не хоче.
-Ану вдягайся, пішли до її батьків.
Приходять.
Мати: Ваша дочка не хоче гуляти із моїм Петрусем.
Батьки: Той що з того.
Мати: Петрику, знімай штани!
Петро: Мамо, та не треба.
Мати: знімай, кажу!
Петро: та може не треба?!
Мати: та знімай вже, гадська ти дитина!
Петро слухняно знімає штани.
Батьки: Ого!!!
Мати: От і я кажу "ого", а Галя Ваша - балувана.
HTML;

echo no_doubles($out) ? 'Повторов нет.' : 'Повторы есть.';

?>
Бросьте в меня камень, если это замедлит проверку на дубликаты.
Сейчас для словоформ напишу.
sEXEcutor вне форума   Ответить с цитированием
Старый 06.06.2007, 23:06   #12
Эксперт
 
Аватар для ffaust
 
Регистрация: 22.04.2007
Адрес: Sapelandia
Сообщений: 4,101
Вес репутации: 404
ffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущее
По умолчанию

2den78ru и sEXEcutor:
Цитата:
Сообщение от ffaust
..."на любую хитрую ж найдется .. с винтом", сейповским программерам только и занятий будет как латать дыры. Не верю я в эффективность такой фичи, начнутся глюки, пойдут скандалы... И потом, не забывайте: система заточена под О-ров, так что упрощения жизни ВМ-ов ждать не приходится, особенно если это будет связано с какими-то ограничениями свободы О-ров.
И хотелось бы, да врядли...
ffaust вне форума   Ответить с цитированием
Старый 06.06.2007, 23:47   #13
Новичок
 
Регистрация: 13.05.2007
Сообщений: 15
Вес репутации: 0
Alex_58 на пути к лучшему
По умолчанию

2 sEXEcutor
Это понятно, вот только надо чтобы этот кусок кода поставили на стороне сапе. Иначе ссылки добавляться в базу будут, а отображаться - нет... Только место занимать будут... или опять же - удалять ручками...
Alex_58 вне форума   Ответить с цитированием
Старый 06.06.2007, 23:51   #14
Специалист
 
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 211
sEXEcutor скоро станет известен
По умолчанию

Собственно, вот:
Код:
<?php

function has_doubles($text) {

	$maxdbl = 2;	// максимальное количество повторов
	$wordsize = 5;	// минимальная длина слова/слога, дубликаты которой ищутся

	$size = strlen($text) - ($wordsize - 1);
	for ($i=0; $i<$size; ++$i) {
		if (substr_count($text,substr($text,$i,$wordsize)) > $maxdbl)
			return true;
	}

	return false;

}

$out = "деревообрабатывающее предприятие,ландышь , лес, дерево.природа.дерево. станки";
echo has_doubles($out) ? 'Есть более 2-х повторов.' : 'Нет более 2-х повторов.';

?>
Функция проверяет ссылки на наличие дубликатов. В теле функции можно задать максимальное количество повторов (максимально 2) и минимальную длину слова/слога, дубликаты которого мы ищем (оптимально 5, при 4-х окончания глаголов -ются будут считаться дубликатами, в крайнем случае можно сделать список исключений).
Поиск ведется без регулярных выражений, потери в скорости минимальны.

Alex_58, так это и есть руководство к действию для Сапе :wink:
sEXEcutor вне форума   Ответить с цитированием
Старый 07.06.2007, 00:24   #15
Погулять вышел
 
Аватар для den78ru
 
Регистрация: 15.05.2007
Адрес: С-Пб! О/ВМ 50/50
Сообщений: 1,921
Вес репутации: 316
den78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущееden78ru - прекрасное будущее
По умолчанию

Эт называется - Не будите спящего програмера :)

Вообще то саповцы, как обычно, с шИротой размаха, имели ввиду под сложностью внедрение алгоритма семантики и грамматики + пунктуации.

Как раз по их амбициям :) И это действительно архи стожно! Даж гуглу в полной мере реализавать это не удалось.

Так, что лишний раз респект, но нам бы попроще чего.. хотя бы на откровенный бред, так что простенькое что-то типа предложеного выше вполне бы, ну для начала что ли :).
den78ru вне форума   Ответить с цитированием
Старый 07.06.2007, 00:49   #16
Banned
 
Регистрация: 17.04.2007
Адрес: Москва
Сообщений: 466
Вес репутации: 0
Alex007 - как роза среди колючекAlex007 - как роза среди колючекAlex007 - как роза среди колючек
По умолчанию

Цитата:
Сообщение от sEXEcutor
Функция проверяет ссылки на наличие дубликатов. В теле функции можно задать максимальное количество повторов (максимально 2) и минимальную длину слова/слога, дубликаты которого мы ищем (оптимально 5, при 4-х окончания глаголов -ются будут считаться дубликатами, в крайнем случае можно сделать список исключений).
Поиск ведется без регулярных выражений, потери в скорости минимальны.
Привет, коллега. Твоя функция честно выдает: нет более 2-х повторов. На радость порнографам всего мира. :)

Код:
<?php

function has_doubles($text) {

   $maxdbl = 2;   // максимальное количество повторов
   $wordsize = 5;   // минимальная длина слова/слога, дубликаты которой ищутся

   $size = strlen($text) - ($wordsize - 1);
   for ($i=0; $i<$size; ++$i) {
      if (substr_count($text,substr($text,$i,$wordsize)) > $maxdbl)
         return true;
   }

   return false;

}

$out = "порно Порно порно";
echo has_doubles($out) ? 'Есть более 2-х повторов.' : 'Нет более 2-х повторов.';

?>
Alex007 вне форума   Ответить с цитированием
Старый 07.06.2007, 00:54   #17
Специалист
 
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 211
sEXEcutor скоро станет известен
По умолчанию

PS Ну и ещё первую букву ссылок переводить в верхний регистр... (функция ucfirst)
sEXEcutor вне форума   Ответить с цитированием
Старый 07.06.2007, 00:57   #18
Специалист
 
Регистрация: 10.04.2007
Сообщений: 179
Вес репутации: 211
sEXEcutor скоро станет известен
По умолчанию

Цитата:
Сообщение от Alex007
Привет, коллега. Твоя функция честно выдает: нет более 2-х повторов. На радость порнографам всего мира.
ОК.

Код:
<?php

function has_doubles($text) {

   $maxdbl = 2;   // максимальное количество повторов
   $wordsize = 5;   // минимальная длина слова/слога, дубликаты которой ищутся

//	setlocale(LC_ALL, 'ru_RU.CP1251');	// можно попробовать, если версия PHP с неработающим strtolower
	$text = strtolower($text);
   $size = strlen($text) - ($wordsize - 1);
   for ($i=0; $i<$size; ++$i) {
		$line = substr($text,$i,$wordsize);
      if (!strstr($line, ' ') AND substr_count($text,$line) > $maxdbl)
         return true;
   }

   return false;

}

$out = "порно Порно порно";
echo has_doubles($out) ? 'Есть более 2-х повторов.' : 'Нет более 2-х повторов.';

?>
sEXEcutor вне форума   Ответить с цитированием
Старый 07.06.2007, 01:25   #19
Banned
 
Регистрация: 17.04.2007
Адрес: Москва
Сообщений: 466
Вес репутации: 0
Alex007 - как роза среди колючекAlex007 - как роза среди колючекAlex007 - как роза среди колючек
По умолчанию

Цитата:
Сообщение от sEXEcutor
ОК.
Работает.

А я делал по другому. Этот кусок убирает повторы больше одного раза, но без учета морфологии. Помещается исключительно ради идеи.

Код:
function foo($title) {
$title_arr = explode ( ' ', $title ); // строчку в массив

foreach ($title_arr as $string){

// ежели слово уже в массиве - пропустим
if (!@in_array(strtolower($string), $temp_arr))
{@$temp_arr[] = strtolower($string); @$temp_itog[] = $string;}
}
        return  implode ( ' ', @$temp_itog);
}
Небольшая модификация - и все будут довольны. Можно будет и количество повторов задавать... Цикл foreach - крайне быстрая штука. И никакой нагрузки, как кто-то там боится.

То есть из "Порно такое, поРно сякое, хрен знает какое порНо" получится "Порно такое, сякое, хрен знает какое" - даже осмысленно. :)

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

Если б удалось их уболтать на разрешение резать больше 2-х повторов слов в ссылке у себя на сайте, было б просто шоколадно.
Alex007 вне форума   Ответить с цитированием
Старый 07.06.2007, 23:13   #20
Эксперт
 
Аватар для ffaust
 
Регистрация: 22.04.2007
Адрес: Sapelandia
Сообщений: 4,101
Вес репутации: 404
ffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущееffaust - прекрасное будущее
По умолчанию

столько сегодня отстрелила криворуких, жуть! действительно корректных текстов - один на сотню в лучшем случае. да, при таком количестве кривых текстов действительно нужно несколько "степеней защиты", кроме "правил", о которых прошу, хорошо бы конечно не позволить дубли плодить, так что поддерживаю всеми лапами!
ffaust вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите помогите вставить код в ShopScript Cat_N Вопросы по работе системы 3 22.01.2010 14:35


Часовой пояс GMT +3, время: 08:15.