Udhëzues për futjen e tekstit për iOS

Detyra Text Embedder ju lejon të krijoni një paraqitje numerike të të dhënave të tekstit për të kapur kuptimin e tij semantik. Këto udhëzime ju tregojnë se si të përdorni Text Embedder në aplikacionet iOS.

Ju mund ta shihni këtë detyrë në veprim duke parë këtë demonstrim në ueb . Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .

Shembull kodi

Kodi shembull për Text Embedder ofron një zbatim bazë të një aplikacioni për iOS që integron këtë detyrë. Shembulli vlerëson ngjashmëritë semantike midis dy pjesëve të tekstit dhe kërkon ose një pajisje fizike iOS ose një simulator iOS.

Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj iOS ose t'i referoheni kur modifikoni një aplikacion ekzistues. Mund t'i referoheni kodit të shembullit të Text Embedder në GitHub .

Shkarkoni kodin

Udhëzimet e mëposhtme ju tregojnë se si të krijoni një kopje lokale të kodit shembull duke përdorur mjetin e linjës së komandës git .

Për të shkarkuar kodin shembull:

  1. Klononi depon e git duke përdorur komandën e mëposhtme:

    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. Opsionale, konfiguroni shembullin tuaj të git për të përdorur arkëtimin e rrallë, në mënyrë që të keni vetëm skedarët për shembullin e aplikacionit Text Embedder:

    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/text_embedder/ios/
    

Pas krijimit të një versioni lokal të kodit shembull, mund të instaloni bibliotekën e detyrave MediaPipe, të hapni projektin duke përdorur Xcode dhe të ekzekutoni aplikacionin. Për udhëzime, shihni Udhëzuesin e konfigurimit për iOS .

Komponentët kryesorë

Skedarët e mëposhtëm përmbajnë kodin vendimtar për shembullin e aplikacionit Text Embedder:

Konfigurimi

Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit dhe projekteve të kodit për të përdorur Text Embedder. Për informacion të përgjithshëm mbi konfigurimin e mjedisit tuaj të zhvillimit për përdorimin e detyrave të MediaPipe, duke përfshirë kërkesat e versionit të platformës, shihni udhëzuesin e konfigurimit për iOS .

varësitë

Text Embedder përdor bibliotekën MediaPipeTasksText , e cila duhet të instalohet duke përdorur CocoaPods. Biblioteka është e pajtueshme me të dy aplikacionet Swift dhe Objective-C dhe nuk kërkon ndonjë konfigurim shtesë specifik për gjuhën.

Për udhëzime për instalimin e CocoaPods në macOS, referojuni udhëzuesit të instalimit të CocoaPods . Për udhëzime se si të krijoni një Podfile me pods-et e nevojshme për aplikacionin tuaj, referojuni Përdorimit të CocoaPods .

Shtoni podin MediaPipeTasksTextPodfile duke përdorur kodin e mëposhtëm:

target 'MyTextEmbedderApp' do
  use_frameworks!
  pod 'MediaPipeTasksText'
end

Nëse aplikacioni juaj përfshin objektiva testimi të njësisë, referojuni Udhëzuesit të konfigurimit për iOS për informacion shtesë mbi konfigurimin e skedarit tuaj Podfile .

Model

Detyra MediaPipe Text Embedder kërkon një model të trajnuar që është në përputhje me këtë detyrë. Për më shumë informacion rreth modeleve të trajnuara të disponueshme për Text Embedder, shihni seksionin Modelet e përmbledhjes së detyrave.

Zgjidhni dhe shkarkoni një model dhe shtoni atë në drejtorinë e projektit tuaj duke përdorur Xcode. Për udhëzime se si të shtoni skedarë në projektin tuaj Xcode, referojuni Menaxhimi i skedarëve dhe dosjeve në projektin tuaj Xcode .

Përdorni veçorinë BaseOptions.modelAssetPath për të specifikuar shtegun drejt modelit në paketën tuaj të aplikacionit. Për një shembull kodi, shihni seksionin tjetër.

Krijo detyrën

Ju mund të krijoni detyrën Text Embedder duke thirrur një nga inicializuesit e tij. Inicializuesi TextEmbedder(options:) pranon vlerat për opsionet e konfigurimit.

