public void importVocabulary(Iterable<String[]> sl) throws IOException {
		if(debug > 0)
			System.err.println("LanguageModel.importVocabulary(): Started for "+name);
		// initialize the hash table
		HashMap<String, Integer> counts = new HashMap<String, Integer>();

		// cycle through the sentences counting the vocabulary
		for(String[] sent : sl) {
			// keep track of the maximum sentence length to use later
			maxLength = Math.max(sent.length+2, maxLength);
			for(String s : sent) {
				Integer idx = counts.get(s);
				counts.put(s, idx==null?1:idx+1);
			}
		}

		if(debug > 0)
			System.err.println("LanguageModel.importVocabulary(): Vocab "+counts.size()+" before trimming");

		// create the symbol set
		initializeVocab();

		Vector<String> toAdd = new Vector<String>();
		// sort the vocabulary and add it to the symbol set
		for(Entry<String, Integer> e : counts.entrySet())
			if(e.getValue() > vocabFrequency)
				toAdd.add(e.getKey());
		Collections.sort(toAdd);
		for(String s : toAdd)
			vocab.addSymbol(s);

		if(debug > 0)
			System.err.println("LanguageModel.importVocabulary(): Finished with size "+vocab.getSize()+" for "+name);

	}