処理1

今回は例文を処理する様子を見てみます。

 

例文:「はっしゃ」

 

「はっしゃ」を入力するのに必要なパターンを洗い出します。

(実際はデータ構造に組み込まれていますが)

 

1.「はっしゃ」を最小の単位に分割します。

  「は」、「っ」、「し」、「ゃ」

 

2.入力されうる文字の区切りで区切ったパターンを作成します。

 

3.1,2にアルファベットのパターンを割り当てます

 

「は」=

    「ha」

    +

    「」

 

「っ」=

    「ltu」、「xtu」、「ltsu」、「xtsu」

    +

    「」、   「」、     「」、     「」

 

「し」=

    「si」、「shi」、「ci」

    +

    「」、  「」、    「」

 

「ゃ」=

    「lya」、「xya」

    +

    「」、    「」

 

「っし」=

    「ssi」、「sshi」、「cci」

  +

    「」、    「」、     「」

    +

    (上の定義済みパターンから自動生成するパターン)

    ・「っ」+「し」と考えて

    「ltu」、「xtu」、「ltsu」、「xtsu」

    +

    「し」、 「し」、   「し」、   「し」

 

「しゃ」=

    「sya」、「sha」

  +

    「」、    「」、     「」

    (上の定義済みパターンから自動生成するパターン)

    ・「し」+「ゃ」と考えて

    「si」、「shi」、「ci」

    +

    「ゃ」、「ゃ」、  「ゃ」

 

「っしゃ」=

    「ssha」、「ssya」

    +

    「」、      「」

    +

    (上の定義済みパターンから自動生成するパターン)

    ・「っ」+「しゃ」と考えて

    「ltu」、「xtu」、「ltsu」、「xtsu」

    +

    「しゃ」、「しゃ」、「しゃ」、「しゃ」

   ・ 「っし」+「ゃ」と考えて

    「ssi」、「sshi」、「cci」

  +

    「ゃ」、 「ゃ」、   「ゃ」

    ※3分割にするパターンは考える必要はありません

      (「っ」+「し」+「ゃ」)

      3分割にするパターンは

      「しゃ」のパターンに2分割するパターンが含まれるので、

      「っ」+「しゃ」に暗黙的に含まれていることになります

 

パターン定義が長くなってしまいましたが、

処理する様子を見てみましょう。

 

まず、「はっしゃ」を先頭から分割します。

 

「は」

 +

「っしゃ」

 

ここでは「は」だけに注目します。

残りの「っしゃ」は考えません。

 

「は」は「ha」しかパターンがありませんが

1タイプごとの動きを書いてみます。

 

初期パターン

Index Alphabet Remainder
0
ha

「h」をタイプ

Index Alphabet Remainder
0
a

「a」をタイプ

Index Alphabet Remainder
0

動作としてはタイプしたキーに対応するアルファベットと

パターン一覧のAlphabetの先頭文字が同じものがあれば

タイプ成功となります。

先頭文字が一致しなかったパターンは

タイプ毎にパターンから除外していきます。

 

「は」では分からないと思うので、次の「っしゃ」で動きを確認してみてください。

普通に「ssya」とタイプした場合の動きを下に記します。

 

初期パターン

Index Alphabet Remainder
0
ssha
1 ssya  
2 ltu しゃ
3 xtu しゃ
4 ltsu しゃ
5 xtsu しゃ
6 ssi
7 sshi
8 cci

「s」をタイプ

Index Alphabet Remainder
0
sha
1 sya  
6 si
7 shi

「s」をタイプしたことで

先頭文字が「s」でないパターンが除外されます。

また、各パターンの先頭文字(s)がAlphabetから削除されます。

 

「s」をタイプ

Index Alphabet Remainder
0
ha
1 ya  
6 i
7 hi

「h」をタイプ

Index Alphabet Remainder
0
a
6 i

「a」をタイプ

Index Alphabet Remainder
0

最後に「a」をタイプして入力完了です。

 

では、「っしゃ」を3分割してタイプする場合はどうなるのか?

ですが、長くなりそうなので次回に・・・。

 

次へ

2010.10.05