$30 off During Our Annual Pro Sale. View Details »

機械翻訳をローカルマシンで( ArgosTranslate/LibreTranslate )

機械翻訳をローカルマシンで( ArgosTranslate/LibreTranslate )

* 鹿児島Linux勉強会 2022.12(オンライン開催) 2022/12/18(日) 14:00 〜 17:00
https://kagolug.connpass.com/event/268089/
* source
https://gitlab.com/matoken/kagolug-2022.12/-/blob/master/slide/slide.adoc

Kenichiro MATOHARA

December 18, 2022
Tweet

More Decks by Kenichiro MATOHARA

Other Decks in Technology

Transcript

  1. 機械翻訳をローカ
    ルマシンで(
    ArgosTranslate/Libr
    eTranslate )
    Kenichiro Matohara(matoken)
    1

    View Slide

  2. 南隅から参加(鹿児島の右下)
    好きなLinuxディストリビューションはDebian
    お仕事募集 mailto:work@matohara.org
    Kenichiro Matohara(matoken)
    https://matoken.org
    2

    View Slide

  3. ローカルで機械翻訳
    機械翻訳
    自然言語を他の自然言語にコンピュータに変換してもらう > こん
    にちは → hello
    Google翻訳,DeepLなどが有名でよく使われる
    無料プランだと翻訳データは利用され,第3者に見えることも
    回線が必須
    OSSでローカルで利用できるものを試してみた
    3

    View Slide

  4. 今回の環境
    CPU
    Intel® Core™ i5-7300U CPU @ 2.60GHz
    RAM
    8GB
    OS
    Debian bookworm amd64(testing)
    Python
    Python 3.10.9
    4

    View Slide

  5. Argos Translate
    Python製MITライセンス
    Pythonライブラリ/CLI/GUI/API/Webがある
    サポート言語
    Arabic, Azerbaijani, Catalan, Chinese, Czech,
    Danish, Dutch, English, Esperanto, Finnish, French,
    German, Greek, Hebrew, Hindi, Hungarian,
    Indonesian, Irish, Italian, Japanese, Korean, Persian,
    Polish, Portuguese, Russian, Slovak, Spanish,
    Swedish, Turkish, Ukrainian ()
    Argos Open Tech
    5

    View Slide

  6. 環境構築
    $ mkdir ./argostranslate
    $ cd ./argostranslate/
    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip install argostranslate
    $ du -Hs .
    3449892 .
    6

    View Slide

  7. modelデータ入手
    $ 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 list | wc -l
    53
    $ argospm list | grep ja
    translate-en_ja
    translate-ja_en
    $ argospm list | grep ja | xargs -n1 argospm install
    7

    View Slide

  8. usage
    $ 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.'
    こんにちは世界。
    real 0m2.124s
    user 0m1.731s
    sys 0m0.484s
    $ echo 'cat is awesome.' | argos-translate --from-lang en --to-lang ja
    猫は素晴らしいです。
    8

    View Slide

  9. GUI
    $ pip install argostranslategui
    $ argos-translate-gui
    9

    View Slide

  10. LibreTranslate
    Argos Translaeを使ったWebAPI
    Python/JavaScript製AGPLv3
    Docker有
    🐳
    LibreTranslate - Free and Open Source Machine
    Translation API
    10

    View Slide

  11. install
    $ git clone https://github.com/LibreTranslate/LibreTranslate
    $ cd LibreTranslate
    $ python3 -m venv venv
    $ source venv/bin/activate
    $ pip install -e .
    $ du -Hs .
    3518928 .
    $ libretranslate
    Updating language models
    Found 58 models
    Downloading Arabic → English (1.0) ...
    Downloading Azerbaijani → English (1.5) ...
    Downloading Catalan → English (1.7) ...
    :
    ^c
    $ du -Hs ~/.local/share/argos-translate/
    6137956 /home/matoken/.local/share/argos-translate/
    $ libretranslate --frontend-language-source en --frontend-language-target ja
    Running on http://127.0.0.1:5000
    11

    View Slide

  12. 12

    View Slide

  13. LibreTranslate Firefox extention
    未検証
    😔
    GitHub - hugopeixoto/libretranslate-firefox: Firefox
    extension to integrate LibreTranslate
    13

    View Slide

  14. LibreTranslateをShellで
    ArgosTranslateのCLIでもいいような?
    GitHub - argosopentech/LibreTranslate-sh: Unix
    bindings for LibreTranslate
    $ export LIBRETRANSLATE_URL="http://127.0.0.1:5000/"
    $ ./libretranslate translate en ja "hello cat."
    {"translatedText":"\u3053\u3093\u306b\u3061\u306f\u732b\u3002"}
    $ ./libretranslate translate en ja "hello cat." | jq .
    {
    "translatedText": "こんにちは猫。"
    }
    14

    View Slide

  15. 翻訳比較
    例 1.
    When Elon Musk bought up Twitter Inc. as his personal
    toy to play with, a lot of people started to worry. By
    acquiring Twitter, the richest man on Earth took
    unchecked control of arguably one of the most
    powerful online platforms for political speech and
    public debate.
    Why everyone is on Mastodon? - European Digital
    Rights (EDRi)
    15

    View Slide

  16. org]
    イーロン・マスクがTwitterというおもちゃを購入したことに、多くの人
    が懸念を抱き始めた。地球上で最も裕福な男性は、Twitter社を買収す
    ることで政治的発言や公共の議論の最も強力なオンラインプラットフォ
    ームの1つを好き勝手に支配できるようになった。
    Mastodonに注目が集まっている
    のはなぜ? | p2ptk[.
    16

    View Slide

  17. Google Translate
    Elon Musk が Twitter Inc. を自分のおもちゃとして買収したとき、
    多くの人が心配し始めました。地球上で最も裕福な人物は、Twitter を
    買収することで、政治的発言と公開討論のための最も強力なオンライン
    プラットフォームの 1 つを無防備に支配しました。
    17

    View Slide

  18. DeepL
    イーロン・マスクが個人的なおもちゃとしてTwitter社を買収したとき、
    多くの人が心配し始めた。Twitter社を買収することで、地球上で最も
    裕福な男性は、政治的発言や公的議論を行うための最も強力なオンライ
    ンプラットフォームの1つであるTwitter社を無制限にコントロールでき
    るようになったのです。
    18

    View Slide

  19. LibreTranslate
    エルン・ムスクがTwitter Inc.を個人的にプレイするおもちゃとして買っ
    たとき、多くの人が心配し始めました。 Twitterを取得することで、地球
    上の最も豊かな人は、政治的なスピーチと公共の議論のための最も強力
    なオンラインプラットフォームの間違いなく制御をチェックしませんでし
    た。.
    19

    View Slide

  20. Joke RFC
    例 2. https://www.ietf.org/rfc/rfc1149.txt
    This memo describes an experimental method for the encapsulation of
    IP datagrams in avian carriers. This specification is primarily
    useful in Metropolitan Area Networks. This is an experimental, not
    recommended standard. Distribution of this memo is unlimited.
    20

    View Slide

  21. http://www.kt.rim.or.jp/~ksk/joke-
    RFC/rfc1149j.txt
    このメモは、IP データグラムを鳥類キャリアにカプセル化するための実験
    的な方法について述べる。この仕様は本来、都市間ネットワークに対して
    有効である。これは実験的なものであり、推奨できない規格である。この
    メモの配布に制限はない。
    21

    View Slide

  22. Goole Translate
    このメモは、のカプセル化のための実験的方法を説明します 鳥類キャリ
    アの IP データグラム。この仕様は主に メトロポリタン エリア ネットワー
    クで役立ちます。これは実験的なものであり、 推奨基準。このメモの配布
    は無制限です。
    22

    View Slide

  23. DeepL
    このメモでは、鳥のキャリアにおけるIPデータグラムのカプセル化の実
    験方法について説明する。 IPデータグラムのカプセル化の実験的な方
    法を説明する。 この仕様は、主に メトロポリタンエリアネットワークで有
    用である。 これは実験的なものであり、推奨規格ではありません。 推奨
    規格ではありません。 このメモの配布は無制限である。
    23

    View Slide

  24. LibreTranslate
    このメモは、カプセル化の実験方法を説明する 航空キャリアにおけるIP
    データグラム。 この指定は主にあります 首都圏ネットワークでの利用 こ
    れは実験的ではなく、 推薦された標準。 このメモの配布は無制限です。.
    24

    View Slide

  25. 先月や以前の発表と組み合わせ

    Whisper(.cpp)でローカルでリアルタイムに会話を文字起こししつ
    つ,ArgosTranslateで機械翻訳,更にVOICEVOXで読み上げとい
    ったことが回線無しで完結できる
     リアルタイムで行うには要GPU
    💰
    OpenAIのWhisper でオフライン文字 起こし(STT)
    色々聞く
    25

    View Slide

  26. まとめ
    ローカルで動作するOSSな機械翻訳ソフトの
    ArgosTranslate/LibreTranslate
    思っていたより翻訳精度はいい感じ.
    文章によっては前処理が必要なことも?
    オフライン時や仕事などの文章ではおすすめ
    LibreTranslateはDockerがあるのでそれで試してみると良さ
    そう
    26

    View Slide

  27. 奥付
    発表
    2022-12-
    18(sun)
    発表者
    利用ソフトウェア
    ライセンス
    鹿児島Linux勉強会 2022.12(オンライン開催)
    Kenichiro Matohara(matoken)
    Asciidoctor Reveal.js
    CC BY 4.0
    27

    View Slide

  28. View Slide