Hebrew OT Predicate-Argument Structure (Semantic Role Labeling)¶
Analysis of the MACULA Hebrew WLC frame column, which encodes PropBank-style
semantic role structure for ~68,207 Hebrew verb tokens (~14.6% of all Hebrew OT tokens).
Argument roles:
- A0 — proto-agent: the subject / initiator of the action
- A1 — proto-patient: the object / affected entity
Questions this notebook answers:
- What does אֱלֹהִים (God) do as agent across the OT?
- What is created/destroyed/given as patient across the OT?
- Who are the typical agents of theological verbs like בָּרָא (create), נָתַן (give), שָׁפַט (judge)?
- What does YHWH act on most often?
- What are the most common agent–verb–patient triples in each book?
Data source: MACULA Hebrew WLC (macula-hebrew/ submodule),
semantic roles from Clear Bible / Groves Center.
In [ ]:
Copied!
import sys
sys.path.insert(0, '../../../src')
from bible_grammar import (
ot_frame_data, ot_agent_verbs, ot_patient_verbs,
ot_verb_agents, ot_verb_patients, ot_frame_pairs,
print_ot_frame_overview, print_ot_agent_verbs, print_ot_patient_verbs,
print_ot_verb_agents, print_ot_verb_patients, print_ot_frame_pairs,
ot_agent_verbs_chart, ot_patient_verbs_chart,
)
import pandas as pd
import sys
sys.path.insert(0, '../../../src')
from bible_grammar import (
ot_frame_data, ot_agent_verbs, ot_patient_verbs,
ot_verb_agents, ot_verb_patients, ot_frame_pairs,
print_ot_frame_overview, print_ot_agent_verbs, print_ot_patient_verbs,
print_ot_verb_agents, print_ot_verb_patients, print_ot_frame_pairs,
ot_agent_verbs_chart, ot_patient_verbs_chart,
)
import pandas as pd
1. Overview¶
In [ ]:
Copied!
print_ot_frame_overview()
print_ot_frame_overview()
In [ ]:
Copied!
# Sample frame data
df = ot_frame_data(book='Gen')
print(f"Genesis frame-annotated verbs: {len(df)}")
df[['text', 'lemma', 'gloss', 'a0_lemma', 'a0_gloss', 'a1_lemma', 'a1_gloss',
'chapter', 'verse']].head(15)
# Sample frame data
df = ot_frame_data(book='Gen')
print(f"Genesis frame-annotated verbs: {len(df)}")
df[['text', 'lemma', 'gloss', 'a0_lemma', 'a0_gloss', 'a1_lemma', 'a1_gloss',
'chapter', 'verse']].head(15)
2. What Does God Do? — Elohim and YHWH as Agent¶
The A0 (agent) slot answers: who performs the action? Looking at אֱלֹהִים and יהוה as A0 reveals the OT's portrait of divine activity.
In [ ]:
Copied!
# What does אֱלֹהִים (God / Elohim) do as agent?
print_ot_agent_verbs('אֱלֹהִים', top_n=20)
# What does אֱלֹהִים (God / Elohim) do as agent?
print_ot_agent_verbs('אֱלֹהִים', top_n=20)
In [ ]:
Copied!
# What does יהוה (YHWH) do as agent?
print_ot_agent_verbs('יהוה', top_n=20)
# What does יהוה (YHWH) do as agent?
print_ot_agent_verbs('יהוה', top_n=20)
In [ ]:
Copied!
ot_agent_verbs_chart('יהוה', top_n=15)
ot_agent_verbs_chart('יהוה', top_n=15)
3. What Acts on Israel / the People? — Patient Analysis¶
The A1 (patient) slot answers: what receives the action?
In [ ]:
Copied!
# What verbs take 'Israel' as patient?
print_ot_patient_verbs('יִשְׂרָאֵל', top_n=15)
# What verbs take 'Israel' as patient?
print_ot_patient_verbs('יִשְׂרָאֵל', top_n=15)
In [ ]:
Copied!
# What verbs take 'the people' (עַם) as patient?
print_ot_patient_verbs('עַם', top_n=15)
# What verbs take 'the people' (עַם) as patient?
print_ot_patient_verbs('עַם', top_n=15)
4. Theological Verb Profiles¶
For key theological verbs, we can ask: who does this action and what is acted upon?
In [ ]:
Copied!
# בָּרָא (create) — who creates? what gets created?
print_ot_verb_agents('בָּרָא', top_n=10)
print_ot_verb_patients('בָּרָא', top_n=10)
# בָּרָא (create) — who creates? what gets created?
print_ot_verb_agents('בָּרָא', top_n=10)
print_ot_verb_patients('בָּרָא', top_n=10)
In [ ]:
Copied!
# נָתַן (give) — who gives? what gets given?
print_ot_verb_agents('נָתַן', top_n=10)
print_ot_verb_patients('נָתַן', top_n=10)
# נָתַן (give) — who gives? what gets given?
print_ot_verb_agents('נָתַן', top_n=10)
print_ot_verb_patients('נָתַן', top_n=10)
In [ ]:
Copied!
# שָׁפַט (judge) — who judges? what/who gets judged?
print_ot_verb_agents('שָׁפַט', top_n=10)
print_ot_verb_patients('שָׁפַט', top_n=10)
# שָׁפַט (judge) — who judges? what/who gets judged?
print_ot_verb_agents('שָׁפַט', top_n=10)
print_ot_verb_patients('שָׁפַט', top_n=10)
In [ ]:
Copied!
# בָּרַךְ (bless) — who blesses? who gets blessed?
print_ot_verb_agents('בָּרַךְ', top_n=10)
print_ot_verb_patients('בָּרַךְ', top_n=10)
# בָּרַךְ (bless) — who blesses? who gets blessed?
print_ot_verb_agents('בָּרַךְ', top_n=10)
print_ot_verb_patients('בָּרַךְ', top_n=10)
In [ ]:
Copied!
# שָׁמַע (hear/obey) — who hears? what is heard?
print_ot_verb_agents('שָׁמַע', top_n=10)
print_ot_verb_patients('שָׁמַע', top_n=10)
# שָׁמַע (hear/obey) — who hears? what is heard?
print_ot_verb_agents('שָׁמַע', top_n=10)
print_ot_verb_patients('שָׁמַע', top_n=10)
5. Most Common Agent–Verb–Patient Triples¶
In [ ]:
Copied!
# Top triples across the entire OT
print_ot_frame_pairs(top_n=25)
# Top triples across the entire OT
print_ot_frame_pairs(top_n=25)
In [ ]:
Copied!
# Top triples in Genesis
print_ot_frame_pairs(book='Gen', top_n=15)
# Top triples in Genesis
print_ot_frame_pairs(book='Gen', top_n=15)
In [ ]:
Copied!
# Top triples in Deuteronomy (Torah command context)
print_ot_frame_pairs(book='Deu', top_n=15)
# Top triples in Deuteronomy (Torah command context)
print_ot_frame_pairs(book='Deu', top_n=15)
In [ ]:
Copied!
# Top triples in Isaiah (prophetic context)
print_ot_frame_pairs(book='Isa', top_n=15)
# Top triples in Isaiah (prophetic context)
print_ot_frame_pairs(book='Isa', top_n=15)
6. Ad-hoc Queries¶
In [ ]:
Copied!
# What does Moses (מֹשֶׁה) do as agent?
print_ot_agent_verbs('מֹשֶׁה', top_n=15)
# What does Moses (מֹשֶׁה) do as agent?
print_ot_agent_verbs('מֹשֶׁה', top_n=15)
In [ ]:
Copied!
# What is given (נָתַן) vs created (בָּרָא) — compare patients
given = ot_verb_patients('נָתַן', top_n=10)
created = ot_verb_patients('בָּרָא', top_n=10)
print("נָתַן patients:")
print(given[['a1_lemma', 'a1_gloss', 'count']].to_string(index=False))
print()
print("בָּרָא patients:")
print(created[['a1_lemma', 'a1_gloss', 'count']].to_string(index=False))
# What is given (נָתַן) vs created (בָּרָא) — compare patients
given = ot_verb_patients('נָתַן', top_n=10)
created = ot_verb_patients('בָּרָא', top_n=10)
print("נָתַן patients:")
print(given[['a1_lemma', 'a1_gloss', 'count']].to_string(index=False))
print()
print("בָּרָא patients:")
print(created[['a1_lemma', 'a1_gloss', 'count']].to_string(index=False))
In [ ]:
Copied!
# Raw frame data for a specific passage (Genesis 1)
gen1 = ot_frame_data(book='Gen')
gen1_ch1 = gen1[gen1['chapter'] == 1]
gen1_ch1[['text', 'lemma', 'gloss', 'a0_lemma', 'a0_gloss', 'a1_lemma', 'a1_gloss', 'verse']]
# Raw frame data for a specific passage (Genesis 1)
gen1 = ot_frame_data(book='Gen')
gen1_ch1 = gen1[gen1['chapter'] == 1]
gen1_ch1[['text', 'lemma', 'gloss', 'a0_lemma', 'a0_gloss', 'a1_lemma', 'a1_gloss', 'verse']]