Domanda


Sto appena iniziando a implementare le trasformazioni ICU utilizzando ICU4C in un programma C ++. Sto particolarmente attento alla traslitterazione da e verso il cinese.

Secondo questo documento , il pacchetto supporta sia "Han-Latin" e la conversione "Latin-Han". Come studente di cinese, questo mi sembra sorprendente, poiché la conversione latino-Han è particolarmente difficile da fare senza tecniche statistiche altamente avanzate (il più vicino che ho visto è Google Transliterate, che in realtà fa un ottimo lavoro con questo anche senza l'input dell'utente, ma questo non è fattibile per il presente progetto), molta meno conversione senza segni di tono. Sono scettico sul fatto che ciò sia persino possibile, senza ricorrere a caratteri di fatto che prendono in prestito nomi stranieri come 比尔 · 莫瑞. Questo è l'approccio adottato da Google Maps nei loro domini internazionali, come possiamo vedere in questo documento (PDF)

Comunque, ero disposto a sospendere l'incredulità e, dopo aver consultato la documentazione e le esercitazioni, sono stato in grado di costruire due oggetti Transliterator (da e verso) ed eseguire una semplice traslitterazione utilizzandoli.

Mentre Han-Latin funzionava abbastanza passabilmente (circa l'80% di precisione per dati semplici), Latin-Han sembrava non funzionare affatto, restituendo la stessa stringa "latina" che era stata inserita, il che è coerente con i risultati che ottengo l ' esempio di trasformazione online e coerente con ciò che so sul cinese. Sono riuscito a trovare questo table, che penso sia ciò che viene utilizzato per entrambe le sorgenti, come possiamo vedere qui :

{ "Latin-Han", "file", "t_Hani_Latn", "REVERSE" },
{ "Han-Latin", "file", "t_Hani_Latn", "FORWARD" },

Presumo che questo significhi che data una stringa pinyin potrebbe potenzialmente funzionare per riprodurre l'originale, ma non sembra essere il caso.

Immagino che la mia domanda generale sia questa: questo tipo di trasformazione è possibile anche con ICU o qualcosa di diverso da Google Transliterate? Qual è l'output previsto? Relativamente, c'è un elenco da qualche parte delle coppie di script che ICU effettivamente supporta, se questo non è realmente possibile?

Grazie per il tuo tempo

È stato utile?

Soluzione

Tieni presente che i dati provengono dal progetto CLDR, http://cldr.unicode.org .Le coppie di script supportate da ICU sono molte, ICU tenterà di utilizzare una scrittura pivot (come da Han a Latin a Russian) motivo per cui è possibile creare traduttori come "Any-Latin".Potresti provare a sfogliare il set di dati ICU e CLDR.La nota nella parte superiore del file Han-Latin dice che non è andata e ritorno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top