mailcross(1)

NAME

   mailcross - a cross-validation simulator for use with dbacl.

SYNOPSIS

   mailcross command [ command_arguments ]

DESCRIPTION

   mailcross  automates  the  task of cross-validating email filtering and
   classification programs such as dbacl(1).  Given a set  of  categorized
   documents,   mailcross   initiates  simulation  runs  to  estimate  the
   classification errors and thereby permits fine tuning of the parameters
   of the classifier.

   Cross-validation  is  a  method  which  is  widely  used to compare the
   quality of classification and learning algorithms, and as such  permits
   rudimentary  comparisons  between  those  classifiers which make use of
   dbacl(1) and bayesol(1), and other competing classifiers.

   The mechanics of  cross-validation  are  as  follows:  A  set  of  pre-
   classified  email  messages  is  first  split  into a number of roughly
   equal-sized  subsets.   For  each  subset,  the  filter  (by   default,
   dbacl(1))  is  used  to classify each message within this subset, based
   upon having learned the categories  from  the  remaining  subsets.  The
   resulting classification errors are then averaged over all subsets.

   The results obtained by cross validation essentially do not depend upon
   the   ordering   of   the   sample   emails.   Other    methods    (see
   mailtoe(1),mailfoot(1))   attempt   to   capture   the   behaviour   of
   classification errors over time.

   mailcross  uses  the  environment   variables   MAILCROSS_LEARNER   and
   MAILCROSS_FILTER  when executing, which permits the cross-validation of
   arbitrary filters, provided these satisfy the compatibility  conditions
   stated in the ENVIRONMENT section below.

   For  convenience,  mailcross  implements  a  testsuite  framework  with
   predefined wrappers for several open source classifiers.  This  permits
   the  direct  comparison  of  dbacl(1) with competing classifiers on the
   same set of email samples. See the USAGE section below.

   During preparation, mailcross builds a subdirectory  named  mailcross.d
   in   the  current  working  directory.   All  needed  calculations  are
   performed inside this subdirectory.

EXIT STATUS

   mailcross returns 0 on success, 1 if a problem occurred.

COMMANDS

   prepare size
          Prepares a subdirectory named mailcross.d in the current working
          directory,  and  populates  it  with  empty  subdirectories  for
          exactly size subsets.

   add category [FILE]...
          Takes a set of emails from either FILE if specified,  or  STDIN,
          and  associates  them with category.  All emails are distributed
          randomly into the subdirectories of mailcross.d for  later  use.
          For  each  category, this command can be repeated several times,
          but should be executed at least once.

   clean  Deletes the directory mailcross.d and all its contents.

   learn  For every previously built subset of email messages,  pre-learns
          all  the  categories  based  on  the contents of all the subsets
          except  this  one.   The   command_arguments   are   passed   to
          MAILCROSS_LEARNER.

   run    For  every  previously  built subset of email messages, performs
          the  classification  based  upon  the   pre-learned   categories
          associated  with all but this subset.  The command_arguments are
          passed to MAILCROSS_FILTER.

   summarize
          Prints statistics for the latest cross-validation run.

   review truecat predcat
          Scans the last run statistics  and  extracts  all  the  messages
          which  belong  to category truecat but have been classified into
          category predcat.  The extracted  messages  are  copied  to  the
          directory mailcross.d/review for perusal.

   testsuite list
          Shows  a  list of available filters/wrapper scripts which can be
          selected.

   testsuite select [FILTER]...
          Prepares the filter(s) named FILTER to be used  for  simulation.
          The  filter  name is the name of a wrapper script located in the
          directory /usr/share/dbacl/testsuite.  Each filter has  a  rigid
          interface  documented  below, and the act of selecting it copies
          it to the mailcross.d/filters directory.  Only  filters  located
          there are used in the simulations.

   testsuite deselect [FILTER]...
          Removes    the    named    filter(s)    from    the    directory
          mailcross.d/filters so that they are not used in the simulation.

   testsuite run
          Invokes every selected filter on the datasets added  previously,
          and calculates misclassification rates.

   testsuite status
          Describes the scheduled simulations.

   testsuite summarize
          Shows  the  cross validation results for all filters. Only makes
          sense after the run command.

