import java.io.*; import java.util.*; public class hw{ //added for the contest private static String feature; private static String label; private static String svmlight; private static boolean istraining; private static int num_pos=0; private static int num_neg=0; public static void main(String[] args){ if(args.length<=0){ System.out.println("Usage: java hw [label file] "); System.exit(0); } else{ String type=args[0]; if(type.equals("-train") && args.length==4){ feature=args[1]; label=args[2]; svmlight=args[3]; istraining=true; } else if(type.equals("-test") && args.length==3){ feature=args[1]; svmlight=args[2]; istraining=false; } else{ System.out.println("Usage: java hw [label file] "); System.exit(0); } } transfer(); //System.out.println(num_pos+" "+num_neg); // cv(); } public static void cv(){ Vector pos=new Vector(); Vector neg=new Vector(); try{ BufferedReader in=new BufferedReader(new FileReader("pos_data")); while(true){ String curline=in.readLine(); if(curline==null) break; pos.add(curline); } in=new BufferedReader(new FileReader("neg_data")); while(true){ String curline=in.readLine(); if(curline==null) break; neg.add(curline); } Collections.shuffle(pos); Collections.shuffle(neg); int possize=num_pos/10; int negsize=num_neg/10; System.out.println(possize+" "+negsize); for(int i=0; i<10; i++){ PrintWriter out1=new PrintWriter(new FileWriter("test_"+i)); PrintWriter out2=new PrintWriter(new FileWriter("training_"+i)); for(int k=0; k=i*possize && k<(i+1)*possize) out1.println((String)pos.elementAt(k)); else out2.println((String)pos.elementAt(k)); } for(int k=0; k=i*negsize && k<(i+1)*negsize) out1.println((String)neg.elementAt(k)); else out2.println((String)neg.elementAt(k)); } out1.close(); out2.close(); } }catch(Exception e){ e.printStackTrace(); } } public static void transfer(){ BufferedReader fvalue=null; BufferedReader lvalue=null; try{ fvalue=new BufferedReader(new FileReader(feature)); if(istraining){ lvalue=new BufferedReader(new FileReader(label)); } PrintStream out=new PrintStream(new FileOutputStream(svmlight)); while(true){ String curfeatureLine=fvalue.readLine(); if(curfeatureLine==null) break; //System.out.println("current line:"); //System.out.println(curfeatureLine); String[] tokens=curfeatureLine.split("\\t"); //System.out.println("number of features:"+tokens.length); int f_id=0; String l; if(istraining && lvalue!=null) l=lvalue.readLine(); else l="0"; out.print(l+" "); for(int i=0; i