מדריך להטמעת טקסט ב-Python

המשימה 'כלי להטמעת טקסט של MediaPipe' מאפשרת ליצור ייצוג מספרי של נתוני טקסט לתעד את המשמעות הסמנטית שלו. ההוראות האלה מדגימות איך להשתמש כלי להטמעת טקסט באמצעות Python.

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

קוד לדוגמה

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

הגדרה

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

חבילות

כלי להטמעת טקסט משתמש בחבילת ה-Mediapipe Pip. אפשר להתקין את מערכת התלות עם:

$ python -m pip install mediapipe

יבוא

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

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import text

דגם

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

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

model_path = '/absolute/path/to/universal_sentence_encoder.tflite'

צריך לציין את הנתיב של המודל בתוך הפרמטר model_asset_path, כפי שמוצג למטה:

base_options = BaseOptions(model_asset_path=model_path)

יצירת המשימה

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

הקוד הבא מדגים איך יוצרים ומגדירים את המשימה הזו.

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
TextEmbedder = mp.tasks.text.TextEmbedder
TextEmbedderOptions = mp.tasks.text.TextEmbedderOptions

# For creating a text embedder instance:
options = TextEmbedderOptions(
    base_options=BaseOptions(model_asset_path=model_path),
    quantize=True)
text_embedder = TextEmbedder.create_from_options(options)

אפשרויות תצורה

המשימה הזו כוללת את אפשרויות ההגדרה הבאות לאפליקציות Python:

שם האפשרות תיאור טווח ערכים ערך ברירת מחדל
l2_normalize האם לנרמל את וקטור התכונה שמוחזר באמצעות נורמת L2. אפשר להשתמש באפשרות הזו רק אם המודל לא מכיל כבר L2_NORMALIZATION TFLite Op. ברוב המקרים, זה כבר המצב, כך מתקבלת נירמול L2 באמצעות הסקת TFLite ללא צורך לאפשרות הזו. Boolean False
quantize האם יש לכמת את ההטמעה שהוחזרה לבייטים באמצעות קוונטיזציה סקלרית. מניחים בהטמעות מרומזות שהן נורות-יחידה לכן מובטח שלכל מאפיין יהיה ערך ב-[-1.0, 1.0]. כדאי להשתמש אם זה לא המצב, תוכלו להשתמש באפשרות l2_regularize. Boolean False

הכנת נתונים

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

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

input_text = "The input text to be embedded."

הרצת המשימה

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

הקוד הבא מדגים איך מבצעים את העיבוד באמצעות מודל המשימה.

# Perform text embedding on the provided input text.
embedding_result = text_embedder.embed(input_text)

טיפול בתוצאות והצגתן

הכלי להטמעת טקסט מפיק פלט של TextEmbedderResult שמכיל רשימה של הטמעות (נקודה צפה או כמות סקלרית) לטקסט הקלט.

בדוגמה הבאה אפשר לראות את נתוני הפלט מהמשימה:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

אפשר להשוות את הדמיון הסמנטי בין שתי הטמעות באמצעות TextEmbedder.cosine_similarity. הקוד הבא מופיע לדוגמה.

# Compute cosine similarity.
similarity = TextEmbedder.cosine_similarity(
  embedding_result.embeddings[0],
  other_embedding_result.embeddings[0])