Microsoft Cognitive Services (5) - 使用Translator Text API翻譯文字

最近我們有很多案子大量地使用到Cognitive Services當中另一個很好用的服務,那就是 Translator Taxt API。這一組服務可以幫你識別文字的語系,當然也可以翻譯文字,用法相當簡單,只需要透過REST API呼叫即可。

使用前同樣需要在Azure站台上申請Translator Text服務(有免費方案),你會得到一組Key,可以從底下位置取得:

好了,有了需要的Key之後,我們就可以透過這組雲端服務來實際來撰寫翻譯程式了。

辨識輸入文字的語系

我們先看文字語系識別的部分,我們一樣透過Windows應用程式來示範,執行結果如下:

上方的文字方塊是我們輸入要辨識的文字,按下『判斷語系』鈕之後你會發現系統告訴我們,最有可能的語系是zh-Hant也就是繁體中文。

這算是相當正確的了,因為句子中有些中英夾雜,這樣的效果算是挺讓人滿意了。

我們來看程式碼,主程式只有兩行:

上面這段程式碼沒什麼內容,純粹就只是呼叫一個Detect方法,該方法是我們撰寫來透過http post呼叫遠端的辨識服務的,程式碼如下:

上面這段程式碼其實也非常簡單,透過HttpClient進行一個http post呼叫,呼叫的endpoint是:

https://api.cognitive.microsofttranslator.com/detect?api-version=3.0

然後把要辨識的文字text轉成JSON以body傳給該endpoint。比較需要注意的是,必須把剛才申請的key以Ocp-Apim-Subscription-Key這個header name一併傳遞過去。

取回結果後,我們再反序列化為物件,就完成了唷。由於辨識可能會有多種結果,所以回傳的物件result,我們取第一組辨識結果result.FirstOrDefault(),透過language屬性取得語系,透過score取得分數:

這個分數是辨識的可靠度,倘若用戶輸入的文字可能符合多個語系,可以透過這個score取得最符合的語系。

即時翻譯輸入的文字

接著我們來看文字翻譯的功能,使用的方式也非常簡單,我們先看執行的結果:

當我們按下翻譯鈕,底下出現的是翻譯後的結果,由於我們的目標語系是en(英文),Translator Text API很順利的把上面的文字翻成英文囉。

主要的程式碼如下:


我們建立了一個Translate方法,輸入的參數有要翻譯的文字text以及目標語系languageCode,微軟翻譯的功能透過http post呼叫,endpoint為:

https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=LanguageCode

你會發現翻譯的目標語系這個參數是放在endpoint URL中的,而要被翻譯的文字則是透過http body以JSON的形式傳遞給endpoint,同樣的,不要忘記把剛才申請的key以Ocp-Apim-Subscription-Key這個header name一併傳遞過去。

透過httpClient的SendAsync()方法呼叫之後,再把取得的結果反序列化為JSON,就可以很輕鬆的得到翻譯的結果了。因此我們Button中的主程式碼如下:


---

我們把透過Translator()方法翻譯的結果result,取得其中的translations物件,然後抓取第一組翻譯結果(to),就可以得到翻譯的答案了。

沒了,就這樣。是不是很簡單呢?

對了,為何是『第一組』翻譯結果?難道可能會有很多組答案?

其實我們是可以在endpoint放入多組目標語系的,例如:

https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=de&to=it

上面這樣的設定,會讓Translator Text API同時翻出兩種目標語系,德文和義大利文,所以translations物件中是可能有多組結果的,只是上面的範例我們只指定了一組,因此以FirstOrDefault().to抓第一組的翻譯結果就可以了,很簡單吧。

前面提到過,這個ranslator Text API相當好用,翻譯出的結果準度很高,最近我們大量地使用在相當多專案和LINE Bot的設計上,看到這邊你會不會有點躍躍欲試?

建議讀者可以先自行嘗試看看,我們後面會實際介紹如何開發一個LINE Bot翻譯機器人。

如果對MS這個服務有興趣,可以參考:
https://azure.microsoft.com/zh-tw/services/cognitive-services/translator-text-api/ 

它同樣有免費的方案唷。

btw, 既然有了好用的 Cognitive Services,就順手做一個翻譯的LINE Bot吧..

要玩玩看? 搜尋id @ejn1954w 加入即可。
或用手機點選底下連結:
https://line.me/R/ti/p/%40ejn1954w

enjoy~

--------------------------------------------
Microsoft Cognitive Services 系列文章總索引
線上課程:
https://www.udemy.com/line-bot/
電子書:https://www.pubu.com.tw/ebook/103305
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

留言

這個網誌中的熱門文章

使用 Airtable 在小型需求上取代傳統資料庫

在POC或迷你專案中使用 LiteDB

專業的價值...

精彩(且驚人)的Semantic Kernel入門範例

周末讀書會 - 一如既往