К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов.

К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов.

В Китае через каждые 10 ли меняется говор, через каждые 100 ли – наречие, через каждые 1000 ли – язык.

— отечественный синолог XIX в. проф. В.П.Васильев

Здравствуйте уважаемые читатели «Магазеты». Позвольте мне в сегодняшней статье коснуться информационных аспектов фонологии диалектных произношений китайских иероглифов. Те, кто всё ещё боится таинственных значков международной фонетической транскрипции IPA больше, чем самих ханьцзы – попрошу не пугаться, поскольку постараюсь довести до вас мысль в максимально понятной форме, не требующей специальных знаний.

На подобную идею унификации меня подтолкнуло недавнее изучение базовых основ фонетики шанхайского диалекта, в котором, как мне сперва показалось, гласных звуков было чуть ли не больше чем самих согласных. Также именно для шанхайского диалекта была более всего заметна общая несогласованность транскрипционных систем, т. е. в одной транскрипции, даже c использованием IPA, отдельную фонему выделяют, а в другой системе транскрипции её вообще нет и т. п. Латинская транскрипция используется намного реже для задач записи чтений в том же шанхайском диалекте. Но, всем понятно, что универсальных латинских транскрипций, в которых можно было бы однозначно и без потерь передать чтение для любой диалектной группы, похоже, никому не удастся создать. Вот поэтому то, чтения в Шанхайском диалекте чаще всего представлены сразу в фонетической транскрипции IPA. По сути, создать на основе латиницы транскрипцию, идеально передающую чтение даже в пределах одного диалекта бывает довольно сложно и чревато неоднозначностью. Поэтому, за основу, для наиболее точной передачи любого звучания, необходимо взять нечто более универсальное – конечно же, ещё со школьной скамьи знакомый всем (не-)любителям английского языка международный фонетический алфавит IPA. Поэтому, не старенькая Бопомофо и не специально разработанные латинизированные аналоги Пиньинь, а жёстко стандартизованные, однозначные (но, всё же, пугающие значки алфавита IPA) смогут обеспечить унификацию диалектных чтений в китайском языке!

Вспомним, как сейчас представлены чтения в различных базах иероглифов – CJKLib, Unihan и пр.? Это чаще всего таблица с записанной латинской транскрипцией и численными обозначениями тонов. Конечно, такой способ хранения чтений очень удобен для реализации в IME методов фонетического ввода для любой из диалектных групп. Ведь для этого нужны всего лишь клавиши от A-Z, и цифровые клавиши от 1 до 6 или 9, в зависимости количества тонов в диалекте. Либо вообще возможен бестоновый набор слов и фраз. Поэтому, если в одной латинизированной фонеме из шанхайского диалекта объединились два звука, очень близких по звучанию гласного, то для ввода нескольких иероглифов это, согласитесь, не критично. И только для шанхайского диалекта я недавно увидел действительно грамотное применение значков IPA для транскрипции фонемы и для регистра и контура тонов. Но реализация на клавиатуре самого чисто фонетического ввода с алфавитом IPA – это не совсем простая задача. Ради интереса, если кто-нибудь попытается реализовать ввод значками IPA для самой обыкновенной стандартной Pinyin, то я не думаю, что у многих пользователей скорость ввода от такого «нововведения» останется прежней. Но мы отклонились от темы, теперь нужно перейти от задач фонетического ввода, к задаче хранения и анализа фонетической информации.

А что, если представлять чтения иероглифов не в виде некой текстовой строки, а взять и побитно закодировать инициаль, медиаль, терминаль и контур тона? Например, уложить всё это в 4 байта (32 бита). Во-первых, тогда сразу будет экономия места для хранения в базах данных. Для справки, самая длинная по буквам фонема на Пиньинь – zhuang с тоном в текстовом виде будет занимать 7 байт. А с подходом числового кодирования становится возможным хранение максимально неискажённых данных о чтении на тончайшем уровне внутридиалектных фонетических различий для любого китайского иероглифического знака.

Рассмотрим 32-битовое кодирование одной фонемы подробнее. Здесь, конечно же, здорово помогают фундаментальные правила формирования китайского слога – это жёсткое деление его на три независимые части: инициаль, медиаль и терминаль. Разные авторы ещё и объединяют медиаль и терминаль в финаль.

Инициаль

Мой анализ фонемных рядов транскрипционной записи согласных инициали для различных диалектных групп привел вот к такой таблице. Система классификации согласных в таблице несколько произвольна, но интуитивно понятна.

Таблица 1. Согласные инициали
К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов.

 

