weightededitdistancetest.java

来自「一个自然语言处理的Java开源工具包。LingPipe目前已有很丰富的功能」· Java 代码 · 共 102 行

JAVA
102
字号
package com.aliasi.test.unit.spell;import com.aliasi.spell.WeightedEditDistance;import com.aliasi.test.unit.BaseTestCase;public class WeightedEditDistanceTest extends BaseTestCase {    public void testOne() {        assertDistance(0,"","",true);        assertDistance(0,"","",false);        assertDistance(1,"a","",true);        assertDistance(1,"","a",true);        assertDistance(1,"a","",false);        assertDistance(1,"","a",false);        assertDistance(1,"a","ab",true);        assertDistance(1,"ab","a",true);        assertDistance(1,"a","ab",false);        assertDistance(1,"ab","a",false);            assertDistance(1,"ab","ba",true);        assertDistance(2,"ab","ba",false);            assertDistance(1,"abc","bac",true);        assertDistance(1,"abc","acb",true);        assertDistance(2,"abc","bac",false);        assertDistance(2,"abc","acb",false);        assertDistance(1,"abcd","bacd",true);        assertDistance(1,"abcd","acbd",true);        assertDistance(1,"abcd","abdc",true);        assertDistance(2,"dabc","dbac",false);        assertDistance(2,"pwnag","ownage",true);        assertDistance(2,"pwnag","ownage",false);        assertDistance(2,"abxy","bayx",true);        assertDistance(3,"abxy","bayx",false);    }    private static void assertDistance(double expectedDistance,                                       CharSequence cs1,                                       CharSequence cs2,                                       boolean allowTransposition) {        WeightedEditDistance distanceMeasure            = allowTransposition             ? TRANSPOSING_EDIT             : NON_TRANSPOSING_EDIT;        assertDistance(expectedDistance,                       cs1,cs2,distanceMeasure,false);    }    private static void assertDistance(double expectedDistance,                                       CharSequence cs1,                                       CharSequence cs2,                                       WeightedEditDistance editDistance,                                       boolean isSimilarity) {        if (isSimilarity)             assertEquals(expectedDistance,                         editDistance.proximity(cs1,cs2),                         0.0001);        else            assertEquals(expectedDistance,                         editDistance.distance(cs1,cs2),                         0.0001);    }    private static class Transposing extends WeightedEditDistance {        public double matchWeight(char c) { return 0.0; }        public double deleteWeight(char c) { return  -1.0; }        public double insertWeight(char c) { return  -1.0; }        public double substituteWeight(char c1, char c2) { return  -1.0; }        public double transposeWeight(char c1, char c2) { return  -1.0; }    }    private static class NonTransposing extends WeightedEditDistance {            public double matchWeight(char c) { return 0.0; }        public double deleteWeight(char c) { return -1.0; }        public double insertWeight(char c) { return -1.0; }        public double substituteWeight(char c1, char c2) { return -1.0; }        public double transposeWeight(char c1, char c2) {             return Double.NEGATIVE_INFINITY;         }    }    private static WeightedEditDistance TRANSPOSING_EDIT = new Transposing();    private static WeightedEditDistance NON_TRANSPOSING_EDIT = new NonTransposing();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?