public void readFile() throws FileNotFoundException,IOException
	{
		/* lekha - generating bigrams from big.txt instead of wikipedia corpus
		BufferedReader br2 = new BufferedReader(new FileReader("big.txt"));
		System.out.println("Reading corpus...");
		String line2;
		while((line2 = br2.readLine()) != null)
		{
			String words[] = line2.split(" ");
			for (int i = 0 ; i < words.length ; i++)
			{
				if(Utilities.isValid(words[i]))
					bigrams.update(words[i]);
			}
		}
		*/
		
		//open the parallel corpus file
		BufferedReader br = new BufferedReader(new FileReader("words.txt"));
		
		System.out.println("Parallel Corpus being Parsed");
		
		//read the parallel corpus file
		String line;
		while((line = br.readLine()) != null)
		{
			String parts[] = line.split("->");
			//parts[0] has wrong word
			//parts[1] has correct word
			
			/*
				1) for knowledge based static approach
				the following code stores all correct words in a list(no repetitions)
			*/
			
			String currentCorrectWord = parts[1].toLowerCase(); //for things like America
			String currentWrongWord = parts[0].toLowerCase(); //for things like America
			
			// Using isValid() function from spellchecker.Utilities class to get rid of corner cases
			if (Utilities.isValid(currentCorrectWord) && Utilities.isValid(currentWrongWord) && !correctWords.contains(currentCorrectWord))
			{
				correctWords.add(currentCorrectWord);
				wrongWords.add(currentWrongWord);
				bigrams.update(currentCorrectWord); //updates bigram counts
			}
			
			/*
				2) For generative technique using Jurafsky formulation 
				update counts for S,I,D,X matrices
			*/
			
			if(Utilities.isValid(parts[0]) && Utilities.isValid(parts[1]))
				errorMatrices.updateMatrices(parts[0], parts[1]);
			
		}
		
		bigrams.printProbabilities();
		
		errorMatrices.printDMatrix();
		errorMatrices.printIMatrix();
		errorMatrices.printSMatrix();
		errorMatrices.printXMatrix();
		errorMatrices.printCounts();
		//at this point
		//correctWords contains a non repeating complete list of correct words
		
		 //prints all correct words list
		//System.out.println("\n--CORRECT DICTIONARY WORDS--\n");
		for (int i = 0; i< correctWords.size() ; i++)
		{
			//System.out.println(i+": " + correctWords.get(i));	Temporarily commented out - Sagar
		}
		
		// Sagar - Temporarily creating DataSet here, NEEDS TO BE CHANGED
		dataSet.correctWords = correctWords;
		dataSet.wrongWords = wrongWords;
	}