פיתוח NLP: סיווג טקסט, NER, אמבדינגים וחילוץ מידע
לעתים קרובות אנו מקבלים משימה: לעבד 50,000 פניות תמיכה — כרגע הכל ידני. מערך הנתונים — 3,000 דוגמאות מסומנות, 12 קטגוריות, חוסר איזון: קטגוריה אחת תופסת 40% מהמדגם, שלוש ב-1-2% כל אחת. דיוק הבסיס — 78%. נשמע סביר עד שמסתכלים על recall עבור מחלקות נדירות: 0.31, 0.44, 0.28. המחלקות האלה — תלונות ואיומי נטישה — הן החשובות ביותר לעסק.
זהו פרויקט פיתוח NLP טיפוסי. הבעיה אינה האלגוריתם אלא שדיוק הוא המדד הלא נכון. הניסיון שלנו מעל 30 פרויקטים מראה: אנו מתחילים בניתוח מדדים עסקיים ורק אז בוחרים את המודל.
מדוע דיוק אינו המדד הנכון עבור מחלקות נדירות?
דיוק מתעלם מחוסר איזון. אם המחלקה "נטישה" מופיעה ב-2% מהמקרים, המודל יכול לחזות "הכל בסדר" ולקבל דיוק של 98% — אבל העסק מאבד לקוחות. פתרון: F1 macro (ממוצע על כל המחלקות) או F1 משוקלל. עבור NER — entity F1 קפדני (התאמות מדויקות בלבד). אנו מבטיחים: לאחר בחירת המדד הנכון, איכות המודל הופכת למדידה וצפויה.
סיווג טקסט: מ-BERT לזיקוק (Distillation)
מודלים דמויי BERT הם הסטנדרט לסיווג. ruBERT-base או ruBERT-large מ-DeepPavlov לרוסית. multilingual-e5-large — למספר שפות בצינור אחד. XLM-RoBERTa-large — עמוד שדרה רב-לשוני חזק.
כוונון עדין לסיווג: הוספת ראש סיווג על גבי טוקן [CLS], אימון 3-5 עידנים עם lr=2e-5, weight decay=0.01. לחוסר איזון — CrossEntropyLoss משוקלל או focal loss עם gamma=2.0. צרו קשר — נראה קטע קוד.
מקרה בוחן של חוסר איזון. מערך נתונים — 3,000 דוגמאות, חוסר איזון 1:20. פתרון: class_weight דרך sklearn + CrossEntropyLoss. בנוסף — הגדלת מחלקות נדירות באמצעות תרגום חוזר (ru→en→ru דרך MarianMT). ה-recall למחלקות נדירות עלה מ-0.31 ל-0.67 עם ירידה קלה בדיוק (76%→74%). פיתוח NLP מלא מקצה לקצה ארך 3 שבועות.
זיקוק לייצור. BERT-large נותן F1 0.89, אבל inference על CPU — 180ms. זיקוק ל-DistilBERT או ruBERT-tiny2 מפחית את זמן האחזור ל-25ms עם F1 0.84. ייצוא ל-ONNX Runtime מספק האצה נוספת של פי 1.5-2. DistilBERT משיג זמן אחזור נמוך פי 7 מ-BERT-large עם ירידה של 5% בלבד ב-macro F1 – פשרה אופיינית לייצור.
| מודל | F1 macro | זמן אחזור (CPU) | גודל |
|---|---|---|---|
| BERT-large | 0.89 | 180 ms | 1.3 GB |
| DistilBERT | 0.84 | 25 ms | 250 MB |
| ruBERT-tiny2 | 0.81 | 12 ms | 120 MB |
| DistilBERT + ONNX | 0.84 | 14 ms | 150 MB |
כיצד לבחור בין BERT ל-LLM למשימה שלך?
עבור רוב משימות הסיווג והחילוץ, מודלים בגודל BERT מציעים את האיזון הטוב ביותר בין עלות לביצועים. עברו ל-LLM רק כאשר המשימה דורשת יצירה, חשיבה מורכבת, או הכללה zero-shot.
NER: זיהוי ישויות בעלות שם
NER — חילוץ אנשים, ארגונים, מיקומים, תאריכים, סכומים, מספרי מסמכים. עבור קטגוריות כלליות (PER, ORG, LOC), מודלים מאומנים מראש עובדים היטב. עבור קטגוריות מיוחדות (מונחים רפואיים, מושגים משפטיים) — נדרש כוונון עדין.
סימון נתונים. העלות העיקרית של פרויקט NER. עבור מודל איכותי — 500-2,000 משפטים מסומנים לכל סוג ישות. כלים: Label Studio (קוד פתוח) או Prodigy (מאת יוצרי spaCy). פורמט IOB2 — תקן.
ארכיטקטורה. סיווג טוקנים על גבי BERT: כל טוקן מקבל תווית (B-PER, I-PER, O). spaCy 3.x עם צינור transformer — בחירה נוחה לייצור.
ישויות מקוננות. מודלי IOB סטנדרטיים אינם יכולים לטפל בישויות מקוננות (ארגון בתוך כתובת). למשימות כאלה — NER מבוסס ספנים: SpanBERT או SpERT. מורכב יותר אבל נכון.
עיבוד לאחר הוא חובה. המודל מנבא טוקנים — נדרשות ישויות מנורמלות. תאריך — dateparser. סכומים — regex + ולידציה. שמות — הסרת כפילויות דרך rapidfuzz. כלול במשלוח הסטנדרטי שלנו.
ניתוח סנטימנט וחילוץ דעות
סיווג בינארי חיובי/שלילי עובד ישירות עם BERT. המורכבות — ניתוח סנטימנט מבוסס היבטים (ABSA): "במסעדה יש אוכל טוב אבל שירות נורא." עבור ABSA: חילוץ היבטים (NER) + סנטימנט לכל היבט. מודלים משותפים BERT-for-ABSA — האיכות על נתונים רוסיים נמוכה יותר עקב מחסור במערכי נתונים. RuSentiment, SentiRuEval — המשאבים העיקריים.
לייצור עם חיובי/שלילי/נייטרלי פשוט: מודלי distil מספיקים. שלוש מחלקות, מערך מאוזן, 2,000+ דוגמאות — F1 macro 0.82-0.87 תוך 1-2 ימים.
סיכום טקסט
סיכום חילוצי (בחירת משפטים) — TextRank או BM25 ללא אימון. מהיר, ללא הזיות. טוב למסמכים ארוכים.
סיכום הפשטי (יצירת טקסט חדש) — seq2seq: mT5, mBART, FRED-T5, ruT5-large. לייצור דרך LLM API (GPT-4, Claude) — לעתים קרובות האיזון הטוב ביותר בין עלות/איכות/מהירות.
אמבדינגים: ייצוגים וקטוריים של טקסט
אמבדינגים הם הבסיס לחיפוש סמנטי, הסרת כפילויות, אשכולות, RAG. האיכות משפיעה באופן קריטי על משימות בהמשך.
מודלים. E5-large-v2, BGE-M3, multilingual-e5-large — אמבדרים רב-לשוניים חזקים. sentence-transformers/paraphrase-multilingual-mpnet-base-v2 — אפשרות מהירה. לרוסית: ru-en-RoSBERTa (Skoltech) מתפקד היטב בדמיון סמנטי טקסטואלי.
הערכת איכות אמבדינגים משתמשת ב-MTEB benchmark כסטנדרט. אבל תוצאות מובילות ב-MTEB אינן מבטיחות הצלחה על מערך נתונים תחומי — אנו בונים eval תחומי.
כוונון עדין של אמבדינגים. אם מודלים סטנדרטיים אינם נותנים את Recall@k הנדרש — למידה קונטרסטית על זוגות תחומיים עם MultipleNegativesRankingLoss. כיצד לבצע זאת עבור נתונים תחומיים:
- אספו 500–2,000 זוגות דומים סמנטית מהתחום שלכם.
- הפעילו MultipleNegativesRankingLoss עם גודל batch של 32–64.
- אמנו 1–3 עידנים באמצעות AdamW (lr=2e-5).
- העריכו Recall@k על מערך בדיקה תחומי מופרד.
גישה זו מניבה שיפור של 5–15% ב-Recall@k בפועל.
ממדיות ואחסון. E5-large: 1024 ממדים, float32 — 4KB לוקטור. עבור 10M מסמכים — 40GB. קוונטיזציה int8 מפחיתה ל-10GB. FAISS IVF_PQ — קומפקטי יותר אך עם הפסדים. כלול בהמלצות הפריסה שלנו.
חילוץ מידע
חילוץ מובנה הוא משימה שכיחה. דוגמאות: תנאי חוזה מרכזיים, מאפיינים טכניים, תאריכים וסכומים מחשבוניות.
- Regex + מבוסס כללים. עבור INN, OGRN, סכומים, תאריכים — אמין יותר מרשתות נוירונים. אין צורך בנתונים.
- NER + עיבוד לאחר. עבור פורמטים משתנים.
- LLM עם פלט מובנה. GPT‑4 / Claude עם סכמת JSON — למסמכים מורכבים. עלות: מינימלית למסמך. עבור 10k+ מסמכים ליום — אנו מחשבים את הכלכלה.
אנו מבטיחים היברידי: regex/NER לשדות טיפוסיים + LLM למקרי קצה. ההבטחה שלנו מגובה בשנות ניסיון ייצור וביותר מ-30 פרויקטים.
שלבי עבודה
| שלב | משך | מה כלול |
|---|---|---|
| ניתוח נתונים ומדדים | 3-5 ימים | התפלגות מחלקות, אורכי טקסט, baseline |
| Baseline (TF‑IDF + LogReg) | יום אחד | הערכה מהירה של הפער מול מודלים עמוקים |
| אימון וולידציה | 1-2 שבועות | k‑fold, early stopping, ניתוח שגיאות |
| פריסה (ONNX + FastAPI) | 1-2 שבועות | REST API, batching, ניטור |
| תיעוד והדרכה | 2-3 ימים | Model card, תיעוד API, הדרכת צוות |
אב-טיפוס על נתונים קיימים — 1-3 שבועות. מערכת ייצור עם CI/CD — 1.5–2.5 חודשים. העלות מחושבת באופן אישי — קבלו ייעוץ להערכת פרויקט.
מה כלול
- תיעוד ארכיטקטורת מודל וצינור
- גישה למודל דרך REST API (FastAPI + ONNX)
- הדרכת צוות הלקוח (סמינר מקוון של שעתיים + שאלות ותשובות)
- הבטחת דיוק על מערך הבדיקה המוסכם
- חודשי תמיכה לאחר המסירה (תיקוני באגים, התאמה לנתונים חדשים)
הניסיון שלנו
שנות פרויקטי NLP מסיווג ועד מערכות RAG. הצוות כולל מהנדסי ML מנוסים עם Hugging Face, spaCy, LangChain, MLOps. אנו משתמשים ב-vLLM, Kubeflow, Weights & Biases — ערימת ייצור, לא צעצועים. צרו קשר להערכת פרויקט ה-NLP שלכם תוך יומיים — בקשו ייעוץ על צינור עיבוד הטקסט שלכם.







