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)