public void readModelFromFile(String fileName) throws IOException{

		BufferedReader in = new BufferedReader(new FileReader(new File(fileName)));

		//read smoothingValue
		in.readLine();
		smoothingValue = Double.parseDouble(in.readLine());

		//read featureValueRelativeRoleFrequency
		in.readLine();
		featureValueRelativeRoleFrequency = new HashMap<String, Map<String, Double>>();
		featureValueFrequency = new HashMap<String, MultiSet<String>>();
		String line = in.readLine();
		String[] lineParts;
		String[] lastLineParts = new String[2];
		while (line != null) {
			lineParts = line.split(modelOutSplitChar);
			if (!lineParts[0].equals(lastLineParts[0])) {
				featureValueRelativeRoleFrequency.put(lineParts[0], new HashMap<String, Double>());
				featureValueFrequency.put(lineParts[0], new MultiSet<String>());
				lastLineParts[0] = lineParts[0];
			}
			featureValueRelativeRoleFrequency.get(lineParts[0]).put(lineParts[1], Math.log(Double.parseDouble(lineParts[3])));
			featureValueFrequency.get(lineParts[0]).add(lineParts[1], Integer.parseInt(lineParts[2]));
			line = in.readLine();
		}
		in.close();
	}