www.pudn.com > svm_multiClass.rar > svm_struct_api_types.h


/***********************************************************************/ 
/*                                                                     */ 
/*   svm_struct_api.h                                                  */ 
/*                                                                     */ 
/*   Definition of API for attaching implementing SVM learning of      */ 
/*   structures (e.g. parsing, multi-label classification, HMM)        */  
/*                                                                     */ 
/*   Author: Thorsten Joachims                                         */ 
/*   Date: 13.10.03                                                    */ 
/*                                                                     */ 
/*   Copyright (c) 2003  Thorsten Joachims - All rights reserved       */ 
/*                                                                     */ 
/*   This software is available for non-commercial use only. It must   */ 
/*   not be modified and distributed without prior permission of the   */ 
/*   author. The author is not responsible for implications from the   */ 
/*   use of this software.                                             */ 
/*                                                                     */ 
/***********************************************************************/ 
 
#ifndef svm_struct_api_types 
#define svm_struct_api_types 
 
# define INST_NAME          "Multi-Class SVM" 
# define INST_VERSION       "V1.01" 
# define INST_VERSION_DATE  "01.09.04" 
 
typedef struct pattern { 
  /* this defines the x-part of a training example, e.g. the structure 
     for storing a natural language sentence in NLP parsing */ 
  DOC *doc; 
} PATTERN; 
 
typedef struct label { 
  /* this defines the y-part (the label) of a training example, 
     e.g. the parse tree of the corresponding sentence. */ 
  int class; 
} LABEL; 
 
typedef struct structmodel { 
  double *w;          /* pointer to the learned weights */ 
  MODEL  *svm_model;  /* the learned SVM model */ 
  long   sizePsi;     /* maximum number of weights in w */ 
  /* other information that is needed for the stuctural model can be 
     added here, e.g. the grammar rules for NLP parsing */ 
} STRUCTMODEL; 
 
typedef struct struct_learn_parm { 
  double epsilon;              /* precision for which to solve 
				  quadratic program */ 
  double newconstretrain;      /* number of new constraints to 
				  accumulate before recomputing the QP 
				  solution */ 
  double C;                    /* trade-off between margin and loss */ 
  char   custom_argv[20][300]; /* string set with the -u command line option */ 
  int    custom_argc;          /* number of -u command line options */ 
  int    slack_norm;           /* norm to use in objective function 
                                  for slack variables; 1 -> L1-norm,  
				  2 -> L2-norm */ 
  int    loss_type;            /* selected loss function from -r 
				  command line option. Select between 
				  slack rescaling (1) and margin 
				  rescaling (2) */ 
  int    loss_function;        /* select between different loss 
				  functions via -l command line 
				  option */ 
  /* further parameters that are passed to init_struct_model() */ 
  int num_classes; 
  int num_features; 
} STRUCT_LEARN_PARM; 
 
typedef struct struct_test_stats { 
  /* you can add variables for keeping statistics when evaluating the 
     test predictions in svm_struct_classify. This can be used in the 
     function eval_prediction and print_struct_testing_stats. */ 
} STRUCT_TEST_STATS; 
 
#endif