Argos Translateでオフライン翻訳

Argos Translateを使えば、Pythonでオフライン翻訳ができると聞いたので、早速テストしてみた。

まずはモジュールのインストール

pip install argostranslate

GitのExampleにある様にスクリプト書けば動く。

import argostranslate.package
import argostranslate.translate

from_code = "jp"
to_code = "en"

# Download and install Argos Translate package
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())

# Translate
translatedText = argostranslate.translate.translate("こんにちは、世界!", from_code, to_code)
print(translatedText)

翻訳用のモデルは初回時にユーザーディレクトリに勝手にダウンロードされるのだが、これだと、いまいちファイルの取り回しがめんどくさい。

そこで、自分でダウンロードして、しかるべき場所に配置・管理する方法を調べてみた。

1.翻訳用のモデルをArgos open techからダウンロード
https://www.argosopentech.com/argospm/index/

2.とりあえず、和英と英和用のものを入手(translate-ja_en-1_1.argosmodel、translate-en_ja-1_1.argosmodel)し、スクリプトと同じ階層に配置

3.配置したモデルを利用する形にExampleスクリプトを改造。

import argostranslate.package
import argostranslate.translate

from_code = "jp"
to_code = "en"

jpen_model = "./translate-ja_en-1_1.argosmodel" #日>英用モデル
enjo_model = "./translate-en_ja-1_1.argosmodel" # 英>日用モデル

argostranslate.package.install_from_path(jpen_model)
argostranslate.package.install_from_path(enjo_model)

# Translate
translatedText = argostranslate.translate.translate("こんにちは、世界!", from_code, to_code)
print(translatedText)

長文の翻訳は厳しいし、実用的とはまだ言えないけど、遊ぶ分には問題ないし、お金を気にぜず使えるのは嬉しい!