機器學習服務助應用內文本語種線上和離線檢測

来源:https://www.cnblogs.com/hmscore/archive/2022/06/13/16369642.html
-Advertisement-
Play Games

當用戶有跨語種交流或內容翻譯的需求時,應用需要能自動檢測文本的語種再進行翻譯。 HMS Core機器學習服務的語種檢測服務提供線上語種檢測和離線語種檢測,既支持檢測單語種文本,也支持檢測混合語種文本,涵蓋南非荷蘭語、阿拉伯語等百種語言。接入語種檢測服務,App可以輕鬆實現翻譯語種檢測、網頁語種檢測, ...


當用戶有跨語種交流或內容翻譯的需求時,應用需要能自動檢測文本的語種再進行翻譯。

HMS Core機器學習服務的語種檢測服務提供線上語種檢測離線語種檢測,既支持檢測單語種文本,也支持檢測混合語種文本,涵蓋南非荷蘭語、阿拉伯語等百種語言。接入語種檢測服務,App可以輕鬆實現翻譯語種檢測、網頁語種檢測,混合語種場景中語種檢測等,幫助App提升用戶體驗。

語種檢測流程

輸入文本,機器學習服務語種對該文本自動進行語種進行檢測,然後返回對應語種編碼和相應的置信度,或者返回一個置信度最高的語種編碼給開發者的應用。最終在開發app頁面呈現出翻譯出的文本。

效果演示

1.開發準備

在進行開發前需要配置HMS Core SDK的Maven倉地址

repositories {
    maven { 
url'https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/' }
}

集成線上語種檢測服務SDK,示例代碼如下

dependencies{
    implementation 'com.huawei.hms:ml-computer-language-detection:3.4.0.301'
}

2. 編輯工程集成

2.1設置應用的鑒權信息

可以通過api_key或者Access Token來設置應用鑒權信息。

通過setAccessToken方法設置Access Token,在應用啟動時初始化設置一次即可,無需多次設置。
MLApplication.getInstance().setAccessToken("your access token");

通過setApiKey方法設置api_key,在應用啟動時初始化設置一次即可,無需多次設置。
MLApplication.getInstance().setApiKey("your ApiKey");

2.2 創建語種檢測器

// 方式一:使用預設的參數配置創建語種檢測器。
MLRemoteLangDetector mlRemoteLangDetector = MLLangDetectorFactory.getInstance()
    .getRemoteLangDetector();
// 方式二:使用自定義的參數配置創建語種檢測器。
MLRemoteLangDetectorSetting setting = new MLRemoteLangDetectorSetting.Factory()
    // 設置語種檢測的最低置信度閾值。
    .setTrustedThreshold(0.01f)
    .create();
MLRemoteLangDetector mlRemoteLangDetector = MLLangDetectorFactory.getInstance()
    .getRemoteLangDetector(setting);

2.3 進行語種檢測

非同步方法示例代碼

