ミャンマーは現在、世界で唯一、重要なオンラインプレゼンスを持つ国で、国際テキスト エンコード標準である Unicode に標準化されていません。 代わりに、Zawgyi がビルマ語の文字をエンコードするために使用される主要な書体です。 このように統一された規格がないため、ミャンマーでモバイルアプリやサービスを提供する多くの企業にとって、技術的な課題が発生しています。 ユニコードで書かれたコンテンツがザウギーのユーザーには文字化けして見え、逆にザウギーのユーザーには文字化けして見えるため、デジタルプラットフォーム上でのコミュニケーションが困難になっています。 これは、FacebookやMessengerなどのアプリで、あるエンコーディングで書かれた投稿、メッセージ、コメントが、別のエンコーディングでは読めないという問題です。 Unicode に関する標準化の欠如は、違反コンテンツの自動化と積極的な検出を難しくし、アカウントのセキュリティを弱め、Facebook で潜在的に有害なコンテンツを報告する効率を低下させ、ビルマ語以外のミャンマーの言語のサポートを低下させることになります。 次に、ヘイトスピーチやその他のポリシー違反のコンテンツを分類するために、ザウギ語のコンテンツに引っかからないようにし、Unicode デバイスでのコンテンツ エクスペリエンスを向上させるために、フォント コンバーターの統合作業を開始しました。 本日、Unicodeへの移行を続ける同国を支援するため、FacebookとMessengerにフォントコンバータを実装したことを発表します。 この移行には時間がかかることが分かっているため、私たちのZawgyiからUnicodeへのコンバーターは、友人や家族のデバイスがまだ移行していない場合でも、Unicodeに移行中の人々が投稿、メッセージ、コメントを読むことができるよう、引き続き提供します。 この記事では、Zawgyi テキストと Unicode をどのように区別するか、デバイスが Zawgyi と Unicode のどちらを使用しているかをどのように判別するか、そして両者の変換方法など、これらのコンバータを統合する際に生じた技術的課題、およびその過程で得られたいくつかの教訓を詳しく説明します。

Unicode 変換なしの Facebook 投稿(左)と変換あり(右)
変換なしの Facebook 投稿(左)と変換あり(右)

なぜ Unicode なのか

世界中の誰もが自分のデバイスで自分の言語を使用できるよう、グローバル システムとして設計されたのが Unicode でした。 しかし、ミャンマーのほとんどのデバイスはまだザウギーを使用しており、これは Unicode と互換性がありません。 つまり、それらのデバイスを使用する人々は、プラットフォーム、OS、プログラミング言語間の互換性の問題に直面しているのです。 ミャンマーのコンテンツ制作者は、より多くの視聴者に情報を届けるために、英語や他の言語はもちろん、1つの投稿にザウィーとユニコードの両方を用いて投稿することがよくあります。 Zawgyiエンコーディングでは、文字と複合レンダリングに複数のコードポイントを使用し、文字の一部だけを表現するために2倍のコードポイントを必要とします。また、母音のコードポイントが子音の前または後に現れることがあるため(CATまたはCTAは同じ読み方)、単一の文書内でも検索と比較の問題が発生します。 このため、システム間のあらゆる通信が大きな課題となっています。

Facebook が Unicode をサポートしているのは、それがあらゆる言語に対するサポートと一貫した標準を提供しているからです。 特にミャンマーでは、Unicode への移行をサポートしています。

  • これにより、ミャンマーの人々がビルマ語以外の言語で私たちのアプリやサービスを使用することができます。 Zawgyi はビルマ語のテキストのみの入力をサポートしていますが、Unicode ではシャン語やモン語など、ミャンマーで話されている少数言語を入力できます。
  • ミャンマーの言語に対して正規の形式を提供し、ポリシー違反のコンテンツを検出することにより、当社のアプリケーションを使用する人々を保護し、検索ツールのパフォーマンスを大幅に向上させるために役立てられます。
  • Facebook で有害と思われるコンテンツのレポートをレビューする際の効率が良くなり、コンテンツ レビュアーはコンテンツがどのようにエンコードされているかを知らなくても問題をレビューできるようになります。

A three-pronged approach

最初にミャンマーのエンコードについて調べたとき、最も優先したことは、ヘイトスピーチなどの有害コンテンツを検出するシステムがザウジーでつまずかなくするようにすることでした。 そのための目標については、このブログの記事で説明しました。 Zawgyiを使ったシステムの通信を難しくしている同じ課題(複数のコードポイントや結合レンダリングなど)は、ポリシー違反のコンテンツを効果的に検出するための分類器やAIシステムの訓練も難しくしています。

幸いにも、この問題に取り組んでいるのは当社だけではありません。当社は、Google のオープン ソースの myanmar-tools ライブラリを使用して、当社のソリューションを実装することができました。 myanmar-tools ライブラリは、検出と変換の精度の点で、それまで使用していた正規表現に基づくライブラリよりも大きなアップグレードとなりました。 約1年前には、フォントの検出と変換を統合し、分類器を通過する前にすべてのコンテンツをUnicodeに変換するようにしました。 当社の製品に自動変換を導入するのは、簡単なことではありませんでした。 自動変換の要件であるコンテンツ エンコードの検出、デバイス エンコードの検出、および変換にはそれぞれ課題がありました。

