🐶

ローカルで動く翻訳ライブラリArgos Translate

2024/06/26に公開

Argos Translateとは

Pythonで書かれたオープンソースのオフライン翻訳ライブラリです。
翻訳にはOpenNMTを使用し、います。
特徴的な点として中間言語を自動的に切り替えて、直接翻訳がインストールされていない言語間の翻訳も管理します。たとえば、es → en と en → fr の翻訳がインストールされている場合制度は落ちます es -> en -> frの翻訳ができるようになります。
https://github.com/argosopentech/argos-translate?tab=readme-ov-file

サポートされている言語

アラビア語、アゼルバイジャン語、カタロニア語、中国語、チェコ語、デンマーク語、オランダ語、英語、エスペラント語、フィンランド語、フランス語、ドイツ語、ギリシャ語、ヘブライ語、ヒンディー語、ハンガリー語、インドネシア語、アイルランド語、イタリア語、日本語、韓国語、ペルシャ語、ポーランド語、ポルトガル語、ロシア語、スロバキア語、スペイン語、スウェーデン語、トルコ語、ウクライナ語など

インストール

pip install argostranslate

pipでインストールを行います。

argospm install translate

上記のコマンドですべての翻訳をインストールできます。

ARGOS_DEVICE_TYPE=cuda argos-translate --from-lang en --to-lang es "Hello World"

またGPUを有効にして翻訳を実効することができます。

コード例

import argostranslate.package
import argostranslate.translate

from_code = "en"
to_code = "ja"

# 翻訳パッケージのインデックスをアップデート
argostranslate.package.update_package_index()
# 有効なパッケージの取得
available_packages = argostranslate.package.get_available_packages()
package_to_install = next(
    filter(
        lambda x: x.from_code == from_code and x.to_code == to_code, available_packages
    )
)
# パッケージのインストール
argostranslate.package.install_from_path(package_to_install.download())

translatedText = argostranslate.translate.translate("Hello World", from_code, to_code)
print(translatedText)
# 'ハローワールド'

ほかサービスのとの比較

  • 条件
    • 英語から日本語への翻訳
    • Google, DeepL, argosで比較
Google 翻訳 DeepL翻訳 Argos Translate
Hello! こんにちは! こんにちは! お問い合わせ!
I'm an engineer 私はエンジニアです 私はエンジニアです エンジニア
The quick brown fox jumps over the lazy dog 素早い茶色のキツネが怠け者の犬を飛び越える 素早い茶色の狐は怠け者の犬を飛び越える 速い茶色のフォックスは怠惰な犬の上に飛びます
All in the golden afternoon
Full leisurely we glide;
For both our oars, with little skill,
By little arms are plied,
While little hands make vain pretence
Our wanderings to guide.
黄金色の午後、私たちはのんびりと滑走する。
両方のオールは、あまり上手に操れず、
小さな腕で操られ、
小さな手は、私たちの放浪を導くために、無駄なふりをする。
黄金の午後
悠々と滑走する;
私たちのオールは、小さな腕で
小さな腕で
小さな手が無駄な振りをしながら
われわれの放浪を導くために。
黄金の午後
余暇に私達はグライドします;
小さなスキルで、私たちの両方のオーアーのために、
小さな腕で、
小さな手が無駄な存在を作る
ガイドへのこだわり.

意味合いが近いものになりますがぶっちゃけそこまで精度は高いわけではなさそうです。ただ翻訳時にいくつか候補が選ばれるみたいなのでそこをなんとかすれば精度が上がるかもしれないです。
これまでの膨大な蓄積があるAPIには敵いませんが翻訳がローカルで行える点にロマンを感じます。

GitHubで編集を提案
SMARTCAMP Engineer Blog

Discussion