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

Detyra MediaPipe 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 me aplikacionet Android.

Për më shumë informacion rreth aftësive, modeleve dhe opsioneve të konfigurimit të kësaj detyre, shihni Përmbledhjen .

Shembull kodi

Kodi i shembullit të MediaPipe Tasks është një zbatim i thjeshtë i një aplikacioni Text Embedder për Android. Shembulli vlerëson ngjashmëritë semantike midis dy pjesëve të tekstit dhe kërkon ose një pajisje fizike Android ose një emulator Android.

Mund ta përdorni aplikacionin si pikënisje për aplikacionin tuaj Android ose t'i referoheni kur modifikoni një aplikacion ekzistues. Shembulli i kodit Text Embedder është i pritur 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-samples
    git sparse-checkout init --cone
    git sparse-checkout set examples/text_embedder/android
    

Pas krijimit të një versioni lokal të kodit shembull, mund ta importoni projektin në Android Studio dhe të ekzekutoni aplikacionin. Për udhëzime, shihni Udhëzuesin e konfigurimit për Android .

Komponentët kryesorë

Skedarët e mëposhtëm përmbajnë kodin vendimtar për këtë aplikacion shembulli të ngulitësit të tekstit:

  • TextEmbedderHelper.kt : Inicializon ngulitësin e tekstit dhe trajton përzgjedhjen e modelit dhe delegatit.
  • MainActivity.kt : Zbaton aplikacionin dhe monton komponentët e ndërfaqes së përdoruesit.

Konfigurimi

Ky seksion përshkruan hapat kryesorë për konfigurimin e mjedisit tuaj të zhvillimit dhe projekteve të kodit në mënyrë specifike 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 Android .

varësitë

Teksti Embedder përdor bibliotekat com.google.mediapipe:tasks-text . Shtoni këtë varësi në skedarin build.gradle të projektit tuaj të zhvillimit të aplikacionit Android. Ju mund të importoni varësitë e kërkuara me kodin e mëposhtëm:

dependencies {
    implementation 'com.google.mediapipe:tasks-text:latest.release'
}

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 mbi modelet e trajnuara të disponueshme për Text Embedder, shihni seksionin Modelet e përmbledhjes së detyrave.

Zgjidhni dhe shkarkoni modelin dhe më pas ruajeni në direktorinë e projektit tuaj:

<dev-project-root>/src/main/assets

Specifikoni shtegun e modelit brenda parametrit ModelAssetPath . Në kodin e shembullit, modeli përcaktohet në funksionin setupTextEmbedder() në skedarin TextEmbedderHelper.kt :

Përdorni funksionin BaseOptions.Builder.setModelAssetPath() për të specifikuar shtegun e përdorur nga modeli. Kjo metodë është referuar në shembullin e kodit në seksionin tjetër.

Krijo detyrën

Ju mund të përdorni një nga funksionet createFrom...() për të krijuar detyrën. Funksioni createFromOptions() pranon opsionet e konfigurimit për të vendosur opsionet e embedder-it. Ju gjithashtu mund të inicializoni detyrën duke përdorur funksionin e fabrikës createFromFile() . Funksioni createFromFile() pranon një shteg relative ose absolute drejt skedarit të modelit të trajnuar. Për më shumë informacion mbi opsionet e konfigurimit, shihni Opsionet e konfigurimit .

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

val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
    TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)

Shembulli i zbatimit të kodit vendos opsionet e futësit të tekstit në funksionin setupTextEmbedder() në skedarin TextEmbedderHelper.kt .

Opsionet e konfigurimit

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

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

Përgatitni të dhënat

Teksti Embedder punon me të dhëna teksti ( String ). Detyra trajton parapërpunimin e hyrjes së të dhënave, duke përfshirë parapërpunimin e tokenizimit dhe tensorit. I gjithë parapërpunimi trajtohet brenda funksionit embed() . Nuk ka nevojë për përpunim shtesë të tekstit të hyrjes paraprakisht.

val inputText = "The input text to be embedded."

Drejtoni detyrën

Teksti Embedder përdor funksionin embed për të nxjerrë përfundime. Për futjen e tekstit, kjo nënkupton kthimin e vektorëve të ngulitjes për tekstin hyrës.

Kodi i mëposhtëm tregon se si kryhet përpunimi me modelin e detyrës.

textEmbedder?.let {
    val firstEmbed =
        it.embed(firstText).embeddingResult().embeddings().first()
    val secondEmbed =
        it.embed(secondText).embeddingResult().embeddings().first()
    ...
}

Në kodin e shembullit, funksioni embed thirret në skedarin TextEmbedderHelper.kt .

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 funksionin TextEmbedder.cosineSimilarity . Shih kodin e mëposhtëm për një shembull.

val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)

Në kodin shembull, funksioni TextEmbedder.cosineSimilarity() thirret në skedarin TextEmbedderHelper.kt .