Какие языки можно токенизировать и нормализовать с помощью данного файла данных ICU? - PullRequest
0 голосов
/ 06 августа 2020

Моя задача - определить «поддерживаемые языки» на основе файла данных ICU V8.

Кажется, нет единого простого ответа, потому что то, поддерживается ли язык, зависит от интересующих функций . Меня интересует следующее:

  • Токенизация (словами в случае алфавитов c систем письма)
  • Нормализация (сворачивание корпуса и удаление диакритических знаков)
  • Сортировка (сортировка строк в алфавитном порядке)

Рассматриваемая версия ICU - 64.2. V8 icudtl.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 для полного ICU ). Около 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
...

Для токенизации это трудно ответить из-за общих c записей типа 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 пытаться разбить любую строку на слова (или что-то подобное в других системах письма) с помощью generi c правила? Так что в основном поддерживаете любой язык в этом отношении?

Что касается нормализации, я не знаю, в каких файлах вообще могут находиться эти данные.

Есть ли общий ответ или, может быть, программный c способ определить, какие языки могут быть токенизированы и нормализованы с данным файлом данных ICU?

...