Переключить язык на: английский
Я не специалист в этой теме, а с японским языком меня связывает только желание его выучить.
Здесь описаны некоторые особенности японского произношения и письменности. Этими особенностями вызваны трудности, с которыми я столкнулся при написании мини-библиотеки kana-transformer.
toKana()
- Зависимость чтения слога от позиции
- Разные обозначения долготы гласных
- Разделение ряда на и слоговой н
- Определение неслышной гласной и долгой согласной
- Неслышный гласный: и или у?
- Расширенная кана. Два согласных
fromKana()
convertKana()
Помимо иероглифов, в японской письменности используются две слоговые азбуки (каны): хирагана и катакана. В каждой азбуке по 46 символов, каждый из которых означает слог (за исключением ん/ン - этим символом обозначают согласный н). В результате каждый слог имеет два символа для отображения на письме: один из хираганы, другой из катаканы.
в | р | й | м | х | н | т | с | к | согл/глас | ||
---|---|---|---|---|---|---|---|---|---|---|---|
わ/ワ | ら/ラ | や/ヤ (я) | ま/マ | は/ハ | な/ナ | た/タ | さ/サ | か/カ | あ/ア | а | |
り/リ | み/ミ | ひ/ヒ | に/ニ | ち/チ | し/シ | き/キ | い/イ | и | |||
る/ル | ゆ/ユ (ю) | む/ム | ふ/フ | ぬ/ヌ | つ/ツ | す/ス | く/ク | う/ウ | у | ||
れ/レ | め/メ | へ/ヘ | ね/ネ | て/テ | せ/セ | け/ケ | え/エ | э | |||
を | ろ/ロ | よ/ヨ (ё) | も/モ | ほ/ホ | の/ノ | と/ト | そ/ソ | こ/コ | お/オ | о | |
ん/ン (н) |
В японском больше 46 слогов. Некоторые из недостающих обозначаются на письме добавлением специальных знаков к основным символам: нигори ゛ или ханнигори ゜.
Для передачи звуков, которым нет аналогов в японском языке, используют расширенную кану. Эти каны, например, могут передавать слоги с двумя согласными подряд.
Зачастую дополняет слово, которое пишется иероглифами, являя собой его части (суффиксы). Иногда иероглифы не используют, и слово пишется только хираганой.
Также ей записываются некоторые вспомогательные части речи, как частицы, союзы и наречия.
Как правило используется по двум причинам: либо при записи иностранных слов, имён; либо чтобы то или иное понятие выделить из общего ряда (катакана отличается более резкими чертами).
Для разделения слов не используются пробелы и прочие символы, что типично для иероглифической письменности. Обычно, чтобы отделить одно слово от другого, хотя бы одно из них нужно знать.
Некоторые каны могут выступать в роли частиц. В этом случае их произношение меняется:
- は произносится [ва]
- へ произносится [э]
- を произносится [о]
В зависимости от слова принято обозначать долготу гласной по-разному:
- Удвоение - общий для всех гласных метод
- [и] после [э] зачастую означает долгую [э]
- [у] после [о] зачастую означает долгую [о]
Здесь всё проще: всегда используется символ ー .
Гласные [и] и [у], стоящие между глухими согласными или после них, часто произносятся тише, вплоть до того, что и вовсе могут быть неслышны. Притом слоги с [и] чаще передают мягкие согласные (ました - [мащта]), а с [у] - твёрдые (です - [дес]).
Нередко можно встретить слова, в которых согласный произносится дольше или с небольшой задержкой. При письме такой слог выделяют уменьшенной каной っ (в хирагане) или ッ (в катакане).
ん / ン - единственная кана, не оканчивающаяся гласным звуком. Перед разными звуками произносится по-разному.
В рядах са и та путём прибавления нигори образуются по два символа, произносимых одинаково:
Чтение/ряд | са | та |
---|---|---|
дзи | じ/ジ | ぢ/ヂ |
дзу | ず/ズ | づ/ヅ |
Почти всегда употребляются знаки ряда са, но в некоторых случаях, например, когда перед знаком стоит та же буква, используются символы ряда та.
Выше я постарался дать информацию, нужную для понимания проблем, изложенных дальше. Пишу о том, что либо не было решено, либо решено частично.
Под решением чаще имеется в виду не выход из ситуации, а некоторый компромисс, принятый, поскольку лучшего пути я не нашёл.
Мотивацией для создания библиотеки было дать возможность людям искать иероглифы, используя не только кану, но и свои алфавиты (сейчас это доступно для русского и английского языков). Скажем, если не установлен японский алфавит. За это отвечает toKana()
. Выходит, в идеале функция должна передавать точное написание из данной пользователем транскрипции.
Актуально, если к кане приводится не одно слово, а несколько слов или предложение: частицы, слоговая н, неслышный гласный - всё это можно обработать верно (или почти верно) при условии понимания позиции символа в слове.
Понять позицию символа в слове можно при одном условии - если слова что-то разделяет. По классике, для этого принят пробел.
Отсюда же появляется возможность отследить символы, стоящие до или после данного слога (иначе нельзя было бы сказать, не является ли символ первым или последним в слове). Это знание в т. ч. находит применение при отличии слогов в рядах са - та.
Долгая [о] одинаково верно может быть приведена к кане как おお и как おう. Различия в написании от слова к слову предлагается запомнить, а что до написания алгоритма - тупик. Та же ситуация с ええ - えい.
Остаётся выбрать меньшее из зол и использовать первый вариант. За счёт этого некоторые слова будут записаны неверно, но хотя бы однозначным останется чтение.
Написанное выше применимо для хираганы, с катаканой ситуация сложнее. Удлинение гласной записывается символом ー. Но нельзя отличить, является ли гласная продолжением предыдущей, или она должна быть прочитана как отдельный элемент.
Символ ー в итоге не употребляется. Как и с хираганой - некоторые (и даже многие) слова будут записаны неверно, зато верное чтение не будет исключено как один из вариантов.
Слоговая н может быть перепутана с рядом на, так как после первой также могут идти гласные. В итоге, неверная запись.
Чтобы отличать слоговую н после неё принято ставить специальный знак:
- (на русском) - твёрдый знак ъ
- (на английском) - апостроф '
Распознавание неслышных гласных работает с опцией guess: true
Поскольку гласная неслышная, в случае, если в одном слове вводятся две согласные подряд (и первая согласная - не слоговая н), они интерпретируются либо как неслышная гласная, либо как долгая согласная. Для образования двойной согласной буква должна совпадать со следующей, однако это ненадёжный метод проверки: после неслышной гласной может стоять слог этого же ряда, из-за чего идущие друг за другом согласные будут совпадать.
Как такового ответа нету; я выбрал стратегию, которая даёт правильное написание чаще: если согласный совпадает со следующим - понимать как долгий согласный, иначе - это неслышный гласный.
В зависимости от языков точность будет отличаться
Для русского языка всё проще: так как обычно неслышная и употребляется с мягкими согласными, остаётся отличить мягкие от твёрдых. Для этого после такого согласного должен стоять мягкий знак ь (или согласный должен быть всегда мягким, как [щ], [ч]).
В английском нету мягкого знака, так что неслышная и получается только от таких согласных, которые с у не употребляются: 'sh', 'ch', 'j'. Со всеми остальными согласными неслышный гласный понимается как у.
В расширенной кане есть ряд символов, интепретируемых как слоги с двумя согласными подряд. Поскольку работа функции предполагает вставку гласных между двумя согласными (они понимаются как два разных слога, у первого из которых неслышная гласная), выходит, что невозможно правильно обработать такие слоги.
Начиная с версии 2.0.0 с поддержкой расширенной каны функция по умолчанию не работает в режиме распознавания неслышных гласных. Для его активации нужно поставить опцию guess: true
. Выходит выбор: либо угадывать неслышные гласные, либо поддерживать больше расширенной каны.
Тут проблем уже меньше, да и они по сути описаны ранее. Функция - fromKana()
Без понимания позиции неизвестно, как читаются некоторые каны:
- は - [ха] или [ва] ?
- へ - [хэ] или [э] ?
- を - [во] или [о] ?
Разделять слова с помощью пробела.
Правда, использовать функцию по принципу скопировал - вставил будет не очень удобно.
Поскольку в зависимости от позиции её произношение меняется, то и транскрипция должна отличаться.
Пользуясь системой Поливанова, выводим:
- м - перед звуками [б], [п], [м]
- нъ - перед гласными
- н - в остальных случаях
По пересмотренной системе Хепбёрна получаем:
- n' - перед гласными
- n - в остальных случаях
Бывает трудно отличить, где конструкция из двух гласных произносится как долгая первая гласная, а где означает два разных звука: えい может значить как [эи], так и [ээ]; то же и с おう.
Чтобы у человека, знающего проблемы алгоритма, хотя бы была возможность прочитать слово близко к оригиналу, решено делать побуквенный перевод. То есть из おう будет получено оу.
У этой функции - convertKana()
- только одна проблема, но проблема серьёзная.
В хирагане две одинаковые, стоящие друг за другом гласные могут быть прочитаны двояко: и как долгая гласная, и как две отдельные гласные. Катакана же маркирует долгий гласный специальным символом ー. Значит, в ходе получения катаканы из хираганы функция должна отличать долгий гласный и два раздельных гласных.
Та же проблема с неоднозначностью прочтений おう и えい.
Чтобы не исключать верный вариант чтения, символ ー не используется. Это, к сожалению, часто приводит к неверному написанию.