איך אנחנו מנחים מודעות

איך אנחנו מנחים מודעות

כל שירות שמשתמשיו יכולים ליצור תוכן משלהם (UGC – User-generated content) נאלץ לא רק לפתור בעיות עסקיות, אלא גם לעשות סדר ב-UGC. מתן תוכן ירודה או באיכות נמוכה יכול בסופו של דבר להפחית את האטרקטיביות של השירות עבור המשתמשים, אפילו לסיים את פעולתו.

היום נספר לכם על הסינרגיה בין Yula לבין Odnoklassniki, שעוזרת לנו למתן ביעילות פרסומות ביולה.

סינרגיה באופן כללי היא דבר מאוד שימושי, ובעולם המודרני, כשהטכנולוגיות והטרנדים משתנים מהר מאוד, זה יכול להפוך למציל חיים. למה לבזבז משאבים וזמן מועטים בהמצאת משהו שכבר הומצא והעלה בראשכם לפניכם?

חשבנו אותו דבר כשעמדנו בפני המשימה המלאה של ניהול תכני משתמשים – תמונות, טקסט וקישורים. המשתמשים שלנו מעלים מיליוני פיסות תוכן ליולה מדי יום, וללא עיבוד אוטומטי זה בלתי אפשרי לחלוטין למתן את כל הנתונים הללו באופן ידני.

לכן, השתמשנו בפלטפורמת ניהול מוכנה, שעד אז סיימו עמיתינו מאודנוקלסניקי למצב של "כמעט שלמות".

למה Odnoklassniki?

מדי יום מגיעים עשרות מיליוני משתמשים לרשת החברתית ומפרסמים מיליארדי קטעי תוכן: מתמונות ועד סרטונים וטקסטים. פלטפורמת הניהול של Odnoklassniki עוזרת לבדוק כמויות גדולות מאוד של נתונים ולנטרל שולחי דואר זבל ובוטים.

צוות המנחה של OK צבר ניסיון רב, מאז הוא משפר את הכלי שלו כבר 12 שנים. חשוב שהם יוכלו לא רק לשתף את הפתרונות המוכנים שלהם, אלא גם להתאים אישית את הארכיטקטורה של הפלטפורמה שלהם כך שתתאים למשימות הספציפיות שלנו.

איך אנחנו מנחים מודעות

מעתה ואילך, למען הקיצור, נכנה את פלטפורמת הניהול של OK "פלטפורמה".

איך הכל עובד

חילופי נתונים בין Yula לבין Odnoklassniki נוצר באמצעות אפאצ'י קפקא.

מדוע בחרנו בכלי זה:

  • ביולה כל הפרסומות מועברות לאחר מנחה, כך שבהתחלה לא נדרשה תגובה סינכרונית.
  • אם מתרחשת פסקה גרועה ויולה או Odnoklassniki אינן זמינות, כולל בגלל עומסי שיא מסוימים, אז הנתונים מקפקא לא ייעלמו לשום מקום וניתן יהיה לקרוא אותם מאוחר יותר.
  • הפלטפורמה כבר שולבה עם קפקא, כך שרוב בעיות האבטחה נפתרו.

איך אנחנו מנחים מודעות

עבור כל מודעה שנוצרה או השתנתה על ידי המשתמש ב-Yula, נוצר JSON עם נתונים, אשר ממוקם בקפקא לצורך ניהול מאוחר יותר. מקפקא, הודעות נטענות לפלטפורמה, שם הן נשפטות באופן אוטומטי או ידני. מודעות רעות נחסמות עם סיבה, ואלה שבהן הפלטפורמה לא מוצאת הפרות מסומנות כ"טובות". לאחר מכן כל ההחלטות נשלחות חזרה ליולה ומוחלות בשירות.

בסופו של דבר, עבור Yula הכל מסתכם בפעולות פשוטות: שלח מודעה לפלטפורמת Odnoklassniki וקבל בחזרה החלטה "בסדר", או למה לא "בסדר".

עיבוד אוטומטי

מה קורה למודעה אחרי שהיא מגיעה לפלטפורמה? כל מודעה מחולקת למספר ישויות:

  • שֵׁם,
  • תיאור,
  • תמונות,
  • קטגוריה וקטגוריית משנה של המודעה שנבחרו על ידי המשתמש,
  • цена.

