-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDataset.java
More file actions
180 lines (126 loc) · 4.61 KB
/
Copy pathDataset.java
File metadata and controls
180 lines (126 loc) · 4.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
import com.sun.xml.internal.ws.api.streaming.XMLStreamReaderFactory;
import org.apache.commons.cli.*;
import java.io.FileReader;
import java.io.BufferedReader;
import java.util.Arrays;
import java.util.Scanner;
/**
* Created by Ben Thompson on 4/23/2016.
*/
public class Dataset {
private String sys_cfg_fn;
private String data_cfg_fn;
private String train_fn;
private String dev_fn;
//sysconfig data
private int N_TRAIN;
private int N_DEV;
private int C;
private int D;
//arg data or dataset config
private double alpha;
private double b;
private double lambda;
private int MAX_ITERS = 0;
private int MAX_BAD_COUNT = 0;
private double STEP_SIZE = 0;
//constructor
public Dataset(Options options, String[] args) {
getDataFromArgs(options, args);
setConfigFromFile(data_cfg_fn);
setConfigFromFile(sys_cfg_fn);
}
public String getSys_cfg_fn() {
return sys_cfg_fn;
}
public String getTrain_fn() {return train_fn;}
public String getDev_fn() {return dev_fn;}
public int getN_TRAIN() {
return N_TRAIN;
}
public int getN_DEV() {
return N_DEV;
}
public int getC() {
return C;
}
public int getD() {
return D;
}
public double getAlpha() {return alpha;}
public double getB() {return b;}
public double getLamdba() {return lambda;}
public int getMAX_ITERS() {return MAX_ITERS;}
public int getMAX_BAD_COUNT() {return MAX_BAD_COUNT;}
public double getSTEP_SIZE() {return STEP_SIZE;}
private void setConfigFromFile(String fileName){
String line;
try(BufferedReader buf = new BufferedReader(new FileReader(fileName))) {
while((line = buf.readLine()) != null){
parseLine(line);
}
}catch(Exception e){
e.printStackTrace();
}
}
private void parseLine(String line){
Scanner scanner = new Scanner(line);
scanner.useDelimiter("\\s+");
String token;
if(scanner.hasNext()) {
token = scanner.next();
switch (token) {
case "N_TRAIN": N_TRAIN = Integer.parseInt(scanner.next());
return;
case "N_DEV": N_DEV = Integer.parseInt(scanner.next());
return;
case "C": C = Integer.parseInt(scanner.next());
return;
case "D": D = Integer.parseInt(scanner.next());
return;
case "ALPHA": if(alpha == 0) alpha = Double.parseDouble(scanner.next());
return;
case "B": if(b == 0) b = Double.parseDouble(scanner.next());
return;
case "LAMBDA": if(lambda == 0) lambda = Double.parseDouble(scanner.next());
return;
case "MAX_ITERS": MAX_ITERS = Integer.parseInt(scanner.next());
return;
case "MAX_BAD_COUNT": MAX_BAD_COUNT = Integer.parseInt(scanner.next());
return;
case "STEP_SIZE": STEP_SIZE = Double.parseDouble(scanner.next());
return;
default: System.err.println("'dataset.config' has incorrect settings. Results may be incorrect.");
}
}
}
private void getDataFromArgs(Options options, String[] args){
CommandLineParser parser = new DefaultParser();
try {
CommandLine cmd = parser.parse(options,args);
if(cmd.hasOption("BT")){
String[] BT = cmd.getOptionValues("BT");
this.alpha = Double.parseDouble(BT[0]);
this.b = Double.parseDouble(BT[1]);
System.out.println("BT args: " + alpha + " " + b);
}
if(cmd.hasOption("L2")){
this.lambda = Double.parseDouble(cmd.getOptionValue("L2"));
System.out.println("L2 args: " + lambda);
}
String[] inputFilesNames = cmd.getArgs();
if(inputFilesNames.length != 4){
System.err.println("Wrong number of input file names");
}else {
this.sys_cfg_fn = inputFilesNames[0];
this.data_cfg_fn = inputFilesNames[1];
this.train_fn = inputFilesNames[2];
this.dev_fn = inputFilesNames[3];
System.out.println("Arguments: " + Arrays.toString(inputFilesNames));
}
} catch (ParseException e) {
System.err.println("ParseException");
e.printStackTrace();
}
}
}