Rezept-Zuordnung: ein Eigenschaftswort frisst keinen Artikelnamen mehr

Gefunden bei der Probe, ob ein Embedding-Modell die Zuordnung besser
hinbekommt: Die Sperrliste der Eigenschaftswoerter lief als eine einzige
Liste mit Praefix-Vergleich. "Frischkaese" fing mit "frisch" an, galt
damit als blosse Eigenschaft und fiel aus dem Vergleich - die Zutat
"Kaese" fand den Frischkaese deshalb NIE. Ebenso "Biomilch" (bio),
"Rohrzucker" (roh), "Kleingebaeck" (klein), "Ganzkornbrot" (ganz),
"Grobgriess" (grob).

Unsichtbar, weil kein falscher Treffer entstand, sondern ein richtiger
ausblieb - die Zutat stand einfach als "nicht zugeordnet" da.

Jetzt zwei Toepfe statt einem. Stammformen wie "getrock" oder "vegan"
vergleichen weiter ueber den Wortanfang, weil Deutsch beugt und diese
Stuecke keine Lebensmittelnamen anfangen. Kurze Alltagswoerter wie
"frisch", "bio", "roh", "klein" zaehlen nur noch als Eigenschaft, wenn
hoechstens eine Beugungsendung dranhaengt: "frische" ja, "frischkase"
nein.

Gegenprobe im Test: "frische Hefe" findet die "Frischen Kraeuter"
weiterhin nicht - die Sperre ist praeziser geworden, nicht schwaecher.

7 neue Tests, Suite bei 494.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-02 14:01:56 +02:00
co-authored by Claude Opus 5
parent 8072e7f566
commit fe6327c913
2 changed files with 80 additions and 11 deletions
+42
View File
@@ -372,6 +372,48 @@ def test_umlaut_und_mehrzahl_finden_sich(db):
assert zutat.status == "vorhanden"
def test_eigenschaftswort_verschluckt_den_artikelnamen_nicht(db):
'''Der Fund aus der Modellprobe: 'Frischkaese' fing mit 'frisch' an.
Damit galt der ganze Name als blosse Eigenschaft, fiel aus dem Vergleich -
und die Zutat 'Kaese' fand den Frischkaese NIE. Unsichtbar, weil kein
falscher Treffer entstand, sondern ein richtiger ausblieb.
'''
cat = _kategorie(db, "Molkerei")
kaese = _artikel(db, "Frischkäse", cat, bestand=400)
[zutat] = pruefe_zutaten(db, [_zutat("Käse", 100, "g")])
assert zutat.ziel_id == kaese.id
assert zutat.status == "vorhanden"
@pytest.mark.parametrize("artikel,zutat_name", [
("Biomilch", "Milch"),
("Rohrzucker", "Zucker"),
("Kleingebäck", "Gebäck"),
("Ganzkornbrot", "Brot"),
("Grobgrieß", "Grieß"),
])
def test_komposita_mit_eigenschaft_am_anfang_bleiben_auffindbar(db, artikel, zutat_name):
cat = _kategorie(db, "Vorrat")
ziel = _artikel(db, artikel, cat, bestand=1000)
[zutat] = pruefe_zutaten(db, [_zutat(zutat_name, 100, "g")])
assert zutat.ziel_id == ziel.id
def test_das_eigenschaftswort_selbst_begruendet_weiter_keinen_treffer(db):
"""Die Gegenprobe – sonst waere die Sperre bloss ausgehebelt."""
cat = _kategorie(db, "Kuehlregal")
_artikel(db, "Frische Kräuter", cat, bestand=100)
[zutat] = pruefe_zutaten(db, [_zutat("frische Hefe", 20, "g")])
assert zutat.status == "kein_treffer"
def test_vollmilch_findet_die_h_vollmilch(db):
cat = _kategorie(db, "Molkerei")
milch = _artikel(db, "H Vollmilch", cat, base=BaseUnit.milliliter, bestand=1000)