NER רב-לשוני: אתגרים בזיהוי PII
עודכן ל-2026
פער הדיוק
מודלי NER שהואמנו על אנגלית מגיעים ל-85–92% F1 בבדיקות סטנדרטיות. החילו את אותם מודלים על טקסט ערבי או סיני. הדיוק יורד ל-50–70%.
לעבודת PII, פער זה הוא בעיה. שיעור פגיעה של 70% פירושו ש-30% מהנתונים הרגישים אינם נראים.
הסיבות אינן באגים. הן נובעות מהאופן שבו מערכות כתיבה שונות.
ארבע סיבות שורש
1. גבולות מילים
אנגלית מפרידה מילים עם רווחים. ה-Tokenization קל.
לסינית אין רווחים כלל.
"张伟住在北京"
→ פצלו תחילה: ["张伟", "住在", "北京"]
מודל לא יכול לתייג מה שהוא לא יכול למצוא. הפיצול חייב לבוא לפני NER.
ערבית מקשרת אותיות בתוך מילה. תנועות קצרות אינן נכתבות. הטקסט רץ מימין לשמאל.
"محمد يعيش في دبي"
→ ללא תנועות קצרות, ימין לשמאל, אותיות מחוברות
2. מורפולוגיה
פעלים אנגליים משתנים בכמה דרכים. ערבית משתמשת במערכת שורשים. שורש אחד יוצר עשרות מילים.
كتب (k-t-b, "לכתוב")
→ كاتب (סופר), كتاب (ספר), مكتبة (ספריה)
NER חייב לנתח שורשים כדי למצוא שמות בצורות מילה נגזרות.
3. מוסכמות שמות
שמות לטיניים מסודרים פרטי ואחר כך משפחה. שמות בשפות RTL מחברים קשרי משפחה.
محمد بن عبد الله
(מוחמד בן-עבדאללה)
שמות סיניים מציבים את שם המשפחה ראשון. רוב השמות הם בני שניים או שלושה תווים.
张伟 (Zhang Wei) — 2 תווים
欧阳修 (Ouyang Xiu) — 3 תווים
מודל שנבנה על תבניות שמות מערביות יפספס מבנים אלו.
4. כיוון הטקסט
חלק מהשפות רצות מימין לשמאל. כאשר טקסט RTL מכיל שם אנגלי, הסדר הויזואלי והסדר הלוגי נפרדים. זה נקרא טקסט BiDi. הוא דורש ניתוח קפדני.
ציוני F1 לפי מערכת כתיבה
| שפה | מערכת כתיבה | טווח F1 | רמה |
|---|---|---|---|
| אנגלית | לטינית | 85–92% | נמוכה |
| גרמנית | לטינית | 82–88% | נמוכה |
| צרפתית | לטינית | 80–87% | נמוכה |
| ספרדית | לטינית | 81–86% | נמוכה |
| רוסית | קירילית | 75–83% | בינונית |
| ערבית | Abjad | 55–75% | גבוהה |
| סינית | Hanzi | 60–78% | גבוהה |
| יפנית | מעורבת | 65–80% | גבוהה |
| תאית | תאית | 50–70% | גבוהה מאוד |
| הינדי | דוואנגרי | 60–75% | גבוהה |
מערכות לא-לטיניות ופערי מילים חסרות מורידים ציונים בכלל.
פתרון תלת-שכבתי
אנחנו משתמשים בשלוש שכבות לכיסוי 48 שפות ומערכות כתיבה.
שכבה 1: spaCy — 25 שפות
לשפות עם מודלים חזקים ובדוקים. מכסה אנגלית, גרמנית, צרפתית, ספרדית, איטלקית, פורטוגלית, הולנדית, פולנית, רוסית ויוונית.
שכבה 2: Stanza — שפות מורכבות
Stanza של Stanford מטפלת בערבית, סינית, יפנית וקוריאנית. היא מריצה פיצולי מילים וניתוח שורשים לפני NER.
שכבה 3: XLM-RoBERTa — שפות עם משאבים נמוכים
לשפות ללא מודלים ייעודיים. תאית, וייטנאמית, הינדי, בנגלית, עברית, טורקית ופרסית נמצאות כאן. הוא מטפל בטקסט מעורב-שפות ללא צורך בסימונים מפורשים.
RTL ו-BiDi
טקסט מימין לשמאל דורש שלבים נוספים מעבר לפיצול.
המסלול שלנו:
- מנרמל טקסט לסדר לוגי.
- מריץ NER על אותו סדר.
- ממפה מיקומי ישויות בחזרה לסדר ויזואלי.
אנחנו מסירים קידומות מחוברות לפני NER ומחזירים אותן אחרי.
"محمد" — שם בלבד
"لمحمد" — "למוחמד" (קידומת מחוברת)
עירוב קודים
מסמכים אמיתיים לרוב מערבים שפות בשורה אחת.
"El meeting con John es at 3pm"
"我今天跟John去shopping"
המסלול שלנו מפצל לפי שפה. מריץ את המודל הנכון על כל חלק. לאחר מכן מחבר תוצאות עם מיפוי מיקום.
מדדים פנימיים
תוצאות מבדיקות פנימיות על נתונים מעורבי-שפות:
| תרחיש | F1 |
|---|---|
| אנגלית בלבד | 91% |
| גרמנית בלבד | 88% |
| ערבית בלבד | 79% |
| סינית בלבד | 81% |
| תמהיל אנגלית-ערבית | 83% |
| תמהיל אנגלית-סינית | 84% |
| תמהיל אנגלית-גרמנית | 89% |
הערות הגדרה
אפליקציית שולחן העבודה מזהה שפה אוטומטית לכל מסמך. לקבצים מעורבי-שפות, היא מעבדת כל קטע עם המודל הנכון. אין שלב ידני.
הגדירו שפה ב-API כשאתם יודעים אותה:
{
"text": "محمد بن عبد الله",
"language": "ar"
}
השתמשו בזיהוי אוטומטי כשלא:
{
"text": "محمد بن عبد الله",
"language": "auto"
}
תבניות מותאמות אישית צריכות לכסות ספרות ספציפיות לאזור:
# מזהה עובד לטיני
EMP-[0-9]{6}
# מזהה עובד ערבי (כולל ספרות ערביות-הינדיות)
موظف-[٠-٩0-9]{6}
ראו את רשימת הישויות המלאה. להגדרת API, בקרו בדף תכונות ה-API. מדריך הציות ל-GDPR שלנו מכסה כיצד פערי זיהוי משפיעים על חוק הגנת הנתונים.
anonym.legal משתמש במחסנית NER תלת-שכבתית — spaCy, Stanza ו-XLM-RoBERTa — לכיסוי 48 שפות עם זיהוי PII עקבי.