首頁  >  文章  >  後端開發  >  如何使用 AI 和 TransformersPHP 以程式設計方式翻譯內容

如何使用 AI 和 TransformersPHP 以程式設計方式翻譯內容

WBOY
WBOY原創
2024-09-01 06:32:07914瀏覽

在本文中,我將向您展示如何使用 TransformersPHP 函式庫以程式設計方式翻譯內容。
翻譯文字對於吸引全球受眾並確保不同語言的使用者都能存取您的內容至關重要。

第 1 步:設定項目

首先,請確保您已安裝 TransformersPHP 庫。您可以透過執行以下命令透過 Composer 安裝它:

composer require codewithkyrian/transformers

安裝過程中,您必須回答一個問題:

Do you trust "codewithkyrian/transformers-libsloader" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?]

您需要回答「是」才能啟用 Composer 外掛程式來下載 TransformersPHP 所需的所有共用程式庫。

安裝後,要求自動載入檔案載入所有必要的類別和相依性:

<?php
require "./vendor/autoload.php";

步驟2:導入必要的類

接下來,您需要匯入處理翻譯的相關類別和函數:

use Codewithkyrian\Transformers\Transformers;
use function Codewithkyrian\Transformers\Pipelines\pipeline;
  • Transformers:此類管理翻譯模型的設定與配置。
  • pipeline:此函數初始化您的特定翻譯管道。

第 3 步:初始化 Transformers 類

在翻譯內容之前,您必須設定 Transformers 類別:

Transformers::setup()->setCacheDir("./models")->apply();
  • setCacheDir():此方法定義快取模型的目錄,這可以避免重複下載,從而加快進程。
  • apply():完成設定並套用設定。

第 4 步:設定翻譯管道

下一步是使用預訓練模型建立翻譯管道:

$translationPipeline = pipeline("translation", 'Xenova/nllb-200-distilled-600M');
  • pipeline("translation", 'Xenova/nllb-200-distilled-600M'):此函數使用指定模型 Xenova/nllb-200-distilled-600M 設定翻譯管道,該模型能夠有效處理多種語言。

本例中用於翻譯的模型是 https://huggingface.co/Xenova/nllb-200-distilled-600M

第 5 步:提供翻譯內容

定義您要翻譯的句子:

$inputs = [
    "The quality of tools in the PHP ecosystem has greatly improved in recent years",
    "Some developers don't like PHP as a programming language",
    "I appreciate Laravel as a development tool",
    "Laravel is a framework that improves my productivity",
    "Using an outdated version of Laravel is not a good practice",
    "I love Laravel",
];

此陣列包含將翻譯成義大利文的英文句子。

第6步:翻譯內容

循環每個句子並翻譯它:

foreach ($inputs as $input) {
    $output = $translationPipeline(
        $input,
        maxNewTokens: 256,
        tgtLang: 'ita_Latn'
    );
    echo "?? " . $input . PHP_EOL;
    echo "?? " . trim($output[0]["translation_text"]) . PHP_EOL;
    echo PHP_EOL;
}

  • $translationPipeline($input, maxNewTokens: 256, tgtLang: 'ita_Latn'):此函數呼叫將每個英文句子翻譯成義大利語,maxNewTokens 限制翻譯的長度,tgtLang 指定目標語言為義大利語 (ita_Latn)。
  • rim($output[0]["translation_text"]):透過刪除任何前導或尾隨空格來清理翻譯文字。

此模型支援多種語言。若要使用 tgtLang 參數定義目標語言,必須使用語言代碼 FLORES-200。這裡有一個清單:https://github.com/facebookresearch/flores/blob/main/flores200/README.md#languages-in-flores-200

第一次執行腳本時,pipeline()函數會將所有模型檔案下載到目錄:models/Xenova/nllb-200-distilled-600M中。請耐心等待,模型很大,超過 800 MB。

How to translate content programmatically using AI and TransformersPHP

結論

使用 TransformersPHP,以程式方式翻譯內容是一個簡化的過程。透過設定環境、初始化必要的類別並定義翻譯管道,您可以輕鬆地將文字從一種語言轉換為另一種語言。這對於創建多語言網站、應用程式或內容特別有用,可以讓您有效地接觸更廣泛的受眾。

參考

  • TransformersPHP 網址:https://codewithkyrian.github.io/transformers-php/
  • TransformersPHP 原始碼:https://github.com/CodeWithKyrian/transformers-php
  • 關於 TransformersPHP 的介紹文章:https://dev.to/robertobutti/machine-learning-with-php-5gb
  • 如何使用 TransformersPHP 產生替代文字 https://dev.to/robertobutti/how-to-auto-generate-the-image-alt-text-using-ai-and-transformers-php-3onc
  • TransformersPHP 官方文件:https://codewithkyrian.github.io/transformers-php/introduction
  • 作者,令人驚嘆的 Kyrian https://x.com/CodeWithKyrian,感謝您為建立這個開源 PHP 專案所做的一切努力 ✨

以上是如何使用 AI 和 TransformersPHP 以程式設計方式翻譯內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn