מדוע גרף הידע אינו נבנה מטקסטים מעצמו
מרשמים מפוזרים, חוזים, פרוטוקולי ישיבות והתכתבויות עבודה כבר מונחים בדרך כלל במאגר אחד — נדמה שזה מספיק לגרף ידע. בפועל, ממסמכים לא מובנים אינה נבנית מבנה קוהרנטי: החיפוש עונה לפי קובץ בודד, אך אינו מראה כיצד הישויות קשורות זו לזו, והאנליסט ממשיך לאחד קשרים ידנית.
שורש הבעיה הוא ברמת העיבוד: חילוץ ישויות אוטומטי פועל על מסמך בודד ואינו מאחד את התוצאות ביניהן. צד נגדי אחד בשלושה מרשמים מפוזרים נרשם באופן שונה, ואובייקטים שונים נושאים שמות זהים. ללא נרמול ופתרון התאמות של ישויות, גרף הידע מהטקסטים מתפרק לשברים לא מחוברים.
יחסים קשים אף יותר. יש לתאר את הכללים «מי מפנה למי» ו«מה נובע ממה» באמצעות סכמת טיפוסים, אחרת אין עם מה להשוות את העובדות שחולצו. סוג הקשר, כיוונו והסתמכותו על קטע טקסט מסוים נקבעים על ידי האונטולוגיה — רק לאחר מכן ניתן לבנות שאילתות על הגרף, ולא לדפדף במקורות.
נושא נפרד הוא קישוריות הנתונים. אנו מודדים אותה לפי שיעור הישויות שנכללו בלפחות קשר מאומת אחד, ולפי שיעור הצמתים ה«תלויים» ללא יחס יחיד. כאשר הקישוריות יורדת, הגרף בנוי פורמלית, אך אינו מספק ערך אנליטי: אי אפשר לעבור בו מסלול מהספק ועד לאובייקט הסופי.
בהמשך נבחן כיצד זה נסגר: כיצד נבנית סכמת הישויות והקשרים, במה מאומת כל קשר ולפי אילו מדדים ניכר שהגרף אכן נבנה, ולא רק מתמלא בצמתים.
מה מניב חילוץ אוטומטי של ישויות וקשרים
צינור החילוץ מפרק את המסמך למשפטים, מזהה ישויות וקשרים ביניהן, ולאחר מכן נרמול הישויות מאחד וריאנטים של כתיב לצומת אחד: «ООО Ромашка», «Ромашка» ושגיאת הקלדה עם אות לטינית הופכים לרישום אחד עם היסטוריית מקורות. ללא שלב זה הגרף הופך במהירות לאוסף של צמתים כמעט זהים, והשליפה לפי ארגון מניבה תשובה חלקית.
שלמות החילוץ תלויה לא במודל, אלא בסכמת הקשרים: אנו מקבעים את סוגי היחסים מראש (ספק, בעלים, סניף, קונפליקט) ומריצים את הקורפוס בשני מעברים בלתי תלויים. קשר נכנס לגרף רק עם הפניה למסמך המקורי ולפסקה, ולכן תמיד ניתן לבטל זיהוי שגוי, בלי לפרק את כל הגרף מחדש.
בקרת איכות התיוג נשענת על מדגם מרובד שיטתי: מסמכים אקראיים מכל סוג בתוספת כל המקרים השנויים במחלוקת עוברים לבדיקה ידנית, והפערים בין המתייגים נאספים לרשימה נפרדת. אנו עוקבים אחר דיוק ושלמות בנפרד עבור כל סוג קשר — כך ניכר מה בדיוק נפגע בעת שינוי פורמט הקבצים הנכנסים.
עדכון הקשרים פועל באופן אינקרמנטלי: מסמך חדש מוסיף קשתות, וקשרים מיושנים אינם נמחקים אלא מסומנים כלא-בתוקף עם תאריך, ולכן הגרף נשאר משוחזר לכל נקודת זמן.
אנו מוסרים את התוצאה במודל תקני — RDF — ובצורה של טבלאות רלציוניות, כדי שניתן יהיה לחבר את הגרף למאגרים קיימים בלי להעביר את הנתונים.
האפקט המעשי: קורפוס של עשרות אלפי מסמכים מעובד בלילה אחד במקום שבועות של תיוג ידני, שיעור הקשרים עם מקור מאומת מגיע ל-0.9 במדגם הבקרה, וסוג השגיאה «כתיבים שונים של אותה ישות» נעלם בשלב הנרמול, ולא צף בדוחות.
דרכי בנייה: השוואת גישות ומגבלות
בנייה אוטומטית של קשרים היא תמיד פשרה בין שלמות לדיוק: ככל שהכללים והמילון רחבים יותר, כך שוקעות בגרף יותר קשתות מיותרות. כדי להשוות בין האפשרויות ביושר, אנו מריצים כל אחת על אותו קורפוס בדיוק ומשווים לתיוג שנשמר בצד — אנו מחשבים דיוק על היחסים שחולצו, ולא על מונחים בודדים.
נוח לתאר כללים ומילוני מילים נרדפות בפורמט נייד SKOS: את הסכמה עורך מומחה תחום ולא מפתח, והיא אינה כבולה למערכת אחת. להלן האפשרויות שביניהן באמת בוחרים, עם גבולותיהן.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| כללים ומילוני מילים נרדפות | טרמינולוגיה צרה, קיימים מדריכים מוכנים | כתיב חדש או שגיאת הקלדה חומקים מכללי המערכת; את המילון מתחזקים ידנית, וכללים סותרים מניבים קשתות כפולות |
| שיטות סטטיסטיות ווקטוריות | יש הרבה טקסטים, אין תיוג, נדרשת קרבה נושאית בין ישויות | מניבות קשר «דומה» בלי סוג יחס; סף הקרבה נבחר בעיוורון, ובמונחים תכופים — זיהויים שגויים |
| מודל מאומן לחילוץ יחסים | נדרשים קשרים מטופוסים: מי מזכיר את מי, מה נכלל במה | דורש תחום תוכן מתויג; החלפת התחום מובילה לאימון מחדש, וסוגי קשרים נדירים אינם נלמדים |
| היברידי עם כיוונון סכמה ידני | סכמת התחום מוכרת ויש להקפיד עליה | יקר יותר בהצבה: נדרשים מומחה תחום וכיול ספים על נתונים אמיתיים |
אף אחת מהאפשרויות אינה מספקת גרף מוכן «מהקופסה» — מגבלות השיטות מוסרות רק על ידי שילוב ביניהן. לכן כבר בהתחלה אנו מקבעים את סכמת היחסים, אוספים תיוג ייחוס על 200–300 קטעים ולפיו בוחרים היכן די בכללים והיכן נדרש מודל.
שלבי ההטמעה: מביקורת הקורפוס ועד מסירת הסכמה
סדר העבודה בנוי כך שכל שלב עוקב נשען על תוצאה מאומתת של קודמו: תחילה מבינים מה בכלל יש בטקסטים, לאחר מכן מקבעים אילו קשרים דרושים לנו, ורק אז מכווננים את החילוץ. דילוג על כל שלב עולה ביוקר — סכמה שנבנתה בלי ביקורת קורפוס נשברת כבר במסמכים האמיתיים הראשונים.
-
ביקורת קורפוס הטקסטים. סופרים נפח ופורמטים, שיעור סריקות וטבלאות, מאתרים כפילויות, קטעים רב-לשוניים ומסמכים עם פרטים מיושנים. בפלט — מפת הקורפוס: מה מחולץ בביטחון, מה דורש עיבוד מקדים ומה כלל לא ייכנס לגרף.
-
תכנון סכמת הקשרים. מתאמים את רשימת סוגי הישויות וסוגי הקשרים, את המגבלות וכללי הירושה, ומקרים שנויים במחלוקת בוחנים עם האנליסטים שלכם. את הסכמה מקבעים בצורה קריאה למכונה עם ניהול גרסאות — שינויה בהמשך לא ידרוש בנייה מחדש של הגרף מאפס.
-
כיוונון החילוץ. אוספים מילוני מילים נרדפות, קיצורים ומדריכים, מכווננים כללי נרמול, מיזוג כפילויות וקישור ישויות למזהים יציבים. כאן גם מחליטים אילו קשרים נגזרים מתבנית ואילו — לפי משמעות הקטע.
-
מדגמי בקרה. מתייגים ידנית כמה מאות קטעים ומחשבים שלמות ודיוק בנפרד עבור כל סוג קשר, ולא כמספר ממוצע אחד. את השגיאות מנתחים לפי סיבות וחוזרים לכללים ולמילונים עד שהמדדים מתייצבים.
-
בדיקה על שאילתות אמיתיות. מריצים שאלות אופייניות של המומחים שלכם ומשווים את המסלולים בגרף לאופן שבו בונה אותם אדם. כך תופסים נתקים בקשרים שמדדי המדגם אינם רואים.
-
מסירת הפתרון. מוסרים את סכמת הקשרים, המילונים, הכללים, סקריפטים לבנייה מחדש של הגרף ותקנון עדכון; מקיימים סקירה עם הצוות שלכם כדי שניתן יהיה להרחיב את הגרף בלעדינו.
מה מוסרים לידיים: ארטיפקטים ותקנוני תחזוקה
לאחר המסירה נשאר אצל הלקוח לא רק גרף ידע עובד, אלא כל מכלול הארטיפקטים שלפיו הצוות יכול לפתח את הפתרון בלעדינו. הסכמה, המילונים, ההרשאות והתקנונים מונחים במאגר שלכם עם ניהול גרסאות — ניתן לקרוא אותם, לערוך ולהעביר למהנדסים חדשים.
- סכמת הגרף — סוגי צמתים וקשרים, מאפיינים מחייבים, כללי מיזוג כפילויות; גרסת הסכמה תחת בקרת שינויים.
- מילוני ישויות — צורות מנורמלות של שמות, כינויים וכללי פתרון קונפליקטים כשאותה ישות מופיעה בכמה כתיבים.
- כללי גישה — מטריצת תפקידים: אילו סוגי צמתים וקשרים גלויים למי, כולל מגבלות על המסמכים המקוריים.
- תקנון עדכון — תדירות טעינת טקסטים חדשים, הסף לבנייה מחדש של החלק הנפגע, סדר הבדיקה הידנית של קשרים שנויים במחלוקת.
- תיעוד הפתרון — הזרימה מטעינת טקסט ועד הכתיבה לגרף, תיאור התצורה, פריסה מאפס.
- תחזוקת הסכמה — כיצד להוסיף סוג ישות או קשר חדש בלי לבנות מחדש את כל הגרף ולשמר תאימות לאחור.
- מדגם ייחוס ונוהל נסיגה — טקסטים מתויגים למדידת שלמות ודיוק, תמונות מצב של הגרף לחזרה לפני עדכון כושל.
אנו מוסרים תצורות עובדות, ולא תיאורים: בקבלה המהנדסים שלכם מריצים בעצמם מנה נוספת של טקסטים ומעדכנים את הגרף. מכאן והלאה הפתרון חי בצד שלכם — עם סדר שינויים מובן ואיכות ניתנת לבדיקה.
מקרה בוחן: גרף ידע על ארכיון תיעוד טכני
הלקוח — מפעל ייצור עם ארכיון גדול של תיעוד טכני: דרכוני ציוד, תקנוני תחזוקה, עלוני שינויים, דוחות תקלות.
המסמכים היו מפוזרים בתיקיות ובמערכות, החיפוש נעשה לפי מילות מפתח, והקישוריות בין המדורים — אילו צמתים נכנסים לאותם תקנונים, אילו תקלות גוררות אחריהן את אותם צמתים — החזיקה בראשם של שני מהנדסים.
הרכבנו צינור: תיוג מבנה המסמכים, חילוץ ישויות ויחסים, נרמול מונחים (צומת אחד בחמישה כתיבים — רישום אחד), בדיקה סלקטיבית בידי אדם. הקשרים נשמרו בבסיס גרפי Neo4j — מעבר של 3-5 קפיצות הפסיק להיות הרכבה ידנית ומבוצע בשאילתה.
מדדים לפני ואחרי
| מדד | לפני | אחרי |
|---|---|---|
| קשרים בגרף | כ-1,200, הוזנו ידנית | למעלה מ-40,000, חולצו אוטומטית |
| ניתוח ידני של זרם המסמכים | כל המכלול | בדיקה סלקטיבית ~8% |
| תשובה ל«אילו תקנונים נוגע בהם צומת» | 20-40 דקות לפי תיקיות | שניות, במעבר על הקשרים |
| שלמות הקשרים במדגם הבקרה | 55-60% לפי הערכת מומחים | למעלה מ-90%, פערים נותחו |
בנפרד על אימות: לא התייחסנו לאוטומטיקה כאמת מוחלטת. המהנדסים תייגו מדגם בקרה, פערים נותחו ותוקנו כללי החילוץ — לאחר שתי איטרציות ירד שיעור הקשרים השנויים במחלוקת, והגרף הפך לכלי עבודה, ולא לאוסף קשרים שאיש לא בדק.
במה שונה חילוץ קשרים מתיוג ישויות?
תיוג ישויות עונה על השאלה «מי ומה הוזכרו»: המודל עובר על הטקסט, מזהה קטעים ומקצה לכל אחד טיפוס — ארגון, אדם, פרויקט, מסמך תקינה, תאריך. בפלט מתקבלת רשימה שטוחה של אזכורים עם קואורדינטות במסמך.
רשימה כזו נוחה לספירה, אך אי אפשר להשיב לפיה על אף שאלה על קשרים: היא אינה יודעת מי מינה את מי ומה נובע ממה.
חילוץ קשרים מוסיף שכבה שנייה — סוגי יחסים בין הישויות שנמצאו: «עובד ב», «מחזיק בנתח», «מספק», «כפוף ל», «מוזכר יחד עם».
כאן מכריע ההקשר של האזכור: היחס נגזר לא מקרבת מילים, אלא מתפקיד תחבירי ומהנשוא, ולכן «המנהל חתם על חוזה עם ספק» ו«המנהל הזכיר את הספק בדוח» מניבים קשתות שונות ברמת ביטחון שונה.
בין שתי השכבות עומד פתרון אי-הבהירות. ארגון אחד מופיע בקורפוס כשם מלא, כראשי תיבות וכשגיאת הקלדה; אדם — לפי שם משפחה, ראשי תיבות ותפקיד. אם האזכורים אינם מאוחדים לצומת אחד, הגרף מתפרק לשברים מבודדים, והקשרים הולכים לאיבוד לעתים קרובות יותר מאשר בטעות תיוג.
קישוריות המבנה — היא הסיבה ששתי העבודות נעשות יחד. תיוג בלי יחסים מניב רשימת ישויות, ויחסים בלי תיוג — קשתות עם קצוות לא ידועים.
לכן את התוצאה בודקים לא לפי דיוק על אזכור בודד, אלא לפי שיעור הצמתים הנכללים במסלול קשיר, ולפי מספר הקשרים לישות: על גרף כזה כבר נבנות תשובות לשאלות וחיפוש לפי שרשראות.
ספקות טכניים: איכות, היקף ותחזוקה
הספקות בנוגע לגרף ידע חוזרים על עצמם: שלמות החילוץ, כפילויות ישויות, תאימות לאונטולוגיה שכבר אומצה, וחיי הקשרים לאחר ההשקה. נבחן כל אחד מהם — דרך מבנה התהליך, ולא דרך הבטחות.
עד כמה שלמה חילוץ הישויות?
שלמות ודיוק מחושבים על מדגם מתויג ממסמכים שלכם — בנפרד לפי סוגי צמתים וקשרים, ולא על מדגם הדגמה. היכן שהמודל טועה, מוסיפים מילונים וכללי נרמול, קטעים שנויים במחלוקת עוברים לתיוג ידני נוסף והופכים לדוגמאות אימון. את סף הקבלה מקבעים לפני תחילת העבודה.
כיצד הגרף נפטר מכפילויות?
אובייקט אחד מופיע כקיצור, כשגיאת הקלדה, בצורה דקדוקית אחרת, באותיות לטיניות ובקירילית. בלוק המיזוג משווה את הווריאנטים לפי כתיב, הקשר ומדריכים חיצוניים ומאחד אותם לצומת אחד עם מילים נרדפות. כל מיזוג מתועד והפיך: איחוד שגוי מנותח, ולא נשאר לנצח.
האם נצטרך לוותר על האונטולוגיה שלנו?
לא. אם יש לכם מודל ענפי, מדריכים או מסווג מאומץ, החילוץ מתבצע במסגרתם: סוגי צמתים, קשרים ומאפיינים נלקחים משם, ולא מסכמת ברירת המחדל שלנו. פערים אנו מציגים בנפרד — אתם מחליטים אם להרחיב את המודל או לנרמל את הנתונים כך שיתאימו לו.
מה קורה בעת עדכון הקורפוס?
הגרף נבנה בהדרגה במנות: מסמכים חדשים עוברים חילוץ, קשרים מתווספים, וקשרים מיושנים מקבלים חתימת זמן במקום מחיקה. כך ניכר מתי נוצר הקשר ועל איזה מקור הוא מבוסס. בנייה מחדש מלאה נדרשת רק בעת החלפת סכמה — והיא מתבצעת עם בדיקה על מדגם ייחוס, כדי שהמדדים לא ייפלו.
נדון במשימה: מה נדרש כדי להתחיל בעבודה
הערכת היקף העבודה על גרף ידע תלויה בשני דברים: מהו הקורפוס ואילו קשרים אתם רואים כחובה בפלט. כדי לא להשיב «בערך ומתישהו», די לנו בנתוני הפתיחה שלהלן — לפיהם אנו מעריכים את מספר איטרציות התיוג, את עלות העבודה על חילוץ ישויות ואת גבולות קטע הפיילוט.
- הרכב הקורפוס: כמה מסמכים וסוגים, נפח משוער, שפות, ובאיזו צורה הם מונחים כעת — קובצי טקסט, פריסת דפוס, סריקות, ייצוא ממערכת ניהול או התכתבות.
- 5–10 דוגמאות של מסמכים אמיתיים מסוגים שונים: לפיהם ניכרים התיוג, צפיפות המונחים, שיעור הטבלאות והתמונות — זה מדויק יותר מכל שאלון.
- מילונים ומדריכים קיימים: מסווגים, מרשמים, רשימות מילים נרדפות וקיצורים. אם הם כבר מתוחזקים, אנו מאמצים אותם כבסיס, ולא בונים את הטרמינולוגיה מחדש.
- התוצאה המצופה בקשרים: אילו סוגי ישויות ויחסים נדרשים, האם נדרש משקל או דרגת ביטחון לכל קשר, ובאיזו עומק לבנות את השרשראות.
- כללי גישה: היכן פיזית מונחים הנתונים, מי הבעלים, האם ייצוא מותר והאם יש קטעים שאסור לעבד.
- נקודת היישום: איזה תהליך אמור לקבל את הגרף — חיפוש במאגר, דיווח, מענה לשאלות עובדים או ניתוח פניות.
זה מספיק כדי לחזור עם הערכת היקף העבודה ותוכנית הטמעה: היכן עובר קטע הפיילוט, מה בודקים בו ולפי אילו מדדים מחליטים להרחיב לכל הקורפוס. תארו את המשימה וצרפו דוגמאות למסמכים — נחזור עם חישוב לוחות זמנים, שלבים והרכב הבדיקות בפיילוט.







