public boolean loadLMFeatures(String filename){
		//If no lm features provided, we will use the same features as logistic model.
		if (filename==null || filename.isEmpty()){
			m_lmFeatureNameIndex = m_featureNameIndex;
			m_lmFeatureNames = m_featureNames;
			System.out.println("Language models share the same features with classification models!");
			m_isLMCVLoaded = true;
			return true;
		}
		
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "UTF-8"));
			String line;
			while ((line = reader.readLine()) != null) {
				if (line.startsWith("#"))//comments
					continue;	
				else{
					m_lmFeatureNameIndex.put(line, m_lmFeatureNames.size()); // set the index of the new feature.
					m_lmFeatureNames.add(line); // Add the new feature.
				}
			}
			reader.close();
			System.out.format("%d features for language model are loaded from %s...\n", m_lmFeatureNames.size(), filename);
			m_isLMCVLoaded = true;
			return true;
		
		} catch (IOException e) {
			System.err.format("[Error]Failed to open file %s!!", filename);
			return false;
		}
	}