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

מסמכים קשורים
משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

ex1-bash

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

(Microsoft Word - SQL\353\351\345\345\365 \341\361\351\361 \360\372\345\360\351\355 \ doc)

ייבוא וייצוא של קבצי אקסל וטקסט

תוכן העניינים

תוכן העניינים

מבוא לתכנות ב- JAVA תרגול 7

שאלהIgal : מערכים דו מימדיים רקורסיה:

WinZIP תוכנה לדחיסת קבצים ספטמבר 2007

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

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

פייתון

ISI

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word - Ass1Bgu2019b_java docx

Office 365 ProPlus בחינם לסטודנטים באוניברסיטת בן גוריון בנגב הוראות סטודנטים באוניברסיטת בן גוריון בנגב יכולים להוריד ולהתקין את חבילת התוכנה Office

שאלה 2. תכנות ב - CShell

סדנת תכנות ב C/C++

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

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

הכרת משאבי הספרייה קורס מקוון חיפוש במאגרי המידע ו- PubMed Biosis Previews, Zoological Record )לתלמידי החוג למדעי החיים( (Biosis Previews:

הוספת קישור לאתר אינטרנט תוכן ממשק בדיקת מטלות...3 איחוד אתרי קורסים...5 סל מחזור... 7 חידושים בפעילויות...8 תצורת קורס: כפתורים... 9 פורומים...10 שיפ

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

29 מאי 2019 לכבוד המשתתפים שלום רב, הנדון: מכרז פומבי מס' 3213/2019 לתכנון, הספקת והתקנת ציוד לאולפן צילום TAU ONLINE בבניין נזריאן בקמפוס אוניברסיטת

מערכות הפעלה קורס מס'

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

Microsoft Word B

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

HTML - Hipper Text Makeup Language

PowerPoint Presentation

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

שאלהIgal : מערכים דו מימדיים רקורסיה:

הגשה תוך שבוע בשעת התרגול

שיעור 1

מבוא למדעי המחשב

מיכפל

מדריך למרצים ומתרגלים 1

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

Slide 1

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

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

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

מבוא למדעי המחשב

People. Partnership. Trust מסלול Free פורטל החינוך מבית U-BTech מסלולים ומחירים חיבור לשירותי Office 365 ללא עלות פורטל התחברות הכולל ממשק למנב"ס ולסי

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

מקביליות

Microsoft PowerPoint - Lecture1

מקביליות

מדריך לחיפוש במאגר JCR Journal Citation Reports מעודכן לדצמבר 2015 כל הזכויות שמורות לתחום היעץ, אוניברסיטת חיפה, הספריה

שעור 6

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

תרגול 1

People. Partnership. Trust שלבי הפרויקט והמסלולים השונים - פלטפורמת "קהילה לומדת" מסלול Free שלבי הפרויקט: חיבור לשירותי Office 365 ללא עלות פורטל התח

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

מבוא למדעי המחשב

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

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

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

PowerPoint Presentation

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

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

תכנות מונחה עצמים א' – תש"ע

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

מצגת של PowerPoint

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

מהוא לתכנות ב- JAVA מעבדה 3

מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

Microsoft PowerPoint - lec10.ppt

תרגיל בית מספר 1#

פרויקט שורשים דמות

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

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

<4D F736F F D20FAE5F1F4FA20ECE7E5E5FA20E3F2FA20ECE2E1E920E3E9F1F720FAEEE5F0E5FA20E6E9F8FA20E4F8F6E72E646F63>

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

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

מקביליות

T01-1page

מבוא למדעי המחשב - חובלים

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

אגף כלכלה תקציב ומסחר

מסע מדע ו - מסע ברכב שטח ביבשות רחוקות

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

סרגל כלים ל-Outlook או לExplorer- מדריך למשתמש

Microsoft Word - sync_LG.doc

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

Microsoft Word - tips and tricks - wave 5.doc

מבוא למדעי המחשב

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Slide 1

תמליל:

האוניברסיטה הפתוחה המחלקה למתמטיקה ולמדעי המחשב מנוע חיפוש מבוסס זיהוי דיבור בתכני וידאו וקול פרויקט מתקדם במדעי המחשב - 99222 מגיש אלכסיי ליטבין ת. ז. 391319223 העבודה הוכנה בהנחייתה של ד"ר מיה הרמן 1

תוכן העניינים תקציר...4 מבוא...5 דרישות המערכת... 6 דרישות פונקציונאליות...7 דרישות לא פונקציונאליות...8 מגבלות והנחות המערכת...8 עיצוב מערכת תוכנה... 9 1 2 3 1.3 1.3 1.1 4 ארכיטקטורה...9 תיאור רכיבים עיקריים...11 תיאור תהליכים עיקריים...11 כלי פיתוח...31 המרת קבצי מדיה Extractor( )Media...31 המרת קבצי מדיה לפורמט...11 WAV המרה קבצי קול לטקסט...11 תרשים הרצף...11 מנוע חיפוש...32 אינדקס מהופך...21 תהליכי אינדוקס נתונים...22 תהליך חיפוש...22 דיאגראמת מחלוקות...22 1.3 1.4.4 1.4.4 1.3 1.1 1.3.4 1.3.4 1.3.3 1.1 1.1.4 1.1.4 1.1.3 1.1.1 ממשק משתמש...33 מסך חיפוש...19 מסך תוצאות...12 מסכים סטטיסטיקות...13 בדיקות המערכת...43 בדיקות יחידה...11 בדיקות אינטגרציה...11 מקרה בוחן...55 סיכום והצעות לפיתוחים עתידיים... 59 5 1.3 1.3 1.1 6 1.3 1.3 7 8 2

נספחים...66 נספח א : סטטיסטיקות...12 נספח ב : איורים...19 נספח ג : קוד...19 נספח ד: התקנת המערכת...72 נספח ה : הצעת פרויקט...73 רשימת מקורות...55 9 9.3 9.3 9.1 9.1 9.5 06 2

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

2 מבוא כיום אינטרנט מוצף בתכני וידאו ואודיו רבים כגון סרטים, חדשות, הרצאות, סרטי הדרכה וכו'. רוב מנועי חיפוש הקיימים מחפשים בתוך שם הקובץ, כותרת או תיאור )metadata( אשר הוקלדו על ידי משתמש שהעלה את הקובץ ]41[. מקורות אלה במקרה הטוב משקפים בצורה חלקית את מה שנאמר בקבצים הללו, ובמקרים רבים לא רלוונטיים בכלל )לדוגמא: מקרה בו שם הקובץ הוא מספר(. איכות החיפושים )במנועי חיפוש קלאסיים( תלויה ברמת הפירוט והרלוונטיות של שם הקובץ, כותרת ו- metadata ואיננה תלויה בתוכנו של הקובץ. בנוסף לקושי אינדוקס קבצי מדיה קיימת בעיית איתור הקטע הרלוונטי בתוך תוצאות החיפוש, כלומר עם קבלת תוצאות החיפוש המשתמש חייב לראות או לשמוע את כל קובץ לכל האורך על מנת לאתר את הקטע הרלוונטי. בשנים אחרונות חברות רבות משקיעות מאמץ רב במחקר ופיתוח טכנולוגיות חדשות בתחום זיהוי דיבור בפס קול. טכנולוגיית זיהוי דיבור משתמשת בגישות ובתחומים רבים ]8[ כמו עיבוד אותות דיבור לצורך מיצוי מאפיינים מתוך אות הדיבור, מידול סטטיסטי של פונמות, תהליכי אימון אוטומטיים של המודלים הסטטיסטיים מתוך בסיס נתונים בדיבור בגישה מונחית מידע, מידול לשוני המתאר את ההקשרים הסמוכים והרחוקים יותר בין מילים בשפה ואלגוריתמים של חיפוש לצורך ביצוע חיפוש יעיל ואופטימאלי של סדרת המילים בעלת ההסתברות הגבוהה ביותר, בהינתן אות דיבור והמידול האקוסטי והלשוני. במהלך השנים חלה התקדמות משמעותית בטכנולוגיית זיהוי דיבור ופותחו מספר מנועי חיפוש קבצי וידיאו המבוססים על הטכנולוגיה ]1,40,44[. יכולת של הטכנולוגיה לספק זיהוי דיבור באיכות מאוד גבוהה מוסיפה עוד מידע משמעותי למערכות אחזור מידע בעת אינדוקס קבצי וידוא וקול. אינדקס מהופך) Index )Inverted הוא מבנה נתונים המתאר את מונחי החיפוש ומסמכים. תפקידו של אינדקס מהופך הוא להפוך את מילות החיפוש למסמכים ומיקומים של מילות החיפוש בתוך המסמכים. ספר ]44[ של C. Manning, P. Raghavan, S. Hinrich ומאמר ]4[ של.J Zobel,.A Moffat מתארים מבני נתונים, אלגוריתמים וטכניקות מרכזיות בתחום אינדוקס קבצי הטקסט. המקורות מהווים בסיס לגישות ואלגוריתמים בפרויקט זה לדוגמה מבני נתונים של אינדקס מהופך, אלגוריתמי חיפוש וכו'. 5

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

1.1 דרישות פונקציונאליות קלט המערכת קבצי מדיה - קבצי וידאו ואודיו שאילתות חיפוש פלט המערכת תוצאות החיפוש - שמות קבצי מדיה וחותמות זמן של מילים שנמצאו סטטיסטיקות תהליכי ההמרה ואינדוקס קלט\פלט של תתי המערכות קלט מערכת זיהוי דיבור קבצי קול פלט מערכת זיהוי דיבור קבצי טקסט המכילים מילים וחותמות זמן )נקודת זמן שבה נאמרה המילה( סטטיסטיקות תהליך ההמרה של קבצי קול לקבצי טקסט קלט מנוע החיפוש קבצי טקסט המכילים מילים וחותמות זמן )נקודת זמן שבה נאמרה המילה( שאילתות חיפוש פלט מנוע החיפוש תוצאות החיפוש - שמות קבצי מדיה וחותמות זמן של מילים שנמצאו סטטיסטיקות תהליך האינדוקס דרישות תפעוליות ומידע חיפוש מילים בתוך קבצי מדיה יכולת העלאה פורמטים שונים של קבצי מדיה mp4( )mp3, המרה קבצי קול לקובץ טקסט כאשר לכל מילה תיצמד חותמת זמן טיפול במילות עצירה וסיומות של מילות החיפוש ונתונים גישה לקבצי הטקסט באמצעות אינדקס מהופך יכולת עדכון אינדקס מהופך יכולת אכסון אינדקס מהופך על הדיסק יכולת טעינה אינדקס מהופך מהדיסק אכסון קבצי מדיה מקוריים וקבצי טקסט ( תוצאות המרה של קובצי מדיה ) יכולת העלאת קבצי וידאו ואודיו למערכת 7

יכולת עיצוב והתאמה מילונים שונים של מנוע זיהוי דיבור ( מילונים של מודל שפה ומודל אקוסטי( ומנוע חיפוש )מילים עצירה( ממשק חיפוש גרפי יאפשר למשתמש לבצע חיפושים במאגר קבצים המאונדקסים במערכת ממשק משתמש גרפי להצגת סטטיסטיקות תהליכי המרה ואינדוקס ממשק משתמש גרפי להעלאת קבצי מדיה חדשים 2.3 דרישות לא פונקציונאליות דרישות חומרה מינימאליות להתקנה מערכת מעבד - 1 ליבות 4GB - )RAM( זיכרון דיסק קשיח - 500GB )תלוי במספר וגודל של הרצאות שיועלו למערכת( אילוצי מימוש המנוע תומך בעיבוד מדיה כאשר התכנים בשפת אנגלית בלבד מערכת הפעלה WINDOWS זמן המרת פס קול לטקסט תלוי בביצועים של ספרייה החיצונית Sphinx4 וגודל המילון. איכות החיפוש תלויה באיכות פס קול בקבצי מדיה, מבטא, עוצמת קול. 2.2 מגבלות והנחות המערכת קבצי קלט של מערכת הם קבצי מדיה בפורמטים mp4, mp3 זיהוי דיבור מתבצע רק בשפה אנגלית המערכת לא מטפלת באיכות הקול, מבטא, טונציה. הרצאות שנבדקו היו מדויקות בלבד אין תיקון שגיות כתיב 2

4 עיצוב מערכת תוכנה תכנון ועיצוב המערכת בוצע בגישת OO והשתמש במספר דיאגראמות UML כדוגמת דיאגראמות מחלקות, תרשימי רצף. 1.4 ארכיטקטורה Media Converter Media Extractor audio files (wav) Speech Recognizer Media Files Recognized Text video/audio files query results Web Server media files query/results Data Index Search Engine Data Data Base איור 4. ארכיטקטורה של מערכת מנוע חיפוש המערכת מורכבת משלושה יישומים עיקריים )איור 4(: - Media Extractor תפקידו של היישום הוא לקבל קבצי מדיה כקלט ולהמיר אותם לקבצי טקסט כפלט כאשר קבצי פלט מכילים מילים שנאמרו בקבצי מדיה. - Search Engine תפקידו של היישום הוא לקבל קבצי טקסט כקלט ולאנדקס אותם לתוך אינדקס מהופך. בנוסף מנוע חיפוש מספק ממשק חיפוש באינדקס מהופך. - Web Server תפקידו של היישום הוא לספק ממשק גרפי למשתמש..4.4.3 קבצי מדיה מקוריים יישמרו על דיסק קשיח וינוהלו באמצעות מערכת קבצים של מערכת הפעלה. 1

1.1.1 תיאור רכיבים עיקריים - Media(Video/Audio) Converter הרכיב אחראי לזהות פורמט של קובץ הקלט ולהמיר אותו לפורמט WAV )איור 4(. הרכיב מומש בשפת JAVA ומשתמש בספרייה ]1[ FFMPEG - Speech Recognizer הרכיב אחראי לקבל קובץ קול )בפורמט )WAV כקלט ולהחזיר קובץ טקסטואלי כפלט )איור 4(. קובץ פלט מכיל טקסט שנאמר בפס קול. הרכיב מומש בשפת JAVA ומשתמש במנוע זיהוי דיבור ]6,5[. Sphinx4 - Data Base תפקידו של בסיס נתונים הוא לאחסון מילים וחותמות זמן שזוהו בקבצי מדיה )תוצרים של )Speech Recognizer Data תפקידו של המודול הוא לאנדקס קבצי טקסט לתוך אינדקס נתונים) - Search Engine )Index ולספק ממשק חיפוש קבצי טקסט באינדקס נתונים)איור 4(. מבני נתונים, אלגוריתמים ויכולות הבאים מומשו במודול אינדקס הנתונים : אינדקס מהופך - מימוש מבנה נתונים המבוסס על אחד האלגוריתמים ממקורות ]4,44[. בפרק 1.1.4 ניתן לראות את פרטי מימוש של אינדקס מהופך ניהול מילון של מילים עצירה. ניקוי מילים עצירה בזמן אינדוקס וחיפוש הנתונים. בפרקים 1.1.4 ו 1.1.3 ניתן לראות את מימוש ושימוש במילות עצירה. יצירת הקבוצות מילים עם צורה מורפולוגית אחת על ידי הסרת סיומות. הסרת סיומות נבצע בעזרת אלגוריתם ]43[ algorithm"."the Porter stemming בפרק 1.1.4 ניתן לראות מבנה נתונים של הקבוצות ובפרק 1.1.4 ניתן לראות את האלגוריתם יצירת הקבוצות. מיון תוצאות החיפוש לפי ממדים שונים. מימוש אלגוריתם למיון תוצאות החיפוש לפי ממדים שונים כגון : מספר המילות החיפוש שנמצאו בתוך קובץ הטקסט, שכיחות מילות החיפוש בתוך הקובץ. בפרק 1.1.3 ניתן לראות את אלגוריתם מיון )חלק מאלגוריתם חיפוש( - Web Server תפקידו של השרת הוא להציג חלון חיפוש, לבצע שאילתות במודול אינדקס הנתונים, להציג תוצאות חיפוש, להציג דוחות של תהליכי המרה ואינדוקס )איור 4(. השרת ממומש בעזרת שרת אפליקציה ]7[. Tomcat ממשק משתמש גרפי יושם באמצעות טכנולוגית (JavaServer Pages) JSP 11

1.1.4 תיאור תהליכים עיקריים קיימים שני תהליכים עיקריים במערכת )איור 3(: העלאת קבצי מדיה למערכת חיפוש קבצי מדיה במערכת Search Engine Upload Media Files Administrator Search Media Files User איור 3: תרחישים עיקרים 11

העלאת קבצי מדיה באיור 1 מודגם תרשים זרימה של תהליך העלאת קבצי מדיה. Media Extractor Media Converter Speech Recognizer Search Index Data Store Administrator Upload Media Convert Media to WAV Audio WAV Audio File Recognize Speech (WAV Audio file) Recognized Speech ( Text file ) Index File ( csv text file ) Index File Store Indexed Data Update main index איור 1. תרשים העלאת קובץ מדיה למערכת הסבר תרשים זרימה העלאת מדיה למערכת - תהליך העלאת קבצי וידאו וקול לשרת מתבצע דרך דפדפן או באמצעות פקודות.)command line interface( CLI לאחר העלאת קובץ קלט לשרת מתבצע תהליך זיהוי פורמט של הקובץ ולאחר מכן המרה לפורמט WAV שמייצג פס קול ללא דחיסה של קובץ הקלט. לאחר תהליך המרת הפורמט, קובץ הקול מועבר למודול האחראי לזיהוי דיבור בפס קול על מנת להמיר אותו לקובץ טקסט שמכיל מילים שנאמרו במדיה וחותמת זמן עבור כל מילה )מתי המילה נאמרה(. לאחר תהליך זיהוי הדיבור, קבצי הטקסט ומועברים למודול אינדוקס נתונים. תהליך אינדוקס הנתונים אחראי לאנדקס את קבצי הטקסט שנוצרים על ידי תהליך זיהוי הדיבור בפס קול. 12

חיפוש קבצי מדיה באיור 6 מודגם תרשים זרימה של תהליך חיפוש Browser Web Server Search Engine Data Index Data Store User Search words Send search parameters Create query Send query Search media ids by words Search Return media ids Sort by relevance Request word positions Return set of word positions Return results Build result HTML page Return result HTML page Display result HTML page איור 6. תרשים חיפוש קבצי מדיה במערכת הסבר תרשים זרימה של תהליך חיפוש - משתמש שולח מילות חיפוש באמצעות ממשק משתמש גרפי )נטען בעזרת דפדפן אינטרנט( לשרת web אשר יבנה שאילתא המתאימה ויבצע חיפוש במודול אינדקס הנתונים. תוצאות החיפוש יכילו שמות קבצי המדיה מקוריים )שבהם נאמרו מלות חיפוש( ורשומות מילים עם חותמות זמן שנמצאו בתוך קובץ טקסט המייצג את קובץ המדיה. לאחר קבלת התוצאות שרת web יבנה דף אינטרנט אשר יציג את התוצאות עם ציר הזמן )ציר הזמן יוצג ליד כל התוצאה( ועליו יסומנו זמנים שבהם נאמרו מילות החיפוש. 12

1.3 כלי פיתוח הפרויקט מומש בעזרת טכנולוגיות וכלים שונים שיפורטו בהמשך סעיף זה. קוד נכתב בשפת JAVA בסביבת פיתוח.Eclipse - Tomcat שרת יישומים ]7[. השרת הוא תוכנה קוד פתוח המפותח על ידי קרן התוכנה אפאצ'י. שרת יישומים Tomcat מממש את המפרטים Java Servlet ו- Pages,Java Server ומספק סביבה על טהרת Java של שרת HTTP שעליו יכול לרוץ קוד.Java.Java - ספרייה קוד פתוח לבדיקות יחידה בשפת התכנות ]40[ Junit ]41[ Ant - כלי תוכנה לאוטומציה של תהליכי בניית תוכנה. - Batch Scripts שפת סקריפטים להרצת פקודות של מערכת ההפעלה WINDOWS לשם הפעלתן של תוכניות שונות. ספרייה ]1[- FFMPEG ספרייה קוד פתוח המיועדת לעיבודים שונים של קבצי מולטימדיה. ]6[ Sphinx4 - פרויקט Sphinx4 הוא מנוע זיהוי קול הממומש בשפת JAVA וזמין תחת רישיון.BSD 12

1.2 המרת קבצי מדיה Extractor( )Media יישום המרת קבצי מדיה - תפקידו של היישום הוא לקבל קבצי מדיה כקלט ולהמיר אותם לקבצי טקסט כפלט כאשר קבצי פלט מכילים מילים שנאמרו בקבצי מדיה. היישום מכיל ארבע רכיבים עיקריים : מודול המרת קבצי מדיה לפורמט,WAV מודול המרת קבצי קול לקבצי טקסט, מודול תצורה, מודול ניהול תהליכי המרה. באיור 5 מודגם ארכיטקטורה של יישום המרת קבצי מדיה. Media Extractor Media Converter Speech Recognizer Media Extractor Manager Configuration Manager Media Files Original Media Files Text CSV Files איור : 5 יישום המרת קבצי מדיה - ארכיטקטורה ארכיטקטורה של יישום המרת קבצי מדיה תוכנן כך שניתן בקלות להחליף את מימושים של מודולים הבאים : מודול המרת קבצי קול לטקסט, מודול המרת קבצי מדיה לפורמט.WAV גמישות זו מאפשרת לשפר או להרחיב את המערכת במחקרים עתידיים. 15

1.1.1 המרת קבצי מדיה לפורמט WAV תפקידו של מודול המרת קבצי מדיה לפורמט WAV הוא להמיר קבצי מדיה )קבצי וידאו ואודיו( לפורמט אחיד.WAV נשים לב כי קלט של מודול זיהוי דיבור )Sphinx4( הוא קבצי אודיו בפורמט WAV בלבד. מודול המרת קבצים מומש באמצעות ספרייה FFMPEG ה. ספרייה היא קוד פתוח המיועדת לעיבודים שונים של קבצי מולטימדיה. קלט : קבצי מדיה בפורמטים : mp3 mp4, פלט : קבצי אודיו בפורמט WAV RIFF (little-endian) data WAVE audio Microsoft PCM 16 bit mono 16000 Hz תצורה קבצי הפלט : 1.1.4 המרה קבצי קול לטקסט המרה קבצי קול לטקסט מתבצע על ידי ספריית קוד פתוח.Sphinx4 פרויקט Sphinx4 הוא מנוע זיהוי קול הממומש בשפת JAVA וזמין תחת רישיון.BSD תצורת הספרייה : מודל שפה - Model US English HUB4 Language מודל אקוסטי - Model US English HUB4 Acoustic קלט : קבצי קול בעלי תצורה הבא : RIFF (little-endian) data, WAVE audio, Microsoft PCM 16 bit, mono 16000 Hz פלט : קבצי טקסט בפורמט.CSV קבצי פלט מכילים מילים שנאמרו בקובץ קלט וחותמות זמן שלהן. 11

דיאגראמת מחלקות באיור 7 מודגמת דיאגראמת מחלקות ליישום המרת קבצי מדיה 1 MediaExtractorManager MediaExtractorConfig 1 1 1 1 1 * * RecognitionStatistics «uses» TextExtractorTask +run() «uses» «interface» ISpeechRecognitionEngine +speechtotext(string file, IWordWriter writer)() «uses» «uses» SphinxEngine +speechtotext(string file, IWordWriter writer)() * «interface» IWordWriter +write(word word)() «interface» IMediaToWavConvertor +convert(convertconfig config)() * «uses» CSVWordWriter FFmpegConvertor ConvertConfig +write(word word)() +convert(convertconfig config)() איור : 7 דיאגראמת מחלקות ליישום המרת קבצי מדיה - MediaExtractorManager מחלקה ראשית. המחלקה אחראית על אתחול וניהול תהליכים ראשיים של היישום. המחלקה מקבלת קבצי קלט )מדיה( ויוצרת עבור כל אחד משימה.TextExtractorTask - MediaExtractorConfig המחלקה אחרית על אתחול וניהול תצורה של היישום. בנוסף המחלקה מנהלת יצור מופעים של מחלקות אשר מממשים ממשקים הבאים.ISpeechRecognitionEngin,IWordWriter,IMediaToWavConvertor המחלקה מממשת תבנית "שיטת המפעל". "שיטת המפעל" היא תבנית עיצוב שתכליתה יצירת אובייקטים מבלי להכיר את המחלקות שלהם. התבנית מתבססת על הגדרת שיטה עצמאית ליצירת עצמים. - TextExtractorTask המחלקה מממשת שלבים עיקריים של היישום ברמת קובץ קלט אחד. 17

- RecognitionStatistics המחלקה אחראית לשמור ולנהל סטטיסטיקות שונות עבור קובץ קלט אחד. הסטטיסטיקות נאספות בכל שלב שעובר דרכו קובץ הקלט ובסופו של התהליך הסטטיסטיקות נשמרות בקובץ על הדיסק. - ISpeechRecognitionEngine ממשק שייקרא בשלב זיהוי דיבור בפס קול, כלומר מחלקה שמממשת את הממשק היא אחראית לממש פתרון לזיהוי דיבור בקובץ קול אשר מיוצג בפורמט.WAV בעזרת ספרייה Sphinx4 ISpeechRecognitionEngine מימוש ממשק - SphinxEngine - IMediaToWavConvertor ממשק שבא להבטיח שייקרא בשלב המרה קובץ קלט)מדיה( לפורמט WAV )שלב לפני תהליך זיהוי דיבור(. FFmpeg בעזרת ספרייה IMediaToWavConvertor מימוש ממשק - FFmpegConvertor WAV מחלקה מנהלת תצורה של ממיר קבצי מדיה לפורמט - ConvertConfig - IWordWriter ממשק שייקרא בשלב זיהוי מילה כלומר כאשר מודול זיהוי דיבור זיהה מילה בפס קול ומתכוון לכתוב את המילה לקובץ פלט. - CSVWordWriter מימוש ממשק.IWordWriter המחלקה כותבת מילים וחותמות זמן לקובץ בפורמט.CVS 12

1.1.1 תרשים הרצף תרשים הרצף של תהליך המרה קובץ מדיה לקובץ טקסט בפורמט CSV ניתן לראות באיור 8. MediaExtractorMngr TextExtractorTask MediaToWavConvertor SpeechRecognitionEngine WordWriter Statistics Media File Start Task (file) Init Statistics Convert To WAV (file) Wait for next media Return WAV File Update Statistics ( stat ) Recognize Speech (WAV file) Recognize Speech Write Recognized Words Return Text File (file) Update Statistics ( stat ) Write on Disk Send Text File To Search Engine איור : 8 תרשים הרצף ליישום המרת קבצי מדיה 11

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

1.1.1 אינדקס מהופך אינדקס מהופך של קבצי טקסט הוא מבנה נתונים המאפשר חיפוש מילים בתוך קבצי טקסט. אינדקס מהופך ממפה אוצר מילים למופעים שלהם בקבצי טקסט המאונדקסים בו. תפקידו של אינדקס מהופך הוא לספק פתרון יעיל ומהיר לבעיית חיפוש מילים בתוך קבצי טקסט. כיום קיימים מספר רב של גישות ואלגוריתמים בתחום אינדוקס נתונים. למטרת הפרויקט בחרתי לממש אינדקס מהופך המבוסס על עקרונות הבאים : בניה אוצר המילים מקבצי הטקסט המאונדקסים, כלומר אוצר המילים הוא דינאמי ומשתנה בהתאם לעדכונים של אינדקס. חלוקה אינדקס מהופך לשני חלקים כאשר חלק אחד נמצא ב- RAM וחלק שני מנוהל על הדיסק קשיח ונטען לתוך ה- RAM במידת הצורך )שימוש במטמון(. הגישה מאפשרת חיפוש ללא גישה לדיסק ורק עבור התוצאות שכבר מצאנו נגש לדיסק על מנת לשלוף פרטים נוספים. הגישה מצמצמת באופן משמעותי מספר גישות לדיסק. Porter " ניתוח מורפולוגי של מילים מאונדקסות ומילות חיפוש בעזרת אלגוריתם."Stemming Algorithm טכניקה זו מאפשרת למצוא מילים שונות בעלות משמעות דומה. לדוגמה : כאשר נחפש מילה sort אזי גם נמצא מילים כמו.sorts, sorting דחית מילות עצירה בעת בנית אינדקס מהופך )שימוש במילון מילים עצירה(. טכניקה זו מאפשרת לצמצם באופן משמעותי גודל של אינדקס מהופך. עדכון אינדקס אינקרמנטלי. כידוע בניה ושמירה של אינדקס מהופך מחדש פעולה מאוד יקרה לכן לפי גישה זו נשמור רק שינוים של אינדקס מהופך בזמן אינדוקס קובץ טקסט חדש. הגישה מונעת ממערכת לשמור אינדקס מהופך מחדש בכל פעם שמאנדקסים קובץ טקסט חדש. הארגון מחדש של אינדקס מהופך יתבצע בזמן הפעלה מחדש של מנוע חיפוש. 21

RAM Disk + RAM Stems Dictionary Words Dictionary Postings Lists Word Positions Lists איור : 1 ארכיטקטורה של אינדקס מהופך אינדקס מהופך מורכב ממבני נתונים העיקריים הבאים )איור 1( : - Stems Dictionary מילון מילים בסיסיות.)stems( מילים בסיסיות נושאות גרעין המשמעות, כלומר מילים השייכות לאותו בסיס זהות משמעותית, אך נבדלות בסיומות אשר מהוות מין, גוף או זמן )במילים מסוג פועל(. מילון מילים בסיסיות נבנה בשלב בנית האינדקס מהופך. בסוף תהליך האינדוקס המילון יכיל את כל המילים הבסיסיות של כל המילים שנמצאות בקבצי הקלט, כלומר כל מילת הקלט תעבור תהליך כינון למילה בסיסית ומילת הבסיס תתווסף למילון )אם היא עדיין לא קיימת במילון(. -Words Dictionary מילון המילים - מילון של כל המילים שנמצאות בקבצי הקלט. תפקידו המילון הוא לכווץ אותן מילים מכל קבצי הקלט לכניסה אחת במילון. הכניסה מכילה את המילה ורשימה מספרי זיהוי של קבצי טקסט שהמילה מופיעה בהם. - Postings List רשימת ההצבה, תפקידה של הרשימה הוא לתאר באיזה מסמכים מופיעה מילה מסוימת ומספר המופעים שלה בכל קובץ קלט, כלומר בשלב בנית האינדקס עבור כל מילה נבנה רשימה מספרי זיהוי של קבצי טקסט שבתוכם היא מופיעה ומספר מופעים שלה. 22

-Word Position List רשימת החותמות זמן של מילה מסוימת, תפקידה של הרשימה הוא לתאר את כל החותמות זמן של אותה מילה בכל קבצי הקלט, כלומר ברשימה יופיעו קבוצות חותמות זמן )של אותה מילה( לפי קובץ שבתוכו מופיעה המילה. קבוצות של חותמות זמן ימופו לפי מספר זיהוי של קובץ. הרשומות יאוכסנו על הדיסק קשיח. בזמן חיפוש רשומות הנשלפות יישארו ב- RAM על בסיס מקום פנוי, כך שאם נצטרך לשלוף אותן שוב אזי נחסוך בקריאות מהדיסק. כל מבני הנתונים של אינדקס מהופך נשמרים על דיסק, כך שלא נצטרך לאנדקס את כל קבצי הטקסט בכל פעם כאשר מפעילים מחדש את מנוע חיפוש. כאשר מנוע חיפוש עולה, אז חלק ממבני נתונים של אינדקס מהופך נטענים ל- RAM וחלק נשארים על הדיסק. מבני נתונים הבאים נטענים ל- RAM במלואם: מילון מילים בסיסיות, מילון המילים, רשימות ההצבה. רשימות של חותמות זמן נשארות על הדיסק קשיח ללא טעינה ראשונית. 22

1.1.4 תהליכי אינדוקס נתונים קיימים שני תהליכי אינדוקס עיקריים במנוע חיפוש : עדכון אינדקס אינקרמנטלי. מטרת התהליך לעדכן את אינדקס מהופך בנתונים מקובץ טקסט חדש. בנוסף התהליך חייב להיות מהיר ולא להעמיס על מנוע חיפוש כי תוך כדי תהליך אינדוקס מתבצעות שאילתות חיפוש. מיזוג שינוי אינדקס מהופך לאינדקס מהופך חדש. מטרת התהליך למזג קבצים המייצגים שינויים באינדקס ראשי לקובץ אחד שמייצג את אינדקס מהופך ראשי. עדכון אינדקס מהופך עדכון אינדקס מתבצע באופן אינקרמנטלי. לפי הגישה נשמור על הדיסק רק שינוים של אינדקס מהופך בתום התהליך אינדוקס קובץ טקסט חדש. הגישה מונעת ממערכת לשמור את אינדקס מהופך במלוא על הדיסק בכל פעם שמגיע קובץ טקסט חדש. אלגוריתם עדכון אינדקס אינקרמנטלי הסבר אלגוריתם עדכון אינדקס אינקרמנטלי קלט : קובץ טקסט K. קובץ K מכיל מילים וחותמות זמן בהתאם. חותמת זמן - מציינת זמן שבו נאמרה המילה במדיה. פלט : אינדקס מהופך מעודכן בזיכרון ושינוי אינדקס שמור בקובץ על הדיסק. אם אינדקס מהופך אינו קיים, אזי ניצור ונאתחל מבני נתונים הבאים : מילון המילים Dictionary(,)Words נסמנו D, מילון מילים בסיסיות ( Stems )Dictionary נסמנו S, מילון מילים "עצירה",SW מסד נתונים I )תפקידו לאחסן רשימות של חותמות זמן פר מילה Lists( ))Word Position. ניצור אינדקס מהופך לוקאלי, נסמנו H. תפקידו של אינדקס לוקאלי H הוא להחזיק אינדקס מהופך של קובץ K. מטרה העיקרית של בניה אינדקס לוקאלי H היא למנוע גישות עדכון לאינדקס מהפך הראשי. נבנה אינדקס מהופך לוקאלי H באופן הבא נסרוק כל המילים בקובץ K ועבור כל מילה )נסמנה w( נבצע :.4.4.3 אם המילה היא מילת "עצירה" אזי נעבור למילה הבאה - מחיקת מילות "עצירה". הבדיקה תתבצע מול מילון מילים "עצירה".SW נחשב מילת הבסיס של המילה w בעזרת אלגוריתם Porter ונסמנה b 22

D. נמצאת במילון המילים w נבדוק האם מילה o אם w לא נמצאת ב- D, אזי נוסיף אותה למילון D וניצור כניסה חדשה >מספר זיהוי של הקובץ, מונה > ברשימת ההצבה של המילה w כאשר מונה מייצג מספר מופעים של אותה מילה בקובץ ומספר זיהוי של הקובץ הוא מזהה של קובץ K. K. נעדכן את המונה של המילה עבור קובץ אזי נמצאת ב- D, w אם o נוסיף חותמת זמן של המילה w לרשומה חותמות זמן של קבוצה המייצגת את קובץ K ומילה w במסדי נתונים I )מילה w ומזהה של K מהווים מפתח ב- I (. נשים לב כי עדכון I מתבצע ב- RAM ותהליך כתיבה לדיסק יתבצע פעם אחד בסוף התהליך אינדוקס. נבדוק האם מילה b נמצאת במילון מילים בסיסיות S, אם לא נמצאת, אזי נוסיף את b ל- S. נוסיף במידת הצורך מצביע מ- b במילון מילים בסיסיות למילה w במילון המילים D )אם חסר(. נשמור על הדיסק את כל העדכונים שביצענו במסד הנתונים I. נשים לב כי בשלב זה נשמור חותמות זמן בלבד. נכתוב את אינדקס מהופך לוקאלי H לדיסק בקובץ נפרד. נמזג ב- RAM את אינדקס מהופך לוקאלי H עם אינדקס ראשי.1.6.5 25

מיזוג שינויי אינדקס מהופך תהליך מיזוג שינוי אינדקס מהופך לאינדקס מהופך חדש. מטרת התהליך למזג קבצים שמייצגים את השינויים באינדקס ראשי לקובץ אחד שמייצג את האינדקס מהופך ראשי. התהליך מתבצע בעת עליה של מנוע חיפוש. כלומר תוך כדי מתן שירות מנוע חיפוש שומר שינויי עדכון אינדקס על דיסק ובעת הפעלה מחדש מנוע חיפוש ממזג את השינויים לקובץ אחד המייצג את האינדקס המעודכן. אלגוריתם מיזוג שינויי אינדקס באיור 40 מודגם שלבים של אלגוריתם מיזוג שינויי האינדקס מערכת קבצים RAM מערכת קבצים M אינדקס ראשי לפני עדכון 3 אינדקס ראשי H 1 M אינדקס ראשי מעודכן 1 שינויי אינדקס F1...Fn 3 אינדקס לוקאלי I1...In איור : 40 מיזוג שינויי האינדקס הסבר לאלגוריתם מיזוג שינויי האינדקס : קלט: אינדקס ראשי לפני שינויים המאוחסן בקובץ, נסמנו M. אוסף אינדקסים לוקאליים המייצגים קבצי טקסט חדשים )שינויי אינדקס(, האינדקסים מאוחסנים בקבצים, נסמנם.F1...Fn פלט : אינדקס ראשי מעודכן המאוחסן בקובץ. 21

נטען ל- RAM את אינדקס מהפך ראשי מקובץ M, נסמנו H. נשים לב כי יוצרים ב- RAM רק מבני נתונים הבאים : מילון מילים בסיסיות, מילון המילים, רשימות ההצבה. שלב 4 באיור 40 עבור כל קובץ מהקבוצה,F1...Fn נבנה אינדקס מהופך לוקאלי בהתאם.I1...In שלב 4 באיור 40 עבור כל אינדקס לוקאלי Ii מהקבוצה,I1...In נמזג את האינדקס לוקאלי Ii עם אינדקס ראשי H, כלומר נמזג מבני נתונים של אינדקס לוקאלי עם מבני נתונים של אינדקס ראשי H בהתאם. מבני הנתונים המתמזגים הם : מילון מילים בסיסיות, מילון המילים, רשימות ההצבה. נשים לב כי תהליך מיזוג מתבצע ב- RAM. שלב 3 באיור 40 נמחק קבצים הבאים מהדיסק : M,.F1...Fn נכתוב את האינדקס ראשי המעודכן H לקובץ. שלב 1 באיור 40.4.4.3.1.6 Pseudo Code H <- load main index from file M F[] <- build list of files that represent single indexes(new indexes to add) I[]; //local indexes For i = 1 to sizeof(f) do I[i] = loadindexfromfile(f[i]); //load local index from file merge(h, I[i]); // merge single index I[i] into H end For i = 1 to sizeof(f) do delete F[i] from disk; end delete file M save H on disk as file M; 27

1.1.1 תהליך חיפוש מטרת התהליך חיפוש היא לאתר קבצי טקסט שמכילים מילות חיפוש. בהינתן קבוצה W המכילה מילות חיפוש.W1,W2,..,Wn היחס בין המילים של קבוצה W הוא,OR כלומר מנוע חיפוש ימצא את קבצי טקסט המכילים תת קבוצה מילים כלשהי מקבוצת המילים W. קבצי טקסט - קבצים טקסטואליים המכילים מילים וחותמות זמן שזוהו בקבצי מדיה. קובץ טקסט מיוצג באינדקס מהופך באמצעות מספר זיהוי ייחודי. מספר זיהוי מכולל בשלב אינדוקס הקובץ. אלגוריתם חיפוש קלט : מילות חיפוש W1,W2,..,Wn כאשר סדר המילים חשוב. נסמן את הרשימת מילות החיפוש ב- W. פלט : רשימת תוצאות החיפוש, נסמנה L. הגדרות: תוצאת החיפוש - קובץ טקסט בו מופיעה לפחות מילה אחת מקבוצת המילים W. רשימה L היא רשימה ממוינת של תוצאות החיפוש לפי רלוונטיות שלהם, כלומר ככל שקובץ טקסט מכיל תת קבוצה של W יותר גדולה,כך הקובץ רלוונטי יותר. כאשר שני קבצים מכילים אותה תת קבוצה של מילים מ- W או תת קבוצה מילים אחרת אך באותו גודל, אזי קובץ טקסט נחשב יותר רלוונטי שמכיל בתוכו יתר מופעים של מילות החיפוש )שכיחות מילות חיפוש יותר גדולה בקובץ יותר רלוונטי(. מילון המילים,)Words Dictionary( D מילון מילים בסיסיות,)Stems Dictionary( S מילון מילים "עצירה",SW מסד נתונים I מאחסן את הרשימות של חותמות זמן לכל מילה ( Word. )Position Lists נעבור על רשימת המילות החיפוש W ובעזרת מילון SW נמחק מ- W את כל המילים "עצירה". עבור כל מילת חיפוש Wi כאשר 1, i n נאתר קבוצת המילים עם אותו בסיס.4.4 ונסמן את הקבוצה ב- Gi, כלומר מילים שנושאות אותה משמעות, אך נכתבות שונה. קיימות k קבוצות כך ש- n k )כי לא בהכרח כל מילת חיפוש נמצאת(. חיפוש של קבוצה Gi נבצע באמצעות מילון המילים הבסיסיות S. נשים לב כי לכל מילה מתוך 22

קבוצה Gi קיימת רשימת ההצבה שמכילה את מספרי זיהוי של קבצים )שבתוכם היא מופיעה( ומספר המופעים של המילה בתוך הקובץ בהתאם. S G1 Postings Lists sorts F1, 2 F2, 2 מילת חיפוש sorts sort sort F3, 2 sorting F1, 2 F4, 2 איור : 44 דוגמא אינדקס מהופך למילה.sort רשימות הצבה מכילות זוגות >מספר זיהוי של קובץ, מספר מופעים של המילה בקובץ< עבור כל קבוצה Gi כאשר 1 i k נחשב רשימה Mi כך שכל איבר של Mi הוא שלישיה מהצורה W'i< > id, freq, כאשר id הוא מספר זיהוי של קובץ טקסט, - W'i רשימת מילים מקבוצה Gi ומופיעות באותו קובץ. - freq שכיחות מצטברת של מילים מתוך קבוצה Gi שמופיעות באותו קובץ. לאחר בנית הרשימה Mi נמיין אותה בסדר יורד לפי שכיחות מילים מצטברת. נסמן את הקבוצה של הרשימות שחישבנו ב- M. לדוגמא באיור 44 מודגם אינדקס מהופך למילה.sort רשימות הצבה מכילות זוגות >מספר זיהוי של קובץ, מספר מופעים של המילה בקובץ<.3 21

G1 sorts M1 מילת חיפוש sorts sort F1, 5, [sorts, sorting] F2, 4, [sorts] F3, 3, [sort] F4, 2, [sorting] sorting איור : 44 רשימה M1 ממוינת לפי שכיחות המצטברת של מילים מ- G1 בתוך הקובץ נמזג לפי מספר זיהוי של קובץ) id ( את כל הרשימות M1... Mk לרשימה אחד, נסמנה P. כלומר בשלב מיזוג נעבור על כל הרשימות M1... Mk ועבור כל קובץ )לפי )id נאחד את כל הקבוצות מילים )שמצאנו בסעיף 3, W'i כך ש- 1) i k של הקובץ לקבוצה אחת ונסמן את הקבוצה ב-< WR<id, הקבוצה מכילה את כל המילים שמופיעות בקובץ ורלוונטיות לקבוצה W )מילים החיפוש(. בנוסף נחשב עבור כל קובץ מספר קבוצות מתוך G המשתתפות בקבוצה WR<id> ונסמן את המונה ב- k. במילים אחרות מונה k הוא מספר מילים מ- W שמצאנו בקובץ. נמיין בסדר יורד את רשימה P לפי מונה k ואם k זהה עבור קבצים שונים אזי נמיין לפי.freq מטרת המיון היא לסדר את הקבצים לפי רלוונטיות שלהם. ראה איור 44 נבנה רשימת התוצאות של החיפוש ונסמנה L. כל איבר של P מייצג קובץ ומילים הרלוונטיות שמצאנו בתוכו. נעתיק את כל האיברים מרשימה P לרשימה L כאשר סדר של איברים חשוב ונוסיף רשימות של חותמות זמן עבור מילים שמצאנו ברמת הקובץ. מטרת הבניה של רשימה L היא השלמת מידע על מילים שמצאנו, משמעו נשלוף מבסיס הנתונים את רשומות חותמות זמן עבור מילים שמצאנו ונוסיף אותן לתוצאות ברשימה L. לדוגמא באיור 43 מודגמת רשימת התוצאות עבור מילת חיפוש.sort.1.6 21

