private void getBigramModel(File file) throws FileNotFoundException {
		Scanner scanner = new Scanner(new BufferedReader(new FileReader(file)));
		while (scanner.hasNextLine()) {
			String line = "#START# " + scanner.nextLine().trim();
			String[] temp = line.split(" ");
			for (int i = 0; i <= temp.length - 2; i++) {
				if (!this.bigramCnt.containsKey(temp[i])) {
					this.bigramCnt.put(temp[i], new HashMap<String, Integer>());
				}
				if (!this.bigramCnt.get(temp[i]).containsKey(temp[i + 1])) {
					this.bigramCnt.get(temp[i]).put(temp[i + 1], 0);
				}
				Integer count = this.bigramCnt.get(temp[i]).get(temp[i + 1]);
				this.bigramCnt.get(temp[i]).put(temp[i + 1], count + 1);
			}
		}

		for (Map.Entry<String, HashMap<String, Integer>> entry : this.bigramCnt.entrySet()) {
			String fore = entry.getKey();
			HashMap<String, Integer> hindset = entry.getValue();
			if (!this.bigrammodel.containsKey(fore)) {
				this.bigrammodel.put(fore, new HashMap<String, Double>());
			}
			for (Map.Entry<String, Integer> hindentry : hindset.entrySet()) {
				String hind = hindentry.getKey();
				int count = hindentry.getValue();
				this.bigrammodel.get(fore).put(hind, count + 183.97 * this.unigrammodel.get(hind) / (this.unigramCnt.get(fore) + 183.97));
				if (!this.rev_lang.containsKey(hind)) {// initializing rev_lang
					this.rev_lang.put(hind, new HashSet<String>());
				}
				this.rev_lang.get(hind).add(fore);
			}
		}

		scanner.close();
	}