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:
- Klononi depon e git duke përdorur komandën e mëposhtme:
git clone https://github.com/google-ai-edge/mediapipe-samples
- 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 .