Итак, инициаль кодируется 7 битами. 3 бита отведены под указатель столбца в таблице согласных, а 4 бита отведены под указатель номера строки в таблице. Как заметно выше, таблица не до конца заполнена (свободно 43/128), и если будет необходимость, то можно, в нарушение вышеприведенной структуры организации таблицы, внести дополнительные согласные. В подсчитанное число вакантных мест в таблице вошли коды с INIT_ROW=0, но с INIT_СOL=(1…7), поскольку эти значения могут быть использованы, как отдельные согласные. А сочетание INIT_СOL=0 и INIT_ROW=0 уже занято в качестве нулевой инициали.

Медиаль

Здесь пришлось собрать в кучу все встреченные в транскрипциях гласные, хотя именно существенный разнобой в записи гласных звуков не даёт пока говорить о полной согласованности фонетической записи чтений алфавитом IPA, используемого различными авторами даже для стандартной Pinyin. Почти все используемые в транскрипции гласные из классификационной трапеции IPA, как раз удачно вписываются в 31 ячейке таблицы. Нулевая медиаль также кодируется нулевым значением MED1=0 и MED2=0. Но есть еще дифтонги и более сложные сочетания гласных. Поэтому необходимо использовать два числа для кодирования гласных звуков, и MED1 кодирует первый в строке транскрипции гласный звук, а MED2 – второй. Если присутствует один гласный звук, то значение присваивается только MED1, а MED2 должен быть равен нулю. Одинаковое значение MED1=MED2 просто удлиняет гласный звук – например [ɛ:]. Также, как резервная информационная ёмкость, может быть использована ситуация с MED1=0 и MED2≠0. Это еще 31 зарезервированное место в таблице гласных, либо для заранее составленных дифтонгов или для дополнительных одиночных гласных. Но для гарантии вводится ещё и модификатор размером в 1 бит. Если модификатор равен 0, то схема образования пары гласных идет обычным вышеописанным способом с резервом в 31 гласную или дифтонг. Если модификатор имеет ненулевое значение, тогда MED1 и MED2 используются для общего 10 битного кодирования расширенных гласных или дифтонгов. И тогда дополнительный резерв кода для медиали достигает 1024 мест. Ниже приведена таблица списка гласных медиали (MED1 или MED2). Порядок обозначений гласных звуков в таблице фонетически не систематизирован и является произвольным.

Таблица 2. Список гласных медиали
К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов.

Терминаль

Здесь ещё проще, достаточно всего 31 место под символы терминали. В таблице порядок обозначений гласных или согласных звуков также фонетически не систематизирован и является произвольным.

Таблица 3. Список гласных и согласных терминали
К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов. Свободными остаются 14/31 мест.

Тональность

Тон, по авторитетному мнению IPA, может быть регистровым (ровный) или ломаным. Для обозначения регистра или контура тона достаточно цифр в регистре верхнего индекса 1,2,3,4,5. Всего контур может проходить максимум по трём точкам – под это понадобятся участки кода TONE1, TONE2, TONE3. Если точек оказывается больше, то предложенное в статье кодирование не уместится в 4 байта (32 бита). Поэтому принимаем, что для ломаного тона необходимы три числа от 1 до 5 (каждое по 3 бита информации), например 3-ий тон путунхуа запишется 214. А для регистрового тона можно использовать 1 или 2 или 3 одинаковых числа, что, кстати, дополнительно позволяет ещё и оперировать длительностью фонемы. По крайне мере, короткие регистровые тоны могут быть записаны одной цифрой. Отсутствие тональности может быть записано как TONE1=0, TONE2=0, TONE3=0. Всего необходимо на запись информации о тональности 9 бит.

Фонетический код (PHONETIC_CODE)

Теперь можно посмотреть, как выглядит целиком 32-битное кодирование для отдельной фонемы.

Таблица 4. Структура фонетического кода
К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов.

 

Конечно, информационная ёмкость предложенного структурированного фонетического кода используется не полностью. Для справки, путём обработки таблиц IME для кантонского диалекта я выделил около 2205 отдельных фонем (с тонами, разумеется). В путунхуа где-то около 1400 самостоятельных фонем с тонами. А если вспомнить, что 2^32=4G, то становится очевидно, что недоиспользование 32 битного кода очень существенно. Но структурированность и избыточность как раз и порождают удобство кодирования и декодирования.

Геоинформационное кодирование (GEO_CODE)