איך אנחנו מנחים מודעות

לאחר מכן הפלטפורמה מבצעת אשכולות עבור כל ישות כדי למצוא כפילויות. יתר על כן, טקסט ותצלומים מקובצים לפי סכמות שונות.

לפני קיבוץ, טקסטים מנורמלים כדי להסיר תווים מיוחדים, אותיות שהשתנו וזבל אחר. הנתונים שהתקבלו מחולקים ל-N-גרם, שכל אחד מהם עובר גיבוב. התוצאה היא גיבובים ייחודיים רבים. הדמיון בין טקסטים נקבע על ידי המידה של ג'קארד בין שני הקבוצות שהתקבלו. אם הדמיון גדול מהסף, אז הטקסטים מתמזגים לאשכול אחד. כדי להאיץ את החיפוש אחר אשכולות דומים, נעשה שימוש ב-MinHash ו-Hash רגיש ל-Locality.

אפשרויות שונות להדבקת תמונות הומצאו לצילומים, החל מהשוואת תמונות pHash ועד חיפוש כפילויות באמצעות רשת עצבית.

השיטה האחרונה היא ה"חמורה" ביותר. כדי להכשיר את המודל, נבחרו שלישיות של תמונות (N, A, P) שבהן N אינו דומה ל-A, ו-P דומה ל-A (הוא חצי כפיל). ואז הרשת העצבית למדה להפוך את A ו-P קרובים ככל האפשר, ואת A ו-N כמה שיותר רחוקים. זה מביא לפחות תוצאות חיוביות שגויות בהשוואה פשוט לנטילת הטמעות מרשת מאומנת מראש.

כאשר הרשת העצבית מקבלת תמונות כקלט, היא מייצרת וקטור N(128) ממדי עבור כל אחת מהן ומתקבלת בקשה להעריך את הקרבה של התמונה. לאחר מכן, מחושב סף שבו תמונות קרובות נחשבות לכפולות.

הדוגמנית מסוגלת למצוא במיומנות שולחי דואר זבל שמצלמים ספציפית את אותו מוצר מזוויות שונות על מנת לעקוף את השוואת ה-phash.

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

בשלב הסופי, חיפושים כפולים של פרסומות בו-זמנית על ידי טקסט ותמונה.

אם שתי פרסומות או יותר דבוקות יחד באשכול, המערכת מתחילה בחסימה אוטומטית, אשר באמצעות אלגוריתמים מסוימים, בוחרת אילו כפילויות למחוק ואילו לעזוב. לדוגמה, אם לשני משתמשים יש את אותן תמונות במודעה, המערכת תחסום את המודעה העדכנית יותר.

לאחר היצירה, כל האשכולות עוברים סדרה של מסננים אוטומטיים. כל מסנן מקצה ציון לאשכול: מה הסיכוי שהוא מכיל את האיום שהמסנן הזה מזהה.

לדוגמה, המערכת מנתחת את התיאור במודעה ובוחרת עבורה קטגוריות פוטנציאליות. לאחר מכן הוא לוקח את זה עם ההסתברות המקסימלית ומשווה אותו לקטגוריה שצוינה על ידי מחבר המודעה. אם הם לא תואמים, המודעה נחסמת עבור הקטגוריה הלא נכונה. ומכיוון שאנו אדיבים וישרים, אנו אומרים ישירות למשתמש באיזו קטגוריה הוא צריך לבחור על מנת שהמודעה תעבור את המידה.

איך אנחנו מנחים מודעות
הודעה על חסימה עבור קטגוריה שגויה.

למידת מכונה מרגישה כמו בבית בפלטפורמה שלנו. לדוגמה, בעזרתו אנו מחפשים בשמות ובתיאורים של סחורות האסורות בפדרציה הרוסית. ומודלים של רשתות עצביות "בודקים" בקפדנות את התמונות כדי לראות אם הן מכילות כתובות URL, טקסטים ספאם, מספרי טלפון, ואותו מידע "אסור".

במקרים שבהם הם מנסים למכור מוצר אסור במסווה של משהו חוקי, ואין טקסט בכותרת או בתיאור, אנו משתמשים בתיוג תמונה. לכל תמונה ניתן להוסיף עד 11 אלף תגיות שונות שמתארות את מה שיש בתמונה.

איך אנחנו מנחים מודעות
הם מנסים למכור את הנרגילה על ידי הסוואתה לסמובר.

במקביל למסננים מורכבים, גם מסננים פשוטים עובדים, ופותרים בעיות ברורות הקשורות לטקסט:

  • antimat;
  • גלאי כתובת URL ומספרי טלפון;
  • אזכור של שליחים מיידיים ואנשי קשר אחרים;
  • מחיר מופחת;
  • פרסומות שאין בהן שום דבר למכירה וכו'.

כיום כל מודעה עוברת מסננת עדינה של יותר מ-50 פילטרים אוטומטיים שמנסים למצוא משהו רע במודעה.

אם אף אחד מהגלאים לא עבד, אז נשלחת תשובה ליולה ש"סביר להניח" שהמודעה בסדר מושלם. אנו משתמשים בתשובה זו בעצמנו, ומשתמשים שנרשמו למוכר מקבלים הודעה על זמינות מוצר חדש.

איך אנחנו מנחים מודעות
הודעה שלמוכר יש מוצר חדש.

