/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package opennlp.modelbuilder.v2;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * @author Owner
 */
public interface ModelParameter {
   
  void setParameters(Map<String, String> params);
}
