נספח: אלגוריתמים וקוד

סקירה כללית

כל הניתוחים המתוארים בספר זה יושמו בפייתון 3 והורצו על נתונים זמינים לציבור מה-API של Sefaria.org. לא נעשה שימוש בנתונים קנייניים, הערות ידניות או שלבים בלתי-ניתנים לשחזור. סקריפטי הניתוח המלאים זמינים ב-Zenodo (DOIs: 10.5281/zenodo.18744642, 10.5281/zenodo.18906232).

נספח זה מספק תיאורי פסאודו-קוד של האלגוריתמים המרכזיים.

---

אלגוריתם 1: סיווג יסוד/בקרה

קלט: טקסט עברי עיצורי
פלט: סיווג כל אות כיסוד (F) או בקרה (C)
יסוד = {ג, ד, ז, ח, ט, ס, ע, פ, צ, ק, ר, ש}  # 12 אותיות
בקרה = {א, מ, ת, נ, י, ה, ו, ב, כ, ל}          # 10 אותיות
עבור כל מילה W בטקסט:
עבור כל אות L ב-W:
אם L ביסוד:
סווג(L) = "יסוד"
אחרת אם L בבקרה:
סווג(L) = "בקרה"

---

אלגוריתם 2: חישוב אחוז יסוד

קלט: קטע טקסט (פסוקים או חלון)
פלט: ערך אחוז יסוד
ספירת_יסוד = 0
ספירה_כוללת = 0
עבור כל מילה W בקטע:
עבור כל אות עיצורית L ב-W:
ספירה_כוללת += 1
אם L ביסוד:
ספירת_יסוד += 1
החזר ספירת_יסוד / ספירה_כוללת * 100

---

אלגוריתם 3: חישוב ציון מצב

קלט: חלון טקסט (קבוצת פסוקים)
פלט: ערך ציון מצב בטווח [-1, +1]
Y = ספור מופעים של "יהוה" בחלון
E = ספור מופעים של "אלהים" או "האלהים" בחלון
אם Y + E > 0:
החזר (Y - E) / (Y + E)
אחרת:
החזר 0  # אין שמות אלוהיים בחלון

---

אלגוריתם 4: ניתוח קנה מידה של שונות

קלט: טקסט תורה מלא, רשימת גדלי חלונות
פלט: שיפוע קנה מידה (α) ו-R² לכל מדד
עבור כל גודל_חלון W ב-[10, 20, 50, 100, 200, 400, 800]:
ערכים = []
עבור i = 0 עד (N - W) בצעדים של W:
חלון = פסוקים[i : i+W]
ערכים.הוסף(חשב_מדד(חלון))  # אחוז יסוד או ציון מצב
סטיות_תקן.הוסף(סטיית_תקן(ערכים))
גדלי_חלונות.הוסף(W)
# רגרסיה לינארית לוג-לוג
לוג_חלונות = log10(גדלי_חלונות)
לוג_סטיות = log10(סטיות_תקן)
שיפוע, חיתוך, ערך_r = רגרסיה_לינארית(לוג_חלונות, לוג_סטיות)
החזר שיפוע, ערך_r²

---

אלגוריתם 5: פונקציית אוטוקורלציה

קלט: ערכי מדד לפי פסוק, רשימת פיגורים
פלט: אוטוקורלציה בכל פיגור
ערכים = מערך ערכי מדד (אחד לפסוק)
ממוצע = ממוצע(ערכים)
שונות = שונות(ערכים)
N = אורך(ערכים)
מרוכז = ערכים - ממוצע
עבור כל פיגור L ברשימת_פיגורים:
אם L >= N: דלג
ac = סכום(מרוכז[0 : N-L] * מרוכז[L : N]) / ((N - L) * שונות)
אוטוקורלציות.הוסף(ac)
החזר אוטוקורלציות

---

אלגוריתם 6: התאמת אורך קורלציה

קלט: ערכי אוטוקורלציה חיוביים ופיגורים מתאימים
פלט: אורך קורלציה ξ
# מודל אקספוננציאלי: ρ(k) = A * exp(-k/ξ)
# מודל חוק כוח: ρ(k) = B * k^(-β)
# סנן לערכי AC חיוביים בלבד
פיגורים_חיוביים, acs_חיוביים = סנן(ac > 0.01)
# התאם אקספוננציאלי
A, ξ = התאמת_עקומה(מודל_אקספוננציאלי, פיגורים_חיוביים, acs_חיוביים)
r2_exp = חשב_r_בריבוע(acs_חיוביים, מודל_אקספוננציאלי(פיגורים_חיוביים, A, ξ))
# התאם חוק כוח
B, β = התאמת_עקומה(מודל_חוק_כוח, פיגורים_חיוביים, acs_חיוביים)
r2_pow = חשב_r_בריבוע(acs_חיוביים, מודל_חוק_כוח(פיגורים_חיוביים, B, β))
# המר ξ מקטעים לפסוקים
ξ_פסוקים = ξ * (כולל_פסוקים / מספר_קטעים)
החזר ξ_פסוקים, r2_exp, β, r2_pow

---

אלגוריתם 7: זיהוי גבולות בשלושה ערוצים

