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

Как связать блоки Unicode с языками/скриптами?

Я пытаюсь найти ресурс, который можно использовать для подключения Языки (или, скорее, Scripts) к блокам символов Unicode. Такой ресурс будет использоваться для поиска таких вопросов, как "Какие Unicode-блоки используются на французском языке?" или "Какие языки используют блок от 0A80-0AFF (http://unicodinator.com/#Block-Gujarati)?" Вы знаете о таком ресурсе?

Я бы ожидал, что сможем легко найти эту информацию в unicode.org. Я быстро смог найти отличный стол, который связывает коды стран с языками (http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/territory_language_information.html). Но я потратил немало времени на то, чтобы не думать о том, что касается Unicode Blocks to Languages. Возможно, у меня есть проблема с терминологией, которая мешает мне подключать точки здесь...

Я не придирчив к тому, что подразумевается под "языком" (код Java Locale или код ISO 639 или что-то еще) в этом случае. Я также понимаю, что могут не быть точных ответов, потому что, например, арабский документ может содержать латинский и другой текст в дополнение к символам из арабских блоков (http://unicodinator.com/#Block-Arabic, http://unicodinator.com/#Block-Arabic_Supplement). Но, безусловно, должна быть таблица, в которой говорится, что "эти языки идут с этими блоками"... Я также не придирчив к формату (XML, CSV, независимо), я могу легко преобразовать его в данные, которые я могу использовать для своего приложения, И снова я понимаю, что ссылка, вероятно, будет связывать скрипты с блоками, а не с языками (хотя скрипты могут быть сопоставлены с языками).

Я понимаю, что это будет таблица "многие-ко-многим" (поскольку многие языки используют символы из нескольких блоков, а многие блоки используются несколькими языками); Я действительно понимаю, что это не может быть точно ответино, поскольку кодовые слова Unicode не являются специфическими для языка, однако вопрос о том, "какие языки существуют в этой стране", не может быть и речи (ответ, вероятно, "большинство из них" для большинства стран), но таблица (http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/territory_language_information.html) по-прежнему можно создавать, осмыслять и полезно.

Что касается того, почему я хотел бы такого: я хотел бы увеличить http://unicodinator.com глобальные тепловые карты для кодовых блоков и списки языков; У меня также есть концепция игры, с которой я возился. Помимо этого, возможно, есть много других применений, которые могли бы сделать другие люди для этого (создание шрифтов? Эвристическое, быстрое, лучшее определение языка теперь, когда API-интерфейс Google Translate уходит?).

4b9b3361

Ответ 1

Я получил ответ от Unicode.org! В подпроекте CLDR есть такие документы, как:

для каждого идентификатора языка, в котором вы можете искать "instanceplarCharacters":

<exemplarCharacters>[\u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 ء آ أ ؤ إ ئ ا ب ت ة ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي ى]</exemplarCharacters>
<exemplarCharacters type="auxiliary">[\u200C\u200D\u200E\u200F]</exemplarCharacters>
<exemplarCharacters type="currencySymbol" draft="contributed">[a b c d e f g h i j k l m n o p q r s t u v w x y z]</exemplarCharacters>
<exemplarCharacters type="index" draft="contributed">[ا ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي]</exemplarCharacters>

Или, есть эта страница: http://unicode.org/repos/cldr-tmp/trunk/diff/by_type/misc.exemplarCharacters.html с тем, что похоже на все. Я буду работать над перестановкой этих данных в какую-то карту langid → blockid, в которой я, вероятно, буду знать @borrible "Ответ" (вместо того, чтобы сделать мой ответ).

Ответ 2

Как насчет генерации (приблизительных) данных? Одним из примеров может быть использование различных языков wikipedias - загрузка достаточного количества данных на каждом языке, создание списка символов, используемых в документах со счетами, и поставить порог, чтобы избавиться от небольших экземпляров заимствованного текста с других языков. Это было бы приблизительным, но, возможно, хорошей отправной точкой.

Ответ 3

Нет такого ресурса и по простой причине: назначение кодовых точек Unicode не зависит от языка. Таким образом, каждая точка кода может использоваться несколькими языками.

Конечно, есть определенные символы, которые отображаются непосредственно на один язык, но, как правило, каждая точка кода предназначена для совместного использования. Поэтому не имеет смысла создавать кодовую точку для языковых таблиц.

Если вы ищете способы обнаружения языка, определенно это не способ перехода.

Ответ 4

Я не думаю, что символы CLDR exampleCharacters будут давать точные результаты. Вы можете найти для каждого символа свойство script из проект UCD Scripts.txt и ScriptExtensions.txt. Подробнее читайте (Unicode script Свойство)

После того, как у вас есть script, вы можете связать его с языком в CLDR, используя раздел languageData файла addalData.xml