Подтвердить что ты не робот

Романизация текста Юникода

Я ищу способ транслитерировать символы букв Юникода с любого языка на латинские буквы с акцентом. Цель состоит в том, чтобы позволить иностранцам получить представление о произношении имен и слов, написанных на любом нелатинском языке script.

Примеры:

Греческий: Romanize("Αλφαβητικός") возвращает "Alphabētikós" (или "Alfavitikós" )

Japanese: Romanize("しんばし") возвращает "shimbashi" (или "sinbasi" )

Русский: Romanize("яйца Фаберже") возвращает "yaytsa Faberzhe" (или "jajca Faberže" )

Он должен идеально поддерживать символы в следующих сценариях: CJK, индексе, кириллице, семитском и греческом языках. Он должен быть ориентирован на данные и расширяться, используя данные из Консорциума Unicode, США, ЕС или ООН. Код должен быть открытым исходным кодом, написанным на .NET или Java.

Существует ли такая библиотека?

4b9b3361

Ответ 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 работает для вас, отлично. Если нет, обратите внимание, что я являюсь техническим директором компании, которая продает коммерческую продукцию для этой цели, которая может заниматься такими нехорошими делами, как китайские слова, японское многократное чтение и арабская неполная орфография.