NSF-RAG-Codex / knowledge_base.py
alezsd's picture
NSF RAG v1.0
9abe007
"""
knowledge_base.py
─────────────────
Patrones de error HTR y grafías del castellano s.XVI.
Edita estas listas para ampliar la base de conocimiento estática.
"""
# ── Confusiones visuales habituales en HTR sobre letra procesal / gótica ──────
HTR_ERROR_PATTERNS = [
{"htr": "u", "gt": "n", "context": "confusión visual u/n en minúscula gótica", "example": "uuestro → nuestro"},
{"htr": "n", "gt": "u", "context": "confusión visual n/u en procesal", "example": "sno → suo (raro)"},
{"htr": "c", "gt": "e", "context": "confusión c/e en cursiva procesal", "example": "merçcd → merçed"},
{"htr": "rn", "gt": "m", "context": "rn interpretado como m por el modelo", "example": "cornprar → comprar"},
{"htr": "ii", "gt": "u", "context": "doble i confundida con u", "example": "diios → duos"},
{"htr": "cl", "gt": "d", "context": "cl confundido con d en procesal", "example": "clado → dado"},
{"htr": "f", "gt": "s", "context": "s larga (ſ) leída como f por el modelo", "example": "feñor → señor"},
{"htr": "1", "gt": "l", "context": "1 numérico confundido con l minúscula", "example": "1ugar → lugar"},
{"htr": "i", "gt": "j", "context": "i/j sin distinción gráfica en s.XVI", "example": "iusticia → justicia"},
{"htr": "ó", "gt": "a", "context": "a cerrada interpretada como o", "example": "cóso → caso"},
{"htr": "ll", "gt": "h", "context": "ll confundida con h en algunas manos", "example": "llonra → honra"},
{"htr": "vn", "gt": "un", "context": "v usada como u consonántica al inicio de sílaba", "example": "vno → uno"},
{"htr": "e", "gt": "c", "context": "c abierta leída como e", "example": "etro → otro"},
{"htr": "o", "gt": "a", "context": "a redondeada confundida con o", "example": "los → las"},
]
# ── Grafías propias del castellano s.XVI que NO deben modernizarse ────────────
GRAFIA_PATTERNS = [
{"modern": "hizo", "ancient": "fizo", "rule": "f- inicial latina ante diptongo ie/ue"},
{"modern": "hijo", "ancient": "fijo", "rule": "f- inicial conservada"},
{"modern": "hacer", "ancient": "fazer / hazer", "rule": "variación f/h en infinitivos"},
{"modern": "dicho", "ancient": "dho / dicho", "rule": "abreviatura notarial dho"},
{"modern": "merced", "ancient": "merçed", "rule": "cedilla ante e/i"},
{"modern": "que", "ancient": "q̃ / que", "rule": "abreviatura con tilde volada"},
{"modern": "porque", "ancient": "porq̃ / porque", "rule": "abreviatura frecuente"},
{"modern": "vecino", "ancient": "vezino", "rule": "z/c ante vocal anterior"},
{"modern": "precio", "ancient": "presçio", "rule": "variación s/c+cedilla"},
{"modern": "ciudad", "ancient": "çibdad / cibdad","rule": "forma medieval con b/v"},
{"modern": "mucho", "ancient": "muncho", "rule": "nasalización muncho/mucho"},
{"modern": "mismo", "ancient": "mesmo", "rule": "mesmo forma habitual s.XVI"},
{"modern": "también", "ancient": "tanbién", "rule": "asimilación nasal"},
{"modern": "escribano", "ancient": "escriuano", "rule": "v/u gráfica"},
{"modern": "nuestro", "ancient": "nuestro / nro", "rule": "abreviatura nro en notarial"},
{"modern": "señor", "ancient": "señor / sr", "rule": "abreviatura sr"},
{"modern": "dicho", "ancient": "dcho / dho", "rule": "doble abreviatura notarial"},
{"modern": "tienen", "ancient": "tienen / tienẽ","rule": "tilde abreviativa nasal final"},
{"modern": "lugar", "ancient": "lugar / lug̃r", "rule": "abreviatura con tilde"},
{"modern": "presente", "ancient": "prezente / presente", "rule": "alternancia s/z"},
]
# ── Documentos de ejemplo embebidos (se amplían con el corpus real) ───────────
SAMPLE_PAIRS = [
{
"id": "sample_001",
"type": "notarial",
"region": "Castilla",
"date": "1542",
"htr": "q̃ fizo merçed al dho lugar de las alcaualas",
"gt": "que fizo merçed al dicho lugar de las alcaualas",
"corrections": ["dho → dicho (abreviatura expandida)"],
},
{
"id": "sample_002",
"type": "notarial",
"region": "Andalucía",
"date": "1561",
"htr": "el escriuano del cabildo faze fe y da testimouio verdadero",
"gt": "el escriuano del cabildo faze fe y da testimonio verdadero",
"corrections": ["testimouio → testimonio (u/n confusión HTR)"],
},
{
"id": "sample_003",
"type": "judicial",
"region": "Castilla",
"date": "1534",
"htr": "en la muy noble çibdad de burgos a veynte dias del mes de março",
"gt": "en la muy noble çibdad de burgos a veynte días del mes de março",
"corrections": ["días: acento restituido"],
},
{
"id": "sample_004",
"type": "eclesiastico",
"region": "Toledo",
"date": "1578",
"htr": "el vezino dela villa de alcala prezento ante nos vna peticion",
"gt": "el vezino de la villa de alcalá presentó ante nos una petición",
"corrections": ["dela → de la", "alcala → alcalá", "prezento → presentó", "vna → una"],
},
{
"id": "sample_005",
"type": "notarial",
"region": "Extremadura",
"date": "1549",
"htr": "yo el sobredho escriuano doy fe q̃ conosco al otorgante",
"gt": "yo el sobredicho escriuano doy fe que conosco al otorgante",
"corrections": ["sobredho → sobredicho", "q̃ → que"],
},
{
"id": "sample_006",
"type": "judicial",
"region": "Castilla",
"date": "1556",
"htr": "fizo pareçer ante si a juan de la torre vezino desta villa",
"gt": "fizo pareçer ante sí a juan de la torre vezino desta villa",
"corrections": ["si → sí (acento diacrítico)"],
},
{
"id": "sample_007",
"type": "notarial",
"region": "Aragón",
"date": "1523",
"htr": "sepan quantos esta carta de poder vieren como yo pero lopez",
"gt": "sepan quantos esta carta de poder vieren como yo pero lópez",
"corrections": ["lopez → lópez (acento)"],
},
{
"id": "sample_008",
"type": "eclesiastico",
"region": "Sevilla",
"date": "1587",
"htr": "en el nonbre de dios e de la virgen maria su madre amen",
"gt": "en el nonbre de dios e de la virgen maría su madre amén",
"corrections": ["maría, amén: acentos restituidos"],
},
]