USAGE

   The normal usage pattern is the following: first, you  should  separate
   your  email collection into several categories (manually or otherwise).
   Each category should be associated with one or more folders,  but  each
   folder  should  not  contain  more  than one category. Next, you should
   decide how many subsets to use, say 10.  Note  that  too  many  subsets
   will slow down the calculations rapidly. Now you can type

   % mailcross prepare 10

   Next,  for  every  category,  you must add every folder associated with
   this category. Suppose you have three categories named spam, work,  and
   play,  which  are  associated with the mbox files spam.mbox, work.mbox,
   and play.mbox respectively. You would type

   % mailcross add spam spam.mbox
   % mailcross add work work.mbox
   % mailcross add play play.mbox

   You can now  perform  as  many  simulations  as  desired.  Every  cross
   validation  consists  of a learning, a running and a summarizing stage.
   These operations are performed  on  the  classifier  specified  in  the
   MAILCROSS_FILTER  and  MAILCROSS_LEARNER  variables.  By  setting these
   variables appropriately, you can compare classification performance  as
   you vary the command line options of your classifier(s).

   % mailcross learn
   % mailcross run
   % mailcross summarize

   The  testsuite  commands  are  designed to simplify the above steps and
   allow comparison of a wide range of email  classifiers,  including  but
   not  limited  to  dbacl.   Classifiers  are  supported  through wrapper
   scripts, which are located in the /usr/share/dbacl/testsuite directory.

   The first stage when using the testsuite is deciding which  classifiers
   to compare.  You can view a list of available wrappers by typing:

   % mailcross testsuite list

   Note  that  the  wrapper  scripts are NOT the actual email classifiers,
   which must be installed separately  by  your  system  administrator  or
   otherwise.   Once this is done, you can select one or more wrappers for
   the simulation by typing, for example:

   % mailcross testsuite select dbaclA ifile

   If some of the selected classifiers cannot be found on the system, they
   are  not  selected.  Note  also  that some wrappers can have hard-coded
   category  names,  e.g.  if  the   classifier   only   supports   binary
   classification. Heed the warning messages.

   It  remains  only  to  run the simulation. Beware, this can take a long
   time (several hours depending on the classifier).

   % mailcross testsuite run
   % mailcross testsuite summarize

   Once you are all done with simulations,  you  can  delete  the  working
   files, log files etc. by typing

   % mailcross clean

   The progress of the cross validation is written silently in various log
   files which are located in the mailcross.d/log directory.  Check  these
   in case of problems.

SCRIPT INTERFACE

   mailcross  testsuite  takes  care  of  learning  and  classifying  your
   prepared email corpora for each selected classifier. Since  classifiers
   have widely varying interfaces, this is only possible by wrapping those
   interfaces individually into a standard  form  which  can  be  used  by
   mailcross testsuite.

   Each  wrapper  script  is  a  command  line tool which accepts a single
   command followed by zero or more optional arguments,  in  the  standard
   form:

   wrapper command [argument]...

   Each  wrapper  script  also  makes  use  of  STDIN and STDOUT in a well
   defined way. If no behaviour is described,  then  no  output  or  input
   should be used.  The possible commands are described below:

   filter In this case, a single email is expected on STDIN, and a list of
          category filenames is expected in $2, $3, etc. The script writes
          the category name corresponding to the input email on STDOUT. No
          trailing newline is required or expected.

   learn  In this case, a standard mbox stream is expected on STDIN, while
          a  suitable  category  file name is expected in $2. No output is
          written to STDOUT.

   clean  In this case, a directory is expected in $2, which  is  examined
          for  old  database  information. If any old databases are found,
          they are purged or reset. No output is written to STDOUT.

   describe
          IN this case, a single  line  of  text  is  written  to  STDOUT,
          describing  the  filter's functionality. The line should be kept
          short to prevent line wrapping on a terminal.

   bootstrap
          In this case, a directory is expected in $2. The wrapper  script
          first checks for the existence of its associated classifier, and
          other prerequisites.  If  the  check  is  successful,  then  the
          wrapper  is  cloned  into  the  supplied  directory.  A courtesy
          notification should be given on STDOUT  to  express  success  or
          failure.   It  is  also  permissible to give longer descriptions
          caveats.

   toe    Used by mailtoe(1).

   foot   Used by mailfoot(1).

ENVIRONMENT

   Right after loading, mailcross reads the hidden  file  .mailcrossrc  in
   the  $HOME  directory,  if  it exists, so this would be a good place to
   define custom values for environment variables.

   MAILCROSS_FILTER
          This variable contains a shell command to be executed repeatedly
          during  the  running  stage.  The command should accept an email
          message on STDIN and output a resulting category name. It should
          also  accept  a list of category file names on the command line.
          If    undefined,    mailcross    uses    the    default    value
          MAILCROSS_FILTER="dbacl  -T email -T xml -v" (and also magically
          adds the -c option before each category).

   MAILCROSS_LEARNER
          This variable contains a shell command to be executed repeatedly
          during the learning stage. The command should accept a mbox type
          stream of emails on STDIN for learning, and the file name of the
          category  on the command line.  If undefined, mailcross uses the
          default value MAILCROSS_LEARNER="dbacl -H 19  -T  email  -T  xml
          -l".

   TEMPDIR
          This  directory  is exported for the benefit of wrapper scripts.
          Scripts which need to create temporary files should place them a
          the location given in TEMPDIR.

NOTES

   The  subdirectory  mailcross.d can grow quite large. It contains a full
   copy of the training corpora, as well as learning files for size  times
   all the added categories, and various log files.

WARNING

   Cross-validation  is  a  widely used, but ad-hoc statistical procedure,
   completely unrelated to Bayesian theory, and  subject  to  controversy.
   Use this at your own risk.

SOURCE

   The  source code for the latest version of this program is available at
   the following locations:

   http://www.lbreyer.com/gpl.html
   http://dbacl.sourceforge.net

AUTHOR

   Laird A. Breyer <[email protected]>

SEE ALSO

   bayesol(1) dbacl(1), mailinspect(1), mailtoe(1), mailfoot(1), regex(7)



Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.


Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.

Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.


Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.

Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.


Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.

Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.