KLIRIK.NAROD.RU > ГЛАВНАЯ ДОБАВИТЬ В ИЗБРАННОЕ | ПОМОЩЬ
 [ Главная ] [ Лютеранство ] [ Полезности ] [ Гуделки ] [ Ссылки ] [ Форум ] [ Гостевая ] [ Автора! ]  
 

ЧаВО по BayesIt!

Последнее обновление:

Zakladki.ru

Добавить сайт:

Ваш архив:

Ваш персональный архив на Закладках.ru

Другие места

Карта сайта >

Оставить отзыв >

Обсудить >

Письмо автору >

 

Некоторые пояснения и ответы на вопросы по BayesIt!


 

Как проследить за работой фильтра?

По умолчанию в фильтре включено журналирование. Место, где находится журнал фильтра, определяется в настройках. (у меня так исторически сложилось, что это C:\baesyan\baesyan.log

При включенных флажках настройки "текущее письмо" и "токены и их оценки" для прошедшего спама было отображено следующее:

22.5.2003 10:31:6 <200305211231.TAA23293@online.nsk.su>
Грэхем: 8.45832e-005
Грэхем (гибрид): 4.29796e-005
Уровень спама: 6.37814e-005
Значение для The Bat!: 0
Это среднее перечисленных значений
: -------------------------------------------
_H claimed: 0.0588235
#cc3300: 0.99
#ffffff: 0.97009
_H 212.20.0.126: 0.0769231
100.000: 0.99
_H Boundary: 0.99
windows-1251: 0.951219
_H Re: 0.0291744
_H x-authentication-warning: 0.0231362
_H nsk: 0.0361817
_H esmtp: 0.0551264
_H 8.8.8: 0.0689655
_H sender: 0.023118
_H root@online: 0.0769231
nsk: 0.0557621
: -------------------------------------------

Как сделать фильтр эффективнее?

Во-первых, всё зависит от качества базы. У меня, на данный момент, в ней около 2000 писем спама и 2000 не-спама. Такой размер и сбалансированность базы позволяют добиться очень высокой эффективности работы фильтра.

Во-вторых, метод фильтрации. Практика показывает, что обычный метод Пауля Грэхема (а не "гибридный" и не метод Гари Робинсона) дают наиболее "выразительный" и верный результат оценки. Я использую среднее значение Пауля Грэхема и его же, но "гибридное", чтобы капельку "смягчить" результат.

В-третьих, в самом The Bat! также есть настройки. (в том окне, где вы устанавливали фильтр). Сам фильтр всего лишь даёт оценку письму, а The Bat! уже решает, что делать с письмом на основании этой оценки. Вот это самое "что делать" также нужно настроить. Вариантов, в общем-то, немного - удалить или переместить в папку "макулатура" (Junk folder) (а можно - и то, и другое вместе). У меня включена опция "Move a message to the junk folder..." с пороговым значением 70. Хотя, при
использовании метода Грэхема то значение, которое вы установите (в пределах, скажем, от 1 до 99) практически не имеет значения. Фильтр будет возвращать обычно либо 0, либо 100. Непосредственно в журнале The Bat! при работе фильтра будут делаться определённые записи, например:

!22.05.2003, 10:31:30: FILTER - Message from "rus" <rus@rus.ru> to with subject Re: раскрутка сайта scored 99, qualified as JUNK MAIL
> 22.05.2003, 10:31:30: FETCH - Получено письмо от rus@rus.ru (1536 байт)
!22.05.2003, 10:31:37: FILTER - Message from Polygon <vxsazt@yahoo.com> to A_n_vinogradov <a_n_vinogradov@mail.ru> и др. with subject
A_n_vinogradov, новая коллекция мебели! scored 100, qualified as JUNK MAIL
> 22.05.2003, 10:31:37: FETCH - Получено письмо от vxsazt@yahoo.com (25045 байт)

Что такое "частичная транслитерация" и как ею пользоваться?

Для русскоязычного (и вообще, "национально-язычного") спама в фильтре предусмотрена " частичная транслитерация". Эта функция позволяет выявить русские слова, в которых некоторые русские буквы заменены на похожие латинские. Т.е., например, вместо русской буквы "эр" стоит английская "пи". Визуально всё выглядит так же, однако для компьютера это уже совершенно разные слова. Функция "частичной транслитерации" в фильтре позволяет все слова привести к одному стандарту - т.е. чтобы они были либо "русскими", либо "нерусскими", но не было смешанных. Её использование также весьма помогает эффективнее фильтровать спам. Для её работы нужно создать в самом The Bat! новую таблицу перекодировки. Название её не имеет значение, а вот название "набор символов MIME" весьма существенно. По умолчанию в настройках подразумевается, что это - "translit", однако вы можете придумать и другое название. Итак, нужно создать таблицу с названием MIME-набора "translit", и на вкладке ввода значений "в Windows" заменить некоторые английские буквы на похожие на них русские. Например, латинскую заглавную "A" (код 0x41) на русскую "А" (код 0хС0), и т.д. Таких букв немного, около 10. Изменения касаются только " латинской" половины таблицы, менять русскую часть не нужно. Затем сохраните эту таблицу. После этого проверьте, чтобы в настройках фильтра на вкладке "частотный словарь" была включена галочка " распознавать частично транслитерированные токены", было верно указано название MIME-набора созданной таблицы, и, наконец, был верно введён русский алфавит. Если последний отсутствует, то его либо нужно ввести вручную (и заглавные, и прописные буквы), либо ввести локаль "Russian_Russia" и нажать кнопку "Создать". Возможно, потребуется удалить из созданного алфавита кириллические (но нерусские) буквы.

Как работает самообучение базы?

Теперь что касается самообучения базы. Идея такова: если база достаточно велика (скажем, не меньше 1000 писем спама и 1000 не-спама), то возвращаемый ею результат оценки можно считать достаточно надёжным. Опять же, если входящее письмо получает предельную оценку (т.е. не 1..2..3, а ровно 0 или ровно 100), то фильтр мог бы включать такие письма в базу автоматически, т.е. " самообучаться". Для усиления последнего утверждения, в фильтре используются оценки в диапазоне не от 0 до 100, а от 0 до 1000000.

Самообучение настраивается на вкладке "опции фильтрования". Там задаётся минимальный размер базы (по умолчанию 1000 писем каждого корпуса) и "предельные" границы оценок (по умолчанию - в точности 0 и 1000000). Если изменить эти значения (скажем, поставить вместо 0 - 10), то все письма с заданным диапазоном оценки (т.е. от 0 до 10 по шкале 0..1000000) будут автоматически "самообучаться" как не-спам. Все письма с менее "уверенными" оценками (больше 10, но меньше порога спама) останутся для ручного обучения, которое будет автоматически предложено пользователю при выходе из The Bat!, если включена опция " предложить ручную тренировку", и если количество всё ещё " необученных" писем превышает заданный в этой опции предел (по умолчанию - 50, но я рекомендую поставить не больше 5..10).

При автоматическом обучении в журнале фильтра, если это указано, для каждого самообученного письма делается соответствующая запись, например

22.5.2003 10:31:47 Запомнено <E19Ib9o-0008IY-Tn@mx4.freenet.de> как СПАМ
22.5.2003 10:31:47 Запомнено <681657643.20030521193147@gu3.biz> как НЕ-СПАМ

Такие записи появляются там только если включен режим журналирования " общий отчёт". "Кроме того, в обязательном порядке (независимо от настроек режима журналирования фильтра) ведётся журнал автообучения, в котором соответствующие записи будут примерно такими:

_M <E19Ib9o-0008IY-Tn@mx4.freenet.de>
СПАМ
_M <681657643.20030521193147@gu3.biz>
НЕ-СПАМ

Как обучать базу вручную?

Ручное обучение ведётся при помощи вкладки "тренировка базы". Все письма, которые не прошли через жёсткий ценз самообучающих барьеров, хранятся до поры до времени во временной папке. Когда их число превышает некоторый заданный предел (он задаётся в опциях фильтрования), The Bat! однажды при выходе попросит вас запустить ручное обучение. В менеджере писем вы увидите информацию о каждом из "неясных" писем. Всё, что нужно — задавать для каждого письма, куда ему следует "отправиться", и нажимать кнопку "обработать и удалить...". "Место назначения" письма фильтр предлагает сам, на основании данной оценки. Если вы с ним согласны - просто нажимаете "обработать и удалить...", если не согласны, просто щёлкаете по нужному пункту и снова нажимаете " обработать и удалить". По окончании сортировки писем (к слову, не обязательно сразу сортировать все), нужно перейти на вкладку " оценочная база" и нажать кнопку "тренировать". И только в этот момент отсортированные письма будут фактически внесены в базу. ВНИМАНИЕ! Если вы по каким-то причинам не нажмёте эту кнопку по завершении процесса обучения, и выйдете из программы, то накопленные данные будут навсегда утеряны.

Как быть с ошибками обучения?

Ещё несколько слов по поводу ошибок само- и ручного обучения. Если таковая, увы, случилась (например, если какой-то назойливый спам не только попал в ящик, но ещё и "умудрился" убедить фильтр, что он точно не является спамом, и, соответственно, попасть в оценочную базу как " не-спам"), то исправить положение можно, сохранив это письмо в файл (в формате .eml или .msg) и запустив менеджер фильтра с путём к этому файлу в качестве параметра. Чтобы не делать этого вручную, можно создать в The Bat! ручное правило сортировки, так чтобы при нажатии на " горячую клавишу" письмо сохранялось в файл, и запускалось внешнее приложение с именем этого файла в качестве параметра. Менеджер попытается определить, как именно было оценено это письмо, и предложит переместить его в "противоположную" часть базы. Исправление ошибок работает только в случае, если письмо действительно уже было обучено. Иначе выдаётся ошибка, что письмо не найдено в базе. Как правило это означает, что оно всё же не получило "предельной" оценки, и, значит, его нужно будет "обучить" в общем порядке, через "ручное" обучение (и, соответственно, дать ему верную оценку уже там).

Верным признаком того, что письмо было автоматически обучено, является наличие его MSID (их отображение включается в The Bat! через меню " вид" - "заголовок письма" - "ID письма") в журнале самообучения. В следующей строке указано, как именно было самообучено письмо.

Я создал оценочную базу и переслал сам себе одно из писем спама, а оно почему-то не было отфильтровано...

Что касается пересылки писем "самому себе". При этом меняются заголовки письма - вместо оригинальных прописывается ваш обратный адрес, а также меняются другие технические моменты - дата отправки, временная зона, путь прохождения письма и пр. Все эти данные также важны для фильтрации, как и содержимое "тела" письма. Более того, если "тело" как таковое отсутствует (или не позволяет фильтру сделать выводов о характере письма - например, если оно представляет собой вложенный файл-картинку с, собственно, рекламой, или если оно сильно замусорено (чем очень любит заниматься пресловутый "American language center")), то основная оценка будет произведена именно по заголовкам (к слову, упомянутый "center" отфильтровывается однозначно и без "осечек"). Наиболее "чистый" способ пересылки "самому себе" - создать для этого отдельный почтовый ящик, и разрешить для него локальную доставку. Затем скопировать нужные письма в папку "входящие" этого ящика, и "перенаправить" (не переслать!) на другой ящик, существующий на этом же компьютере. Если таким образом переслать одно письмо, то в его заголовках изменятся поля "кому" и идентификатор письма, если одновременно выделить и перенаправить несколько писем, то изменится только поле "кому" (идентификаторы останутся прежними).

А можно ли вообще не скачивать спам с сервера?

Можно. В самом The Bat!, помимо прочих возможностей фильтрации, есть ещё т.н. фильтр "Выборочное скачивание". Этот фильтр работает в качестве "привратника", и позволяет на основании заголовков входящих писем задать некоторые действия, и при удовлетворении заданных условий либо не скачивать письмо с сервера, либо удалить его. Сигнальные строки для этого, как обычно, вводятся вручную, или же можно задать внешний файл-источник строк, который будет использоваться для фильтрации. Проблема, опять же, в ручном вводе данных — либо вам самим придётся "вбивать" в фильтр сигральные строки, либо это придётся делать кому-то другому, — тому, кто будет создавать файл с данными.

Менеджер фильтра BayesIt! позволяет воспользоваться своей базой для создания сигнального списка строк выборочного скачивания.

В качестве данных для такого фильтра используются токены оценочной базы, удовлетворяющие трём критериям. Во-первых, это должны быть токены, относящиеся только к заголовкам писем (токены из "тела" для фильтра "выборочное скачивание" не имеют смысла). Во-вторых, ни один из этих токенов ни разу не должен быть встречен в "хорошей" половине оценочной базы. И, в-третьих, каждый из этих токенов должен быть встречен в спамерской половине оценочной базы не меньше пяти раз (а точнее — не меньше, чем указывает параметр "защитный уровень" в настройках оценочной базы).

Все токены, удовлетворяющие указанным условиям, могут быть легко извлечены из базы в отдельный текстовый файл. Вот, что нужно сделать, чтобы получить "чёрный список" токенов из фильтра BayesIt!:

Для начала загрузите оценочную базу. Для этого запустите менеджер фильтра, перейдите на вкладку "Оценочная база" и нажмите кнопку "тренировать". При пустых (не загруженных) частотных словарях нажание этой кнопки вызовет загрузку базы в память. (Если же хотя бы один из словарей не пуст, то произойдёт загрузка базы, её обучение и последующее сохранение, но в итоге база всё же останется загруженной).

Затем, когда база загружена, на той же вкладке нажмите на кнопку "[Извлечь...] Строки для фильтра выборочного скачивания". Далее, вам нужно будет лишь указать имя создаваемого текстового файла, и в результате вы получите практически готовую базу для фильтра "Выборочное скачивание" The Bat! Этот файл следует отредактировать в любом текстовом редакторе, а затем его можно использовать по назначению. Можно, в принципе, ничего и не редактировать... Просто для фильтра понятие "токен" может включать в себя одно- двухбуквенные комбинации, которые вряд ли имеет смысл использовать для фильтрования...

Как пользоваться "выборочным скачиванием", и при этом всё же пополнять базу за счёт "нескачанных" спамерских писем?

Во-первых, если фильтр "выборочое скачивание" настроен на автоматическое удаление писем на сервере, то его нужно переключить на "не скачивать с сервера".

Затем создайте отдельный почтовый ящик, параметры доступа к приёму почты у которого будут совпадать с параметрами основного ящика. В настройках этого ящика следует поставить галочку возле параметра настроек "игнорировать команду проверки всех ящиков". Кроме того, у ящика должны быть отключены все фильтры "выборочное скачивание".

Этот второй ящик без фильтров выборочного скачивания вам нужно проверять когда-нибудь поздно ночью, когда у большинства интернет-провайдеров низкие расценки на стоимость интернета. Очень удобно для этого воспользоваться "Планировщиком заданий", встроенным в Windows. Пусть он где-нибудь около трёх часов ночи "разбудит" компьютер, и запустит The Bat! для проверки "дублирующего" ящика. Если к тому же установить в настройках электропитания "спящий режим" минут через 15 простоя, то компьютер к тому же ещё и снова "уснёт" после всего этого действия.

Таким образом, вы "оптом" получите всё, что обычно "стопорится" выборочным скачиванием, и сможете поддерживать фильтр в "хорошей форме".

 


Copyright © 2002 by Alexey N. Vinogradov (the owner of klirik.narod.ru)
Используются технологии uCoz