למיין שירים בעזרת תוכנת כיווץ
מאת גל ברקתוכנת כיווץ ה-zip היא תוכנה נפוצה, וספק אם מישהו מאיתנו לא נתקל בה ובשימושיה בהעברת קבצים באינטרנט. עכשיו מתברר שכיווץ בשיטה זו (אם מישהו יבקש, אני אכין גם הסבר עקרוני על איך זה מתבצע) יכול לשמש גם לדברים הרבה יותר מתוחכמים… כמו זיהוי שפות, סוגי מוסיקה או אפילו מחברים של לחנים.
מהי השיטה?
1) לקחת מספר קבצים גדולים שלא מופעל עליהם כיווץ מכל סוג שהוא וידוע מה הם מכילים, למשל סוג מוסיקה מסויים או טקסט בשפה מסויימת, לכווץ אותם ולראות מה הגודל המתקבל.
2) לקחת קובץ קטן שאותו רוצים לזהות, להוסיף אותו לכל אחד מהקבצים הגדולים (בנפרד), לכווץ ולראות מה ההבדל בגודל.
3) הקובץ המכווץ שגדל הכי מעט, הוא זה שהכי סביר שהמקור בו (הקובץ הגדול) דומה לקובץ הקטן.
למה זה עובד?
כיווץ ה-zip מתבסס על אלגוריתם שמכונה ”קידוד הופמן“. אני לא אכנס לפרטים, אבל הכיווץ הזה מתבסס על חזרות בקובץ המקורי: ככל שתו מסויים או מחרוזת תוים יחזרו על עצמם יותר, אפשר יהיה להקטין את גודל הקובץ בצורה משמעותית יותר. אם הקובץ יהיה מאותו הסוג (ובערך באותה צורה) כמו הקובץ הגדול המקורי, המחזוריות תהיה דומה, והתוכנה תוכל לכווץ את התוספת הזו בצורה טובה יחסית. אם הקובץ (הקטן) יהיה שונה, הוא ”יקלקל“ את השיטתיות הזו, ויקשה על תוכנת הכיווץ לעבוד בצורה יעילה, ולכן הקובץ יגדל יותר מבמקרה הקודם.
אמנם קיימים אלגוריתמים מתוחכמים לזיהוי, אך דווקא הפשטות של שיטה זו, והצלחתה הלא מועטה בניסויים שנערכו בזמן האחרון (במקור בתחתית העמוד תוכלו לקרא, למשל, על שימוש בה המאפשר זיהוי לא רע של מלחינים של מוסיקה קלאסית) יחד עם העובדה שהיא לא מחפש תבניות מוסיקליות דווקא, והעובדה שזוהי שיטה כללית, הופכת את הרעיון להשתמש בה, להברקה די רצינית לדעתי :)
מקור מידע: NewScientist