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

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

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

קוד לדוגמה

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

הגדרה

בקטע הזה מתוארים שלבים עיקריים להגדרת סביבת הפיתוח ופרויקטים של קוד במיוחד לשימוש ב-Text Implementder. למידע כללי על הגדרת סביבת הפיתוח לשימוש במשימות 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 נדרש מודל מאומן שתואם למשימה הזו. למידע נוסף על המודלים הזמינים להטמעת טקסט, עיינו בסקירה הכללית על המשימות בקטע Models.

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

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

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

base_options = BaseOptions(model_asset_path=model_path)

יצירת המשימה

המשימה 'הטמעת טקסט ב-MediaPipe' משתמשת בפונקציה 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. . ברוב המקרים, זה כבר המצב, וכתוצאה מכך מתקבל מסקנות של TFLite, ללא צורך באפשרות הזו. Boolean False
quantize האם יש לכמת את ההטמעה שמוחזרת לבייטים באמצעות קוונטיזציה סקלרית. ההנחה היא שההטמעות הן נורמת יחידה, ולכן לכל מאפיין מובטח שיהיה ערך [ -1.0, 1.0]. אם זה לא המצב, מומלץ להשתמש באפשרות l2_Normalize. 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 שמכיל רשימה של הטמעות (floating-point או סקלריים) לטקסט הקלט.

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

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])