OSSの機械翻訳ソフトウェアのArgos Translate というものがあります.なんとなく重そうだなと思って触ったことがなかったのですが,Argos Translate ベースのLibre Translate がRaspberry Pi 4 でも動く 🏛️ということで,それなら手元のマシンでも大丈夫だろうと試してみました.
導入
$ mkdir ./argostranslate $ cd ./argostranslate/ $ python3 -m venv venv $ source venv/bin/activate $ pip install argostranslate $ du -Hs . 3449892 .
venv で環境切ってpip で導入しました.
argospm コマンドで翻訳モデルデータ入手$ argospm --help
usage: argospm [-h] {update,search,install,list,remove} ...
positional arguments:
{update,search,install,list,remove}
Available commands.
update Downloads remote package index.
search Search package from remote index.
install Install package.
list List installed packages.
remove Remove installed package.
options:
-h, --help show this help message and exit
$ argospm update (1)
$ argospm search | wc -l (2)
58
$ argospm search --to-lang ja (3)
translate-en_ja: en -> ja
$ argospm search --from-lang ja (4)
translate-ja_en: ja -> en
$ argospm install translate-en_ja (5)
$ argospm install translate-ja_en (6)
$ du -Hs ~/.local/share/argos-translate/packages/*ja* (7)
131380 /home/matoken/.local/share/argos-translate/packages/en_ja
131780 /home/matoken/.local/share/argos-translate/packages/ja_en- インデックスを更新
- リモートのモデル数を確認
- 日本語への変換モデルを確認
- 日本語からの変換モデルを確認
- 英語→日本語のモデルをインストール
- 日本語→英語のモデルをインストール
- モデルの容量確認
Note | 日本語は英語とのモデルしかありませんが,例えばフランス語→日本語の変換をしたい場合にfr→enの言語モデルもある場合Argos Translateは自動的に中間言語を介して仏→英→日のように翻訳してくれるそうです.ただし精度は落ちます. |
Note | 後述のGUI版でもモデルデータ入手可能です. |
Pythonで試す
$ cat ./sample.py
import argostranslate.package
import argostranslate.translate
from_code = "en"
to_code = "ja"
translatedText = argostranslate.translate.translate("hello world.", from_code, to_code)
print(translatedText)
$ python3 ./sample.py
こんにちは世界。コマンドラインで試す
$ argos-translate --help
usage: argos-translate [-h] [--from-lang FROM_LANG] [--to-lang TO_LANG] [TEXT]
Open-source offline translation.
positional arguments:
TEXT The text to translate. Read from standard input if missing.
options:
-h, --help show this help message and exit
--from-lang FROM_LANG, -f FROM_LANG
The code for the language to translate from (ISO 639-1)
--to-lang TO_LANG, -t TO_LANG
The code for the language to translate to (ISO 639-1)
$ time argos-translate --from-lang en --to-lang ja 'hello world.' (1)
こんにちは世界。
real 0m2.124s
user 0m1.731s
sys 0m0.484s
$ echo 'cat is awesome.' | argos-translate --from-lang en --to-lang ja (2)
猫は素晴らしいです。
$ LC_ALL=en_US.UTF-8 man man | wc
478 4698 33208
$ time LC_ALL=en_US.UTF-8 man man | argos-translate --from-lang en --to-lang ja (3)
:
:
real 2m56.132s
user 4m48.187s
sys 0m57.290s- 英語から日本語に翻訳
- 標準入力を翻訳
- コマンドの結果を翻訳
Note | translate shell などと違いローカルで実行できるのがいい感じだがマシンスペックにより低速. |
GUI
$ pip install argostranslategui $ argos-translate-gui
翻訳画面
モデルの確認,削除
モデルのインストール
Note | 画面サイズを広げることでテキストエリアも広がり長文にも対応しやすく. |
少し試したところ短文ならサクサクと動きますが,man の結果をまとめて渡すなどするとしばらく待つことに.人間の読む速度よりは速いので分けて渡すようにすると良さそうです.(若しくは対応GPUを追加するなどマシンスペックを上げる.)
翻訳精度も思っていたより良い感じで,Google翻訳以前の翻訳ソフトウェアよりずっと良さそうです.
無料翻訳サイトは翻訳データが保存,利用されることが多いのでセンシティブなものには使えないのですが,Argos Translate ならローカルで完結するのでそのようなデータの翻訳にも良さそうです.
Note | 鹿児島Linux勉強会 2022.12 で紹介しました. |
環境
$ dpkg-query -W python3 python3 3.10.6-1 $ lsb_release -dr Description: Debian GNU/Linux bookworm/sid Release: n/a $ arch x86_64
One thought to “Argos Translate でオフライン機械翻訳”