Nëse nuk keni nevojë për një Text Embedder të inicializuar me opsione të personalizuara të konfigurimit, mund të përdorni iniciatorin TextEmbedder(modelPath:) për të krijuar një Text Embedder me opsionet e paracaktuara. Për më shumë informacion rreth opsioneve të konfigurimit, shihni Përmbledhjen e konfigurimit .

Kodi i mëposhtëm tregon se si të ndërtohet dhe konfigurohet kjo detyrë.

Swift

import MediaPipeTasksText

let modelPath = Bundle.main.path(forResource: "model",
                                      ofType: "tflite")

let options = TextEmbedderOptions()
options.baseOptions.modelAssetPath = modelPath
options.quantize = true

let textEmbedder = try TextEmbedder(options: options)

Objektivi-C

@import MediaPipeTasksText;

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"model"
                                                      ofType:@"tflite"];

MPPTextEmbedderOptions *options = [[MPPTextEmbedderOptions alloc] init];
options.baseOptions.modelAssetPath = modelPath;
options.quantize = YES;

MPPTextEmbedder *textEmbedder =
      [[MPPTextEmbedder alloc] initWithOptions:options error:nil];

Opsionet e konfigurimit

Kjo detyrë ka opsionet e mëposhtme të konfigurimit për aplikacionet iOS:

Emri i opsionit Përshkrimi Gama e vlerave Vlera e paracaktuar
l2_normalize Nëse do të normalizohet vektori i tipareve të kthyera me normën L2. Përdoreni këtë opsion vetëm nëse modeli nuk përmban tashmë një L2_NORMALIZATION TFLite Op. Në shumicën e rasteve, ky është tashmë rasti dhe normalizimi i L2 arrihet në këtë mënyrë përmes përfundimit të TFLite pa pasur nevojë për këtë opsion. Boolean False
quantize Nëse futja e kthyer duhet të kuantizohet në bajt nëpërmjet kuantizimit skalar. Përfshirjet supozohen në mënyrë implicite si njësi-normë dhe për këtë arsye çdo dimension është i garantuar të ketë një vlerë në [-1.0, 1.0]. Përdorni opsionin l2_normalize nëse nuk është kështu. Boolean False

Drejtoni detyrën

Për të futur tekstin hyrës dhe për të marrë vektorët e tij të ngulitjes, mund të përdorni metodën embed(text:)TextEmbedder .

Swift

let result = try textEmbedder.embed(text: text)

Objektivi-C

MPPTextEmbedderResult *result = [textEmbedder embedText:text
                                                  error:nil];

Shënim : Detyra bllokon fillin aktual derisa të përfundojë ekzekutimin e konkluzioneve në tekst. Për të shmangur bllokimin e fillit aktual, ekzekutoni përpunimin në një fill në sfond duke përdorur kornizat iOS Dispatch ose NSOoperation . Nëse aplikacioni juaj është krijuar duke përdorur Swift, mund të përdorni gjithashtu Swift Concurrency për ekzekutimin e fillit në sfond.

Në kodin e shembullit, metoda embed(text:) thirret në skedarin TextEmbedderService.swift .

Trajtoni dhe shfaqni rezultatet

Pas ekzekutimit të konkluzionit, detyra e Text Embedder kthen një objekt TextEmbedderResult që përmban një listë ngulitjesh (qoftë me pikë lundruese ose të kuantizuara në shkallë) për tekstin hyrës.

Më poshtë tregon një shembull të të dhënave dalëse nga kjo detyrë:

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

Ju mund të krahasoni ngjashmërinë semantike të dy futjeve duke përdorur metodën TextEmbedder.cosineSimilarity .

let similarity = try TextEmbedder.cosineSimilarity(
  embedding1: result.embeddingResult.embeddings[0],
  embedding2: otherResult.embeddingResult.embeddings[0])
    
NSNumber *similarity = [MPPTextEmbedder
      cosineSimilarityBetweenEmbedding1:result.embeddingResult.embeddings[0]
                          andEmbedding2:otherResult.embeddingResult.embeddings[0]
                                  error:nil];
    

Në kodin e shembullit, metoda TextEmbedder.cosineSimilarity thirret në skedarin TextEmbedderService.swift .