זיהוי כוונות בינה מלאכותית לאפליקציות מובייל
תארו לעצמכם שמשתמש מקליד 'אני רוצה לבטל את ההזמנה שהזמנתי אתמול', והצ'אטבוט עונה 'סליחה, לא הבנתי' או מציע אפשרות שגויה. לקוח אבוד, NPS ירד, ובזבוז זמן של נציג על שאלות הבהרה. זיהוי כוונות פותר את זה: המודל לא רק מסווג טקסט (חיובי/שלילי) אלא מזהה את הכוונה הקונקרטית (ביטול הזמנה) ומחלץ פרמטרים—מספר הזמנה, תאריך, פעולה. אנו מיישמים פתרונות כאלה באפליקציות מובייל למסחר אלקטרוני, בנקאות ולוגיסטיקה. לצוות שלנו יש מעל 10 שנות ניסיון בבינה מלאכותית למובייל, עם מסירה של 50+ מערכות ייצור. המהנדסים שלנו מחזיקים בהסמכות של Apple ו-Google, ודיוק הסיווג מגיע ל-95% על נתונים אמיתיים. על ידי הפחתת דיאלוגי הבהרה ב-60%, לקוחות חוסכים בממוצע $30,000 בשנה בעלויות תמיכה.
במה זה שונה מסיווג רגיל
סיווג רגיל: 'האם הביקורת הזו חיובית או שלילית?' זיהוי כוונות: 'האם המשתמש רוצה לבצע הזמנה, לבטל, לבדוק סטטוס משלוח, למצוא מוצר, לקבל עזרה—או אומר משהו לא רלוונטי?' המחלקות אינן מאוזנות, עשויות לחפוף, ומשתמשים מבטאים את אותה כוונה בעשרות דרכים שונות. בנוסף, עלינו לטפל בשאילתות מחוץ לתחום ללא הזיות של 'אני יכול הכל'. מודלים מבוססי BERT משיגים דיוק של 95% לעומת 70% לסיווגים פשוטים, ומפחיתים קבלת כוונות שגויות פי 8. הם מתמודדים עם 30+ כוונות עם recall של 98%.
BERT מכוונן: האיזון הטוב ביותר בין דיוק לביצועים
BERT מכוונן מציע את האיזון הטוב ביותר בין דיוק לביצועים. לאפליקציות בשפה הרוסית, אנו משתמשים ב-DeepPavlov/rubert-base-cased או cointegrated/rubert-tiny2 (קומפקטי, ~29 MB, מתאים להסקה על המכשיר). פריסה על המכשיר מקצצת עלויות ענן ב-90%, וחוסכת $15,000 בשנה עבור 100k שאילתות בחודש.
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
# Fine-tuning на кастомных интентах
model = AutoModelForSequenceClassification.from_pretrained(
"cointegrated/rubert-tiny2",
num_labels=len(INTENT_LABELS)
)
# Inference
classifier = pipeline(
"text-classification",
model=model,
tokenizer=tokenizer,
return_all_scores=True
)
def classify_intent(text: str) -> IntentResult:
scores = classifier(text)[0]
top = max(scores, key=lambda x: x["score"])
if top["score"] < 0.65:
return IntentResult(intent="out_of_scope", confidence=top["score"])
return IntentResult(intent=top["label"], confidence=top["score"])הסף של 0.65 מגדיר את גבול מחוץ לתחום. מתחתיו, אנחנו לא מנחשים—אנחנו אומרים בכנות 'לא הבנתי'. זה קריטי: כוונה שניחשה שגוי גרועה מהודאה בבלבול.
מערך כוונות טיפוסי לאפליקציית מסחר אלקטרוני למובייל
לחצו להרחבת 7 הכוונות המכסות 90% מפניות הלקוחות
| כוונה | דוגמאות למשפטים |
|---|---|
| search_product | 'מצא נעלי נייק', 'אני רוצה לקנות טלפון' |
| order_status | 'איפה ההזמנה שלי', 'מתי זה יסופק' |
| return_request | 'אני רוצה להחזיר', 'מידה שגויה' |
| complaint | 'המוצר שבור', 'נמסר מוצר שגוי' |
| payment_issue | 'לא יכול לשלם', 'התשלום לא עבר' |
| promo_inquiry | 'יש הנחות?', 'קוד קופון' |
| out_of_scope | כל השאר |
מילוי שדות: חילוץ פרמטרים בדיוק
ללא חילוץ שדות, המודל מבין רק כוונה כללית—'חיפוש מוצר'—אבל לא איזה. עם שדות: 'חיפוש נעלי נייק מידה 42'. הפתרונות שלנו כוללים רכיב NER שמחלץ ישויות: מספרי הזמנה, תאריכים, שמות מוצרים. זה מפחית דיאלוגי הבהרה ב-60% ומאיץ פתרון בעיות פי 2. לתחומים מובנים, regex + NER מותאם אישית עובד אמין יותר ממודל NER כללי:
import re
def extract_order_id(text: str) -> Optional[str]:
# форматы: #123456, №123456, ORD-123456, заказ 123456
patterns = [
r'#(\d{5,8})',
r'№(\d{5,8})',
r'ORD-(\d+)',
r'заказ[а-я\s]+?(\d{5,8})'
]
for pattern in patterns:
match = re.search(pattern, text, re.IGNORECASE)
if match:
return match.group(1)
return None
def fill_order_status_slots(text: str) -> OrderStatusSlots:
return OrderStatusSlots(
order_id=extract_order_id(text),
period=extract_period(text) # «за прошлую неделю», «в ноябре»
)
אנדרואיד: אינטגרציה לממשק דיאלוג
class IntentViewModel(private val intentApi: IntentApi) : ViewModel() {
fun processUserInput(text: String) {
viewModelScope.launch {
val result = intentApi.classify(text)
when (result.intent) {
"search_product" -> {
val query = result.slots["product_query"] ?: text
navigateToSearch(query)
}
"order_status" -> {
val orderId = result.slots["order_id"]
if (orderId != null) navigateToOrder(orderId) else requestOrderId()
}
"return_request" -> navigateToReturnFlow()
"out_of_scope" -> showFallbackMessage()
else -> handleGenericIntent(result)
}
}
}
} מתי להשתמש ב-LLM לעומת BERT מכוונן
לאפליקציות עם מספר קטן של כוונות (<20) וניסוחים גמישים, פלט מובנה דרך GPT-4o-mini או Gemini Flash זול ומדויק יותר ממודל מכוונן. השתמשו בפרומפט עם סכמת JSON ודוגמאות few-shot. גישת ה-LLM זולה פי 5 לתחזוקה ועדכונים מיידיים (רק לשנות את הפרומפט, ללא אימון מחדש). עם זאת, לאפליקציות עם נפח גבוה, BERT מכוונן חסכוני פי 10 מ-LLM: GPT-4o-mini עולה $0.15 לכל 1k שאילתות, הסקת BERT עולה $0.02 לכל 1k שאילתות.
על המכשיר מול ענן: מה לבחור?
| קריטריון | על המכשיר (rubert-tiny2) | ענן (BERT מלא) |
|---|---|---|
| גודל מודל | ~29 MB | ~400 MB |
| זמן תגובה | <100 ms (מהיר פי 10) | 200-500 ms + רשת |
| פרטיות | נתונים לא עוזבים את המכשיר (תואם GDPR) | דורש העברת נתונים |
| עדכונים | דרך App Store | מיידי על השרת |
על המכשיר מפחית זמן תגובה פי 10 ומבטיח פרטיות נתונים, תואם GDPR.
תהליך היישום והעלות
- פיתוח טקסונומיה עם צוות המוצר (2-3 ימים).
- איסוף נתונים ותיוג (לפחות 100-200 דוגמאות לכל כוונה).
- אימון מסווג והערכת בסיס (דיוק/F1).
- אינטגרציה לממשק הדיאלוג במובייל עם טיפול במחוץ לתחום (יומיים).
- ניטור: שיעור מחוץ לתחום, מטריצת בלבול לכל כוונה.
מסווג BERT מכוונן עם מילוי שדות בסיסי לוקח 2-3 שבועות. זיהוי כוונות מבוסס LLM עם פלט מובנה לוקח 3-5 ימים. עלות כוונון מודל נעה בין $5,000 ל-$15,000 תלוי בנפח הנתונים ומספר הכוונות. השלמנו 50+ פרויקטים כאלה עם דיוק ייצור ממוצע של 89%.
מה כלול
- תיעוד של טקסונומיית הכוונות וסכמות השדות
- קוד מקור להסקה (Python/Kotlin/Swift)
- הגדרת CI/CD למודל
- גישה ללוח מחוונים לניטור מדדים עם מדדים בזמן אמת
- הדרכת צוות לעבודה עם המודל
- חודש תמיכה לאחר ההשקה
אנו מבטיחים דיוק סיווג של לפחות 85% על מערך הבדיקות. הלקוחות שלנו הפחיתו פניות תמיכה ב-40% והעלו את ציוני שביעות הרצון ב-20 נקודות. מקצה לקצה: מרעיון ועד השקה ב-App Store וב-Google Play. קבלו ייעוץ עכשיו. צרו קשר כדי לדון בטקסונומיית הכוונות ובתוכנית היישום.
כפי שהוגדר בבלשנות, זיהוי כוונות הוא רכיב יסוד במערכות הבנת שפה טבעית. פקודות קוליות ואינטראקציות צ'אטבוט במובייל מסתמכות במידה רבה על סיווג שאילתות ומילוי שדות לממשקי דיאלוג אפקטיביים.







