Романизация текста Юникода
Я ищу способ транслитерировать символы букв Юникода с любого языка на латинские буквы с акцентом. Цель состоит в том, чтобы позволить иностранцам получить представление о произношении имен и слов, написанных на любом нелатинском языке script.
Примеры:
Греческий: Romanize("Αλφαβητικός")
возвращает "Alphabētikós"
(или "Alfavitikós" )
Japanese: Romanize("しんばし")
возвращает "shimbashi"
(или "sinbasi" )
Русский: Romanize("яйца Фаберже")
возвращает "yaytsa Faberzhe"
(или "jajca Faberže" )
Он должен идеально поддерживать символы в следующих сценариях: CJK, индексе, кириллице, семитском и греческом языках. Он должен быть ориентирован на данные и расширяться, используя данные из Консорциума Unicode, США, ЕС или ООН. Код должен быть открытым исходным кодом, написанным на .NET или Java.
Существует ли такая библиотека?
Ответы
Ответ 1
Вы можете использовать Unidecode Sharp:
[С#] порт из Python Unidecode, который сам по себе порт из Perl unidecode. (также доступны реализации PHP и Ruby)
Использование;
using BinaryAnalysis.UnidecodeSharp;
.......................................
string _Greek="Αλφαβητικός";
MessageBox.Show(_Greek.Unidecode());
string _Japan ="しんばし";
MessageBox.Show(_Japan.Unidecode());
string _Russian ="яйца Фаберже";
MessageBox.Show(_Russian.Unidecode());
Я надеюсь, это будет хорошо для вас.
Ответ 2
Проблема намного сложнее, чем вы думаете.
Греческий, кириллический, индикаторный скрипты, грузинский → тривиальный, вы можете запрограммировать это через час
Тайский, японский Kana → выполнит немного больше усилий
Японский кандзи, китайский → это не алфавиты/слогалы, поэтому вы на самом деле не транслитерируете, вы смотрите на произношение каждого символа в надежном большом словаре (EDICT и CCDICT должны работать), и много раз вы получите это неправильно, если вы не рассматриваете контекст, особенно на японском языке
Корейский → технически алфавит, но компьютеры могут обрабатывать только составленные символы, поэтому вам нужна другая большая база данных, я не знаю ни одного
Арабский, иврит → эти языки не записывают короткие гласные, поэтому много раз ваша транслитерация будет чем-то нечитаемым, как "bytlhm" (Вифлеем). Я не знаю каких-либо больших баз данных, которые отображают слова арабского или иврита для их произношения.
Ответ 3
Я не знаю о каком-либо решении с открытым исходным кодом здесь, кроме ICU. Если ICU работает для вас, отлично. Если нет, обратите внимание, что я являюсь техническим директором компании, которая продает коммерческую продукцию для этой цели, которая может заниматься такими нехорошими делами, как китайские слова, японское многократное чтение и арабская неполная орфография.
Ответ 4
Unicode Common Locale Data Repository содержит транслитерационные сопоставления вы можете использовать.