|
|
|
| Давно не оздавал темы:)
Проблема такая - нужно проверить несет ли строка какой-то смысл:) тоесть, ( даже незнаю как обьяснить )
Нужно отфильтровать сообщения типа "ЫыыЫыыЫыы" или "ffff ggjgjg kkkk":)
Решил делать так: подсчитать все символы ( сколько раз каждый повторяеться ) а вот потом даже незнаю как лучше зделать? | |
|
|
|
|
|
|
|
для: Poison
(06.09.2007 в 13:04)
| | >подсчитать ... сколько раз каждый повторяеться
А если будет так - "аылкрапелу адв ырвобимтпада ыурыо ва ао"? Это будет считаться смыслом? | |
|
|
|
|
|
|
|
для: sim5
(06.09.2007 в 13:13)
| | Я знал что вы это спросите:)
Нет конечно... но все-же избавиться хоть от половины мусора. | |
|
|
|
|
|
|
|
для: Poison
(06.09.2007 в 13:04)
| | Смотря для чего, если например для добавления в базу данных, то можно разными способами:
Например: Считать все символы, каждый символ записать в массив, за исключением пробелов, потом проверить строку (которая с пробелами) и прогнать его на количественное совпадение каждого знака из массива, или на подряд идущие, если есть 3и подряд идущие буквы, то 100%, что это слово не подходит под правила русского языка, потом решать заносить его или нет. А так же можно создать словарь, например с матерными словами и проганять на него каждый раз перед добавленим в базу данных.
Например для вывода: Можно ещё добавить проверку на начальный символ и последний, и одинаковы ли они по всему слову.
Короче одной прверкой не обойдёшься, нужен комплексный подход. | |
|
|
|
|
|
|
|
для: Poison
(06.09.2007 в 13:04)
| | Вот еще, можно сделать так, что сообщения не попадают в базу сразу, а идут к модератору и он решает, но это уже нужно возиться. | |
|
|
|
|
|
|
|
для: mogul
(06.09.2007 в 13:20)
| | Ну вот что набросал:)
<?
function repeatSymbols($str = "") {
$str = preg_replace( "~[\s]+~i", "", strtolower( $str ) );
$str_len = strlen($str);
$s = 0;
$result = array();
while ( isset( $str{$s} ) ) {
if ( isset( $result[ $str{$s} ] ) ) {
$result[ $str{$s} ]++;
} else {
$result[ $str{$s} ] = 1;
}
$s++;
}
arsort($result);
print_r($result);
foreach ( $result as $symbol => $count ) {
$percent = round( ( $count / $str_len ) * 100 );
if ( $percent >= 15 ) {
echo "опля:) ";
}
echo $percent;
echo "\n";
}
}
|
Упопрно не тестировал но строку sim5 ловит:) предпоследнее сообщение нет.
Пойду поем... и заобно подумаю. | |
|
|
|
|
|
|
|
для: Poison
(06.09.2007 в 13:33)
| | в русском могут встречаться и 3 и 4 согласные подряд | |
|
|
|
|
|
|
|
для: elenaki
(06.09.2007 в 13:38)
| | Это к чему?) | |
|
|
|
|
|
|
|
для: Poison
(06.09.2007 в 13:42)
| | автор: mogul (06.09.2007 в 13:18)
==============================
если есть 3и подряд идущие буквы, то 100%, что это слово не подходит под правила русского языка, | |
|
|
|
|
|
|
|
для: elenaki
(06.09.2007 в 13:38)
| | и даже три одинаковые гласные!
длинношеее | |
|
|
|
|
|
|
|
для: mogul
(06.09.2007 в 13:20)
| | >А так же можно создать словарь
"Словарь русского языка", Составитель С.И. Ожегов, Издание третье 1953 г., 52000 слов. | |
|
|
|
|
|
|
|
для: sim5
(06.09.2007 в 13:45)
| | да чего там - сразу искусственный интеллект. :) | |
|
|
|
|
|
|
|
для: elenaki
(06.09.2007 в 13:47)
| | кстати для ИИ мне это и нужно:)) ну почти ИИ:-D
есть бот "болтун" он обучаеться сам , тоесть тупо запоминает все что ему говорят:) вот я и делаю для него фильтр. | |
|
|
|