Android 語言偵測指南

MediaPipe 語言偵測工具工作可讓您找出一段文字的語言。這些 操作說明,示範如何搭配使用語言偵測器與 Android 應用程式。程式碼 您可在 GitHub

您可以前往 demo」。 進一步瞭解功能、模型和設定選項 請參閱總覽

程式碼範例

語言偵測器的範例程式碼提供了一項簡單的實作 做為參考的任務這個程式碼可協助您測試這項工作並開始進行 建構自己的語言偵測功能您可以瀏覽 語言偵測工具範例程式碼

下載程式碼

以下說明如何建立範例的本機副本 編寫程式碼。

如要下載範例程式碼,請按照下列步驟操作:

  1. 使用下列指令複製 git 存放區:
    git clone https://github.com/google-ai-edge/mediapipe-samples
    
  2. 您也可以選擇設定 Git 執行個體,以使用稀疏結帳功能。 因此,您僅使用語言偵測器範例應用程式的檔案:
    cd mediapipe
    git sparse-checkout init --cone
    git sparse-checkout set examples/languagedetector/android
    

如需使用 Android Studio 設定及執行範例的操作說明, 請參閱「 Android 設定指南

重要元件

以下檔案包含有關文字分類的重要程式碼 範例應用程式:

設定

本節說明設定開發環境的重要步驟,以及 專門使用 Language Detector 的程式碼專案如需 設定開發環境以使用 MediaPipe 工作,包括: 平台版本需求,請參閱 Android 設定指南

依附元件

語言偵測器會使用 com.google.mediapipe:tasks-text 程式庫。新增此項目 Android 應用程式開發專案的 build.gradle 檔案的依附元件。 您可以使用下列程式碼匯入必要的依附元件:

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

型號

MediaPipe 語言偵測器工作需要一個與此相容的已訓練模型 工作。如要進一步瞭解語言偵測器可用的已訓練模型,請參閱: 工作總覽的「模型」一節

選取並下載模型,然後將模型儲存在專案目錄中:

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

ModelName 參數中指定模型的路徑。

建立工作

您可以使用其中一個 createFrom...() 函式建立工作。 createFromOptions() 函式接受設定選項的語言 偵測工具。您也可以使用 createFromFile() 工廠初始化工作 函式。createFromFile() 函式可接受 訓練好的模型檔案如需更多關於設定工作的資訊,請參閱 設定選項

下列程式碼示範如何建立及設定這項工作。

// For creating a language detector instance:
LanguageDetectorOptions options =
       LanguageDetectorOptions.builder()
       .setBaseOptions(
          BaseOptions.builder()
            .setModelAssetPath(modelPath)
            .build()
          )
       .build();
LanguageDetector languageDetector = LanguageDetector.createFromOptions(context, options);

您可以在程式碼範例中查看如何建立任務的範例 LanguageDetectorHelper initDetector() 類別函式。

設定選項

這項工作有下列 Android 應用程式設定選項:

選項名稱 說明 值範圍 預設值
maxResults 將最高分數的語言預測結果 (選用) 設為 傳回。如果此值小於零,則會傳回所有可用的結果。 任何正數 -1
scoreThreshold 設定預測分數門檻,此門檻會覆寫 模型中繼資料 (如有)低於這個值的結果遭到拒絕。 任何浮點值 未設定
categoryAllowlist 設定允許的語言代碼清單 (選用)。如果非空白 如果語言代碼中沒有對應的語言代碼,則系統會 過濾掉。這個選項會與 categoryDenylist 和同時使用這兩種方法都會發生錯誤。 任何字串 未設定
categoryDenylist 設定不允許的語言代碼清單 (選用)。如果 非空白的語言預測結果如果包含此集合中的語言代碼,系統就會加以篩選 。這個選項與 categoryAllowlist 和 同時使用這兩種方法都會發生錯誤。 任何字串 未設定

準備資料

語言偵測工具支援文字 (String) 資料。這個工作會處理資料輸入 預先處理作業,包括符記化和張量預先處理。所有語言 預先處理會在 detect() 函式中處理。不需要使用 預先處理輸入文字的額外內容

String inputText = "Some input text for the language detector";

執行工作

語言偵測器使用 LanguageDetector.detect() 方法處理輸入 並且預測文字的語言您應該 執行偵測以避免封鎖 Android 使用者的執行緒 與應用程式的介面執行緒互動

下列程式碼示範如何使用 工作執行處理程序 建構機器學習模型

// Predict the language of the input text.
fun classify(text: String) {
    executor = ScheduledThreadPoolExecutor(1)

    executor.execute {
        val results = languageDetector.detect(text)
        listener.onResult(results)
    }
}

您可以在程式碼範例中查看如何執行工作的範例 LanguageDetectorHelper detect() 類別函式。

處理及顯示結果

語言偵測器會輸出 LanguageDetectorResult 以及生成這些預測結果的機率 語言類別是由模型定義,請參閱工作總覽 「模型」一節,進一步瞭解您使用的模型。

以下範例顯示這項工作的輸出資料範例:

LanguageDetectorResult:
  LanguagePrediction #0:
    language_code: "fr"
    probability: 0.999781

透過對輸入文字執行模型來取得這個結果: "Il y a beaucoup de bouches qui parlent et fort peu de têtes qui pensent."

您可以在程式碼範例中查看如何顯示結果的範例 ResultsAdapter 類別和 ViewHolder 內部類別。