LevenshteinDistance

Aus JACK Wiki
Version vom 31. Januar 2018, 15:04 Uhr von Striewe (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=== Beschreibung === Die Funktion ''levenshteinDistance'' berechnet die Levenshtein-Distanz [https://de.wikipedia.org/wiki/Levenshtein-Distanz] zwischen zwei Z…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Beschreibung

Die Funktion levenshteinDistance berechnet die Levenshtein-Distanz [1] zwischen zwei Zeichenketten. Die Funktion erwartet zwei Strings und gibt eine Zahl zurück.

Syntax

levenshteinDistance(Zeichenkette zeichenkette1, Zeichenkette zeichenkette2)

Parameter

  • zeichenkette1 - erste zu vergleichende Zeichenkette
  • zeichenkette2 - zweite zu vergleichende Zeichenkette

Return Value

  • Gibt eine Zahl zurück

Beispiele

levenshteinDistance('Hallo','Hallo')   --> returns 0
levenshteinDistance('Hallo','JACK')   --> returns 5
levenshteinDistance('Hallo','Holla')   --> returns 2

JUnit Tests

[Anzeigen]

	private static Function func = new LevenshteinDistance();
	
	@Test
	public void testCompareToEqualStrings() throws EvaluatorException, OpenMathException {
		List<Object> args = new ArrayList<Object>();
		args.add(OMCreator.createOMSTR("Test"));
		args.add(OMCreator.createOMSTR("Test"));
		Object result = func.evaluate(args);
		assertEquals(OMCreator.createOMI(0), result);
	}

	@Test
	public void testCompareToNotEqualStrings() throws EvaluatorException, OpenMathException {
		List<Object> args = new ArrayList<Object>();
		args.add(OMCreator.createOMSTR("Testin"));
		args.add(OMCreator.createOMSTR("Tester"));
		Object result = func.evaluate(args);
		assertEquals(OMCreator.createOMI(2), result);
	}

	@Test
	public void testCompareToIntegration() throws EvaluatorException, OpenMathException {
		OMOBJ omobj = ExpressionParser.parse("levenshteinDistance('Hallo', 'Test')", null, null);
		OMOBJ result = OMCreator.createOMOBJ(OMToResultVisitor.getInstance().visit(omobj));
		assertEquals(OMCreator.createOMI(5), result.getOMI());
	}

	@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
	public void testCompareToWithLessThanMinParam() throws EvaluatorException, OpenMathException {
		OMOBJ omobj = ExpressionParser.parse("levenshteinDistance('Test')", null, null);
		OMToResultVisitor.getInstance().visit(omobj);
		fail();
	}

	@Test(expected = FunctionInvalidNumberOfArgumentsException.class)
	public void testCompareToWithMoreThanMaxParam() throws EvaluatorException, OpenMathException {
		OMOBJ omobj = ExpressionParser.parse("levenshteinDistance('Test', 'Test', 'Test')", null, null);
		OMToResultVisitor.getInstance().visit(omobj);
		fail();
	}

	@Test(expected = FunctionInvalidArgumentTypeException.class)
	public void testCompareToWithWrongArguments() throws EvaluatorException, OpenMathException {
		OMOBJ omobj = ExpressionParser.parse("compareTo('Test', vector(2))", null, null);
		OMToResultVisitor.getInstance().visit(omobj);
		fail();
	}

Hinweise

  • Die Funktion unterscheidet zwischen Groß- und Kleinschreibung.
  • Die Rückgabe ist immer 0 oder einen positive Zahl.