package org.gbif.nub.lookup.similarity; import org.apache.commons.lang3.time.StopWatch; import org.junit.Test; public class StringSimilarityComparisonTest { private StopWatch watch = new StopWatch(); private StringSimilarity l = new LevenshteinDistance(); private StringSimilarity dl = new DamerauLevenshtein(); private StringSimilarity mdl2 = new ModifiedDamerauLevenshtein(2); private StringSimilarity mdl3 = new ModifiedDamerauLevenshtein(3); private StringSimilarity jw = new JaroWinkler(); private StringSimilarity mjw = new ModifiedJaroWinkler(); private StringSimilarity scin = new ScientificNameSimilarity(); @Test public void testSimilarities() throws Exception { compare("Abies alba", "Abies alba"); compare("Abies alba", "Abies alta"); compare("Linaria pedunculata", "Linaria pedinculata"); compare("Linaria pedunculata", "Lunaria pedunculata"); compare("Linaria pedunculata", "Linariya pedonculata"); compare("Linaria pedunculata vulgaris", "Lunaria pedunculata vulgaris"); compare("Linaria pedunculata vulgaris", "Linaria pedunculata vandalis"); compare("Oreina elegans", "Orfelia elegans"); compare("Lucina scotti", "Lucina wattsi"); compare("scotti", "wattsi"); } private void compare(String x1, String x2) { System.out.println("\n" + x1 + " ~ " + x2); sim(" L", l, x1, x2); sim(" DL", dl, x1, x2); sim("MDL2", mdl2, x1, x2); sim("MDL3", mdl3, x1, x2); sim(" JW", jw, x1, x2); sim("MJW ", mjw, x1, x2); sim("SciN", scin, x1, x2); } private void sim(String name, StringSimilarity sim, String x1, String x2) { watch.reset(); watch.start(); System.out.println('\t' + name + " = " + sim.getSimilarity(x1, x2) + '\t' + watch.getNanoTime()); } }