Особо внимательный читатель, конечно же, заметил ещё и упоминание о пространственной составляющей кодирования в названии статьи. Да, пора, в буквальном, смысле спуститься с заоблачных абстрактно-теоретических высот на землю. А что, если снабдить каждое чтение в базе данных ещё пространственной информацией – т.е. это будет некий идентификатор местоположения, в котором будут указаны координаты точки, уезда, провинции, в пределах которой зарегистрировано данное чтение для отдельно выбранного ханьцзы. Получается некий интересный метод для решения задач картирования китайской диалектной фонологии в геоинформационных системах. Тогда, можно просто выделив некий иероглиф (конечно же, общеупотребительный) на фонетической карте Китая по нескольку десятков точек пространственно анализировать изменения звучания инициали, финали, структуры тона и т.д. В простейшей базе данных для хранения чтений китайских иероглифов структура записи для хранения фонетической информации выглядит следующим образом:

Таблица 5. Структура записи о фонеме в базе данных
К вопросу об унифицированном пространственно-фонетическом кодировании диалектных произношений китайских иероглифов.

HANZI_ID – идентификатор иероглифа (например номер в таблице UNICODE) (4 байта)

PHONETIC_CODE представленный выше 32-битный фонетический код иероглифа, (4 байта).

GEO_CODE_ID – идентификатор записи о географическом месте в таблице пространственного положения для точек зарегистрированного чтения, (4 байта).

Теперь можно представить себе и минимальный размер в байтах для такой базы данных. Количество пространственных точек равно в узком смысле количеству всевозможных диалектов внутри основных языковых групп китайского языка. На страничке Википедии про диалекты (http://en.wikipedia.org/wiki/List_of_Chinese_dialects) я, у основных диалектных (языковых) групп, насчитал столько диалектов: Гань, 贛語 (9); Мандарин, 官話 (60); Хуэй, 徽語 (4); Цзинь, 晉語 (6); Хакка, 客家話 (10); Минь, 閩語 (64); У, 吳語 (43); Сян湘語, (23); Кантонский (Юэ) 粵語, (67); Итого 286. С учётом внутридиалектных наречий это число в разы больше. Теперь возьмём максимальное на сегодня число ханьцзы в стандарте Юникод около 75 000 иероглифов (хотя, на самом деле, пока в свободном доступе число иероглифов с китайскими чтениями несколько меньше, для базы Unihan где-то около 27 000 знаков). Длина одной записи (табл.5) для отдельной фонемы в байтах равна 4*3=12 байт. Тогда ориентировочный размер подобной базы данных, без учета внутридиалектных наречий, будет равен 75 000*12*286=245 МБт, что не может не внушать уважение. Да, и это строго при одном чтении на один иероглиф. Т.е. в реальности при учёте наречий этот объем информации может быть в районе значений 1–2 ГБт.

Следующий, уже технический вопрос – порядок выполнения кодирования. С большой долей вероятности можно утверждать, что значительная часть исходных данных будет представлена текстом в разных системах латинской транскрипции в виде таблиц. Прежде всего, для латинской транскрипции внутри каждой диалектной группы необходимо предусмотреть сначала максимально достижимую однозначность схемы романизации и функцию конверсии в промежуточный транскрипционный 32-битный код, в котором предусмотрен простой порядковый номер для используемой в диалекте инициали, медиали, терминали и тона, каждый из которых занимает размер 1 байт. Т.е. заранее необходимо составить таблицы порядкового перечисления всех выделенных из фонем инициалей, медиалей и т.д. Из такого промежуточного кода конверсию в универсальный фонетический код IPA выполнять намного легче. Т. е. пошагово, схема формирования фонетического кода базы чтений внутри каждого диалекта выглядит следующим образом (VBA):

1) CODE = LatTranscriptionToCODE(LatTranscriptionStr as String)

2) UNIVERSAL_IPA_CODE = CODEToUniversalIPACode(CODE as long)

Для функции преобразования строки в промежуточный код LatTranscriptionToCODE также следует отслеживать и варианты, в которых из-за несовершенства латинской транскрипции может потеряться точная информация, особенно об одном из гласных звуков. Зато преобразование в строку символов IPA для строки транскрипции выполняется только одной общей для всех диалектов функцией.

IPA_STRING = UniversalIPACodeToStr(IPA_CODE as Long).

Я резюмирую.

Какие выгоды сулит представленный в статье подход?:

1) Возможность наглядной пространственной визуализации всей фонологии китайских диалектов.

2) Составление обобщающих схем и правил переходов и изменения для всех четырёх компонентов, слагающих китайскую фонему;

3) Простая организация баз данных, в которых хранятся точные диалектные произношения иероглифов, выводимые в международной фонетической транскрипции. Это весьма полезно в задачах обучения произношению всевозможных диалектных групп;

Благодарю за внимание.

Фото аватара

