Il Myanmar è attualmente l’unico paese al mondo con una significativa presenza online che non si è standardizzato su Unicode, lo standard internazionale di codifica del testo. Invece, Zawgyi è il carattere dominante usato per codificare i caratteri della lingua birmana. Questa mancanza di un unico standard ha portato a sfide tecniche per molte aziende che forniscono applicazioni e servizi mobili in Myanmar. Rende difficile la comunicazione sulle piattaforme digitali, poiché il contenuto scritto in Unicode appare confuso agli utenti Zawgyi e viceversa. Questo è un problema per app come Facebook e Messenger, perché post, messaggi e commenti scritti in una codifica non sono leggibili in un’altra. La mancanza di standardizzazione intorno a Unicode rende più difficile l’automazione e il rilevamento proattivo dei contenuti in violazione, può indebolire la sicurezza dell’account, rende la segnalazione di contenuti potenzialmente dannosi su Facebook meno efficiente, e significa meno supporto per le lingue in Myanmar oltre il birmano.
L’anno scorso, per sostenere la transizione del Myanmar a Unicode, abbiamo rimosso Zawgyi come opzione di lingua di interfaccia per i nuovi utenti Facebook. Successivamente, abbiamo lavorato per garantire che i nostri classificatori per i discorsi d’odio e altri contenuti che violano le politiche non inciampassero sui contenuti Zawgyi e abbiamo iniziato a lavorare sull’integrazione di convertitori di caratteri per migliorare l’esperienza dei contenuti sui dispositivi Unicode. Oggi, per aiutare il paese a continuare la sua transizione a Unicode, stiamo annunciando che abbiamo implementato i convertitori di caratteri in Facebook e Messenger. Poiché sappiamo che questa transizione richiederà del tempo, il nostro convertitore da Zawgyi a Unicode continuerà a permettere alle persone che stanno passando a Unicode di leggere post, messaggi e commenti anche se i loro amici e familiari non hanno ancora effettuato la transizione dei loro dispositivi. Questo post descriverà in dettaglio le sfide tecniche coinvolte nell’integrazione di questi convertitori, incluso come differenziare il testo Zawgyi da Unicode, come possiamo dire se un dispositivo usa Zawgyi o Unicode, e come convertire tra i due, così come alcune lezioni che abbiamo imparato lungo la strada.
Perché Unicode?
Unicode è stato progettato come sistema globale per permettere a chiunque nel mondo di usare la propria lingua sui propri dispositivi. Ma la maggior parte dei dispositivi in Myanmar usa ancora lo Zawgyi, che è incompatibile con Unicode. Il che significa che le persone che usano quei dispositivi hanno ora a che fare con problemi di compatibilità tra piattaforme, sistemi operativi e linguaggi di programmazione. Al fine di raggiungere meglio il loro pubblico, i produttori di contenuti in Myanmar spesso postano sia in Zawgyi che in Unicode in un unico post, per non parlare dell’inglese o di altre lingue. La codifica Zawgyi usa punti di codice multipli per i caratteri e i rendering combinati; richiede il doppio dei punti di codice per rappresentare solo un sottoinsieme della scrittura; e i punti di codice delle vocali potrebbero apparire prima o dopo una consonante (quindi CAT o CTA si leggono allo stesso modo), il che porta a problemi di ricerca e confronto, anche all’interno di un singolo documento. Questo rende qualsiasi tipo di comunicazione tra sistemi una sfida enorme.
Facebook supporta Unicode perché offre supporto e uno standard coerente per ogni lingua. In Myanmar, in particolare, sosteniamo il passaggio a Unicode perché:
- Consente alle persone in Myanmar di utilizzare le nostre applicazioni e servizi in lingue diverse dal birmano. Zawgyi supporta l’inserimento di solo testo birmano, mentre Unicode permette l’inserimento di lingue minoritarie parlate in Myanmar, come Shan e Mon.
- Offre una forma normalizzata per le lingue in Myanmar, che ci aiuta a proteggere le persone che utilizzano le nostre applicazioni rilevando i contenuti che violano le politiche e migliora notevolmente le prestazioni degli strumenti di ricerca.
- Rende più efficiente per noi rivedere le segnalazioni di contenuti potenzialmente dannosi su Facebook, e i revisori di contenuti saranno in grado di rivedere i problemi senza bisogno di sapere come il contenuto è stato codificato.
Un approccio su tre fronti
Quando abbiamo iniziato a guardare la codifica Myanmar, la nostra priorità principale era quella di assicurarci che i nostri sistemi che rilevano contenuti dannosi, come i discorsi di odio, non inciampassero su Zawgyi. Abbiamo spiegato i nostri obiettivi in questo post sul blog. Le stesse sfide (come i punti di codice multipli e i rendering combinati) che rendono difficile per i sistemi comunicare usando Zawgyi rendono anche difficile addestrare i nostri classificatori e i sistemi AI per rilevare efficacemente i contenuti che violano le policy.
Fortunatamente, non siamo l’unica azienda a lavorare su questo problema, e siamo stati in grado di utilizzare la libreria open source myanmar-tools di Google per implementare la nostra soluzione. La libreria myanmar-tools è stata un importante aggiornamento, in termini di precisione di rilevamento e conversione, rispetto alla libreria basata su regex che avevamo usato. Circa un anno fa, abbiamo integrato il rilevamento e la conversione dei caratteri per convertire tutti i contenuti in Unicode prima di passare attraverso i nostri classificatori. Implementare l’autoconversione nei nostri prodotti non è stato un compito semplice. Ognuno dei requisiti per la conversione automatica – rilevamento della codifica del contenuto, rilevamento della codifica del dispositivo e conversione – aveva le sue sfide.
Rilevamento della codifica del contenuto
Per eseguire la conversione automatica, dobbiamo prima conoscere la codifica del contenuto, cioè la codifica usata quando il testo è stato inserito per la prima volta. Sfortunatamente, Zawgyi e Unicode usano la stessa gamma di punti di codice per rappresentare i caratteri in birmano e in altre lingue. A causa di questo, non possiamo dire se una lista di punti di codice che rappresenta una stringa dovrebbe essere resa con Zawgyi o Unicode. Inoltre, non tutte le stringhe di punti di codice hanno senso in entrambe le codifiche. Con un modello addestrato su testo creato in Zawgyi e Unicode, possiamo valutare la probabilità che una data stringa sia stata creata con una tastiera Zawgyi o Unicode.
Il nostro rilevamento si basa sull’approccio della libreria myanmar-tools. Addestriamo un modello di apprendimento automatico (ML) su campioni di contenuti pubblici di Facebook per i quali conosciamo già la codifica del contenuto. Questo modello tiene traccia della probabilità che una serie di punti di codice si verifichi in Unicode rispetto a Zawgyi per ogni campione. In seguito, quando determiniamo la codifica del contenuto di qualcuno, guardiamo la previsione del modello per sapere se quella sequenza di punti di codice è più probabile che sia stata inserita in Unicode o in Zawgyi – e usiamo quel risultato come codifica del contenuto.
Rilevamento della codifica del dispositivo
In seguito, abbiamo bisogno di sapere quale codifica è stata usata dal telefono di una persona (cioè, la codifica del dispositivo) per capire se dobbiamo eseguire una conversione della codifica del font. Per fare questo, possiamo sfruttare il fatto che in una codifica, combinando diversi punti di codice si combinano frammenti di testo per creare un unico carattere, mentre nell’altra codifica quei due punti di codice potrebbero rappresentare caratteri separati. Se creiamo una stringa sul dispositivo e controlliamo la larghezza di quella stringa, possiamo dire quale codifica di font il dispositivo sta usando per rendere la stringa. Una volta che abbiamo queste informazioni, possiamo dire al server nelle future richieste web che il dispositivo sta usando Zawgyi o Unicode e assicurarci che ogni contenuto che viene recuperato corrisponda. In Myanmar, la nostra logica lato client determina se il dispositivo in questione è Zawgyi o Unicode e invia quella codifica come parte del campo locale nella richiesta web (ad esempio, my_Qaag_MM).
Conversione
Poi, il server controlla se sta caricando contenuto birmano. Se la codifica del contenuto e quella del dispositivo non corrispondono, dobbiamo convertire il contenuto in un formato che il dispositivo del lettore renderà correttamente. Per esempio, se un post è stato inserito con una codifica di contenuto Unicode, ma viene letto su un dispositivo con codifica Zawgyi, convertiamo il testo del post in Zawgyi prima di renderlo sul dispositivo Zawgyi.
È importante addestrare questo modello sul contenuto di Facebook invece che su altri contenuti pubblicamente accessibili sul web. Le persone scrivono in modo diverso su Facebook rispetto a quanto farebbero su una pagina web o in un articolo accademico: I post e i messaggi di Facebook sono generalmente più brevi e meno formali, e contengono abbreviazioni, slang e refusi. Vogliamo che le nostre previsioni siano il più accurate possibile per il contenuto che le persone condividono e leggono sulle nostre app.
Integrare la conversione automatica su scala Facebook
La sfida successiva è stata quella di integrare questa conversione nei diversi tipi di contenuto che le persone possono creare sulle nostre app. Il testo Zawgyi è stato inserito per gli aggiornamenti di stato così come per i nomi degli utenti, i commenti, i sottotitoli dei video, i messaggi privati e altro ancora. Eseguire il nostro rilevamento e la conversione ogni volta che qualcuno inserisce un qualsiasi tipo di contenuto sarebbe proibitivo in termini di tempo e risorse necessarie. Non c’è una singola pipeline attraverso la quale passano tutti i possibili contenuti di Facebook, il che rende difficile catturare i contenuti Zawgyi ovunque qualcuno possa inserirli. Inoltre, non tutte le richieste web sono fatte dal dispositivo di una persona. Per esempio, quando le notifiche e i messaggi sono spinti ai dispositivi, non possiamo eseguire la logica di codifica del dispositivo. Inoltre, i messaggi e i commenti sono spesso molto brevi, abbassando la precisione di rilevamento.
Il convertitore di caratteri è ora completamente implementato su Facebook e Messenger. Questi strumenti faranno una grande differenza per i milioni di persone in Myanmar che usano le nostre app per comunicare con amici e familiari. Per continuare a sostenere la gente del Myanmar attraverso questa transizione a Unicode, stiamo esplorando l’espansione dei nostri strumenti di autoconversione a più della famiglia di prodotti Facebook, così come il miglioramento della qualità del nostro rilevamento e conversione automatica. Abbiamo anche intenzione di continuare a contribuire alla libreria open source myanmar-tools per aiutare altri a costruire strumenti per sostenere questa transizione.