ホームページ  >  記事  >  バックエンド開発  >  AI と TransformersPHP を使用してプログラムでコンテンツを翻訳する方法

AI と TransformersPHP を使用してプログラムでコンテンツを翻訳する方法

WBOY
WBOYオリジナル
2024-09-01 06:32:071020ブラウズ

この記事では、TransformersPHP ライブラリを使用して PHP でコンテンツをプログラム的に翻訳する方法を説明します。
テキストの翻訳は、世界中の視聴者にリーチし、さまざまな言語を話す人がコンテンツに確実にアクセスできるようにするために不可欠です。

ステップ 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: このクラスは、変換モデルのセットアップと構成を管理します。
  • パイプライン: この関数は、特定の翻訳パイプラインを初期化します。

ステップ 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) として指定します。
  • トリム($output[0]["translation_text"]): 先頭または末尾の空白を削除して、翻訳されたテキストをクリーンアップします。

このモデルは多くの言語をサポートしています。 tgtLang パラメータを使用してターゲット言語を定義するには、言語コード FLORES-200 を使用する必要があります。ここにリストがあります: https://github.com/facebookresearch/flores/blob/main/flores200/README.md#langages-in-flores-200

スクリプトの最初の実行で、pipeline() 関数はすべてのモデル ファイルをディレクトリ models/Xenova/nllb-200-distilled-600M にダウンロードします。モデルは 800 MB を超える巨大なものなので、しばらくお待ちください。

How to translate content programmatically using AI and TransformersPHP

結論

TransformersPHP を使用すると、プログラムによるコンテンツの翻訳が合理化されたプロセスになります。環境をセットアップし、必要なクラスを初期化し、翻訳パイプラインを定義することで、テキストをある言語から別の言語に簡単に変換できます。これは、多言語の Web サイト、アプリケーション、コンテンツを作成する場合に特に便利で、より幅広い視聴者に効果的にリーチできるようになります。

参考文献

  • TransformersPHP Web サイト: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。