[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sa-ru] Персональные б айес овые базы



            Hail there dewil!

Поэтому вопрос. Как можно обучать байеса персонально для каждого почтового пользователя, учитывая что про пользователя известен только его адрес и имапвой ящик (т.е. ни системной учетной записи, ни домашнего каталога нет)?
При хранении bayes в sql можно выбрать два варианта.
1. bayes одинаково для всех.
2. bayes индивидуально для каждого адреса.

	Т.е. деление возможно по адресу из поля "To:"? Или по какому адресу?

Выбирая второе хранилище - ваша задача будет решена.
Остаётся вопрос в котором я не уверен, это индивидуальное обучение bayes.
Если кто-то может развить эту мысль - подключайтесь.

Ну тут в самом деле основная проблема в автоматизации процесса обучения. С общей базой я пока придумал два варианта. Оба правда в основе закладываются на то, что все пользователи пользуются протоколом IMAP4, а не POP3.

	Первый вариант.

Дополнительно к обычным пользовательским (в контексте CyrusIMAP - user.username) почтовым ящикам создаем два спец-ящика user.Spam и user.NotSpam. Права на ящики прописываем такие чтобы все пользователи могли туда копировать свои сообщение, но не могли их оттуда читать (не зачем чужую почту читать) и удалять. В свойствах обоих ящиков прописываем небольшой срок expire, чтобы не удалять руками протухшую почту. А потом просто время от времени по крону (раз часа в 3 например) запускаем следующую команду: /usr/local/bin/sa-learn -f /usr/local/etc/mail/box2learnlist 2>&1 |mail -s "`uname -n` spam learn report" root

где файл /usr/local/etc/mail/box2learnlist содержит описания какие ящики и как читать:
spam:dir:/usr/local/cyrus/default/user/spam
ham:dir:/usr/local/cyrus/default/user/notspam

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

	Вариант два лечит эту проблему.

Создаем в каждом пользовательском ящике две спец-папки user.username.Spam и user.username.NotSpam аналогично варианту два прописываем малый срок expire, права на ящики чтоб не могли их удалить. Потом так же как в первом варианте по крону пускаем скриптец, который будет быстро пробегаться по каталогам с пользовательскими ящиками, составлять список тех, где в Spam и NotSpam что-то есть и скармливать это список все тому же sa-learn.

Вроде все должно быть хорошо. Проблема только в том, что база спама и не-спама получается общая. Тут могут и просто пользовательские ошибки вмешаться и просто разное понимание спама. Как персонифицировать пока не представляю...

--
     WBR, Alexander B. Gottlieb, mailto:alex@xxxxxxxxxxxx
     ICQ: 13043204 / Jabber: alex@xxxxxxxxxxxxxxx
-|-                                                                  -|-



Global Mail List Index | Main site