/** * Calculates the similarity score of a single feature. * @param feature The feature string to compare. * @param target The target string to compare against the feature. * @return The similarity score between the feature and target. */ public double score(String feature, String target) { return strategy.score(feature, target); }
/** * Calculates the similarity score of a single feature. * @param The feature string to compare. * @param The target string to compare against the feature. * @return The similarity score between the feature and target. */ public double score(String feature, String target) { return strategy.score(feature, target); }
/** * Calculates the similarity score of a single feature. * @param feature The feature string to compare. * @param target The target string to compare against the feature. * @return The similarity score between the feature and target. */ public double score(String feature, String target) { return strategy.score(feature, target); }
/** * Calculates the similarity score of a single feature. * @param feature The feature string to compare. * @param target The target string to compare against the feature. * @return The similarity score between the feature and target. */ public double score(String feature, String target) { return strategy.score(feature, target); }
/** * Calculates all similarity scores for a given set of features. * @param features The list of features. * @param target The target string to compare against the features. * @return A list of similarity scores. */ public List<SimilarityScore> scoreAll(List<String> features, String target) { ArrayList<SimilarityScore> scores = new ArrayList<SimilarityScore>(); for(String feature: features) { double score = strategy.score(feature, target); scores.add(new SimilarityScore(feature, score)); } return scores; }
/** * Calculates all similarity scores for a given set of features. * @param features The list of features. * @param target The target string to compare against the features. * @return A list of similarity scores. */ public List<SimilarityScore> scoreAll(List<String> features, String target) { ArrayList<SimilarityScore> scores = new ArrayList<SimilarityScore>(); for(String feature: features) { double score = strategy.score(feature, target); scores.add(new SimilarityScore(feature, score)); } return scores; }
/** * Calculates all similarity scores for a given set of features. * @param features The list of features. * @param target The target string to compare against the features. * @return A list of similarity scores. */ public List<SimilarityScore> scoreAll(List<String> features, String target) { ArrayList<SimilarityScore> scores = new ArrayList<SimilarityScore>(); for(String feature: features) { double score = strategy.score(feature, target); scores.add(new SimilarityScore(feature, score)); } return scores; }
/** * Calculates all similarity scores for a given set of features. * @param features The list of features. * @param target The target string to compare against the features. * @return A list of similarity scores. */ public List<SimilarityScore> scoreAll(List<String> features, String target) { ArrayList<SimilarityScore> scores = new ArrayList<SimilarityScore>(); for(String feature: features) { double score = strategy.score(feature, target); scores.add(new SimilarityScore(feature, score)); } return scores; }
@Test public void testScore() { SimilarityStrategy strategy = mock(SimilarityStrategy.class); String target = "McDonalds"; String c1 = "MacMahons"; String c2 = "McPherson"; String c3 = "McDonalds"; when(strategy.score(c1, target)).thenReturn(0.90); when(strategy.score(c2, target)).thenReturn(0.74); when(strategy.score(c3, target)).thenReturn(1.000); StringSimilarityService service = new StringSimilarityServiceImpl(strategy); double score = service.score(c1, target); verify(strategy).score(c1, target); assertEquals(0.90, score, 0.000); }
@Test public void testScoreAll() { SimilarityStrategy strategy = mock(SimilarityStrategy.class); String target = "McDonalds"; String c1 = "MacMahons"; String c2 = "McPherson"; String c3 = "McDonalds"; when(strategy.score(target, c1)).thenReturn(0.90); when(strategy.score(target, c2)).thenReturn(0.74); when(strategy.score(target, c3)).thenReturn(1.000); StringSimilarityService service = new StringSimilarityServiceImpl(strategy); List<String> features = new ArrayList<String>(); features.add(c1); features.add(c2); features.add(c3); List<SimilarityScore> scores = service.scoreAll(features, target); verify(strategy).score(c1, target); verify(strategy).score(c2, target); verify(strategy).score(c3, target); assertEquals(3, scores.size()); }
@Test public void testFindTop() { SimilarityStrategy strategy = mock(SimilarityStrategy.class); String target = "McDonalds"; String c1 = "MacMahons"; String c2 = "McPherson"; String c3 = "McDonalds"; SimilarityScore expected = new SimilarityScore(c3, 1.000); when(strategy.score(c1, target)).thenReturn(0.90); when(strategy.score(c2, target)).thenReturn(0.74); when(strategy.score(c3, target)).thenReturn(1.000); StringSimilarityService service = new StringSimilarityServiceImpl(strategy); List<String> features = new ArrayList<String>(); features.add(c1); features.add(c2); features.add(c3); SimilarityScore top= service.findTop(features,target); verify(strategy).score(c1, target); verify(strategy).score(c2, target); verify(strategy).score(c3, target); assertEquals(expected, top); }
@Test public void testFindTop_Descending() { SimilarityStrategy strategy = mock(SimilarityStrategy.class); String target = "McDonalds"; String c1 = "MacMahons"; String c2 = "McPherson"; String c3 = "McDonalds"; SimilarityScore expected = new SimilarityScore(c3, 1.000); when(strategy.score(c1, target)).thenReturn(0.90); when(strategy.score(c2, target)).thenReturn(0.74); when(strategy.score(c3, target)).thenReturn(1.000); StringSimilarityService service = new StringSimilarityServiceImpl(strategy); List<String> features = new ArrayList<String>(); features.add(c1); features.add(c2); features.add(c3); DescendingSimilarityScoreComparator comparator = new DescendingSimilarityScoreComparator(); SimilarityScore top= service.findTop(features,target, comparator); verify(strategy).score(c1, target); verify(strategy).score(c2, target); verify(strategy).score(c3, target); assertEquals(expected, top); } }
@Test public void testFindTop_Ascending() { SimilarityStrategy strategy = mock(SimilarityStrategy.class); String target = "McDonalds"; String c1 = "MacMahons"; String c2 = "McPherson"; String c3 = "McDonalds"; SimilarityScore expected = new SimilarityScore(c2, 0.74); when(strategy.score(c1, target)).thenReturn(0.90); when(strategy.score(c2, target)).thenReturn(0.74); when(strategy.score(c3, target)).thenReturn(1.000); StringSimilarityService service = new StringSimilarityServiceImpl(strategy); List<String> features = new ArrayList<String>(); features.add(c1); features.add(c2); features.add(c3); AscendingSimilarityScoreComparator comparator = new AscendingSimilarityScoreComparator(); SimilarityScore top= service.findTop(features,target, comparator); verify(strategy).score(c1, target); verify(strategy).score(c2, target); verify(strategy).score(c3, target); assertEquals(expected, top); }
@Test public void testAbsoluteDissimilarity() { SimilarityStrategy s = new JaroStrategy(); String first = "Mississippi"; String second = "Oklahoma"; double expected = 0.000; double delta = 0.000; double actual = s.score(first, second); assertEquals(expected, actual, delta); } }
@Test public void testAbsoluteDissimilarity() { SimilarityStrategy s = new DiceCoefficientStrategy(); String first = "Mississippi"; String second = "Oklahoma"; double expected = 0.000; double delta = 0.000; double actual = s.score(first, second); assertEquals(expected, actual, delta); }
@Test public void testSoundAlike() { SimilarityStrategy s = new JaroWinklerStrategy(); String first = "Dwayne"; String second = "Duane"; double expected = 0.840; double delta = 0.001; double actual = s.score(first, second); assertEquals(expected, actual, delta); }
@Test public void testOneTranspostion() { SimilarityStrategy s = new DiceCoefficientStrategy(); String first = "Martha"; String second = "Marhta"; double expected = 0.400; double delta = 0.001; double actual = s.score(first, second); assertEquals(expected, actual, delta); }
@Test public void testAbsoluteSimilarity() { SimilarityStrategy s = new DiceCoefficientStrategy(); String first = "Mississippi"; String second = "Mississippi"; double expected = 1.000; double delta = 0.000; double actual = s.score(first, second); assertEquals(expected, actual, delta); }
@Test public void testOneTranspostion() { SimilarityStrategy s = new JaroWinklerStrategy(); String first = "Martha"; String second = "Marhta"; double expected = 0.961; double delta = 0.001; double actual = s.score(first, second); assertEquals(expected, actual, delta); }
@Test public void testAbsoluteSimilarity() { SimilarityStrategy s = new JaroStrategy(); String first = "Mississippi"; String second = "Mississippi"; double expected = 1.000; double delta = 0.000; double actual = s.score(first, second); assertEquals(expected, actual, delta); }