רשימה L F1, 5 F2, 4 F3, 3 F4, 2 sorts 14, 80, 92, 200 sorting 44, 98 sorts 10, 22 sorting 24, 25, 105 sort 3, 60, 150 איור 43: רשימת התוצאות L 21

1.1.1 דיאגראמת מחלוקות יישום מנוע חיפוש מורכב משני מודולים עיקריים : מודול אינדוקס הנתונים ומודול חיפוש הנתונים. מודול אינדוקס הנתונים אחראי על כל התהליכים של אינדוקס נתונים ומודול חיפוש הנתונים אחראי על כל תהליכי חיפוש נתונים בתוך אינדקס מהופך. מודול אינדוקס הנתונים באיור 41 מודגמת דיאגראמת מחלקות של מודול אינדוקס הנתונים Index SearchManager 1 1 «uses» PersistenceManager +loadmainindex() -stemsdictionary : Map<String, List<WordInfo>> -postingslist : Map<String, WordInfo> -indexedfiles : Map<Long, DocumentMetadata> +addindex(documentindex index)() +writeexternal() +readexternal() +searchexactword() +searchstemword() «uses» CSVFileReader Stemmer Search +stem(word)() +main() «uses» «uses» 1 TextReader -docmetadata : DocumentMetadata 1 DocumentIndex 1 * * -docmetadata : DocumentMetadata +addword(word)() 1 1 DocumentStatistics «uses» * * StopWordsDictionary +load() +isstopword(in word) : bool 1 StatisticsManager +storestatistics() TextReaderFactory +createparser() 1 «interface» IWordPositionsStorage +addword() +getwordmetadatalist() +save() «uses» 1 1 1 JDBM3PositionsStorage IndexTask DocumentMetadata +index() 1 * LoadTextIndexTask +init() +run() איור 41: דיאגראמת מחלוקות של מודול אינדוקס הנתונים 22

