תפריט

התאמת שמות מדינות וכינויים: קודם כול שם קנוני

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

פורסם

  • ניקוי נתונים
  • התאמה
  • נתוני מדינות

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

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

מה פירוש קנוני בהקשר הזה?

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

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

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

מדוע יש לנרמל לפני ההשוואה?

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

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

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

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

מתי כינויים עוזרים ומתי הם מטעים?

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

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

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

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

מה משתבש כאשר התאמה מטושטשת היא המוצא הראשון?

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

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

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

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

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

האם בכלל צריך לאחסן שמות?

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

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

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

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

למפתחים: להעמיד את ההשוואה מאחורי פונקציה אחת

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

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

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

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

צעדים הבאים

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

המשך קריאה

מדריכים בנושא תבניות נתוני כתובת וזהות עבור 86 מדינות