כתוצאה מכך, כל מודעה "מגודלת" במטא נתונים, שחלקם נוצרים בעת יצירת המודעה (כתובת ה-IP של המחבר, סוכן המשתמש, פלטפורמה, מיקום גיאוגרפי וכו'), והשאר הוא הציון שמונפק על ידי כל מסנן .

תורי הודעות

כאשר מודעה מגיעה לפלטפורמה, המערכת מכניסה אותה לאחד מהתורים. כל תור נוצר באמצעות נוסחה מתמטית המשלבת מטא נתונים של מודעה באופן שמזהה דפוסים גרועים.

לדוגמה, אתה יכול ליצור תור של מודעות בקטגוריית "טלפונים סלולריים" ממשתמשי Yula, כביכול מסנט פטרסבורג, אבל כתובות ה-IP שלהם הן ממוסקבה או מערים אחרות.

איך אנחנו מנחים מודעות
דוגמה לפרסומות שפורסמו על ידי משתמש אחד בערים שונות.

או שאתה יכול ליצור תורים על סמך הציונים שהרשת העצבית מקצה למודעות, ולסדר אותם בסדר יורד.

כל תור, לפי הנוסחה שלו, מקצה ציון סופי למודעה. לאחר מכן תוכל להמשיך בדרכים שונות:

  • לציין את הסף שבו מודעה תקבל סוג מסוים של חסימה;
  • לשלוח את כל המודעות בתור למנחים לבדיקה ידנית;
  • או שלבו את האפשרויות הקודמות: ציינו את סף החסימה האוטומטית ושלחו למנחים את המודעות שלא הגיעו לסף הזה.

איך אנחנו מנחים מודעות

מדוע נדרשים תורים אלו? נניח שמשתמש העלה תמונה של נשק חם. הרשת העצבית מעניקה לו ציון בין 95 ל-100 וקובעת בדיוק של 99 אחוז שיש נשק בתמונה. אבל אם ערך הניקוד נמוך מ-95%, הדיוק של המודל מתחיל לרדת (זוהי תכונה של מודלים של רשתות עצביות).

כתוצאה מכך, נוצר תור המבוסס על מודל הניקוד, ואותן מודעות שהתקבלו בין 95 ל-100 נחסמות אוטומטית כ"מוצרים אסורים". מודעות עם ציון מתחת ל-95 נשלחות למנחים לעיבוד ידני.

איך אנחנו מנחים מודעות
ברטה שוקולד עם מחסניות. רק לתיאום ידני! 🙂

ניהול ידני

בתחילת 2019, כ-94% מכלל הפרסומות ביולה מנוהלות אוטומטית.

איך אנחנו מנחים מודעות

אם הפלטפורמה לא יכולה להחליט על מודעות מסוימות, היא שולחת אותן לניהול ידני. Odnoklassniki פיתחו כלי משלהם: משימות למנחים מציגות מיד את כל המידע הדרוש כדי לקבל החלטה מהירה - המודעה מתאימה או שיש לחסום אותה, תוך ציון הסיבה.

וכדי שאיכות השירות לא תיפגע במהלך התמתנות ידנית, עבודתם של אנשים מפוקחת כל הזמן. לדוגמה, בזרם המשימות מוצגות למנחה "מלכודות" - מודעות שכבר יש להן פתרונות מוכנים. אם החלטת המנחה אינה עולה בקנה אחד עם ההחלטה המוגמרת, המנחה מקבל שגיאה.

בממוצע, מנחה משקיע 10 שניות בבדיקת מודעה אחת. יתרה מכך, מספר השגיאות אינו עולה על 0,5% מכלל המודעות המאומתות.

מתינות של אנשים

עמיתים מ-Odnoklassniki הלכו רחוק יותר וניצלו את "עזרת הקהל": הם כתבו אפליקציה למשחק לרשת החברתית שבה ניתן לסמן במהירות כמות גדולה של נתונים, תוך הדגשת סימן רע - מנחה Odnoklassniki (https://ok.ru/app/moderator). דרך טובה לנצל את העזרה של משתמשי OK שמנסים להפוך את התוכן למהנה יותר.

איך אנחנו מנחים מודעות
משחק בו משתמשים מתייגים תמונות שעליהן מספר טלפון.

ניתן להפנות כל תור של מודעות בפלטפורמה למשחק Odnoklassniki Moderator. כל מה שמשתמשי המשחק מסמנים נשלח לאחר מכן למנחים פנימיים לבדיקה. סכימה זו מאפשרת לך לחסום מודעות שעדיין לא נוצרו להן מסננים, ובו זמנית ליצור דוגמאות הדרכה.

אחסון תוצאות ניהול

אנו שומרים את כל ההחלטות שהתקבלו במהלך התיווך כדי שלא נעבד מחדש את המודעות שעליהן כבר קיבלנו החלטה.

מיליוני אשכולות נוצרים מדי יום על סמך פרסומות. עם הזמן, כל אשכול מסומן כ"טוב" או "רע". כל מודעה חדשה או הגרסה שלה, הנכנסת לאשכול עם סימן, מקבלת באופן אוטומטי החלטה מהאשכול עצמו. יש בערך 20 אלף רזולוציות אוטומטיות כאלה ביום.

איך אנחנו מנחים מודעות

אם לא מגיעות הודעות חדשות לאשכול, הוא מוסר מהזיכרון וה-hash והפתרון שלו נכתבים ל-Apache Cassandra.

כאשר הפלטפורמה מקבלת פרסומת חדשה, היא תחילה מנסה למצוא אשכול דומה מבין אלו שכבר נוצרו ולקחת ממנו פתרון. אם אין אשכול כזה, הרציף הולך לקסנדרה ומסתכל שם. האם מצאת את זה? מעולה, מיישם את הפתרון על האשכול ושולח אותו ליולה. יש בממוצע 70 אלף החלטות "חוזרות" כאלה מדי יום - 8% מהסך הכל.

הסתכמות

אנו משתמשים בפלטפורמת המנחה של Odnoklassniki כבר שנתיים וחצי. אנחנו אוהבים את התוצאות:

  • אנו ממתנים אוטומטית 94% מכל המודעות ביום.
  • עלות הנחת מודעה אחת הופחתה מ-2 רובל ל-7 קופיקות.
  • הודות לכלי המוכן, שכחנו מהבעיות של ניהול מנהלים.
  • הגדלנו את מספר המודעות שעובדו ידנית פי 2,5 עם אותו מספר מנחים ותקציב. איכות המתיחות הידנית עלתה גם היא עקב בקרה אוטומטית, ונעה סביב 0,5% מהשגיאות.
  • אנו מכסים במהירות סוגים חדשים של דואר זבל באמצעות מסננים.
  • אנו מחברים במהירות מחלקות חדשות למתינות "Yula Verticals". מאז 2017, Yula הוסיפה את ענפי הנדל"ן, המשרות הפנויות והמכוניות.

מקור: www.habr.com

הוספת תגובה