// 方式一:返回多個語種檢測結果,包括語種編碼以及置信度,sourceText表示待檢測的文本,長度需小於5000個字元。
Task<List<MLDetectedLang>> probabilityDetectTask = mlRemoteLangDetector.probabilityDetect(sourceText);
probabilityDetectTask.addOnSuccessListener(new OnSuccessListener<List<MLDetectedLang>>() {
    @Override
    public void onSuccess(List<MLDetectedLang> result) {
        // 成功的處理邏輯。
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(Exception e) {
        // 失敗的處理邏輯。
        // Recognition failure.
        try {
            MLException mlException = (MLException)e;
            // 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
            int errorCode = mlException.getErrCode();
            // 獲取報錯信息,開發者可以結合錯誤碼,快速定位問題。
            String errorMessage = mlException.getMessage();
        } catch (Exception error) {
           // 轉換錯誤處理。
        }
    }
});
// 方式二:返回置信度最高的語種編碼,sourceText表示待檢測的文本,長度需小於5000個字元。
Task<String> firstBestDetectTask = mlRemoteLangDetector.firstBestDetect(sourceText);
firstBestDetectTask.addOnSuccessListener(new OnSuccessListener<String>() {
    @Override
    public void onSuccess(String s) {
        // 成功的處理邏輯。
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(Exception e) {
        // 失敗的處理邏輯。
        // Recognition failure.
        try {
            MLException mlException = (MLException)e;
            // 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
            int errorCode = mlException.getErrCode();
            // 獲取報錯信息,開發者可以結合錯誤碼,快速定位問題。
            String errorMessage = mlException.getMessage();
        } catch (Exception error) {
            // 轉換錯誤處理。
        }
    }
});

同步方法示例代碼

// 方式一:返回多個語種檢測結果,包括語種編碼以及置信度,sourceText表示待檢測的文本,長度需小於5000個字元。
try {
    List<MLDetectedLang> result= mlRemoteLangDetector.syncProbabilityDetect(sourceText);
} catch (MLException mlException) {
    // 失敗的處理邏輯。
    // 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
    int errorCode = mlException.getErrCode();
    // 獲取報錯信息,開發者可以結合錯誤碼,快速定位問題。
    String errorMessage = mlException.getMessage();
}
// 方式二:返回置信度最高的語種編碼,sourceText表示待檢測的文本,長度需小於5000個字元。
try {
    String language = mlRemoteLangDetector.syncFirstBestDetect(sourceText);
} catch (MLException mlException) {
    // 失敗的處理邏輯。
    // 獲取錯誤碼,開發者可以對錯誤碼進行處理,根據錯誤碼進行差異化的頁面提示。
    int errorCode = mlException.getErrCode();
    // 獲取報錯信息,開發者可以結合錯誤碼,快速定位問題。
    String errorMessage = mlException.getMessage();
}

2.4 檢測完成後,釋放資源。

if (mlRemoteLangDetector != null) {
    mlRemoteLangDetector.stop();
}

語種檢測功能包含端側和雲側,以上示例僅為雲側功能。

瞭解更多詳情>>

訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHubGitee

關註我們,第一時間瞭解 HMS Core 最新技術資訊~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1.先查看本機的系統信息 [root@h0436 h0436 zlong]# cat /etc/redhat-release 2.進入yum.repos.d [root@h0436 zlong]# cd /etc/yum.repos.d 3.查看 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 ifconfig 命令可以用於查看、配置、啟用或禁用指定的網路介面,還可以用來配置網卡的IP地址、掩碼、廣播地址、網關等,功能很豐富 功能雖然豐富,但是如果你沒有安裝呢? 嘿嘿嘿 如果沒有安裝ifconfig管理命令的話,直接運行ifconfig ...
  • 好消息!6月13日,騰訊雲資料庫三篇論文再次入選資料庫行業頂會SIGMOD,被SIGMOD 2022 Research Full Paper(研究類長文)收錄。 本次被收錄的研究成果中,新型數據結構設計、AI智能調參優化等均屬於業界首次提出。騰訊雲資料庫多次入選SIGMOD,表明騰訊雲資料庫在存儲、 ...
  • 本文將會和大家一起學習 SQL 的搜索條件中不可或缺的工具——謂詞(predicate)。SQL 謂詞就是返回值為 TRUE、FALSE 或 UNKNOWN 的表達式。 謂詞用於 WHERE 子句 和 HAVING 子句 的搜索條件中,還用於 FROM 子句的聯接條件以及需要布爾值的其他構造中。 本 ...
  • Apache ShardingSphere 助力噹噹 3.5 億用戶量級顧客系統重構,由 PHP+SQL Server 技術棧無縫轉型為 Java+ShardingSphere+MySQL,性能、可用性及維護性均得到顯著提升,是 ShardingSphere 異構遷移最佳實踐。 ...
  • 導讀: 作為一種基礎的數據結構,圖數據的應用場景無處不在,如社交、風控、搜廣推、生物信息學中的蛋白質分析等。如何高效地對海量的圖數據進行存儲、查詢、計算及分析,是當前業界熱門的方向。本文將介紹位元組跳動自研的圖資料庫ByteGraph及其在位元組內部的應用和挑戰。 本文將圍繞以下五點展開: 瞭解圖資料庫 ...
  • 新 能 力 3D Engine 3D Engine提供高性能、高畫質、高擴展性的實時3D引擎,並提供便捷高效的可視化開發工具。開發者可基於華為的3D Studio開發工具,通過圖形和渲染、動畫、UI等功能模塊,打造高品質的3D應用。同時引擎也開放三方插件的能力,致力協同全球圖形領域的伙伴研究創新技術 ...
  • 前言 ​ 採集應用程式崩潰信息,主要分為以下兩種場景: ​ NSException 異常 ​ Unix 信號異常 一、NSException 異常 ​ NSException 異常是 Objective-C 代碼拋出的異常。在 iOS 應用程式中,最常見就是通過 @throw 拋出的異常。比如,常見 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...