[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