コンテンツ エンコードの検出

自動変換を行うには、まずコンテンツ エンコード、つまり、テキストが最初に入力されたときに使用されたエンコードを知る必要があります。 残念ながら、Zawgyi と Unicode はビルマ語や他の言語の文字を表現するために同じ範囲のコードポイントを使用しています。 このため、ある文字列を表すコードポイントのリストが、ZawgyiとUnicodeのどちらでレンダリングされるべきかはわかりません。 また、すべてのコードポイントの文字列が、両方のエンコーディングで意味をなすわけではありません。 Zawgyi および Unicode で作成されたテキストでトレーニングされたモデルを使用して、与えられた文字列が Zawgyi または Unicode キーボードで作成された確率を評価することができます。

私たちの検出は、myanmar-tools ライブラリのアプローチに基づきます。 私たちは、コンテンツのエンコーディングがすでに分かっている公開 Facebook コンテンツ サンプルで、機械学習 (ML) モデルを訓練します。 このモデルは、各サンプルについて、一連のコード ポイントが Unicode と Zawgyi で発生する可能性がどの程度あるかを追跡しています。 その後、誰かのコンテンツのコンテンツ エンコードを決定する際に、一連のコード ポイントが Unicode と Zawgyi のどちらで入力された可能性が高いかについてのモデルの予測を調べ、その結果をコンテンツ エンコードとして使用します。

デバイス エンコードの検出

次に、フォント エンコードの変換を行う必要があるかを把握するために、人の携帯電話でどのエンコーディング(つまり、デバイス エンコーディング)が使用されていたかを知る必要があります。 そのためには、あるエンコーディングでは、いくつかのコードポイントを組み合わせるとテキストの断片が結合されて1つの文字になりますが、他のエンコーディングでは、それらの2つのコードポイントが別々の文字を表す場合があるという事実を利用できます。 デバイス上で文字列を作成し、その文字列の幅をチェックすれば、デバイスがどのフォントエンコーディングを使って文字列を表示しているかがわかります。 この情報があれば、今後のウェブリクエストで、デバイスがZawgyiまたはUnicodeを使用していることをサーバーに伝え、取得したコンテンツが一致するかどうかを確認することができます。 Myanmarでは、クライアント側のロジックが、該当するデバイスがZawgyiかUnicodeかを判断し、そのエンコードをWebリクエストのロケールフィールドの一部として送信します(例:my_Qaag_MM)。

変換

次に、サーバーはビルマ語のコンテンツを読み込んでいるかどうかをチェックします。 コンテンツのエンコーディングとデバイスのエンコーディングが一致しない場合、コンテンツを読者のデバイスが適切に表示できる形式に変換する必要があります。 たとえば、投稿が Unicode のコンテンツエンコーディングで入力されたが、Zawgyi エンコーディングのデバイスで読まれている場合、Zawgyi デバイスでレンダリングする前に、投稿のテキストを Zawgyi に変換しているのです。

このモデルを、Web 上の他の一般にアクセス可能なコンテンツではなく、Facebook のコンテンツでトレーニングすることが重要です。 人々は、Facebook では、Web ページや学術論文とは異なる書き方をします。 Facebookの投稿やメッセージは一般的に短く、あまりフォーマルではなく、略語やスラング、タイプミスも含まれます。

Integrating autoconversion at Facebook scale

次の課題は、ユーザーがアプリで作成できるさまざまな種類のコンテンツに、この変換を統合することでした。 Zawgyi テキストは、ステータス アップデートだけでなく、ユーザー名、コメント、ビデオ字幕、プライベート メッセージなどにも入力されています。 誰かがあらゆる種類のコンテンツを取得するたびに検出と変換を実行することは、必要な時間とリソースの点で法外です。 Facebookのあらゆるコンテンツが通過するパイプラインは1つではないため、誰かが入力する可能性のあるあらゆる場所でZawgyiコンテンツを捕捉することは困難です。 さらに、すべてのウェブリクエストがその人のデバイスから行われるわけではありません。 例えば、通知やメッセージがデバイスにプッシュされる場合、デバイスのエンコードロジックを実行することができないのです。 また、メッセージやコメントは非常に短いことが多く、検出精度が下がります。

フォント コンバーターは、Facebook と Messenger で完全に実装されました。 これらのツールは、友人や家族とのコミュニケーションに私たちのアプリを使用しているミャンマーの何百万人もの人々にとって、大きな違いをもたらすことでしょう。 この Unicode への移行を通してミャンマーの人々を引き続きサポートするために、私たちは自動変換ツールをより多くの Facebook 製品群に拡大し、自動検出と変換の質を向上させることを検討しています。 また、オープンソースの myanmar-tools ライブラリに引き続き貢献し、他のユーザーがこの移行をサポートするツールを構築できるようにしたいと考えています

コメントを残す

メールアドレスが公開されることはありません。