init
This commit is contained in:
50
tests/test_textkit.py
Normal file
50
tests/test_textkit.py
Normal file
@@ -0,0 +1,50 @@
|
||||
"""Anker-Matching (5 Stufen), Akronym-Kanal, Jaccard, Parser."""
|
||||
from backend import textkit
|
||||
|
||||
|
||||
def test_finde_zitat_exakt_und_whitespace():
|
||||
text = "Der Satz steht\nhier drin. Und mehr."
|
||||
span = textkit.finde_zitat(text, "Der Satz steht hier drin.")
|
||||
assert span and text[span[0]:span[1]].startswith("Der")
|
||||
|
||||
|
||||
def test_finde_zitat_casefold_und_umlaute():
|
||||
text = "Die ÜBERTRAGUNG von Daten ist zentral für jedes Netzwerk im Betrieb."
|
||||
assert textkit.finde_zitat(text, "die übertragung von daten ist zentral")
|
||||
|
||||
|
||||
def test_finde_zitat_fuzzy_mit_negations_guard():
|
||||
basis = ("Eine Sprache ist regulär, wenn ein endlicher Automat sie "
|
||||
"akzeptiert und verarbeitet.")
|
||||
text = f"Einleitung. {basis} Schluss."
|
||||
leicht_anders = basis.replace("verarbeitet", "verarbeiten kann")
|
||||
assert textkit.finde_zitat(text, leicht_anders)
|
||||
# Negation im Zitat, nicht im Text → KEIN Anker (Antonym-Falle)
|
||||
negiert = basis.replace("ist regulär", "ist nicht regulär")
|
||||
assert textkit.finde_zitat(text, negiert) is None
|
||||
|
||||
|
||||
def test_akronym_kanal():
|
||||
assert textkit.ist_akronym_von("DNS", "Domain Name System")
|
||||
assert not textkit.ist_akronym_von("HTTP", "Hypertext Markup Language")
|
||||
assert not textkit.ist_akronym_von("A", "Anfang")
|
||||
|
||||
|
||||
def test_jaccard_gestemmt():
|
||||
a = "Die Führung von Teams erfordert Erfahrung."
|
||||
b = "Teams führen erfordert erfahrene Personen."
|
||||
assert textkit.jaccard(a, b) > textkit.jaccard(a, "Völlig anderes Thema hier.")
|
||||
|
||||
|
||||
def test_bloecke_parser():
|
||||
text = ("Prosa davor\n===ATOM===\nTITEL: A\nDEFINITION: Zeile 1\nZeile 2\n"
|
||||
"===ATOM===\nTITEL: B\nDEFINITION: x\n")
|
||||
bloecke = textkit.bloecke(text, "ATOM")
|
||||
assert len(bloecke) == 2
|
||||
assert bloecke[0]["titel"] == "A"
|
||||
assert "Zeile 2" in bloecke[0]["definition"]
|
||||
|
||||
|
||||
def test_ueberlappung():
|
||||
assert textkit.ueberlappung((0, 100), (50, 150)) == 0.5
|
||||
assert textkit.ueberlappung((0, 10), (20, 30)) == 0.0
|
||||
Reference in New Issue
Block a user