2012-03-23 22 views
19

Unicode harf karakterlerini herhangi bir dilden aksanlı Latin harflerine çevirmek için bir yöntem arıyorum. Amaç, yabancıların Latince olmayan bir senaryoda yazılan isimlerin ve sözcüklerin telaffuzlarına dair fikir edinmelerine izin vermektir.Unicode metninin Romingleştirilmesi

Örnekler: Yunan

: Romanize("Αλφαβητικός") döner "Alphabētikós" (veya "Alfavitikós")

Japonca: Romanize("しんばし") döner "shimbashi" (veya "sinbasi")

Rus: Romanize("яйца Фаберже") döner "yaytsa Faberzhe" (veya "jajca Faberže ")

Aşağıdaki betiklerde karakterleri ideal olarak desteklemelidir: CJK, Indic, Kiril, Semitik ve Yunanca. Unicode Konsorsiyumu, ABD, AB veya BM'den gelen verileri kullanarak veri odaklı ve genişletilebilir olmalıdır. Kod, .NET veya Java'da yazılmış açık kaynak olmalıdır.

Böyle bir kitaplık var mı?

+0

ICU dönüşümleri kullanan Google Haritalar yer isimlerinin harf çevirisi gibi bir şey arıyorum. Google’ın bu kodu açık kaynak olmasını isterdim. (http://research.google.com/pubs/pub36450.html ve http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//archive/papers/36450.pdf) –

+0

I Bu operasyonun ayrıca yerel özgü olduğunu düşünürdüm.Welsh ve Pinyin aynı karakterleri kullanıyor ama muhtemelen farklı bir şekilde Romanize ediyorlar :-) – wberry

+2

@wberry: Galce, Latin alfabesini doğal olarak kullanıyor ve Pinyin zaten Çinliyeye romanize ediliyor. –

cevap

6

http://unidecode.codeplex.com/ bu .net kitaplığını kullanabilirsiniz.

Kullanım;

using BinaryAnalysis.UnidecodeSharp; 

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

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

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

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

Ben senin için iyi olacak umuyoruz.

+1

Teşekkürler. Tam olarak aradığım şey bu. –

+0

+1, ve sadece dikkat etmek istiyorum, Python ve Perl –

+0

için kütüphane portları vardır Teşekkürler, ben dll indirdim ama Unidecode() hala herhangi bir dizede tanınmıyordu. Bu BinaryAnalysis'i kullanarak eklemek zorunda olduğumu bilmiyordum ... – Veverke

6

ICU'un ötesinde herhangi bir açık kaynak çözümden habersizim. ICU sizin için çalışıyorsa, harika. Değilse, bu amaç için Çince kelimeler, Japonca çoklu okuma ve Arapça eksik ortografi gibi icky vakalarla uğraşabilecek bir ticari ürün satan bir şirketin CTO'su olduğumu not edin.

+1

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

13

Sorun, düşündüğünüzden çok daha karmaşık.

Yunan, Kiril, Hint komut, Gürcü -> önemsiz, bir saat
Tay o programlayabilirdik, Japon Kana -> biraz daha çaba
Japon Kanji, Çince ile yapılabilir -> bu alfabelerin değildir/heceler, bu yüzden aslında transliterasyon yapmıyorsunuz, umarız büyük bir sözlükte (EDICT ve CCDICT çalışmalı) her bir sembolün telaffuzlarını araştırıyorsunuz ve bir çok kez de yanlızsınız. bağlamda, özellikle Japonca
Korece -> teknik olarak bir alfabe, ancak bilgisayarlar sadece oluşan karakterleri işleyebilir, bu yüzden başka bir büyük veritabanına ihtiyaç duyarsınız, herhangi bir
Arapça, İbranice -> Diller kısa sesli harflerle yazılmaz, bu yüzden çoğu kez yazı dizileriniz "bytlhm" (Beytüllahim) gibi okunamayacak bir şey olacaktır. Arapça veya İbranice kelimeleri telaffuzlarına göre haritalayan büyük veritabanlarının farkında değilim.

+0

Arapça veya İbranice sormadı. – bmargulies

+3

Aslında yaptı. "Aşağıdaki betiklerde karakterleri ideal olarak desteklemelidir: CJK, Indic, Kiril, Semitik ve Yunanca" -> Arapça ve İbranice en çok konuşulan Semitik dillerdir. – Sprachprofi

+0

Doğru. Çok hızlı oku. – bmargulies