כיצד לחפש הטמעות עבור ההתאמה הקרובה ביותר

Kyzd Lhps Htm Wt Bwr Hht Mh Hqrwbh Bywtr



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

תחביר

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







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



דוגמה 1: הטמעת ההתאמה הקרובה ביותר באמצעות הטמעות מילים

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



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





בואו ניצור הטבעת מילה למשפט. כדי ליצור את המילה הטמעת, Python מספק את המסגרת 'gensim'. Gensim היא חבילת ספרייה המאפשרת שימוש במודל 'word2vec' המסייע ביצירת ההטמעות. כדי ליישם את ההטמעה, אנו מקפידים קודם כל להתקין את gensim במהדרים של Python. לאחר מכן, מה-gensim, אנו מייבאים את מודל 'word2vec'.

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



לאחר ייבוא ​​מודל 'word2vec', אנו מציינים את ה'טקסט'. לאחר שנציין את הטקסט, אנו מאמנים את מודל 'word2vec' זה על ידי העברתו עם הטקסט וקביעת הספירה המינימלית שווה ל-'1'. כעת, אנו קוראים למודל המיומן הזה 'word2vec.wv.most_similar('consume')' ומאכילים את המילה שההטבעות הקרובות ביותר שלה אנחנו רוצים לבדוק שבה בדוגמה זו היא 'צריכה'. כדי לבדוק את תוצאות ההטמעה, אנו מדפיסים את הפלט מהדגם:

מ כעם דגמים יְבוּא Word2Vec
טֶקסט = [ [ 'ארנב' , 'יש ל' , 'שיניים' ] ]
דֶגֶם = Word2Vec ( טֶקסט , min_count = 1 )
דומה_הטבעה = דֶגֶם. wv . הכי_דומה ( 'ארנב' )
הדפס ( דומה_הטבעה )

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

דוגמה 2: הטמעת החיפוש הקרוב ביותר באמצעות מודל BERT

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

ברגע שזה נעשה, נוכל להשתמש במודל זה כדי ללמוד את ההטבעות. לאחר מכן, נוכל לחשב את הדמיון בין הטקסטים באמצעות פונקציית 'דמיון קוסינוס'. אנו מיישמים דוגמה זו בפלטפורמת Python המקוונת שהיא 'google colab'. כדי לכוונן את הדגם, אנו טוענים את הדגם (BERT). לשם כך, אנו מתקינים ומייבאים תחילה את 'SentenceTransformers'. לאחר מכן, אנו טוענים את הדגם מהדגם המאומן שלו באמצעות ה-SenenceTransformer. כדי לטעון את המודל, אנו קוראים ל-SentenceTransformer ולמודל BERT לגמרי בתור '$SentenceTransformer('bert-base-nli-mean-tokens')', שם אנו מציינים את השם של המודל שהוכשר מראש של BERT בפרמטר הקלט ו אז אנחנו שומרים את זה במשתנה 'BERTmodel'.

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

אנו קוראים לפונקציית הקידוד עם הקידומת של מודל BERT בשם 'BERTmodel.encoding ()'. לאחר מכן אנו מעבירים את ה'טקסט' ואת ה'אורך המקסימלי' שתיקנו להיות שווה ל'512' לפרמטרים של פונקציה זו. אנו קוראים לפונקציית קידוד זו בכל אחד מהטקסטים, והיא ממירה את הטקסט להטמעות.

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

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

!pip להתקין משפט_שנאים
משפטים = [
'ארבע שנים לפני כן, הבקבוק אפילו היה מלא ו.',
'הכלבה חלמה את הבריחה מהכלוב וברחוב שבו ראתה את חברתה הולכת'.
'האדם שיחק עם מדוזה במשך חודשים רבים.',
'הוא מצא חילזון בארון הבגדים שלו.']
מ- sentence_transformers ייבוא ​​SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
sentence_embeddings = Bertmodel.encode(sences)
צורת_הטבעות
מאת sklearn.metrics.pairwise ייבוא ​​cosine_similarity
# calculate=ing דמיון קוסינוס למשפט 0:
cosine_similarity(
[הטבעות_משפט[0]],
הטמעות_משפט[1:])

המערך בפלט מציג את ערך הדמיון של 'המשפט 0' לשלושת המשפטים האחרים, למשל. 1, 2 ו-3.

סיכום

דנו בשיטות כדי למצוא את הדמיון בין ההטבעות. הצגנו שתי דוגמאות שונות לחיפוש אחר ההתאמה הקרובה ביותר של ההטמעה באמצעות מודל ה-gensim 'word2vec' ומודל BERT שהוכשר מראש.