קלט: טקסט תורה מלא, גודל_חלון=50, צעד=10, סף=1.5
פלט: ספירת שיאים במקביל ב-3 ערוצים
עבור i = 0 עד (N - גודל_חלון) בצעדים של צעד:
חלון = פסוקים[i : i + גודל_חלון]
# ערוץ 1: אחוז יסוד
f_pct = חשב_אחוז_יסוד(חלון)
# ערוץ 2: ציון מצב
מצב = חשב_ציון_מצב(חלון)
# ערוץ 3: וקטור מילות יחס
fw_vec = חשב_וקטור_מילות_יחס(חלון)
אם חלון_קודם קיים:
f_שינוי = abs(f_pct - prev_f_pct)
m_שינוי = abs(מצב - prev_מצב)
fw_שינוי = מרחק_אוקלידי(fw_vec, prev_fw_vec)
אחסן(f_שינוי, m_שינוי, fw_שינוי)
prev_f_pct, prev_מצב, prev_fw_vec = f_pct, מצב, fw_vec
# נרמל כל ערוץ
f_z = (f_שינויים - ממוצע(f_שינויים)) / סטיית_תקן(f_שינויים)
m_z = (m_שינויים - ממוצע(m_שינויים)) / סטיית_תקן(m_שינויים)
fw_z = (fw_שינויים - ממוצע(fw_שינויים)) / סטיית_תקן(fw_שינויים)
# ספור שיאים במקביל
במקביל = ספור(f_z > סף AND m_z > סף AND fw_z > סף)
החזר במקביל  # צפוי: 0 לתורה

---

אלגוריתם 8: הבחנה בין קורפוסים מותאמים

קלט: רשימת קורפוסים (תורה, נביאים, בקרות)
פלט: מרחקים תלת-ממדיים מהתורה
עבור כל קורפוס C:
חתימה[C] = [
חשב_שיפוע_יסוד(C),
חשב_שיפוע_ציון_מצב(C),
חשב_יציבות_יסוד(C),
חשב_קצב_שיאים(C),
חשב_אוטוקורלציה_מצב(C)
]
# נרמל Z-score על פני כל הקורפוסים
וקטור_ממוצע = ממוצע(כל החתימות)
וקטור_סטיית_תקן = סטיית_תקן(כל החתימות)
תורה_z = (חתימה["תורה"] - וקטור_ממוצע) / וקטור_סטיית_תקן
עבור כל קורפוס C != "תורה":
z = (חתימה[C] - וקטור_ממוצע) / וקטור_סטיית_תקן
מרחק[C] = מרחק_אוקלידי(z, תורה_z)
החזר מרחקים  # חצאי תורה צריכים להיות הקרובים ביותר

---

אלגוריתם 9: מבחן הסרת אות

קלט: טקסט תורה מלא
פלט: מדדי שכבת בסיס עם ובלי שמות אלוהיים
# מקורי
שיפוע_מקורי = חשב_שיפוע_קנה_מידה_יסוד(טקסט_תורה)
ac_מקורי = חשב_אוטוקורלציה_יסוד(טקסט_תורה)
# מנוטרל: החלף כל שמות אלוהיים במציין מקום
טקסט_מנוטרל = טקסט_תורה.העתק()
עבור כל פסוק V בטקסט_מנוטרל:
החלף("יהוה", "שם")  # מציין מקום נייטרלי
החלף("אלהים", "שם")
החלף("האלהים", "שם")
שיפוע_נייטרלי = חשב_שיפוע_קנה_מידה_יסוד(טקסט_מנוטרל)
ac_נייטרלי = חשב_אוטוקורלציה_יסוד(טקסט_מנוטרל)
# השווה
שינוי_שיפוע = abs(שיפוע_מקורי - שיפוע_נייטרלי)
קורלציה_ac = פירסון(ac_מקורי, ac_נייטרלי)
החזר שינוי_שיפוע, קורלציה_ac
# צפוי: שינוי_שיפוע ≈ 0, קורלציה_ac ≈ 1.0

---

אלגוריתם 10: ניתוח מורפולוגיה של שמות

קלט: רשימת שמות פרטיים מהתורה
פלט: אחוז יסוד ותבנית סוגי אותיות לכל שם
יסוד = {ג, ד, ז, ח, ט, ס, ע, פ, צ, ק, ר, ש}
AMTN = {א, מ, ת, נ}
YHW = {י, ה, ו}
BKL = {ב, כ, ל}
עבור כל שם N:
תבנית = ""
ספירת_f = 0
כולל = 0
עבור כל אות L ב-N:
כולל += 1
אם L ביסוד:
ספירת_f += 1
תבנית += "F"
אחרת אם L ב-AMTN:
תבנית += "A"
אחרת אם L ב-YHW:
תבנית += "Y"
אחרת אם L ב-BKL:
תבנית += "B"
אחוז_יסוד = ספירת_f / כולל * 100
אחסן(שם=N, אחוז_יסוד, תבנית)
החזר כל ניתוחי השמות

---

מקורות נתונים

  • טקסט תורה: Sefaria.org API (https://www.sefaria.org/api/)
  • תנ"ך עברי מלא: Sefaria.org API
  • עיבוד מקדים: הסר סימני טעמים (טווח יוניקוד U+0591–U+05C7), השאר אותיות עיצוריות (U+05D0–U+05EA)
  • לא נעשה שימוש בנתונים קנייניים

יכולת שחזור

כל הסקריפטים זמינים ב:

  • Zenodo DOI: 10.5281/zenodo.18744642 (סקריפטי המאמר הראשי)
  • Zenodo DOI: 10.5281/zenodo.18906232 (סקריפטי שמות אלוהיים)

מנתח שורשי התורה העצמאי (torah_root_analyzer.py) יכול לשחזר את סיווג היסוד/בקרה המרכזי וכל הניתוחים הנגזרים מסקריפט יחיד.

✦ ✦ ✦