public static String response(String input, DictSkipList<String, String> dictionary) throws InvalidFormatException, IOException
	{
	
	 //check for dictionary, no punctuation
	if (dictionary.containsKey(input.toLowerCase()))
	{
		return dictionary.get(input.toLowerCase());
	}
	  
	//generate response
	InputStream is = new FileInputStream( "en-pos-maxent.bin" );
	inputParser parse = new inputParser(is);
	String[] verbNoun = parse.getVerbNoun(input);
	
	//see if input has named entity
	boolean[] hasNE = nameFinderChatbot.hasNamedEntities(input);
	
	//respond with appropriate named-entity response
	if (hasNE[0] == true)
		return constructNEDate(input, verbNoun[0]);
	else if (hasNE[1] == true)
		return constructNELocation(input, verbNoun[0]);
	else if (hasNE[2] == true)
		return constructNEMoney(input, verbNoun[0]);
	else if (hasNE[3] == true)
		return constructNEOrganization(input, verbNoun[0]);
	else if (hasNE[4] == true)
		return constructNEPercentage(input, verbNoun[0]);
	else if (hasNE[5] == true)
		return constructNEPerson(input, verbNoun[0]);
	else if (hasNE[6] == true)
		return constructNETime(input, verbNoun[0]);
	
	
	
	
	//if string has personal pronoun, generate that
	if(parse.hasPersonalPronoun(input))
	{
		return constructPP(parse.getPersonalPronoun(input), verbNoun[0]);
	}
	else
		return construct(verbNoun[0], verbNoun[1], input);
	}