elp(translate): normalize EN irregular pasts before the lemma bridge
comprehend lemmatizes some irregulars (fought->fight) but not all (broke); tr_norm_verb covers the poem's remainder so affirmative content verbs route (ES 'Yo broo' -> 'Yo rompo'). Negation lines unchanged and still correct.
This commit is contained in:
+20
-1
@@ -182,6 +182,25 @@ fn tr_neg_word(neg_word: String, lang: String) -> String {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// normalize an English irregular past/participle surface to its lemma, so the
|
||||||
|
// content bridge can find it. comprehend lemmatizes regulars and some irregulars
|
||||||
|
// ("fought"->"fight") but not all ("broke"); cover the poem's remainder here.
|
||||||
|
fn tr_norm_verb(w: String) -> String {
|
||||||
|
if str_eq(w, "broke") { return "break" }
|
||||||
|
if str_eq(w, "broken") { return "break" }
|
||||||
|
if str_eq(w, "saw") { return "see" }
|
||||||
|
if str_eq(w, "took") { return "take" }
|
||||||
|
if str_eq(w, "ran") { return "run" }
|
||||||
|
if str_eq(w, "fought") { return "fight" }
|
||||||
|
if str_eq(w, "waited") { return "wait" }
|
||||||
|
if str_eq(w, "touched") { return "touch" }
|
||||||
|
if str_eq(w, "called") { return "call" }
|
||||||
|
if str_eq(w, "stayed") { return "stay" }
|
||||||
|
if str_eq(w, "chased") { return "chase" }
|
||||||
|
if str_eq(w, "carried") { return "carry" }
|
||||||
|
return w
|
||||||
|
}
|
||||||
|
|
||||||
// ── the faculty: EN text -> target surface ────────────────────────────────────
|
// ── the faculty: EN text -> target surface ────────────────────────────────────
|
||||||
// Parses EN (mature path), swaps content lemmas via the wired bridge, carries
|
// Parses EN (mature path), swaps content lemmas via the wired bridge, carries
|
||||||
// SACRED polarity/neg_word untouched, and hands a target-lang spec to realize().
|
// SACRED polarity/neg_word untouched, and hands a target-lang spec to realize().
|
||||||
@@ -192,7 +211,7 @@ fn translate_spec(text: String, tgt: String) -> [String] {
|
|||||||
let agent: String = slots_get(spec, "agent")
|
let agent: String = slots_get(spec, "agent")
|
||||||
let negw: String = slots_get(spec, "neg_word")
|
let negw: String = slots_get(spec, "neg_word")
|
||||||
|
|
||||||
let spec = slots_set(spec, "predicate", tr_pred(pred, tgt))
|
let spec = slots_set(spec, "predicate", tr_pred(tr_norm_verb(pred), tgt))
|
||||||
let spec = slots_set(spec, "patient", tr_np(pat, tgt))
|
let spec = slots_set(spec, "patient", tr_np(pat, tgt))
|
||||||
let spec = slots_set(spec, "agent", tr_pronoun(agent, tgt))
|
let spec = slots_set(spec, "agent", tr_pronoun(agent, tgt))
|
||||||
// SACRED: neg_word localized to a negator, polarity left exactly as parsed.
|
// SACRED: neg_word localized to a negator, polarity left exactly as parsed.
|
||||||
|
|||||||
Reference in New Issue
Block a user