とろろのしくみ

ぼーっとしててもアレなので,昨日公開した「とろろ」の辞書などが,どういう順序でどう作用しているのかを簡単に書く.今後,仕様が変わることは大いにあり得る.

バージョン Alpha 1.辞書ファイルは同梱の物そのままとする.

(2009-09-27)バージョン Alpha 4.config.yaml がデフォルトの場合.

対象の文字列が

[Fellowship] Andromeda: watasi no kao ga apple mitai desu

だったとする.LotRO で言えば,Andromeda というフェローシップのメンバーが発言したというところ.

まず /rule/whitelist ファイルから,変換対象の文字列かどうかを判定する./rule/whitelist の

/^\[Fellowship\] ([a-zA-Z]+?): /

この “/” で括られた正規表現が

[Fellowship] Andromeda: watasi no kao ga apple mitai desu

このようにマッチするので対象と見なす.

マッチした部分は変換対象とはせず,マッチした最後の文字より後ろの文字列を変換対象とする.

watasi no kao ga apple mitai desu

./dic/foreign に従って,外国語などを日本語にする(今回は対象なし).

丸括弧の部分マッチ(Andromeda)をキャラクタ名と見なし, ./rule/characters から入力方式を取得する(取得できなかった場合は未知のキャラクタを検出したと判断し,./rule/characters にキャラクタ名 Andromeda と入力方式テーブルファイル名 romaji が書き加えられる).

入力方式を ./conv-table/romaji(ローマ字入力)として話を進める.

変換対象の文字列を,空白文字を区切りとして分割する.

watasi, no, kao, ga, apple, mitai, desu

それぞれの文字列に対して,./dic/denywords に登録されてなければ,./conv-table/romaji 入力方式に従ってひらがなに変換→ ./dic/nippon に従って漢字かな交じりやカタカナに変換.

ひらがな変換時にラテン文字が残った不完全な文字列は変換しない(apple → あっplえ×).

全ての文字列を結合して終わり.

[Fellowship] Andromeda: わたし の かお が apple みたい です

「とろろのしくみ」への1件のフィードバック

  1. ちなみに /^\[Fellowship\] ([a-zA-Z]+?): / のように “()” 括弧がついている理由は,括弧内の部分をプレイヤー名と見なして,今後のバージョンであれこれしたいため.

    あと,[a-zA-Z]+? よりやっぱり .+? と書いた方がいいかもしれない.

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>