Myanmar on tällä hetkellä ainoa maa maailmassa, jolla on merkittävä verkkoläsnäolo ja joka ei ole standardoinut kansainvälistä tekstin koodausstandardia Unicodea. Sen sijaan Zawgyi on vallitseva kirjasintyyppi, jota käytetään burman kielen merkkien koodaamiseen. Yhtenäisen standardin puuttuminen on aiheuttanut teknisiä haasteita monille yrityksille, jotka tarjoavat mobiilisovelluksia ja -palveluja Myanmarissa. Se vaikeuttaa viestintää digitaalisilla alustoilla, sillä Unicode-koodilla kirjoitettu sisältö näyttää Zawgyi-käyttäjille epäselvältä ja päinvastoin. Tämä on ongelma Facebookin ja Messengerin kaltaisille sovelluksille, koska yhdellä koodauksella kirjoitetut viestit, viestit ja kommentit eivät ole luettavissa toisella koodauksella. Unicodea koskevan standardoinnin puute vaikeuttaa automatisointia ja loukkaavan sisällön ennakoivaa havaitsemista, se voi heikentää tilien turvallisuutta, se tekee mahdollisesta haitallisesta sisällöstä ilmoittamisesta Facebookissa tehottomampaa, ja se tarkoittaa, että Myanmarin kielille on vähemmän tukea kuin burman kielelle.
Viime vuonna poistimme zawgyi-kielen käyttöliittymävaihtoehdon uusilta Facebook-käyttäjiltä tukeaksemme Myanmarin siirtymistä Unicodeen. Seuraavaksi työskentelimme varmistaaksemme, että vihapuheen ja muun käytäntöjä rikkovan sisällön luokittelijamme eivät kompastuisi Zawgyi-sisältöön, ja aloitimme työn fonttimuunninten integroimiseksi, jotta sisällön käyttökokemusta voitaisiin parantaa Unicode-laitteilla. Tänään ilmoitamme, että olemme ottaneet käyttöön fonttimuunnokset Facebookissa ja Messengerissä auttaaksemme maata jatkamaan siirtymistä Unicodeen. Koska tiedämme, että siirtyminen vie aikaa, Zawgyi-Unicode-muunnin antaa Unicodeen siirtyville ihmisille mahdollisuuden lukea viestejä, viestejä ja kommentteja, vaikka heidän ystävänsä ja perheenjäsenensä eivät olisi vielä siirtyneet laitteisiinsa. Tässä postauksessa kerrotaan yksityiskohtaisesti näiden muuntimien integrointiin liittyvistä teknisistä haasteista, kuten siitä, miten erotamme Zawgyi-tekstin Unicodesta, miten voimme kertoa, käyttääkö laite Zawgyi- vai Unicode-koodia, ja miten muunnetaan näiden kahden välillä, sekä joistakin matkan varrella opituista asioista.
Miksi Unicode?
Unicode suunniteltiin globaaliksi systeemiksi, jonka avulla kaikki maailman ihmiset saisivat käyttää omaa kieltään laitteissaan. Useimmissa laitteissa Myanmarissa käytetään kuitenkin edelleen zawgyi-kieliä, joka ei ole yhteensopiva Unicoden kanssa. Mikä tarkoittaa, että ihmiset, jotka käyttävät näitä laitteita, ovat nyt tekemisissä yhteensopivuusongelmien kanssa eri alustoilla, käyttöjärjestelmissä ja ohjelmointikielissä. Saavuttaakseen yleisönsä paremmin, sisällöntuottajat Myanmarissa julkaisevat usein samassa viestissä sekä Zawgyi-kielellä että Unicodella, englannista tai muista kielistä puhumattakaan. Zawgyi-koodaus käyttää useita koodipisteitä merkkejä ja yhdistettyjä esitystapoja varten; se vaatii kaksi kertaa enemmän koodipisteitä edustamaan vain osajoukkoa kirjoitusasusta; ja vokaalien koodipisteet voivat esiintyä ennen tai jälkeen konsonantin (joten CAT tai CTA lukee samalla tavalla), mikä johtaa haku- ja vertailuongelmiin jopa yhden asiakirjan sisällä. Tämä tekee kaikenlaisesta järjestelmien välisestä viestinnästä valtavan haasteen.
Facebook tukee Unicodea, koska se tarjoaa tukea ja yhtenäisen standardin kaikille kielille. Erityisesti Myanmarissa tuemme Unicodeen siirtymistä, koska:
- Sen ansiosta ihmiset Myanmarissa voivat käyttää sovelluksiamme ja palveluitamme muillakin kielillä kuin burman kielellä. Zawgyi tukee vain burmankielisen tekstin syöttämistä, kun taas Unicode mahdollistaa Myanmarissa puhuttujen vähemmistökielten, kuten shan- ja mon-kielten, syöttämisen.
- Se tarjoaa normalisoidun muodon myanmarilaisille kielille, mikä auttaa meitä suojelemaan sovelluksiamme käyttäviä ihmisiä havaitsemalla käytäntöjä rikkovan sisällön ja parantaa huomattavasti hakutyökalujen suorituskykyä.
- Se tehostaa Facebookissa mahdollisesti haitallisesta sisällöstä tehtyjen ilmoitusten tarkastelua, ja sisällön tarkastajat voivat tarkastella asioita ilman, että heidän tarvitsee tietää, miten sisältö on koodattu.
Kolmeosainen lähestymistapa
Kun aloimme tarkastella Myanmarin koodausta, ensisijainen tavoitteemme oli varmistaa, etteivät järjestelmämme, jotka havaitsevat haitallisen sisällön, kuten vihapuheen, kompastuisi Zawgyi-koodaukseen. Selitimme tähän liittyvät tavoitteemme tässä blogikirjoituksessa. Samat haasteet (kuten useat koodipisteet ja yhdistetyt renderöinnit), joiden vuoksi järjestelmien on vaikea kommunikoida Zawgyin avulla, vaikeuttavat myös luokittelijoidemme ja tekoälyjärjestelmiemme kouluttamista havaitsemaan tehokkaasti politiikkaa rikkovaa sisältöä.
Onneksi emme ole ainoa yritys, joka työskentelee tämän ongelman parissa, ja pystyimme käyttämään Googlen avoimen lähdekoodin myanmar-tools-kirjastoa ratkaisumme toteuttamiseen. Myanmar-tools-kirjasto oli merkittävä parannus havaitsemisen ja muuntamisen tarkkuuden suhteen verrattuna käyttämäämme regex-pohjaiseen kirjastoon. Noin vuosi sitten integroimme fonttitunnistuksen ja -muuntamisen, jotta kaikki sisältö voidaan muuntaa Unicode-muotoon ennen luokittelijoiden läpikäyntiä. Automaattisen muuntamisen toteuttaminen kaikissa tuotteissamme ei ollut yksinkertainen tehtävä. Jokaisella automaattisen muuntamisen vaatimuksella – sisällön koodauksen tunnistaminen, laitteen koodauksen tunnistaminen ja muuntaminen – oli omat haasteensa.
Sisällön koodauksen tunnistaminen
Toteuttaaksemme automaattisen muuntamisen meidän on ensin tiedettävä sisällön koodaus eli se koodaus, jota käytettiin, kun teksti syötettiin ensimmäisen kerran. Valitettavasti Zawgyi ja Unicode käyttävät samaa koodipistevalikoimaa burman ja muiden kielten merkkien esittämiseen. Tämän vuoksi emme voi tietää, pitäisikö merkkijonoa edustava koodipisteluettelo esittää Zawgyi- vai Unicode-koodilla. Kaikki koodipisteiden merkkijonot eivät myöskään ole järkeviä molemmissa koodauksissa. Zawgylla ja Unicodella luodulla tekstillä koulutetulla mallilla voimme arvioida todennäköisyyttä, että tietty merkkijono on luotu Zawgylla tai Unicode-näppäimistöllä.
Havaintomme perustuu myanmar-tools-kirjaston lähestymistapaan. Koulutamme koneoppimisen (ML) mallin julkisilla Facebook-sisällönäytteillä, joiden sisällön koodaus on jo tiedossa. Tämä malli pitää kirjaa siitä, kuinka todennäköistä on, että koodipisteiden sarja esiintyy Unicodessa verrattuna Zawgyi-koodiin kussakin näytteessä. Myöhemmin, kun määrittelemme jonkun sisällön sisällön koodausta, tarkastelemme mallin ennustetta siitä, oliko kyseinen koodipisteiden sarja todennäköisemmin kirjoitettu Unicode- vai Zawgyi-koodilla – ja käytämme tätä tulosta sisällön koodauksena.
Laitteen koodauksen havaitseminen
Seuraavaksi meidän on tiedettävä, minkälaista koodausta henkilön puhelin käytti (eli laitteen koodausta), jotta ymmärtäisimme, tarvitseeko meidän suorittaa fonttikoodauksen muuntaminen. Tätä varten voimme hyödyntää sitä, että yhdessä koodauksessa useiden koodipisteiden yhdistäminen yhdistää tekstinpätkiä yhdeksi merkiksi, kun taas toisessa koodauksessa nämä kaksi koodipistettä saattavat edustaa erillisiä merkkejä. Jos luomme merkkijonon laitteessa ja tarkistamme merkkijonon leveyden, voimme kertoa, mitä fonttikoodausta laite käyttää merkkijonon esittämiseen. Kun meillä on tämä tieto, voimme kertoa palvelimelle tulevissa verkkopyynnöissä, että laite käyttää Zawgyi-koodia tai Unicode-koodia, ja varmistaa, että noudettava sisältö vastaa sitä. Myanmarissa asiakaspuolen logiikkamme määrittää, käyttääkö kyseinen laite Zawgyi:tä vai Unicodea, ja lähettää kyseisen koodauksen osana verkkopyynnön locale-kenttää (esim. my_Qaag_MM).
Muunnos
Seuraavaksi palvelin tarkistaa, onko se lataamassa burmankielistä sisältöä. Jos sisällön koodaus ja laitteen koodaus eivät täsmää, sisältö on muunnettava muotoon, jonka lukijan laite renderöi oikein. Jos esimerkiksi viesti on syötetty Unicode-sisällön koodauksella, mutta sitä luetaan Zawgyi-koodatulla laitteella, muunnamme viestin tekstin Zawgyi-muotoon, ennen kuin se renderöidään Zawgyi-laitteella.
On tärkeää kouluttaa tämä malli Facebook-sisältöön eikä muuhun julkisesti saatavilla olevaan verkkosisältöön. Ihmiset kirjoittavat Facebookissa eri tavalla kuin verkkosivulla tai tieteellisessä artikkelissa: Facebook-postaukset ja -viestit ovat yleensä lyhyempiä ja vähemmän muodollisia, ja ne sisältävät lyhenteitä, slangia ja kirjoitusvirheitä. Haluamme, että ennusteemme ovat mahdollisimman tarkkoja sisällön osalta, jota ihmiset jakavat ja lukevat sovelluksissamme.
Automaattisen muuntamisen integrointi Facebookin mittakaavassa
Seuraavana haasteena oli integroida tämä muuntaminen erityyppiseen sisältöön, jota ihmiset voivat luoda sovelluksissamme. Zawgyi-tekstiä on syötetty tilapäivityksiin sekä käyttäjänimiin, kommentteihin, videoiden tekstityksiin, yksityisviesteihin ja muuhun. Tunnistamisen ja muuntamisen suorittaminen joka kerta, kun joku hakee minkä tahansa sisältötyypin, olisi ajan ja resurssien kannalta kohtuutonta. Ei ole olemassa yhtä putkea, jonka läpi kaikki mahdollinen Facebook-sisältö kulkee, mikä vaikeuttaa Zawgyi-sisällön talteenottoa kaikkialla, minne joku voisi syöttää sen. Lisäksi kaikkia verkkopyyntöjä ei tehdä henkilön laitteelta. Kun esimerkiksi ilmoituksia ja viestejä työnnetään laitteisiin, emme voi ajaa laitteen koodauslogiikkaa. Lisäksi viestit ja kommentit ovat usein hyvin lyhyitä, mikä heikentää havaintotarkkuutta.
Fonttimuunnin on nyt täysin toteutettu Facebookissa ja Messengerissä. Näillä työkaluilla on suuri merkitys miljoonille ihmisille Myanmarissa, jotka käyttävät sovelluksiamme viestintään ystävien ja perheenjäsenten kanssa. Jatkaaksemme Myanmarin ihmisten tukemista tässä Unicodeen siirtymisessä tutkimme automaattisten muunnostyökalujemme laajentamista useampiin Facebook-tuoteperheen tuotteisiin sekä automaattisen tunnistuksen ja muuntamisen laadun parantamista. Aiomme myös jatkaa osallistumista avoimen lähdekoodin myanmar-tools-kirjastoon auttaaksemme muita rakentamaan työkaluja, jotka tukevat tätä siirtymää.