Какие языки можно токенизировать и нормализовать с помощью данного файла данных ICU?
Моя задача - определить "поддерживаемые языки" на основе файла данных ICU V8.
Кажется, нет однозначного простого ответа, потому что поддержка языка зависит от интересующих функций. Меня интересует следующее:
- Токенизация (в словах в случае буквенных систем письма)
- Нормализация (сворачивание регистра и удаление диакритических знаков)
- Разбор (сортировка строки в алфавитном порядке)
Рассматриваемая версия ICU - 64.2. V8'sicudtl.dat
представляет собой подмножество10 МБ, тогда как полный файл данных ICU составляет 25 МБ (icu/source/data/in/icudt64l.dat
в архиве).
icupkg позволяет мне перечислить элементы пакета:
curl "https://chromium.googlesource.com/chromium/deps/icu.git/+/5005010d694e16571b8dfbf07d70817841f80a69/common/icudtl.dat?format=TEXT" | base64 -d > icudt64l.dat
icupkg --list icudt64l.dat
приводит к списку из 1326 строк (3665 для полной интенсивной терапии). Около 900 строк начинаются с префикса:
brkitr/
- Прервать итерациюcoll/
- Сопоставлениеcurr/
- Валютыlang/
- Отображаемые имена языковregion/
- Отображаемые названия регионовtranslit/
- Транслитерацияunit/
- Единицыzone/
- Часовые пояса
Например, для сопоставлений довольно легко судить по именам, какие языковые данные включены:
coll/am.res
coll/ar.res
coll/bg.res
coll/bn.res
coll/ca.res
coll/cs.res
coll/da.res
coll/de.res
...
На токенизацию ответить сложно из-за общих записей вроде brkitr/word.brk
:
brkitr/burmesedict.dict brkitr/ja.res brkitr/root.res
brkitr/char.brk brkitr/khmerdict.dict brkitr/ru.res
brkitr/cjdict.dict brkitr/laodict.dict brkitr/sent.brk
brkitr/de.res brkitr/line.brk brkitr/sent_el.brk
brkitr/el.res brkitr/line_loose.brk brkitr/thaidict.dict
brkitr/en.res brkitr/line_loose_cj.brk brkitr/title.brk
brkitr/en_US.res brkitr/line_normal.brk brkitr/word.brk
brkitr/es.res brkitr/line_normal_cj.brk brkitr/zh.res
brkitr/fr.res brkitr/pt.res brkitr/zh_Hant.res
brkitr/it.res brkitr/res_index.res
Будет ли ICU пытаться разбить любую строку на слова (или что-то подобное в других системах письма), используя общие правила? Так в основном поддерживаете любой язык в этом отношении?
Что касается нормализации, я не знаю, в каких файлах вообще могут находиться эти данные.
Есть ли общий ответ или, может быть, программный способ определить, какие языки могут быть токенизированы и нормализованы с данным файлом данных ICU?