Previous: Splitting mail using spam-stat, Up: Spam Statistics Package [Contents][Index]

#### 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)

Previous: Splitting mail using spam-stat, Up: Spam Statistics Package [Contents][Index]