Почему вопрос возник: который день ковыряюсь в аккаунте для неклассифицированной почты, и который день обучаю фильтр воспринимать как спам одни и те-же письма. Есть у меня предвательный фильтр на Spamassasin-е, который все подозрительные ему письма помечает словом SPAM в заголовке — неужели байес SpamProtexxa не может ориентироваться на эти заголовки? По логам вроде бы обучение проходит, размер базы SP тоже увеличивается — а вот поди-ж ты, письма с заголовками
* SPAM * [19.4/15.0] This advice is not for you приходят до сих пор.
Да, забыл сказать — почти на всех юзеров включена доставка спама в инбокс, пока не обучим фильтр.
Спам адресату всегда доставляется. Либо в Inbox, либо в spam, в зависимости от настроек для адресата.
Логику конкретно SpamProtexx'а я не знаю, но вообще в байесе чтобы два слова перевесили статистику всего письма, эти слова должны быть либо вообще редкими в корпусе (тогда эти слова легко "склонить" в пользу одного из классов кратким обучением), либо с очень большим весом в пользу одного из классов. См. формулу Байеса. [Я говорю о двух словах spam и advice. А слова "this is not for you" скорее всего вообще не считаются, т.к. заносятся в особые списки равночастотных слов, бессмысленных для анализа.]
А при обучении что пишет в SP_Prob=... в CommonPlugins\acFilter\acFilter.log ?
Тогда возможно, что переобучать её придётся немного дольше, т.к. обучалась на больших объемах, счетчики большие и стойкие.
ред: 07.09.2010 13:28
Странно — если я всё правильно понимаю, то до обучения вероятность того, что это — спам, была 0.998472 , после повысилась до 0.998661. Но с какого фига оно тогда оказалось неклассифицированным? И почему в заголовках письма пишет о SPR=5000, когда она оказывается совершенно другой?
Вот для примера на моём ящике проверяю: те письма, которые отфильтровались и попали в spam, имеют такой заголовок: SP=spam, SPR=0. Очень похожие внешне письма, не отловленные SpamProtexx-ом, имеют заголовок SP=unclassified, SPR=5000. При обучении, как и в примере выше, в логе видно, что вероятность спама для них определяется гораздо больше, как 0,98 примерно.
По процитированному логу видно, что попадания в спам бывают:
Интересно, что писалось в логе при приёме тех писем, которые в итоге получились SPR=5000.
Нет, на этом образце SP вообще не стали обучать, т.к. он и так посчитан спамом с вероятностью 0.998661. Второе число — это вероятность спамности входящего письма от nonvotingh84@ebookmoney.ru. Т.е. это лог про два письма — одно в режиме обучения, а второе в тот момент ехало по SMTP. Т.е. тут все нормально. А вот что пишется в SP_Prob= для тех писем, которые получаются unclassified?
Вот кусок лога, для письма, которое попало в Unclassified:
Дальше перетащил это письмо в spam:
Вероятность — мизерная. Почему оно попало в spam? Странно, что в заголовках письма нету полей. Затёрлись при пробросе через pop2smtp? (это письмо попало именно так, обычно все идут прямо на наш MX, но в случае его недоступности попадают на ящик провайдера, откуда забираются pop2smtp)
Да, и ещё: положил письмо в clear, оно там так и лежит. Вроде бы должно было переотправится мне в Inbox?
Переотправиться оно должно было всем получателям кроме вас, т.к. вы его уже видели и в правильное место положили (не обязательно перетаскивать именно в clear — любой не-спам каталог считается clear, если его имя не совпадает с существующими классами PopFile). Так настроено в acIMAP\conf\OnStartup.rules.txt (строка 101 — "свой адрес вычеркиваем"). Если там было кому доставлять. Что-то у вас в заголовке и "For:" не видно. У всех писем спам-архива он должен быть. Может вы его сами в спам случайно снесли? Тогда это объясняет отсутствие и X-Spam, и For — они при IMAP-переносе отрезаются, чтобы при обучении байес их не учитывал. Или вы это письмо без заголовков взяли уже из каталога clear (после переноса, очищенное от лишних заголовков), а не из спам-архива, тогда тоже понятно, почему искомых полей нет.
"Рекомендация (повторная) пользователям PopFile: в собственном веб-интерфейсе PopFile откройте закладку "Стоп-слова" и добавьте туда "header-Spam-Status", "X-Spam-Status", "header-Classification", чтобы присвоенная "на входе" классификация не влияла на дальнейшее переобучение фильтра"