package ruc.irm.similarity.sentence.editdistance; /** * 编辑单元 * * @author <a href="mailto:iamxiatian@gmail.com">夏天</a> * @organization 中国人民大学信息资源管理学院 知识工程实验室 */ public abstract class EditUnit { /** * 获取编辑单元的内部字符串 * @return */ public abstract String getUnitString(); /** * 获取替换代价,默认替换代价当替换单元的内容相同时为0, * 不同时为1 */ public double getSubstitutionCost(EditUnit other){ return this.equals(other)?0:1; } /** * 获取删除代价,标准算法的默认值为1.0, 此处也设为1.0 * 具体的编辑单元可以通过覆盖该方法设置不同的删除代价 * @return 删除代价 */ public double getDeletionCost(){ return 1.0; } /** * 获取插入代价,标准算法的默认值为1.0. * 具体的编辑单元可以通过覆盖该方法设置不同的插入代价 */ public double getInsertionCost(){ return 1.0; } @Override public boolean equals(Object other){ if(!(other instanceof EditUnit)) return false; return getUnitString().equals(((EditUnit)other).getUnitString()); } @Override public String toString(){ return getUnitString(); } }