gnus: Low-level interface to the spam-stat dictionary
9.17.8.3 Low-level interface to the spam-stat dictionary
........................................................
The main interface to using ‘spam-stat’, are the following functions:
-- Function: spam-stat-buffer-is-spam
Called in a buffer, that buffer is considered to be a new spam
mail. Use this for new mail that has not been processed before.
-- Function: spam-stat-buffer-is-no-spam
Called in a buffer, that buffer is considered to be a new non-spam
mail. Use this for new mail that has not been processed before.
-- Function: spam-stat-buffer-change-to-spam
Called in a buffer, that buffer is no longer considered to be
normal mail but spam. Use this to change the status of a mail that
has already been processed as non-spam.
-- Function: spam-stat-buffer-change-to-non-spam
Called in a buffer, that buffer is no longer considered to be spam
but normal mail. Use this to change the status of a mail that has
already been processed as spam.
-- Function: spam-stat-save
Save the hash table to the file. The filename used is stored in
the variable ‘spam-stat-file’.
-- Function: spam-stat-load
Load the hash table from a file. The filename used is stored in
the variable ‘spam-stat-file’.
-- Function: spam-stat-score-word
Return the spam score for a word.
-- Function: spam-stat-score-buffer
Return the spam score for a buffer.
-- Function: spam-stat-split-fancy
Use this function for fancy mail splitting. Add the rule ‘(:
spam-stat-split-fancy)’ to ‘nnmail-split-fancy’
Make sure you load the dictionary before using it. This requires the
following in your ‘~/.gnus.el’ file:
(require 'spam-stat)
(spam-stat-load)
Typical test will involve calls to the following functions:
Reset: (setq spam-stat (make-hash-table :test 'equal))
Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam")
Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc")
Save table: (spam-stat-save)
File size: (nth 7 (file-attributes spam-stat-file))
Number of words: (hash-table-count spam-stat)
Test spam: (spam-stat-test-directory "~/Mail/mail/spam")
Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc")
Reduce table size: (spam-stat-reduce-size)
Save table: (spam-stat-save)
File size: (nth 7 (file-attributes spam-stat-file))
Number of words: (hash-table-count spam-stat)
Test spam: (spam-stat-test-directory "~/Mail/mail/spam")
Test non-spam: (spam-stat-test-directory "~/Mail/mail/misc")
Here is how you would create your dictionary:
Reset: (setq spam-stat (make-hash-table :test 'equal))
Learn spam: (spam-stat-process-spam-directory "~/Mail/mail/spam")
Learn non-spam: (spam-stat-process-non-spam-directory "~/Mail/mail/misc")
Repeat for any other non-spam group you need...
Reduce table size: (spam-stat-reduce-size)
Save table: (spam-stat-save)