Автор: WERTA

Фанат грамоты на кiтайскiхъ знакахъ. Родился в 1977 г. Проживаю в РФ. Интерес к китайскому я зыку и культуре внезапно проснулся в 1997 г. Особенно интересует меня все, что касается: международных стандартов CJKV унификации, кодировок, методов ввода, схем романизации и общей фонологии основных кит. диалектных групп. За границей не был, КНР не посещал. Опыта языкового общения с носителями китайского языка не имею. Перевел в 2011 г. c традиционного китайского на русский язык компьютерную игру 殖民計劃 — Colonial Project (DOS, RTS, 1996, T-Time Corp.).

23 комментария

  1. Во, это самое гиковое, что я на “Магазете” читал про иероглифику. Аффтар жжош!!

    Кстати, ‘спускаясь с небес на землю’, как выразился сам автор, было бы реально круто увидеть хотя бы просто стандартизированные системы записи фонетики диалектов китайского. И подход автора мне представляется наиболее корректным – конечно же, проще научиться один раз и навсегда расшифровке IPA, чем изобретать велосипед, и догадываться, что в этом-то вот случае “xin” читается как “синь”, а вот в том случае – как ещё что-то.. Стандартизация тем более нужна, что в нашем мире появился доступ ко всем уникальным культурам, и если к каждой нужен “свой особый pinyin”, то это ж можно рехнуться :)

    1. [QUOTE]Во, это самое гиковое, что я на «Магазете» читал про иероглифику. Аффтар жжош!![/QUOTE]
      Точнее, все-таки про фонетику, а не про иероглифику, хотя последнее мне очень даже не чуждо.

      Здесь уже привели ссылку cn.voicedic.com, так вот, там действительно собраны более менее хорошо проработанные “за годы” именно латинские транскрипции ПиньИнь, ЮтПхин, Шанхайская – незнаю как называемая… Уход от латинской транскрипции, особенно при обучение произношению, а тем более диалектному произношению, однозначно необходим. Если китаец, погружен с детства в фонетику латинской ПиньИнь (он многих других европейских звуков просто не знает), то европейцу звучание многих сочетаний гласных в фонемах путунхуа априори просто неизвестно, и никакая пиньинь кроме IPA этот пробел в знаниях не восполнит.

  2. Работа может быть и интересная, только что-то я не вижу пользы для человеков, извините. Для роботов польза несомненная, особенно тех, у которых всего 32 кБ памяти, но людям потребна избыточность представления, а тут побитовая упаковка данных в 4 байта оказывается.

    Еще раз прошу извинить за недовольство: прочитав название, ожидал все-таки про людей.

    1. Ну изначально конечно же для это ориентировано для хранения в “компутерах”, а в конечном счете вывод на экран в виде строки для “человеков”. Представьте, перед вами стоит задача максимально точной передачи чтения ханьцзы в различных диалектных группах. Если сразу записывать IPA в строчку, то это займет много места, ну и строку IPA дополнительно придется сегментировать на составляющие фонемы (инициаль,…). А в 4 байтовом предлставлении все уже сегментировано, и с помощью одной единственной функции все это превращается в строку IPA для вывода на экран, или ксати идея пришла сейчас – для систем Voice Generation.

      1. Ну да, я понял конечно. Только если цель стоит в экономии места (сомнительная цель в данном случае), можно вообще экстремально поступить: ведь у нас 4 миллиарда вариантов в unsigned int (32-bit system) – что нам стоит пару тысяч выделить под фонетику? И машине уже не надо мучиться с десятью таблицами, а достаточно одной, в которой перечислены все варианты. Получается и скорость и экономия места. Конечно теперь уже человеку-программисту так просто не прочитать, что же означает это “слово” (в смысле 4-х байт) – не бьется на биты запись, что поделаешь. Но и в вашем случае нужно под рукой все таблицы иметь, хоть они и короче.

        Впрочем, вы не сильно обращайте внимания на моё “старческое” брюзжание. Работа действительно интересная, не стоило только впихивать себя в рамки 32 бит.

          1. Насчет генерации речи.
            Ну пока такое хранение больше ориентировано на техническую поддержку “словарных” чтений одиночного ханьцзы. Но действительно, почему бы не проговаривать еще и тексты.
            Сандхи тонов в путунхуа довольно ограницченный свод правил. Если нет необходимости проводить сложный анализ сандхи тонов в границах грамматической единицы текста (слова 2,3,4… ханьцзы), тогда задача учета сандхи тонов существенно облегчается и в пределах одного диалекта сводится к простым формулам типа:
            3+3=3+2 (путунхуа)
            ………..

            Правда вообще почему такой слабый учет тонов в Шанхайском диалекте и правила их групповых сандхи “низкий-высокий” я так и не понял.

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

        1. [QUOTE]ведь у нас 4 миллиарда вариантов в unsigned int (32-bit system) — что нам стоит пару тысяч выделить под фонетику?[/QUOTE]
          Абсолютно верное предложение, но… Да, действительно мы можем собрать все фонемы, в разных тоновых вариантах, все записанные единой транскрипцией IPA – миллон записей, места хватит, но если есть задачи фонетики для пространственного анализа изменения инициали, финали и т.п. в диалектах, то такое “сквозное” представление таблицы фонем будет очень неудобным, поэтому вся эта разбивка внутри 4 Бт направлена на легкость выделения инициали, медиали, терминали и тонового контура. А если вдруг вводим новые фонемы для нового редкого диалекта, как их случайным образом в сквозном списке держать, как разделить гласные и что является у них медиалью или финалью? Т.е. если дополнительно не ставится задача еще и пространственного анализа базовых составляющих фонетической информации, тогда идея вашего предложения абсолютно имеет право на существование.

          [QUOTE]не бьется на биты запись, что поделаешь.[/QUOTE]

          Бьется на биты она в любом языке программирования, а уже строковую транскрипцию формирует функция с одновходовой переменной. Либо можно заранее жестко сформирвоть строку в БД
          Поля
          [CHAR_ID]
          [GEO_CODE_ID]
          [IPA_PHONETIC_CODE]
          [IPA_STRING]

  3. Очень интересная работа! Будем надеяться, что кого-то эта работа заинтересует, и труд будет продолжен уже в практическом применении.

    1. [QUOTE]Намекаю на то, что хорошая научная работа получилась бы.[/QUOTE]
      Спасибо за совет. Конечно же я понимаю, что в этой статье есть новизна. Но насчет научной работы – рано думать, для этого хотя бы необходимо, как минимум, иметь филологический диплом. С моими двумя чисто “технарьскими” вышками и дипломом к.г.-м.н. такая статья может быть воспринята профессионалами и истинными ревнителями китайской фонологии, наверное, в штыки и с солидной долей критики. Так, что пускай это будет пока любительский уровень, а там посмотрим…

      1. Можно просто забацать базу данных в этом формате, хотя бы для пиньиня и выложить по какой-нибудь открытой лицензии. А там народ подтянется, будет софт писать под это. А недостатки дорабатывать в следующих версиях стандарта.

        1. Это фактически готово, я пока написал под VBA различные функции конвертации диалектных транскрипций PinYin, JutPing. В Унихани пока забиты около 27 тысяч чтений для мандарина, для кантонского меньше, и их уже сейчас можно конвертнуть. Шанхайских пока у меня только 7000 чтений и только для GB2312. Еще давно у меня есть чтения Big5 на хакка. Но их я пока еще фонетически не сегментировал на составляющие. А потом можно добавлять все больше и больше чтений для других диалектных групп. Но есть пока технические проблема:

          Даже для PinYin разные авторы на IPA дают разные чтения фонем.
          Необходимо общее согласование, вроде наиболее логичные IPA звучания я видел на Вики.

          Короче сделаю, выложу в откр. доступе. А там пусть колдуют. А никто не знает, где можно взять таблицы чтений ханцзы для диалектов Гань, Сян, Минь (Юж, Вост). Хотя я читал про них, вроде от мандарина и кантонского они слабо отличаются.

          И еще мысль, посетившая меня сегодня, о возможности генерации речи чисто из этой 4 Бт формы записи фонемы – это реально осуществимо, может кто знает? Поскольку тут все в готовом виде уже представлено.

          1. Какие-то чтения можно выудить отсюда: http://cn.voicedic.com/

            Насчёт генерации речи — теоретически это можно сделать, но весьма запарно, ибо как минимум нужно учесть ассимиляцию тонов — это в путунхуа только одно правило (3,3->2,3), а в минь к примеру дофига. Ну и насчёт того же минь, там диалекты внутри группы настолько отличаются, что нужно наверное делать отдельные таблицы для миньбэй и миньнань.

    1. [QUOTE]напоминает выдержки из магистерской[/QUOTE]
      Все по-честному, ни у кого не “заимствовано”, это были просто мои дерзкие мысли вслух, ну а за научный стиль изложения прошу извинить, публицистическим стилем русского языка такое уже трудно передать, хотя я и не старался ;)

      1. я и не обвиняю в крыше интеллектуальной собственности. Намекаю на то, что хорошая научная работа получилась бы :)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *