Skip to content

Latest commit

 

History

History
274 lines (141 loc) · 18.5 KB

explanation.md

File metadata and controls

274 lines (141 loc) · 18.5 KB

Трудности написания

Переключить язык на: английский

Я не специалист в этой теме, а с японским языком меня связывает только желание его выучить.

Здесь описаны некоторые особенности японского произношения и письменности. Этими особенностями вызваны трудности, с которыми я столкнулся при написании мини-библиотеки kana-transformer.

toKana()

  1. Зависимость чтения слога от позиции
  2. Разные обозначения долготы гласных
  3. Разделение ряда на и слоговой н
  4. Определение неслышной гласной и долгой согласной
  5. Неслышный гласный: и или у?
  6. Расширенная кана. Два согласных

fromKana()

  1. Распознавание частиц
  2. Понимание слоговой н
  3. Распознавание долгих гласных

convertKana()

  1. Распознавание долгих гласных в хирагане

Введение

Азбука

Помимо иероглифов, в японской письменности используются две слоговые азбуки (каны): хирагана и катакана. В каждой азбуке по 46 символов, каждый из которых означает слог (за исключением ん/ン - этим символом обозначают согласный н). В результате каждый слог имеет два символа для отображения на письме: один из хираганы, другой из катаканы.

в р й м х н т с к согл/глас
わ/ワ ら/ラ や/ヤ (я) ま/マ は/ハ な/ナ た/タ さ/サ か/カ あ/ア а
り/リ み/ミ ひ/ヒ に/ニ ち/チ し/シ き/キ い/イ и
る/ル ゆ/ユ (ю) む/ム ふ/フ ぬ/ヌ つ/ツ す/ス く/ク う/ウ у
れ/レ め/メ へ/ヘ ね/ネ て/テ せ/セ け/ケ え/エ э
ろ/ロ よ/ヨ (ё) も/モ ほ/ホ の/ノ と/ト そ/ソ こ/コ お/オ о
ん/ン (н)

В японском больше 46 слогов. Некоторые из недостающих обозначаются на письме добавлением специальных знаков к основным символам: нигори ゛ или ханнигори ゜.

Для передачи звуков, которым нет аналогов в японском языке, используют расширенную кану. Эти каны, например, могут передавать слоги с двумя согласными подряд.

Хирагана

Зачастую дополняет слово, которое пишется иероглифами, являя собой его части (суффиксы). Иногда иероглифы не используют, и слово пишется только хираганой.

Также ей записываются некоторые вспомогательные части речи, как частицы, союзы и наречия.

Катакана

Как правило используется по двум причинам: либо при записи иностранных слов, имён; либо чтобы то или иное понятие выделить из общего ряда (катакана отличается более резкими чертами).

Особенности речи и письма

Разделение слов

Для разделения слов не используются пробелы и прочие символы, что типично для иероглифической письменности. Обычно, чтобы отделить одно слово от другого, хотя бы одно из них нужно знать.

Частицы

Некоторые каны могут выступать в роли частиц. В этом случае их произношение меняется:

  • は произносится [ва]
  • へ произносится [э]
  • を произносится [о]

Долгая гласная

Хирагана

В зависимости от слова принято обозначать долготу гласной по-разному:

  • Удвоение - общий для всех гласных метод
  • [и] после [э] зачастую означает долгую [э]
  • [у] после [о] зачастую означает долгую [о]
Катакана

Здесь всё проще: всегда используется символ ー .

Неслышная гласная

Гласные [и] и [у], стоящие между глухими согласными или после них, часто произносятся тише, вплоть до того, что и вовсе могут быть неслышны. Притом слоги с [и] чаще передают мягкие согласные (ました - [мащта]), а с [у] - твёрдые (です - [дес]).

Двойной, или долгий согласный

Нередко можно встретить слова, в которых согласный произносится дольше или с небольшой задержкой. При письме такой слог выделяют уменьшенной каной っ (в хирагане) или ッ (в катакане).

Слоговая н

ん / ン - единственная кана, не оканчивающаяся гласным звуком. Перед разными звуками произносится по-разному.

Знаки с одинаковым произношением

В рядах са и та путём прибавления нигори образуются по два символа, произносимых одинаково:

Чтение/ряд са та
дзи じ/ジ ぢ/ヂ
дзу ず/ズ づ/ヅ

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

Обоснование трудностей

Выше я постарался дать информацию, нужную для понимания проблем, изложенных дальше. Пишу о том, что либо не было решено, либо решено частично.

Под решением чаще имеется в виду не выход из ситуации, а некоторый компромисс, принятый, поскольку лучшего пути я не нашёл.

Приведение к кане

Мотивацией для создания библиотеки было дать возможность людям искать иероглифы, используя не только кану, но и свои алфавиты (сейчас это доступно для русского и английского языков). Скажем, если не установлен японский алфавит. За это отвечает toKana(). Выходит, в идеале функция должна передавать точное написание из данной пользователем транскрипции.

Зависимость чтения слога от позиции

Актуально, если к кане приводится не одно слово, а несколько слов или предложение: частицы, слоговая н, неслышный гласный - всё это можно обработать верно (или почти верно) при условии понимания позиции символа в слове.

Решение

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

Отсюда же появляется возможность отследить символы, стоящие до или после данного слога (иначе нельзя было бы сказать, не является ли символ первым или последним в слове). Это знание в т. ч. находит применение при отличии слогов в рядах са - та.

Разные обозначения долготы гласных

Долгая [о] одинаково верно может быть приведена к кане как おお и как おう. Различия в написании от слова к слову предлагается запомнить, а что до написания алгоритма - тупик. Та же ситуация с ええ - えい.

Решение (хирагана)

Остаётся выбрать меньшее из зол и использовать первый вариант. За счёт этого некоторые слова будут записаны неверно, но хотя бы однозначным останется чтение.

Катакана

Написанное выше применимо для хираганы, с катаканой ситуация сложнее. Удлинение гласной записывается символом ー. Но нельзя отличить, является ли гласная продолжением предыдущей, или она должна быть прочитана как отдельный элемент.

Решение (катакана)

Символ ー в итоге не употребляется. Как и с хираганой - некоторые (и даже многие) слова будут записаны неверно, зато верное чтение не будет исключено как один из вариантов.

Разделение ряда на и слоговой н

Слоговая н может быть перепутана с рядом на, так как после первой также могут идти гласные. В итоге, неверная запись.

Решение

Чтобы отличать слоговую н после неё принято ставить специальный знак:

  • (на русском) - твёрдый знак ъ
  • (на английском) - апостроф '

Определение неслышной гласной и долгой согласной

Распознавание неслышных гласных работает с опцией guess: true

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

Решение

Как такового ответа нету; я выбрал стратегию, которая даёт правильное написание чаще: если согласный совпадает со следующим - понимать как долгий согласный, иначе - это неслышный гласный.

Неслышный гласный: и или у?

В зависимости от языков точность будет отличаться

Решение (русский)

Для русского языка всё проще: так как обычно неслышная и употребляется с мягкими согласными, остаётся отличить мягкие от твёрдых. Для этого после такого согласного должен стоять мягкий знак ь (или согласный должен быть всегда мягким, как [щ], [ч]).

Решение (английский)

В английском нету мягкого знака, так что неслышная и получается только от таких согласных, которые с у не употребляются: 'sh', 'ch', 'j'. Со всеми остальными согласными неслышный гласный понимается как у.

Расширенная кана. Два согласных

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

Решение

Начиная с версии 2.0.0 с поддержкой расширенной каны функция по умолчанию не работает в режиме распознавания неслышных гласных. Для его активации нужно поставить опцию guess: true. Выходит выбор: либо угадывать неслышные гласные, либо поддерживать больше расширенной каны.

Транскрибирование каны

Тут проблем уже меньше, да и они по сути описаны ранее. Функция - fromKana()

Распознавание частиц

Без понимания позиции неизвестно, как читаются некоторые каны:

  • は - [ха] или [ва] ?
  • へ - [хэ] или [э] ?
  • を - [во] или [о] ?
Решение

Разделять слова с помощью пробела.

Правда, использовать функцию по принципу скопировал - вставил будет не очень удобно.

Понимание слоговой н

Поскольку в зависимости от позиции её произношение меняется, то и транскрипция должна отличаться.

Решение (русский)

Пользуясь системой Поливанова, выводим:

  • м - перед звуками [б], [п], [м]
  • нъ - перед гласными
  • н - в остальных случаях
Решение (английский)

По пересмотренной системе Хепбёрна получаем:

  • n' - перед гласными
  • n - в остальных случаях

Распознавание долгих гласных

Бывает трудно отличить, где конструкция из двух гласных произносится как долгая первая гласная, а где означает два разных звука: えい может значить как [эи], так и [ээ]; то же и с おう.

Решение

Чтобы у человека, знающего проблемы алгоритма, хотя бы была возможность прочитать слово близко к оригиналу, решено делать побуквенный перевод. То есть из おう будет получено оу.

Приведение одной каны к другой

У этой функции - convertKana() - только одна проблема, но проблема серьёзная.

Распознавание долгих гласных в хирагане

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

Та же проблема с неоднозначностью прочтений おう и えい.

Решение

Чтобы не исключать верный вариант чтения, символ ー не используется. Это, к сожалению, часто приводит к неверному написанию.