- Search מחלקה ראשית. המחלקה אחראית על אתחול והרצה תהליכים ראשיים במנוע חיפוש. בשלב אתחול המלקה טוענת תצורת מנוע חיפוש )SearchConfig( ולאחר מכן המחלקה מאתחלת מופעים של מחלקות הבאות :,StatisticsManager,SearchManager.StopWordsDictionary לאחר שלב אתחול המחלקה מריצה את המחלקה LoadTextIndexTask בתהליכון נפרד. - SearchManager תפקידה של המחלקה הוא לספק ממשק חיפוש בתוך אינדקס מהופך. המחלקה מחזיקה אינדקס מהופך ומסדי נתונים של חותמות זמן. - IndexTask מחלקה מופשטת המגדירה שלבים עיקריים של תהליך אינדוקס של קובץ אחד. - LoadTextIndexTask המחלקה יורשת ממחלקה מופשטת IndexTask ומממשת אלגוריתם זיהוי קבצים חדשים והעברתם לתהליך אינדוקס שממומש במחלקה.IndexTask - IWordPositionsStorage ממשק שבא להבטיח שייקרא בזמן השמירה של חותמות זמן עבור מילה בקובץ. מספק ממשק למימושים שונים של מסד נתונים לאחסון חותמות זמן. - JDBM3PositionsStorage מימוש ממשק IWordPositionsStorage בעזרת ספריית קוד פתוח.JDBM3 הספרייה מממשת HashMap מגובה על דיסק קשיח. - StopWordsDictionary המחלקה מממשת מילון מילים עצירה. המחלקה טוענת מילים עצירה מקובץ טקסטואלי ומספקת ממשק לזיהוי מילים עצירה, כלומר בהינתן מילה כלשהי, הממשק יקבע האם המילה הנתונה היא מילת עצירה או לא. - StatisticsManager המחלקה אוספת סטטיסטיקות שונות של תהליך אינדוקס הנתונים ושומרת את הסטטיסטיקות בקובץ. - DocumentStatistics המחלקה אוספת סטטיסטיקות של תהליך אינדוקס עבור קובץ טקסט אחד. - TextReaderFactory המחלקה מממשת תבנית עיצוב "שיטת המפעל" במטרה להסתיר את תהליך יצירת האובייקט מסוג.TextReader בעתיד משתמש יוכל בקלות להוסיף סוגים חדשים של.TextReader 22

- TextReader ממשק שבא להבטיח שיופעלו את השיטות שלו כאשר תהליך האינדוקס יצטרך לקרוא תוכן של קובץ קלט חדש. - CSVFileReader המחלקה מממשת ממשק TextReader ומאפשרת לקרוא קבצים בפורמט.CSV - Stemmer המחלקה מממשת אלגוריתם algorithm" "The Porter stemming ומספקת ממשק שבעזרתו ניתן לקבל צורה בסיסית של מילה הנתונה. - PersistenceManager תפקידה של המחלקה הוא שמירה וטעינה של אינדקס מהופך בעת עדכון אינדקס ואתחול מנוע חיפוש. - Index המחלקה מממשת אינדקס מהופך ראשי. - DocumentIndex המחלקה מממשת אינדקס מהופך עבור קובץ טקסט אחד. 22

מודול חיפוש הנתונים באיור 46 מודגמת דיאגראמת מחלקות של מודול חיפוש נתונים StopWordsDictionary Result * 1 Query * Results +load() +isstopword(in word) : bool «uses» 1 SearchManager 1 Index -stemsdictionary : Map<String, List<WordInfo>> -postingslist : Map<String, WordInfo> -indexedfiles : Map<Long, DocumentMetadata> +addindex(documentindex index)() +writeexternal() +readexternal() +searchexactword() +searchstemword() +Results search(query )() 1 «uses» «uses» «interface» Sort «uses» * «interface» «uses» ISearchStrategy +Results search(query, Index) () «uses» «uses» * FrequenceSort RelevantSort BasedSearchStrategy +Results search(query, Index)() StemmingSearchStrategy +Results search(query, Index)() «uses» «uses» SearchConfig +ISearchStrategy getsearchstrategy(searchtype)() +Sort getsorter(sorttype)() 1 1 «interface» IWordPositionsStorage +addword() +getwordmetadatalist() +save() «uses» Stemmer +stem(word)() JDBM3PositionsStorage איור : 46 דיאגראמת מחלוקות של מודול חיפוש הנתונים 25

- SearchManager תפקידה של המחלקה הוא לספק ממשק חיפוש בתוך אינדקס מהופך. המחלקה מחזיקה את אינדקס מהופך ומסדי נתונים של חותמות זמן. הממשק חיפוש מקבל אובייקט מסוג Query המתאר את השאילתא של משתמש ומחזיר אובייקט מסוג Results המחזיק תוצאות החיפוש. שיטה query) Results search(query - Query המחלקה אחראית לתאר שאילתא של משתמש. המחלקה מחזיקה מילות חיפוש, סוג חיפוש, סוג מיון, מספר התוצאות בדף ומספר סידורי של דף. - Results המחלקה מחזיקה תוצאות החיפוש. המחלקה מחזיקה רשימה של אובייקטים מסוג Result וסה"כ מספר התוצאות. הרשומה ממוינות לפי רלבנטיות של התוצאות. - Result תפקידה של המחלקה הוא לתאר את כל המילים שנמצאו בקובץ טקסט )המייצג קובץ מדיה( אחד. המחלקה מורכבת משתי רשימות של מילים )אובייקט מסוג,)Word רשימה ראשונה מכילה מילים עם התאמה מדויקת למילות חיפוש ורשימה שנייה מכילה מילים עם התאמה מורחבת למילות חיפוש. - Word המחלקה מייצגת מילה ומידע על הופעתה בקובץ מדיה, כלומר רשימת חותמת זמן שבהן נאמרה המילה. - ISearchStrategy ממשק שבא להבטיח שייקרא כאשר נבצע חיפוש כאשר קלט הוא אובייקט מסוג,Query ופלט אובייקט מסוג.Results תפקידו של הממשק הוא להגדיר אסטרטגיה של החיפוש. - BasedSearchStrategy המחלקה מממשת ממשק.ISearchStrategy המחלקה מממשת אלגוריתם חיפוש בסיסי כלומר חיפוש מילים באינדקס לפי התאמה מדויקת. - StemmingSearchStrategy המחלקה מממשת ממשק.ISearchStrategy המחלקה מממשת אלגוריתם חיפוש מורחב, כלומר חיפוש מילים באינדקס לפי התאמה מורחבת. האלגוריתם מאפשר למצוא מילים שונות אשר נושאות אותו גרעין משמעות, כלומר מילים השייכות לאותו בסיס. -Sort ממשק שבא להבטיח שייקרא כאשר נבצע מיון של תוצאות החיפוש - אובייקט מסוג.Results תפקידו של הממשק הוא להגדיר אסטרטגיה של מיון תוצאות החיפוש. - RelevantSort המחלקה מממשת ממשק.Sort אלגוריתם - מיון תוצאות החיפוש לפי מספר המילות החיפוש שנמצאו בתוך קובץ הטקסט. 21

- FrequenceSort המחלקה מממשת ממשק.Sort אלגוריתם - מיון תוצאות החיפוש לפי מספר המופעים של מילות החיפוש בקובץ טקסט, בסדר יורד. כלומר קבצים שיש בהם מספר מופעים של מילות חיפוש גדול יותר אזי הקבצים יותר רלבנטיים. - Index המחלקה מממשת אינדקס מהופך ראשי. - Stemmer המחלקה מממשת אלגוריתם algorithm" "The Porter stemming ומספקת ממשק שבעזרתו ניתן לקבל צורה בסיסית של מילה נתונה. - IWordPositionsStorage ממשק המבטיח שייקרא בעת שנשמור חותמות זמן עבור מילה בקובץ. מספק ממשק למימושים שונים של מסד נתונים לאחסון חותמות זמן. - JDBM3PositionsStorage מימוש ממשק IWordPositionsStorage בעזרת ספרייה קוד פתוח.JDBM3 הספרייה מממשת HashMap מגובה על דיסק קשיח. - StopWordsDictionary המחלקה מממשת מילון מילות עצירה. המחלקה טוענת מילות עצירה מקובץ טקסטואלי ומספקת ממשק שתפקידו לזהות מילים עצירה, כלומר בהינתן מילה כלשהי, הממשק יקבע האם המילה הנתונה היא מילת עצירה או לא. - Search מחלקה ראשית. המחלקה אחראית על אתחול והרצה תהליכים ראשיים במנוע חיפוש. בשלב אתחול של המלקה נטענת תצורת מנוע חיפוש )SearchConfig( ולאחר מכן המחלקה מאתחלת מופעים של מחלקות הבאות :,StatisticsManager,SearchManager.StopWordsDictionary 27

5 ממשק משתמש ממשק משתמש מורכב משני מסכים מרכזיים : מסך חיפוש 4. מסך תוצאות 4. - Web Server תפקידו של השרת הוא להציג חלון חיפוש, לבצע שאילתות במודול אינדקס הנתונים, להציג תוצאות חיפוש. השרת ממומש בעזרת שרת אפליקציה ]7[. Tomcat ממשק משתמש גרפי ממומש באמצעות דפי HTML המכוללים על ידי Servlet 5 results.html Tomcat Server 4 SearchServlet.java Client Browser 6 1 index.html search.css 2 Search Engine 3 Media Files default.js איור : 45 ארכיטקטורה של שרת יישומים שלבי חיפוש )ראה איור 45(.4.4 משתמש ממלא את מילות החיפוש וסוג החיפוש במסך חיפוש )index.html( ושולח את בקשת החיפוש באמצעות כפתור "Search" לשרת יישומים. שרת מקבל בקשת החיפוש באמצעות פרוטוקול HTTP ומפעיל תהליך חיפוש על ידי קריאה לסרוולט. SearchServlet.3.1.6.5 SearchServlet מבצע חיפוש במנוע חיפוש לפי פרמטרים שהתקבלו בבקשת החיפוש. Java Script, CSS, בונה את דף התוצאות. שימוש ב- HTML SearchServlet שרת מחזיר את דף התוצאות לדפדפן והתוצאות מוצגות למשתמש קבצי מדיה מועלים לדפדפן לפי בחירה של משתמש 22

1.4 מסך חיפוש מסך חיפוש - מאפשר חיפוש מספר מילים עם אופרטור בוליאני OR ביניהן, כאשר חיפוש נעשה בכל קבצי מדיה אשר אונדקסו במנוע חיפוש. סוגי החיפוש - סוג ראשון הוא חיפוש מילים עם התאמה מדויקת. מומלץ להשתמש בסוג החיפוש זה כאשר מעוניינים לקבל תוצאות שמכילות רק מילים מהשאילתה )ללא מילים נוספות(. סוג שני הוא חיפוש מילים עם התאמה מורחבת. מומלץ להשתמש בסוג החיפוש זה כאשר מעוניינים לקבל תוצאות שמכילות מילים מהשאילתה או מילים נוספות שהן הרחבה של מילות החיפוש. קבצי קלט של מערכת הם קבצי מדיה בפורמטים mp4, mp3 איור : 47 מסך חיפוש 21

1.3 מסך תוצאות מסך תוצאות - תפקידו של המסך הוא להציג תוצאות החיפוש. מסך תוצאות מכיל נתונים הבאים: סה"כ התוצאות, זמן חיפוש, רשימת התוצאות, רשימת קישורים לדפים הבאים של התוצאות. תוצאות החיפוש ממוינות ומוצגות לפי רלוונטיות. התוצאות הרלוונטיות ביותר מופיעות ראשונות ברשימת התוצאות. כל תוצאה מכילה תמונה שמציגה את המדיה, שם קובץ מדיה, רשימת המילים שנמצאו במדיה ומספרם. רשימת המילים מכילה מילים שנמצאו וחותמות זמן שלהן בתוך קובץ מדיה. באמצעות לחיצה על מילה מתוך רשימת המילים ניתן להגיע לקטע וידאו או אודיו שבתוכו נאמרה המילה. )איור 48( איור : 48 מסך תוצאות החיפוש 21

1.2 מסכים סטטיסטיקות סטטיסטיקות מבוצעות אודות תהליך המרה קבצי מדיה לטקסט וכך אודות תהליך אינדוקס קבצי טקסט לתוך מנוע חיפוש איור : 41 מסך סטטיסטיקות של תהליך המרת קבצי מדיה לטקסט מסך סטטיסטיקות )איור 41( של תהליך המרת קבצי מדיה לטקסט מציג סטטיסטיקות הבאות : שם קובץ מדיה גודל קובץ מדיה אינדקס ייחודי בתוך המערכת משך זמן המדיה מספר מילים שזוהו בתוך קובץ המדיה WAV משך זמן המרה לפורמט משך זמן המרה מקובץ מדיה לקובץ טקסט סה"כ זמן הנלקח עבור כל התהליך המרה גודל קובץ מדיה בפורמט WAV גודל קובץ טקסט )קובץ פלט( ניתן להסיק מסטטיסטיקות דברים הבאים : קצב הדיבור 21

יחס בין זמן עיבוד לגודל המדיה איכות הזיהוי )אורך המדיה ביחס למספר מילים שזוהו( איור : 40 מסך סטטיסטיקות של תהליך אינדוקס קבצי טקסט של תהליך אינדוקס קבצי טקסט לתוך מנוע חיפוש מציג את מסך סטטיסטיקות )איור 40( הסטטיסטיקות הבאות : שם קובץ טקסט סה"כ מילים בתוך הקובץ מספר מילים ללא חזרות מספר מילים בסיסיות מספר מילים "עצירה" ניתן להסיק מסטטיסטיקות דברים הבאים : כמות המילים חשובות להעריך גודל אינדקס מהופך איכות הזיהוי איכות ההרצאה - יחס בין מילות חשובות לבין מילות חסרת משמעות )מילות עצירה( 22

6 בדיקות המערכת בדיקות יחידה - הן בדיקות ברמת יחידת המערכת הקטנה ביותר )מודול( שמאמתות את פעילותה התקינה של היחידה. בדיקות אינטגרציה - הן בדיקות המבוצעת במטרה לבדוק את ההשפעה שיש לחלק מוגדר במערכת עם חלקים אחרים במערכת ועם מערכות מקבילות ומשיקות. בדיקות האינטגרציה מבוצעות על ידי חיבור של כמה מודולים בודדים ומחברים אותם למערכת או לתת מערכת, או למערכת חיצוניות. 6.1 בדיקות יחידה במערכת קיימים ארבע מודולים עצמאיים : מודול המרת קבצי מדיה, מודול אינדוקס נתונים, מנוע חיפוש, ממשק משתמש. בדיקות יחידה למודול המרת קבצי מדיה בדיקות יחידה למחלקה.MediaExtractorManager המחלקה מייצגת את המודול המרת קבצי מדיה. 4. המרת קובץ ווידאו לקובץ טקסטואלי קלט : קובץ ווידאו בפורמט MP4 פלט : קובץ טקסטואלי בפורמט CSV שלבי הבדיקה 4. נריץ את המחלקה )MediaExtractorManager( בעזרת פונקציה ראשית 4. נעביר קובץ ווידאו test.mp4 בפורמט MP4 לתיקיה VIDEO_SEARCH_HOME\input\video 3. נפתח קובץ מעקב VIDEO_SEARCH_HOME\logs\recognition.log הסתיים. הדפסה הבאה תופיע בקובץ מעקב לאחר סיום תהליך המרה: ונוודא כי תהליך המרה End extract task for file : VIDEO_SEARCH_HOME\data\recognition\process\test_<id>.mp4 1. נוודא כי נוצר קובץ טקסטואלי test_<id>.mp4.csv בתיקיה VIDEO_SEARCH_HOME\data\text 6. נפתח את הקובץ test_<id>.mp4.csv וחותמות זמן בהתאם לקובץ ווידאו. דוגמא עבור קובץ טקסטואלי : ונבדוק כי הקובץ בפורמט CSV ומכיל מילים word,starttime all,0.69 i,0.79 raised,2.17 more,3.01 than,6.22 22

they,6.45 landed,8.44 in,9.0 the,10.56 midst,10.95 of,11.38 my,11.53 4. המרת קובץ אודיו לקובץ טקסטואלי קלט : קובץ אודיו בפורמט MP3 פלט : קובץ טקסטואלי בפורמט CSV שלבי הבדיקה 4. נריץ את המחלקה )MediaExtractorManager( בעזרת פונקציה ראשית 4. נעביר קובץ אודיו test.mp3 בפורמט MP3 לתיקיה VIDEO_SEARCH_HOME\input\video 3. נפתח קובץ מעקב VIDEO_SEARCH_HOME\logs\recognition.log הסתיים. הדפסה הבאה תופיע בקובץ מעקב לאחר סיום תהליך המרה: ונוודא כי תהליך המרה End extract task for file : VIDEO_SEARCH_HOME\data\recognition\process\test_<id>.mp3 1. נוודא כי נוצר קובץ טקסטואלי test_<id>.mp3.csv בתיקיה VIDEO_SEARCH_HOME\data\text 6. נפתח את הקובץ test_<id>.mp3.csv וחותמות זמן בהתאם לקובץ ווידאו. ונבדוק כי הקובץ בפורמט CSV ומכיל מילים בדיקת יחידה למחלקה.TextExtractorTask קלט : קובץ מדיה.test.mp4 הקובץ ימוקם בתיקיה process פלט : קובץ מדיה מקורי עם מספר ייחודי בשם הקובץ. סטטיסטיקות תהליך המרה של קובץ מדיה )קלט( קובץ טקסטואלי שמכיל מילים שנאמרו בקובץ מדיה)קלט( VIDEO_SEARCH_HOME\data\recognition\process\ לתיקיה test.mp4 שלבי הבדיקה 4. נעתיק קובץ מדיה נריץ בדיקה testtextextractortask בעזרת תוכנה JUnit 4. לאחר הרצת הבדיקה נוודא כי : 3. נוצר קובץ VIDEO_SEARCH_HOME\data\media\video\test_<id>.mp4 כאשר שם של קובץ מכיל מספר ייחודי) id ( קובץ VIDEO_SEARCH_HOME\data\media\statistics\recognizeStats.csv התעדכן בסטטיסטיקות של תהליך המרה עבור קובץ מדיה test.mp4 22

נוצר קובץ.VIDEO_SEARCH_HOME\data\text\test_<id>.mp4.csv הקובץ מכיל מילים שנאמרו בקובץ מדיה )קלט( 25

בדיקת יחידה למחלקה.RecognitionStatistics נבצע את הבדיקה בעזרת תוכנה.JUnit בדיקת יחידה testrecognitionstatistics( ) : ניצור מופעה של מחלקה RecognitionStatistics ונאתחל את המופע בנתונים. נשווה את מחרוזת הנוצרת על ידי המחלקה )ייצוג טקסטואלי של הנתונים( עם מחרוזת הצפויה. נבצע את הבדיקה עבור ייצוג בפורמט CSV ו- READBLE בדיקת יחידה למחלקה.CSVWordWriter נבדוק שהמחלקה יוצרת קבצים בפורמט.CSV נבצע את הבדיקה בעזרת תוכנה.JUnit בדיקה - testwrite ניצור מופעה של Word כאשר היא מכילה מילה sort וחתימת זמן 40 ונכתוב אותה לקובץ test.csv בעזרת מחלקה.CSVWordWriter נקרא את הקובץ test.csv מהדיסק ונשווה עם תוצאה הצופייה : word,starttime sort, 10.0 בדיקת יחידה למחלקה.SphinxEngine נבדוק שהמחלקה מזהה מילים בקובץ קול. קלט : קובץ קול בפורמט )test.wav(wav פלט : קובץ טקסטואלי בפורמט.)testspeach.csv( CSV הקובץ יכיל מילים שנאמרו בקובץ קול )קלט(. נבצע את הבדיקה בעזרת תוכנה.JUnit הבדיקה testspeechtotext יוצרת מופע של מחלקה SphinxEngine עם פרמטרים הבאים : "temp/test.wav",csvwordwriter("temp/testspeach.csv") לאחר מכן הבדיקה מריצה את התהליך זיהוי דיבור של קובץ.test.wav בסיום התהליך זיהוי דיבור נוודא כי מילים שנאמרו בקובץ test.wav מופיעות בקובץ טקסטואלי.testspeach.csv בדיקות יחידה למחלקה.FFmpegConvertor נבצע את הבדיקות בעזרת תוכנה.JUnit 4. בדיקה נכונות של המרת קובץ קול בפורמט MP3 לקובץ קול בפורמט.WAV שם בדיקה ב- JUnit הוא.testFFmpegConvertorMP3 קלט : קובץ קול test.mp3 פלט : קובץ קול test_<id>.mp3.wav FFmpegConvertor ניצור מופע של מחלקה נבצע שיטה convert של מחלקה FFmpegConvertor כאשר קובץ קול )test.mp3( הוא קלט 21

נבדוק בתיקיה VIDEO_SEARCH_HOME\temp שנוצר קובץ קול WAV והפורמט של הקובץ הוא test_<id>.mp3.wav בדיקה נכונות של המרת קובץ ווידאו בפורמט MP4 לקובץ קול בפורמט.WAV שם בדיקה ב- JUnit הוא.testFFmpegConvertorMP4.4 קלט : קובץ ווידאו test.mp4 פלט : קובץ קול test_<id>.mp4.wav ניצור מופע של מחלקה FFmpegConvertor נבצע שיטה convert של מחלקה FFmpegConvertor כאשר קובץ ווידאו )test.mp4( הוא קלט נבדוק בתיקיה VIDEO_SEARCH_HOME\temp שנוצר קובץ קול WAV והפורמט של הקובץ הוא test_<id>.mp4.wav בדיקות יחידה למודול אינדוקס נתונים ומנוע חיפוש בדיקות יחידה למחלקה.PersistenceManager נבדוק את יכולת העלאה של אינדקס מהופך מקובץ ואחסון של אינדקס מהופך לקובץ. קלט : קובץ שמייצג אינדקס מהופך תוצאה צפויה : נתונים מאונדקסים לא נעלמים כתוצאה מאתחול מחדש של מנוע חיפוש בדיקה : ניצור קובץ test_1.csv )פורמט )CSV נוסיף לקובץ נתונים הבאים : נריץ את מנוע חיפוש )מודול אינדוקס הנתונים הוא מודול של מנוע חיפוש( word,starttime sort,10.00 VIDEO_SEARCH_HOME\tomcat\bin\startup.bat נעתיק את הקובץ test_1.csv לתיקיה VIDEO_SEARCH_HOME\data\text נוודא כי קובץ test_1.csv מאונדקס באינדקס מהופך משתמש גרפי נבצע אתחול מחדש של מנוע חיפוש באמצעות הרצה פקודות הבאות: VIDEO_SEARCH_HOME\tomcat\bin\shutdown.bat VIDEO_SEARCH_HOME\tomcat\bin\startup.bat o o - נחפש מילה sort בעזרת ממשק נבצע חיפוש של מילה sort בעזרת ממשק משתמש גרפי. תוצאה הצפויה : המילה sort בקובץ test_1 מצאנו את 27

בדיקות יחידה למחלקה Index בדיקות יחידה למחלקה.DocumentIndex נבדוק : יצירת האינדקס החדש עבור id נתון, הוספת מילים לתוך האינדקס, מציאת מילים )שהוספנו( באינדקס נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה documentindextest קוד הבדיקה : DocumentMetadata docmd = new DocumentMetadata(1, "test"); DocumentIndex docindex = new DocumentIndex(docMD); docindex.addword(new WordToken("sort")); WordInfo info = docindex.searchexactword("sort"); asserttrue(info.getdocuments().get(0).documentid == 1); בדיקות יחידה למחלקה IndexTask נבדוק : יצירת האינדקס החדש, מיזוג אינדקס לתוך אינדקס ראשי, מציאת מסמכים לפי מילה, מציאת מסמכים לפי מילות בסיס נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה indextest DocumentMetadata docmd = new DocumentMetadata(1, "test"); DocumentIndex docindex = new DocumentIndex(docMD); docindex.addword(new WordToken("sort")); Index index = new Index(); index.addindex(docindex); WordInfo info = index.searchexactword("sort"); asserttrue(info.getdocuments().get(0).documentid == 1); List<WordInfo> infostems = index.searchstemword("sort"); asserttrue(infostems.get(0).getdocuments().get(0).documentid == 1); קוד הבדיקה : בדיקות יחידה למחלקה.LoadTextIndexTask נבדוק : קובץ קלט נלקח מתיקיה text ולאחר תהליך אינדוקס מועבר לתיקיה.done text done קלט : קובץ test_1.csv בתיקיה פלט : קובץ test_1.csv בתיקיה נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה testloadtextindextask קוד הבדיקה : String input = CommonUtils.BASE_DIR+"data"+File.separator+"text"+File.separator; StatisticsManager.initStatisticsFile(CommonUtils.DOCUMENT_STATISTICS_FILE); LoadTextIndexTask task = new LoadTextIndexTask(input); task.active = false; 22

task.run(); String output = CommonUtils.BASE_DIR+File.separator+"data"+File.separator+"text"+ File.separator+"done"+File.separator+"test_1.csv"; asserttrue(new File(output).exists()); בדיקות יחידה למחלקה. JDBM3PositionsStorage נבדוק : הוספה חתימת זמן של מילה וקובץ )לפי id של הקובץ( נתונים. שליפה רשימות של חותמות זמן לפי מילה נתונה. נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה testjdbm3positionsstorage קוד הבדיקה : JDBM3PositionsStorage db = JDBM3PositionsStorage.getInstance(); WordToken wordtoken = new WordToken("sort"); wordtoken.starttime = 10f; db.addword(wordtoken, new DocumentMetadata(1, "test_1.csv")); Map<Long, List<WordMetadata>> list = db.getwordmetadatalist("sort"); if(list!= null){ asserttrue(list.containskey((long)1)); }else{ fail("document is not found"); } בדיקות יחידה למחלקה.StopWordsDictionary נבדוק : העלאת קובץ מילים עצירה, בדיקה מילים עצירה. נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה teststopwordsdictionary קוד הבדיקה : StopWordsDictionary dictionary = StopWordsDictionary.getInstance(); dictionary.load("temp/test.stop"); asserttrue(dictionary.isstopword("and")); בדיקות יחידה למחלקה.DocumentStatistics נבצע את הבדיקה בעזרת תוכנה.JUnit בדיקת יחידה: ניצור מופעה של מחלקה DocumentStatistics ונאתחל את המופע בנתונים. נשווה את מחרוזת הנוצרת על ידי המחלקה )ייצוג טקסטואלי של הנתונים( עם מחרוזת הצפויה. נבצע את הבדיקה עבור הייצוג בפורמט ו- READBLE CSV testcsvfilereader בדיקות יחידה למחלקה.CSVFileReader נבדוק : קריאה קובץ בפורמט.CSV נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה 21

קוד הבדיקה : CSVFileReader reader = new CSVFileReader(new File("temp/test.csv")); Iterator<WordToken> iter = reader.iterator(); WordToken word = iter.next(); asserttrue(word.getword().equals("word")); בדיקות יחידה למחלקה.Stemmer נבדוק : נכונות גזירת מילת בסיס ממילה נתונה קלט : מילה פלט : מילת בסיס של מילת קלט נבצע את הבדיקות בעזרת תוכנה JUnit שם הבדיקה teststemmer קוד הבדיקה : String baseword = "sort"; asserttrue(baseword.equals(stemmer.getinstance().stem("sort"))); asserttrue(baseword.equals(stemmer.getinstance().stem("sorts"))); asserttrue(baseword.equals(stemmer.getinstance().stem("sorting"))); asserttrue(baseword.equals(stemmer.getinstance().stem("sorted"))); בדיקות יחידה למחלקות SearchManager וSearch המחלקות אחראיות על אתחול תהליכי אינדוקס וחיפוש. נבדוק : מודולים אינדוקס וחיפוש מאותחלים לאחר אתחול של מחלקה.Search ניתן לחפש נתונים באמצעות ממשק.SearchManager בדיקה : נבצע את הבדיקות בעזרת פקודות CLI 4. נריץ את מנוע חיפוש בעזרת שיטה ראשית) main ( של Search 4. נבדוק בקובץ מעקב )\logs\search.log( קיימות הדפסות הבאות : ****************** START SEARCH ENGINE ********************** Start Search Instance Init search configuration Start loading stop words dictionary Stop words dictionary was loaded successfully. Number of stop words : 119 Start Load Index Done snapshot of main index. Snapshot time : 4ms End Load Index. Load time : 85ms נבצע חיפוש על ידי הקלדה מילה sort בשורת הקלט של מנוע חיפוש )CLI( Enter search phrase : sort 1. Document Id : 1. Total num of found words : 5 Document Name : test_1.csv Exact match words. Num of words : 5 < sort : 5 > [ 10.0 ] Refined words. Num of words : 0.3 נקבל : 51

Number Results in Page : 1 Total number of results : 1 Search time : 74ms word,starttime sort,10.0 sorting,15 sorts,20 sorted,30 נעתיק קובץ test_2.csv לתיקיה data\text )תיקיית אינדוקס נתונים( תוכן הקובץ :.1 בדיקה יחידה למחלקה.StemmingSearchStrategy נבדוק כי מנוע חיפוש מחזיר תוצאות Enter search phrase : sort שמכילות מילים בעלות אותו בסיס כמו של מילת החיפוש נבצע חיפוש על ידי הקלדה מילה sort בשורת הקלט של מנוע חיפוש )CLI( 4. Document Id : 2. Total num of found words : 4 Document Name : test_2.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 3 < sorting : 1 > [ 15.0 ] < sorts : 1 > [ 20.0 ] < sorted : 1 > [ 30.0 ] נקבל : Number Results in Page : 4 Total number of results : 4 Search time : 1ms חיפוש, חיפוש מורחב, מיון התוצאות לפי רלוונטיות test_1.csv נאנדקס שלוש קבצים הבאים : word,starttime sort,10.0 test_2.csv word,starttime sort,10.0 sorting,15 sorts,20 sorted,30 test_3.csv word,starttime quick,10.0 sort,15 חיפוש. נבצע את החיפוש על ידי הקלדה מילה sort עם אופציה e- בשורת הקלט של מנוע חיפוש.)CLI( אופציה e : חיפוש ללא הרחבות, כלומר לא ימצאו מילים בעלות אותו בסיס. 51

Enter search phrase : -e sort 1. Document Id : 1. Total num of found words : 1 Document Name : test_1.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 0 2. Document Id : 2. Total num of found words : 1 Document Name : test_2.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 0 3. Document Id : 3. Total num of found words : 1 Document Name : test_3.csv Exact match words. Num of words : 1 < sort : 1 > [ 15.0 ] Refined words. Num of words : 0 Number Results in Page : 3 Total number of results : 3 Search time : 2ms חיפוש מורחב. נבצע את החיפוש על ידי הקלדה מילה sort בשורת הקלט של מנוע חיפוש.)CLI( Enter search phrase : sort 1. Document Id : 2. Total num of found words : 4 Document Name : test_2.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 3 < sorting : 1 > [ 15.0 ] < sorts : 1 > [ 20.0 ] < sorted : 1 > [ 30.0 ] 2. Document Id : 1. Total num of found words : 1 Document Name : test_1.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 0 3. Document Id : 3. Total num of found words : 1 Document Name : test_3.csv Exact match words. Num of words : 1 < sort : 1 > [ 15.0 ] Refined words. Num of words : 0 Number Results in Page : 3 Total number of results : 3 Search time : 1ms מיון תוצאות החיפוש לפי רלוונטיות. נבצע את החיפוש על ידי הקלדה מילים quick sort בשורת הקלט של מנוע חיפוש.)CLI( 52

Enter search phrase : quick sort 1. Document Id : 3. Total num of found words : 2 Document Name : test_3.csv Exact match words. Num of words : 2 < quick : 1 > [ 10.0 ] < sort : 1 > [ 15.0 ] Refined words. Num of words : 0 2. Document Id : 2. Total num of found words : 4 Document Name : test_2.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 3 < sorting : 1 > [ 15.0 ] < sorts : 1 > [ 20.0 ] < sorted : 1 > [ 30.0 ] 3. Document Id : 1. Total num of found words : 1 Document Name : test_1.csv Exact match words. Num of words : 1 < sort : 1 > [ 10.0 ] Refined words. Num of words : 0 Number Results in Page : 3 Total number of results : 3 Search time : 1ms 6.4 בדיקות אינטגרציה העלאה קובץ וידאו למערכת קלט : קובץ וידאו.test_video.mp4 הקובץ מכיל הרצאת וידאו תוצאות צפויות לאחר העלאה: ניתן למצוא את הקובץ לפי מילים שנאמרו בתוכו הקובץ מופיע בסטטיסטיקות תהליכי המרה ואינדוקס שלבי הבדיקה : VIDEO_SEARCH_HOME/tomcat/bin/startup.bat VIDEO_SEARCH_HOME/bin/startRE.bat 4. להפעיל מנוע חיפוש. להריץ פקודה : 4. להפעיל יישום המרת קבצי מדיה. להריץ פקודה : 3. לפתוח דפדפן ולהקליד כתובת הבאה :.http://localhost:8080/search ייפתח מסך חיפוש 1. לעלות קובץ וידאו.test.mp4 בחירה קובץ על ידי כפתור בחירת הקובץ והעלאת הקובץ על ידי לחיצה על כפתור העלאת הקובץ. 6. להמתין עד שקובץ קלט test_video.mp4 יאונדקס למערכת. ניתן לעקוב אחרי תהליכים המרה ואינדוקס בקבצים מעקב הבאים :,recognition.log search.log 52

לוודא שסטטיסטיקות של קובץ קלט test_video.mp4 נמצאות דף בסטטיסטיקות של תהליך המרה קבצי מדיה לטקסט לוודא שסטטיסטיקות של קובץ קלט test_video.mp4 נמצאות דף בסטטיסטיקות של תהליך אינדוקס קבצי טקסט לבצע חיפוש מילים שנאמרו בקובץ קלט על ידי ממשק משתמש גרפי..5.7.8 VIDEO_SEARCH_HOME/tomcat/bin/startup.bat VIDEO_SEARCH_HOME/bin/startRE.bat העלאה קובץ קול למערכת קלט : קובץ קול.test_audio.mp3 הקובץ מכיל נאום תוצאות צפויות לאחר העלאה: ניתן למצוא את הקובץ לפי מילים שנאמרו בתוכו הקובץ מופיע בסטטיסטיקות תהליכי המרה ואינדוקס שלבי הבדיקה : 4. להפעיל מנוע חיפוש. להריץ פקודה : 4. להפעיל יישום המרת קבצי מדיה. להריץ פקודה : 3. לפתוח דפדפן ולהקליד כתובת הבאה :.http://localhost:8080/search ייפתח מסך חיפוש 1. לעלות קובץ וידאו.test_audio.mp3 בחירה קובץ על ידי כפתור בחירת הקובץ והעלאת הקובץ על ידי לחיצה על כפתור העלאת הקובץ. 6. להמתין עד שקובץ קלט test_audio.mp3 יאונדקס למערכת. ניתן לעקוב אחרי תהליכים המרה ואינדוקס בקבצים מעקב הבאים :,recognition.log search.log 5. לוודא שסטטיסטיקות של קובץ קלט test_audio.mp3 נמצאות דף בסטטיסטיקות של תהליך המרה קבצי מדיה לטקסט 7. לוודא שסטטיסטיקות של קובץ קלט test_audio.mp3 נמצאות דף בסטטיסטיקות של תהליך אינדוקס קבצי טקסט 8. לבצע חיפוש מילים שנאמרו בקובץ קלט על ידי ממשק משתמש גרפי. 52

7 מקרה בוחן כמקרה בוחן נאנדקס מאגר הרצאות וידאו מתחומים שונים כגון מדעי המחשב וביולוגיה. מאגר הרצאות מכיל קרוב ל- 440 הרצאות שונות ממרצים שונים. משך ההרצאות נע בין 6 דקות לשעה וחצי. הרצאות נלקחו ממאגר ]47[. לאחר העלאה ואינדוקס של מאגר הרצאות קיבלנו סטטיסטיקות של תהליכי המרה ואינדוקס אשר במלואן ניתן לראות בנספח א. דוגמה לסטטיסטיקות של תהליך המרה קבצי מדיה לטקסט Media File Media File Size Duration Recognized Words Total Time Algorithms1.mp4 230.85 01h 26m 17s 515ms 11485 01h 31m 17s 416ms Algorithms2.mp4 252.39 01h 34m 06s 884ms 12164 01h 36m 22s 375ms Algorithms3.mp4 182.15 01h 23m 07s 762ms 11356 01h 23m 49s 331ms Lecture_15_Machine_Learning _(Stanford).mp4 293.73 01h 17m 17s 512ms 7535 01h 42m 39s 009ms Big DNA viruses (17-27).mp4 15.22 17m 27s 274ms 2668 13m 01s 877ms DNA basics (23-57).mp4 21.88 23m 57s 525ms 3625 15m 40s 270ms הטבלא מציגה מספר הרצאות מתחומים שונים : Algorithms1.mp4,Algorithms2.mp4 - Lecture_15_Machine_Learning_(Stanford).mp4 Big DNA viruses (17-27).mp4,DNA basics (23-57).mp4 תחום אלגוריתמים תחום כריעת מידע - תחום ביולוגיה - ניתן לראות בשורה ראשונה של הטבלה כי תהליך המרה הצליח לזהות 44186 מילים מתוך הרצאת ווידאו Algorithms1.mp4 כאשר אורך ההרצאה הוא שעה וחצי ומשך תהליך המרה הוא שעה וחצי. 55

דוגמה לסטטיסטיקות של תהליך אינדוקס טקסט לתוך אינדקס מהופך Media Name Total Number Of Words Number Of Different Words Number Of Stemmings Number Of Stop Words Algorithms1_1.mp4.csv 11486 1967 1617 5843 Algorithms2_2.mp4.csv 12165 1907 1567 6398 Algorithms3_3.mp4.csv 11357 1832 1502 6092 Lecture_15_Machine_Learning_(Stanford)_13.mp4.csv 7536 1552 1282 4328 Big DNA viruses (17-27)_106.mp4.csv 2669 728 632 1309 DNA basics (23-57)_107.mp4.csv 3626 856 736 1665 הטבלא מציגה מספר הרצאות מתחומים שונים : תחום אלגוריתמים תחום כריעת מידע - תחום ביולוגיה - Algorithms1.mp4,Algorithms2.mp4 - Lecture_15_Machine_Learning_(Stanford).mp4 Big DNA viruses (17-27).mp4,DNA basics (23-57).mp4 ניתן לראות בשורה ראשונה של הטבלה כי הרצאת ווידאו Algorithms1.mp4 מכילה 44186 מילים כאשר 4157 מילים שונות )ללא חזרות(, 6813 מילים "עצירה" etc.(,i(, do, in, 4547 מילות בסיס. ניתן ללמוד כי חצי מהמילים שקיבלנו הן חסרות משמעות )מילים "עצירה"(, יתר מזה מילים מיוחדות לתחומים מדעי המחשב ולביולוגיה לא מופיעות במילונים לכן לא מזוהות ולא מאונדקסות למנוע חיפוש. המילים הללו מאוד חשובות. למשל בהרצאה DNA basics (23-57)_107.mp4.csv מסבירים יסודות DNA ומילה DNA לא מופיעה במילונים, לכן לא ניתן למצוא את הרצאה לפי מילת חיפוש.DNA בעיה נוספת היא משך זמן של תהליך המרה קבצי מדיה לקבצי הטקסט מאוד ארוך. משך זמן עיבוד בערך שווה למשך הרצאה, כלומר אם משך הרצאה הוא שעה אזי משך המרה הוא בערך שעה. מסקנות במקרה בוחן אינדקסנו מעל 440 הרצאות מתחומים שונים כגון אלגוריתמים, כריעת מידה, ביולוגיה. סה"כ גודל כל הקבצי מדיה שהועלו למערכת : 1.077G סה"כ משך כל הרצאות : 50 שעות סה"כ משך תהליך המרה קבצי מדיה לקבצי טקסט : 50 שעות 51

סה"כ מספר מילים שזוהו : 481114 מילים סה"כ מספר מילות עצירה : 413046 מילים סה"כ מספר מילים בעלות משמעות : 415145 מילים מזה נובע כי בערך 60 אחוז מסה"כ מילים שזוהו הן חסרות משמעות סה"כ גודל כל הקבצי טקסט שהועלו למנוע חיפוש : 3.348M דוגמאות החיפוש חיפוש בהרצאה Algorithms2.mp4 מסבירים על אלגוריתמים מיון. כעת נחפש מילה "sort" ונקבל את הרצאה Algorithms2.mp4 בתוצאות החיפוש, כך שמילה "sort" נאמרה 60 פעמים ועוד 40 מופעים של מילות דומות)כגון )sorting, sorted למילה."sort" חיפוש צמד מילים בהרצאה Algorithms2.mp4 מסבירים אלגוריתם sort"."bubble כעת נחפש צמד מילים sort" "bubble ונקבל את הרצאה Algorithms2.mp4 בתוצאות החיפוש. נשים לב כי מנוע חיפוש מצא צמד sort","bubble ניתן לראות את הצמד לפי קרבה של חותמות הזמן של המילים: (15:45) sort.bubble (15:37)... 57