Zadanie MediaPipe Text Embedder umożliwia utworzenie liczbowej reprezentacji danych tekstowych w uchwycić jego znaczenie semantyczne. Z tych instrukcji dowiesz się, jak korzystać z Umieszczanie tekstu w aplikacjach na Androida
Więcej informacji o funkcjach, modelach i opcjach konfiguracji zapoznaj się z Przeglądem.
Przykładowy kod
Przykładowy kod MediaPipe Tasks to prosta implementacja mechanizmu do umieszczania tekstu na Androida. W tym przykładzie oceniamy podobieństwo semantyczne między 2 aspektami. fragmentów tekstu i wymaga fizycznego urządzenia z Androidem lub systemu Android. za pomocą emulatora.
Możesz użyć tej aplikacji jako punktu wyjścia dla własnej aplikacji na Androida lub odnieść się do niej podczas modyfikowania istniejącej aplikacji. Przykładowy kod umieszczania tekstu na stronie jest hostowany GitHub
Pobieranie kodu
Poniżej znajdziesz instrukcje tworzenia lokalnej kopii przykładu. za pomocą narzędzia wiersza poleceń git.
Aby pobrać przykładowy kod:
- Sklonuj repozytorium git za pomocą tego polecenia:
git clone https://github.com/google-ai-edge/mediapipe-samples
- Opcjonalnie możesz skonfigurować instancję git tak, aby wykorzystywała rozproszony proces płatności, aby
tylko pliki przykładowej aplikacji Text Embedder:
cd mediapipe git sparse-checkout init --cone git sparse-checkout set examples/text_embedder/android
Po utworzeniu lokalnej wersji przykładowego kodu możesz zaimportować projekt w Android Studio i uruchom aplikację. Odpowiednie instrukcje znajdziesz w Przewodniku po konfiguracji na urządzeniu z Androidem.
Kluczowe elementy
Poniższe pliki zawierają kluczowy kod tego przykładowego narzędzia do umieszczania tekstu aplikacja:
- TextEmbedderHelper.kt: Inicjuje narzędzie do umieszczania tekstu i obsługuje model oraz przekazuje wybór.
- MainActivity.kt: Implementuje aplikację i montuje komponenty interfejsu.
Konfiguracja
W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu, w których używa się Text Embedder. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym wymagań wersji platformy znajdziesz w przewodniku konfiguracji dla na urządzeniu z Androidem.
Zależności
Narzędzie do dodawania tekstu korzysta z bibliotek com.google.mediapipe:tasks-text
. Dodaj to
zależności od pliku build.gradle
projektu programowania aplikacji na Androida.
Wymagane zależności możesz zaimportować przy użyciu tego kodu:
dependencies {
implementation 'com.google.mediapipe:tasks-text:latest.release'
}
Model
Zadanie MediaPipe Text Embedder wymaga wytrenowanego modelu zgodnego z tym zadanie. Więcej informacji na temat dostępnych wytrenowanych modeli dla funkcji Text Embedder znajdziesz w materiałach na temat zapoznaj się z omówieniem zadania sekcją Modele.
Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:
<dev-project-root>/src/main/assets
Określ ścieżkę modelu w parametrze ModelAssetPath
. W
przykładowego kodu, model jest zdefiniowany w funkcji setupTextEmbedder()
w
TextEmbedderHelper.kt
plik:
Użyj funkcji BaseOptions.Builder.setModelAssetPath()
, aby podać ścieżkę
używane przez model. Tę metodę przywołaliśmy w przykładzie kodu w następnym
.
Tworzenie zadania
Do utworzenia zadania możesz użyć jednej z funkcji createFrom...()
.
Funkcja createFromOptions()
akceptuje opcje konfiguracji, aby ustawić umieszczony element
. Możesz też zainicjować zadanie, używając fabryki createFromFile()
. Funkcja createFromFile()
akceptuje ścieżkę względną lub bezwzględną do
z plikiem wytrenowanego modelu. Więcej informacji o opcjach konfiguracji znajdziesz w artykule
Opcje konfiguracji:
Poniższy kod pokazuje, jak skompilować i skonfigurować to zadanie.
val baseOptions = baseOptionsBuilder.build()
val optionsBuilder =
TextEmbedderOptions.builder().setBaseOptions(baseOptions)
val options = optionsBuilder.build()
textEmbedder = TextEmbedder.createFromOptions(context, options)
Przykładowa implementacja kodu ustawia opcje umieszczania tekstu w sekcji
setupTextEmbedder()
w
TextEmbedderHelper.kt
.
Opcje konfiguracji
To zadanie zawiera te opcje konfiguracji aplikacji na Androida:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
---|---|---|---|
l2_normalize |
Określa, czy znormalizować zwrócony wektor cech z normą L2. Użyj tej opcji tylko wtedy, gdy model nie zawiera jeszcze reklamy natywnej L2_NORMALIZATION TFLite Op. W większości przypadków tak jest i tak, Normalizacja L2 jest więc osiągana przez wnioskowanie TFLite i nie ma potrzeby dla tej opcji. | Boolean |
False |
quantize |
Określa, czy zwrócony wektor dystrybucyjny powinien być skwantyzowany na bajty za pomocą kwantyzacji skalarnej. Odtwarzacze domyślnie przyjmuje się, że są zgodne z normą jednostkową, w związku z tym każdy wymiar będzie miał wartość w zakresie [-1,0; 1,0]. Używaj wybierz opcję l2_normalize. | Boolean |
False |
Przygotuj dane
Narzędzie do dodawania tekstu działa z danymi tekstowymi (String
). Zadanie obsługuje wprowadzanie danych
w tym wstępnego przetwarzania danych, w tym tokenizacji i tensorów. Wszystkie
wstępne przetwarzanie jest obsługiwane w ramach funkcji embed()
. Nie ma potrzeby
dodatkowego wstępnego przetwarzania tekstu wejściowego.
val inputText = "The input text to be embedded."
Uruchamianie zadania
Narzędzie do dodawania tekstu używa funkcji embed
do aktywowania wnioskowania. Tekst
oznacza to zwracanie wektorów dystrybucyjnych dla tekstu wejściowego.
Poniższy kod ilustruje, jak wykonywać przetwarzanie za pomocą modelu zadań.
textEmbedder?.let {
val firstEmbed =
it.embed(firstText).embeddingResult().embeddings().first()
val secondEmbed =
it.embed(secondText).embeddingResult().embeddings().first()
...
}
W przykładowym kodzie funkcja embed
jest wywoływana w parametrze
TextEmbedderHelper.kt
.
Obsługa i wyświetlanie wyników
Po uruchomieniu wnioskowania zadanie umieszczania tekstu zwraca błąd TextEmbedderResult
obiekt zawierający listę reprezentacji właściwościowych (zmiennoprzecinkowych lub
kwantyzowanych skalarnie) dla tekstu wejściowego.
Poniżej znajdziesz przykładowe dane wyjściowe tego zadania:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Możesz porównać semantyczne podobieństwo dwóch wektorów dystrybucyjnych za pomocą funkcji
TextEmbedder.cosineSimilarity
. Poniżej znajdziesz przykładowy kod.
val similarity = TextEmbedder.cosineSimilarity(firstEmbed, secondEmbed)
W przykładowym kodzie funkcja TextEmbedder.cosineSimilarity()
jest wywoływana w parametrze
TextEmbedderHelper.kt
.