* @param fileName
*/
static final protected void loadDic(String prefix, String fileName)
{
System.out.println("Loading " + fileName);
Timer timer = new Timer();
timer.start();
float lnProb = 0;
long prevTag = 0, tag = 0;
String line = null, key = null, str = null;
String[] arr = null;
boolean isUni = prefix != null && prefix.equals("UNI");
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));
while( (line = br.readLine()) != null ) {
if( !Util.valid(line) || line.startsWith("//") ) continue;
line = line.trim();
arr = line.split("\t");
if( isUni ) {
// Pr(str,tag)
if( arr.length == 3 ) {
str = arr[0];
tag = POSTag.getTagNum(arr[1]);
lnProb = Float.parseFloat(arr[2]);
key = getKey(prefix, 0l, str, tag);
}
// Pr(tag)
else if( arr.length == 2 ) {
tag = POSTag.getTagNum(arr[0]);
lnProb = Float.parseFloat(arr[1]);
key = getKey(prefix, 0l, null, tag);
}
} else {
// Pr(prevTag|str,tag)
if( arr.length == 4 ) {
prevTag = POSTag.getTagNum(arr[0]);
str = arr[1];
tag = POSTag.getTagNum(arr[2]);
lnProb = Float.parseFloat(arr[3]);
key = getKey(prefix, prevTag, str, tag);
}
// Pr(prevTag|tag)
else if( arr.length == 3 ) {
prevTag = POSTag.getTagNum(arr[0]);
tag = POSTag.getTagNum(arr[1]);
lnProb = Float.parseFloat(arr[2]);
key = getKey(prefix, prevTag, null, tag);
}
}
LN_PROB_HASH.put(key, lnProb);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
System.err.println(line);
System.err.println("Unable to load probability dictionary!!");
} finally {
timer.stop();
System.out.println(LN_PROB_HASH.size() + " values are loaded. (Loading time( " + timer.getInterval() + " secs)");
}
}