オブジェクトを作成しておく。このように使ってスリスリくんのようにしゃべらせることができる。すると、ある特徴に気づく。記事冒頭の小粋なあいさつだ。SUZURIの公式忍者、忍者スリスリくんデス。SUZURI(スズリ)意味はわからないが、なんとなく可愛い。このようにそうめんツルツル!忍者スリスリくんデス。SUZURI(スズリ)夏の風物詩である「そうめん」を使った、季節感のあるあいさつもある。季節に合わせてあいさつを変えているようだ。これを実現するための手順は次の通りだ。私はスリスリくんのファンなのでまったく苦にならずにリストアップすることができた。以下のようなyamlファイルを作った。SUZURIの公式忍者、忍者スリスリくんデス。そうめんツルツル!忍者スリスリくんデス。クラスのインスタンスを作るようにした。このように使うとあいさつさせることができる。SUZURIの公式忍者、忍者スリスリくんデス。以上が忍者カゲムシャくんのカラクリだ。書いてきたが、大したことはしていない。今後の展望として、改良点を2つ考えている。このように、冬の内容の文章を入力しても、真夏のようなあいさつをしてくる場合がある。忍者スリスリくんは賢いので、このような季節が食い違う発言はしない。これについては、「入力された文章がどの季節っぽいか」を判定するカラクリを実装しようと考えている。具体的には、次のような手順を想定しているなんらかの文章データを用いて、なるべく多くの単語の分散表現(ベクトル)を用意する各季節を代表する単語(例えば、春を代表する単語として「桜」など)をリストアップする入力された文章を構成する単語のベクトルと各季節を代表する単語のベクトルとを比較し、ベクトルの類似度を数値化する各季節ごとに類似度の合計値を算出し、類似度が低い季節を特定する類似度が低い季節のあいさつは選択されないようにするこの手順でいい感じになるかはやってみないと分からない。「文章データ」を決めかねている。「スリスリくんがしゃべる単語」という意味ではスリスリくんのジャーナルやtwitterでの発言を対象にすると良さそうだが、データ量が限られているため語彙数が少ない懸念がある。なると入力された文章の単語の多くが「未知語」と判定されてしまう可能性があり、各季節との類似度判定の精度が低くなりそうだ。勉強も兼ねて)推論ベースのアプローチを取るつもりだ。「各季節を代表する単語」の選び方も決めかねている。主観で良いのか?和歌の季語を活用してみるか?などを考えている。そもそも単語ごとの類似度の数値化をすることで文章の季節感を表現できるのか?という懸念がある。文章中に否定語が入っている場合に、想定外に季節の類似度が評価されてしまう可能性がある。「桜」という単語が評価されて「春」だと判断されてしまう、など)とはいえ、やってみないと分からないので、やってみてから考えようと思う。今回は「しゃべり」と「あいさつ」に必要なデータを手動で獲得したが、これではメンテナンスコストが掛かりそうだ。それぞれ自動で抽出できるようにしていこうと考えている。具体的な手順は検討中だ。まとめこの記事では、忍者スリスリくんの影武者である「忍者カゲムシャくん」を紹介し、そのカラクリについて説明した。今後も「忍者カゲムシャくん」の改良を続けていくので暖かい目で見守ってほしい。*1:画像加工とも呼ばれる。*2:押してくれると筆者がよろこぶ。このもう少し下に☆があるはず。*3:実は社内にいい感じのドキュメントがある。hiring!*4:小さなことからコツコツと。大切にしていることだ。*5:小さなことからコツコツと。大事なことだから2回言った。railtiesに関して3件、ActiveStorageに関して4件、ActiveRecordに関して1件、ActionViewに関して1件、ActionPackに関して2件。