ある文字セットを別の文字セットに変換したいとします。セット A の各文字をセット B の対応する文字に 1 対 1 でマッピングする代わりに、少し複雑になります。タイ語や韓国語などのスクリプトからラテン語のスクリプトへの自然言語の音訳者のように考えてください。韓国語の例では、次のようになります。
SKATS: LUM CU LE MEG KUGG BE.
Hangul: 김치가 맛있다.
SKATS から韓国語ハングルへの 1 対 1 のマッピングがあります。これらの文字とハングル文字の発音との間に対応関係はなく、基本的に帽子から拾ったものLU
ですM
。CU
この問題は、複数の文字が 1 つの文字を表す場合に発生し始めます。
たとえば、IPAt
で表される「吸引された」サウンドがあり、文字ともあり、英語のサウンド ( IPA) があるとします。サウンドを として表すことにしたとします。さて、あなたはこの実際のシーケンスを持つことができます:tʰ
t
h
th
θ
tʰ
th
tʰ-tʰ-th-t-t-h-t-tʰ-h-th
訳すと次のようになります。
th-th-th-t-t-h-t-th-h-th
実際にどのように見えるかを組み合わせると、次のようになります。
thththtthtthhth
さて、問題はどうやって元の文字列に戻すかです。これはさまざまな方法で解釈できます。
th-th-th-t-th-t-th-h-th
th-th-th-t-t-h-t-th-h-th
th-th-th-t-t-h-t-t-h-h-th
th-th-th-t-t-h-t-t-h-h-t-h
th-th-th-t-t-h-t-t-h-h-tʰ
th-th-th-t-t-h-t-tʰ-h-tʰ
etc.
この問題を防ぐために、マッピングが 1:1 ロスレスかどうかをチェックするアルゴリズムをどのように作成しますか? 数日間頭を包み込もうとしていますが、どこにも行きません。
もう 1 つの例は、「1 文字」を「ts」、「s」、「t」、「h」、「th」、「tsh」、「thsh」などにトランスコードする場合です。その場合、実際の問題が発生します。 .