2012-03-23 14 views
19

Sto cercando un modo per trascrivere caratteri di lettere Unicode da qualsiasi lingua in lettere latine accentate. L'intento è di consentire agli stranieri di ottenere informazioni sulla pronuncia dei nomi e delle parole scritte in qualsiasi scrittura non latina.Romanizzazione del testo Unicode

Esempi:

greca: Romanize("Αλφαβητικός") restituisce "Alphabētikós" (o "Alfavitikós")

giapponese: Romanize("しんばし") rendimenti "shimbashi" (o "sinbasi")

Russa: Romanize("яйца Фаберже") rendimenti "yaytsa Faberzhe" (o "jajca Faberže ")

Dovrebbe idealmente supportare i caratteri nei seguenti script: CJK, Indic, Cirillico, Semitico e Greco. Dovrebbe essere guidato dai dati ed estendibile, utilizzando i dati del Consorzio Unicode, degli Stati Uniti, dell'UE o dell'ONU. Il codice dovrebbe essere open source scritto in .NET o Java.

Esiste una tale biblioteca?

+0

Sto cercando qualcosa come la traslitterazione di nomi di località di Google Maps, che utilizza le trasformazioni ICU. Vorrei che Google aprisse questo codice. (http://research.google.com/pubs/pub36450.html e http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/papers/36450.pdf) –

+0

I penserei che questa operazione sia anche specifica della localizzazione.Welsh e Pinyin usano gli stessi personaggi ma probabilmente romanizzano in modo diverso :-) – wberry

+2

@wberry: il gallese usa nativamente lo script latino e Pinyin è già romanizzato in cinese. –

risposta

6

È possibile utilizzare la libreria .net http://unidecode.codeplex.com/.

Utilizzo;

using BinaryAnalysis.UnidecodeSharp; 

....................................... 

string _Greek="Αλφαβητικός"; 
MessageBox.Show(_Greek.Unidecode()); 

string _Japan ="しんばし"; 
MessageBox.Show(_Japan.Unidecode()); 

string _Russian ="яйца Фаберже"; 
MessageBox.Show(_Russian.Unidecode()); 

Spero, sarà un bene per voi.

+1

Grazie. Questo e 'esattamente quello che stavo cercando. –

+0

+1, e voglio solo notare che ci sono le porte della libreria per Python e Perl –

+0

Grazie, ho scaricato la DLL ma Unidecode() non veniva ancora riconosciuto in nessuna stringa. Non sapevo che dovevo aggiungere questo BinaryAnalysis usando ... – Veverke

6

Non sono a conoscenza di alcuna soluzione open source qui oltre ICU. Se l'ICU funziona per te, bene. In caso contrario, si noti che io sono il CTO di un'azienda che vende un prodotto commerciale per questo scopo che può trattare con i casi icky come le parole cinesi, la lettura multipla giapponese e l'ortografia incompleta araba.

+1

+1 http://userguide.icu-project.org/transforms/general – stephan

13

Il problema è molto più complesso di quanto si pensi.

greco, cirillico, indiano, Georgiano -> banale, si potrebbe programmare che in un'ora
Thai, Kana giapponese -> fattibile con un po 'più di sforzo
Kanji giapponese, cinese -> questi non sono alfabeti/le sillabe, quindi in realtà non stai traslitterando, stai cercando la pronuncia di ciascun simbolo in un dizionario che spero sia grande (EDICT e CCDICT dovrebbero funzionare), e molte volte ti sbagli se non sei anche tu considerando il contesto, specialmente in giapponese
coreano -> tecnicamente un alfabeto, ma i computer possono gestire solo i caratteri composti, quindi è necessario un altro grande database, non sono a conoscenza di alcun
arabo, ebraico -> questi le lingue non scrivono brevi vocali, quindi molte volte la tua traslitterazione sarà qualcosa di illeggibile come "bytlhm" (Betlemme). Non sono a conoscenza di database di grandi dimensioni che associano parole arabe o ebraiche alla loro pronuncia.

+0

Non ha chiesto l'arabo o l'ebraico. – bmargulies

+3

In realtà ha fatto. "Dovrebbe idealmente supportare i personaggi nei seguenti script: CJK, Indic, Cirillico, Semitico e Greco" -> Arabo ed Ebraico sono le lingue semitiche più parlate. – Sprachprofi

+0

Vero. Leggi troppo velocemente. – bmargulies