2022-04-04世界最高の翻訳サービスを個人で開発した話【meta翻訳】sellPython,自然言語処理,機械学習,Firebase,Reactはじめにこの度は個人でmeta翻訳という翻訳サービスを開発しました。現在Google翻訳を筆頭に、機械翻訳サービスは乱立していて、業界としてレッドオーシャンだと思いますが、meta翻訳は複数ある翻訳サービスの中でも日本語⇄英語の翻訳では最高精度だと自負しております。個人でも頑張ればレッドオーシャンに突っ込めるくらいの機械学習サービスを開発できるというお話しをしたいと思います。※個人開発とは思えないくらい高精度なので是非一度使ってみてください。meta翻訳の精度まず初めにmeta翻訳の精度を簡潔に紹介したいと思います。surge」など、専門的な単語にきちんと対応できています。「power」が「電力」と訳されているように、専門的な文脈も識別して翻訳します。実は専門的な文章よりも口語的な文章の方が機械翻訳では難しかったりします。下の表のように超細かいネイティブのニュアンスを再現して翻訳します。go」などの表現が出てきていたり、開発者の想像を超えた精度です。私の調査の範囲ではこれ程の翻訳を出来ているサービスは他にありませんでした。個人で開発するにあたってmeta翻訳開発にあたって、大まかに3つの部分を開発する必要があります。フロントエンドバックエンド機械学習モジュール個人開発では労力の配分が本当に重要で、これらに対する労力の配分はおよそ1:1:98です。機械学習サービスである以上、機械学習モデルの精度があくまで最重要です。フロントエンドとバックエンドの開発でいかに楽をするのかが肝要と考えます。機械学習モジュールはPythonで開発されるケースが大半なので、翻訳APIにはPythonを使用し、その他の部分にはJavaScript(React)、Firebaseを使用して開発しました。機械学習サービスを個人開発する場合、この組み合わせは強く推奨します。(細かいフレームワークは自分が開発しやすいものを採用すれば良いと思います)中でも、Firebaseは個人開発のデファクトスタンダードだと思います。個人的には以下の理由から推しています。データベースをいちいち作成しなくて良いデプロイが簡単(インフラの知識がなくてもコマンド一発)その他にもFirebaseが神たる所以は山ほどありますが、素晴らしい記事が大量にあるので、本記事では割愛します。知識のインプットと実証の重要性meta翻訳開発に際してキーになったと考えるプロセスは「論文を読んで実装・実験するサイクルを回す」ことです。このサイクルの高速化と実験管理も当然肝要です。私自身、meta翻訳開発にあたって数百本論文を読みました。これら全てを実装するわけにもいきません。実装する前には、「実装の手間」と「精度の改善幅の予想」を念入りに天秤にかけていました。論文を読んだりしていると、機械学習っぽい感じがしますが、モデルの評価はより重要です。学習したモデルのエラーを分析し、改善の為のアルゴリズムを随時実装します。最後に翻訳業界でも海外サービスが猛威を奮っており、「日本語くらい日本発のサービスで」という心意気で開発を始めました。いえ、開発当初は、海外サービスに対抗したり、上回ったりできるサービスを開発できるのか自分でも疑問に思うことは多々ありました。同じ気持ちで開発を断念されたサービスは水面下に無数にあると思います。このような疑念で開発の手を止める人が多くいると思い、今回この記事を書くに至りました。この記事を読んでいただき、少しでも多くの方の開発の手が進み、良いサービスが生まれる一助となれば幸いです。twitterやmeta翻訳の技術記事では、具体的にmeta翻訳のアーキテクチャに採用した論文の話や、機械学習のトレンドなどについても触れていこうと思っておりますので、よければご覧になってください。