1 #include <stdio.h>
2 #include "../vowpalwabbit/parser.h"
3 #include "../vowpalwabbit/vw.h"
4 #include "../vowpalwabbit/ezexample.h"
5 
6 using namespace std;
7 
run(vw * vw)8 void run(vw*vw) {
9   ezexample ex(vw, true);   // we're doing csoaa_ldf so we need multiline examples
10 
11   /// BEGIN FIRST MULTILINE EXAMPLE
12   ex(vw_namespace('s'))
13     ("p^the_man")
14     ("w^the")
15     ("w^man")
16     (vw_namespace('t'))
17     ("p^un_homme")
18     ("w^un")
19     ("w^homme");
20 
21   ex.set_label("1:1");
22   ex.train();
23 
24   --ex;   // remove the most recent namespace
25   ex(vw_namespace('t'))
26     ("p^le_homme")
27     ("w^le")
28     ("w^homme");
29 
30   ex.set_label("2:0");
31   ex.train();
32 
33   // push it through VW for training
34   ex.finish();
35 
36   /// BEGIN SECOND MULTILINE EXAMPLE
37   ex(vw_namespace('s'))
38     ("p^a_man")
39     ("w^a")
40     ("w^man")
41     (vw_namespace('t'))
42     ("p^un_homme")
43     ("w^un")
44     ("w^homme");
45 
46   ex.set_label("1:0");
47   ex.train();
48 
49   --ex;   // remove the most recent namespace
50   ex(vw_namespace('t'))
51     ("p^le_homme")
52     ("w^le")
53     ("w^homme");
54 
55   ex.set_label("2:1");
56   ex.train();
57 
58   // push it through VW for training
59   ex.finish();
60 }
61 
main(int argc,char * argv[])62 int main(int argc, char *argv[])
63 {
64   // INITIALIZE WITH WHATEVER YOU WOULD PUT ON THE VW COMMAND LINE -- THIS WILL STORE A MODEL TO train.ezw
65   vw* vw = VW::initialize("--hash all -q st --noconstant -f train.w --quiet --csoaa_ldf m");
66 
67   run(vw);
68 
69   // AND FINISH UP
70   cerr << "ezexample_train finish"<<endl;
71   VW::finish(*vw);
72 }
73