c5508372ca
Phase 3 piece 2. Ports multilingual.py: deterministic language detection (en/es/pt/it) via stopword + diacritic scoring, localized fixed phrases (SACRED per-language yes/no/decline/identity), PT/ES->EN retrieval term lexicon, and EN->target predicate translation. No generative model. Gate (multilingual_gate.el): 4/4 languages detected correctly; localized declines + term/pred lexicons verified. Built bounded (elc rc=0 peak 25MB). Worked through the documented el '+' mis-compile (two chained function-call Int operands compile as string concat -> corrupt Int -> segfault on the accented path); fixed by binding each score to an Int var and adding vars singly. Simplifications (honest): diacritics scored by PRESENCE (str_contains) not codepoint count (UTF-8 index safety); confidence scalar and the regex-based parse_directive() from the reference not yet ported (directive parsing deferred to the dialogue layer).
44 lines
1.8 KiB
EmacsLisp
44 lines
1.8 KiB
EmacsLisp
// multilingual_gate.el - deterministic language detect + localized-phrase test.
|
|
|
|
fn mg_det(text: String, want: String) -> String {
|
|
let got: String = ml_detect(text)
|
|
let ok: String = "MISMATCH"
|
|
if str_eq(got, want) { let ok = "ok" }
|
|
return " detect(" + got + ") want=" + want + " (" + ok + ") :: " + text + "\n"
|
|
}
|
|
|
|
fn mg_ok(text: String, want: String) -> Int {
|
|
if str_eq(ml_detect(text), want) { return 1 }
|
|
return 0
|
|
}
|
|
|
|
fn run_ml_gate() -> String {
|
|
let t1: String = "Does Neuron use SQLite for storage?"
|
|
let t2: String = "Neuron, me explica cómo la saliencia forma las geometrías."
|
|
let t3: String = "O professor não leu o livro na memória."
|
|
let t4: String = "Che cosa memorizza Neuron nella memoria?"
|
|
|
|
let rep: String = "==== ELP multilingual detect + localized phrases ====\n"
|
|
let rep = rep + mg_det(t1, "en")
|
|
let rep = rep + mg_det(t2, "es")
|
|
let rep = rep + mg_det(t3, "pt")
|
|
let rep = rep + mg_det(t4, "it")
|
|
|
|
let rep = rep + " localized decline (pt): " + ml_tr("no_memory", "pt") + "\n"
|
|
let rep = rep + " localized decline (es): " + ml_tr("no_memory", "es") + "\n"
|
|
let rep = rep + " term(saliência->en): " + ml_term("saliência", "pt") + "\n"
|
|
let rep = rep + " pred(store->pt): " + ml_translate_pred("store", "pt") + "\n"
|
|
|
|
let ok: Int = 0
|
|
if mg_ok(t1, "en") == 1 { let ok = ok + 1 }
|
|
if mg_ok(t2, "es") == 1 { let ok = ok + 1 }
|
|
if mg_ok(t3, "pt") == 1 { let ok = ok + 1 }
|
|
if mg_ok(t4, "it") == 1 { let ok = ok + 1 }
|
|
let rep = rep + "-----------------------------------------------------------------\n"
|
|
let rep = rep + "language detected correctly: " + int_to_str(ok) + "/4\n"
|
|
if ok == 4 { let rep = rep + "ML GATE: PASS\n" } else { let rep = rep + "ML GATE: FAIL\n" }
|
|
return rep
|
|
}
|
|
|
|
println(run_ml_gate())
|