fix(chunker): תיקון זיהוי כותרות טענות-הצדדים ביחיד/נקבה + שלוש שכבות הגנה #296

Merged
chaim merged 1 commits from worktree-chunker-party-claims-fix into main 2026-06-17 16:41:49 +00:00
Owner

סיבת-שורש

הלכה 11 בתיק 8181-21 חולצה מטענות המשיבה — לא מהדיון המשפטי.

למה זה קרה: רג'קס respondent_claims ב-chunker.py כיסה רק צורת רבים (המשיבים/המשיבין), ולא יחיד נקבה (המשיבה) ויחיד זכר (המשיב). הכותרת "טענות המשיבה:" לא הוכרה → נבלעה לתוך מקטע ruling הקודם → מאחר ש-ruling נמצא ב-EXTRACTABLE_SECTIONS, תוכן הטענות הוזן לחילוץ הלכות.

שינויים

שכבה 1 — chunker.py: הרחבת SECTION_PATTERNS

דפוס לפני אחרי
respondent יחיד נקבה המשיבה
respondent יחיד זכר המשיב
respondent תגובת תגובת ה...
appellant יחיד העורר/ת, המערער/ת

שכבה 2 — halacha_extractor.py: עיגון חיובי

פונקציה _apply_discussion_anchor() — מסירה ruling chunks שמופיעים לפני ה-legal_analysis הראשון. כותרת "דיון/הכרעה" כגבול חד: כל מה שלפניה לא יגיע לחילוץ, גם אם הרג'קס לא כיסה את הכותרת.

שכבה 3 — halacha_quality.py: FLAG_PARTY_CLAIM

דגל party_claim_language — זיהוי שפת-טענות-צד ב-supporting_quote בזמן חילוץ. מכוון לנוסחאות ייחוס ספציפיות (לטענת העורר/המשיבה/..., טוענת המשיבה, ...) — לא נוסחאות פסיביות כלליות שגם בתי-המשפט משתמשים בהן.

היקף הבעיה שהתגלה

  • 93 תיקים עם 0 chunks של טענות (כותרות ביחיד שלא הוכרו)
  • 628 הלכות מאושרות מתיקים אלה — נדרש re-chunk אחרי מיזוג

Invariants

  • G1 (normalize-at-source): תיקון ברג'קס של ה-chunker, לא בפילטר downstream
  • INV-LRN2 (rhetorical-role pre-filter): העיגון החיובי מחזק אכיפת הסינון
  • INV-AH (anti-hallucination): FLAG_PARTY_CLAIM כשכבת זיהוי belt-and-suspenders

בדיקות

  • 398 passed (398 ← 398, ללא regression)
  • קובץ בדיקות חדש: test_chunker_section_patterns.py — כיסוי לכל הצורות החדשות ורגרסיה לצורות ישנות

🤖 Generated with Claude Code

## סיבת-שורש הלכה 11 בתיק 8181-21 חולצה מ**טענות המשיבה** — לא מהדיון המשפטי. **למה זה קרה:** רג'קס `respondent_claims` ב-`chunker.py` כיסה רק צורת רבים (`המשיבים`/`המשיבין`), ולא יחיד נקבה (`המשיבה`) ויחיד זכר (`המשיב`). הכותרת `"טענות המשיבה:"` לא הוכרה → נבלעה לתוך מקטע `ruling` הקודם → מאחר ש-`ruling` נמצא ב-`EXTRACTABLE_SECTIONS`, תוכן הטענות הוזן לחילוץ הלכות. ## שינויים ### שכבה 1 — `chunker.py`: הרחבת SECTION_PATTERNS | דפוס | לפני | אחרי | |------|------|------| | respondent יחיד נקבה | ❌ | ✅ `המשיבה` | | respondent יחיד זכר | ❌ | ✅ `המשיב` | | respondent תגובת | ❌ | ✅ `תגובת ה...` | | appellant יחיד | ❌ | ✅ `העורר/ת`, `המערער/ת` | ### שכבה 2 — `halacha_extractor.py`: עיגון חיובי פונקציה `_apply_discussion_anchor()` — מסירה `ruling` chunks שמופיעים **לפני** ה-`legal_analysis` הראשון. כותרת "דיון/הכרעה" כגבול חד: כל מה שלפניה לא יגיע לחילוץ, גם אם הרג'קס לא כיסה את הכותרת. ### שכבה 3 — `halacha_quality.py`: FLAG_PARTY_CLAIM דגל `party_claim_language` — זיהוי שפת-טענות-צד ב-`supporting_quote` בזמן חילוץ. מכוון לנוסחאות ייחוס ספציפיות (`לטענת העורר/המשיבה/...`, `טוענת המשיבה`, ...) — לא נוסחאות פסיביות כלליות שגם בתי-המשפט משתמשים בהן. ## היקף הבעיה שהתגלה - 93 תיקים עם 0 chunks של טענות (כותרות ביחיד שלא הוכרו) - 628 הלכות מאושרות מתיקים אלה — **נדרש re-chunk** אחרי מיזוג ## Invariants - **G1** (normalize-at-source): תיקון ברג'קס של ה-chunker, לא בפילטר downstream - **INV-LRN2** (rhetorical-role pre-filter): העיגון החיובי מחזק אכיפת הסינון - **INV-AH** (anti-hallucination): FLAG_PARTY_CLAIM כשכבת זיהוי belt-and-suspenders ## בדיקות - 398 passed (398 ← 398, ללא regression) - קובץ בדיקות חדש: `test_chunker_section_patterns.py` — כיסוי לכל הצורות החדשות ורגרסיה לצורות ישנות 🤖 Generated with [Claude Code](https://claude.ai/claude-code)
chaim added 1 commit 2026-06-17 15:12:43 +00:00
fix(chunker): תיקון זיהוי כותרות טענות הצדדים ביחיד/נקבה + שלוש שכבות הגנה
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 9s
42376db4c5
**סיבת-שורש:** רג'קס respondent_claims כיסה רק צורת רבים (המשיבים/המשיבין),
ולא יחיד נקבה (המשיבה) ויחיד זכר (המשיב). הכותרת "טענות המשיבה:" בתיק 8181-21
נבלעה לתוך מקטע ruling → חולצה כהלכה שגויה.

**שלוש שכבות הגנה:**
1. chunker.py — הרחבת SECTION_PATTERNS לכסות יחיד/זכר/נקבה + תגובת/תשובת
2. halacha_extractor.py — עיגון חיובי: drop ל-ruling chunks שלפני legal_analysis
3. halacha_quality.py — FLAG_PARTY_CLAIM: זיהוי שפת-טענות-צד בציטוט התומך

**היקף:** 93 תיקים עם 0 chunks של טענות (כנראה בגלל כותרות ביחיד שלא הוכרו);
628 הלכות מאושרות מתיקים אלה — חלקן עשויות להיות תקינות, יש לעשות re-chunk.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chaim merged commit 93cd0f9553 into main 2026-06-17 16:41:49 +00:00
chaim deleted branch worktree-chunker-party-claims-fix 2026-06-17 16:41:49 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#296