キャラボットでの正規表現キーワード登録

キャラボットでの正規表現キーワード登録 Internet Explorer や Opera は使わないこと!


   深夜の混み合う時間帯などは、ボットのスルー率が高いので、ボットの新規作成&設定にはあまり適さないと思われます。
   可能であれば、早朝などの人の少ない時間に頑張って早起きして設定するのをオススメします。



キャラボットでキーワード登録に正規表現を使う


Charactorbot 公式wiki 正規表現 参照




ここに書いてあるのは、そのままコピペして正規表現登録に使えるサンプルではありません。

すでにある正規表現をコピペして使用すれば簡単で楽ですが、正規表現がどういうものかの理解は出来ないと思いますし

理解出来ていないまま間違った正規表現を使用するとエラーが頻発し
その結果、botは正常に動かず、サーバへの負荷も多大なものになり、最悪停止してしまいます。


正規表現でメタ文字を使ったとき、どこが、どんな風に反応するかを、何となくでも理解して貰いたくて書いてみました。

ものすごく大雑把ですが、正規表現について (基礎編)のメタ文字の意味と合わせて
正規表現で登録するキーワードを作成する参考にしてもらえれば幸いです。
 


キャラボットの、自分宛ポストへの返信&自分のタイムラインへの返信は、共に
登録されたキーワード(反応語句)を、上から順番に下まで辿って行き
該当する言葉を探して返事をするようになっています。

ですので、正規表現を使用して登録している場合、正規表現に誤りがあると、そこに引っかかってしまい
先へ(下へ)進むことが出来なくなり、結果、誤作動や不具合が生じることになります。
正規表現を使うときには、慎重に、よく確認して、登録するようにして下さい。




一般的な挨拶の、おはよう を例に書いてみます。



おはよう という言葉だけでも、おはよう オハヨウ お早う と様々です。
それを1つずつキーワード登録していたら、3つの枠を使ってしまいます。
同じように他の言葉も、それぞれ登録していたら、枠があっという間にいっぱいになってしまいますし
それぞれに同じ返答を記入していくのも面倒です。(私は面倒ですw)

本来なら3つに分けて登録するところを、1つにまとめて登録するのを可能にするのが
正規表現を使用してのキーワード登録です


分かりやすく色分けされる 正規表現アプレット を使った画像で説明してみます。


  まず、おはよう だけを書いてみます 

seki01.jpg


おはよう が一致したのでボットが反応します。が、これは正規表現じゃありません。


では次に


  反応して欲しい語句 おはよう お早う オハヨウ をまとめて書いてみます 

seki02.jpg


おはよう お早う オハヨウ 全て一致してません。よって、ボットは反応しません。
そして、これも正規表現ではありません。


では次に


  メタ文字の|(このページでは半角だと表示されないので全角ですが、本来は半角)を 
  語句と語句の間に入れてみます。この時、|と文字の間に余計なスペースが入らないよう注意 

seki03.jpg


おはよう お早う オハヨウ 全て一致しましたのでボットが反応します。
そして、メタ文字を使用しているのでこれは正規表現であり、ここからが正規表現の始まりです。



では次に


  メタ文字の( )を、語句の前と語句の後に入れてみます。ここでも余計なスペースが入らないよう注意 

( )等メタ文字は、全て半角です。
また、( )は最後の ) が抜けていることが多いので注意して下さい


seki04.jpg


( )で囲うことでグループ化され、グループ内のキーワード全てが一致しました。


では次に( )を取って

  メタ文字の .* を、語句の前と語句の後に入れてみます 

正規表現を書くとき、常に余計なスペースが入らないように注意して下さい。
また、メタ文字 .* の . が抜けていることが多いので(特に文頭)注意して下さい。


seki05.jpg


おはようの前に.*があるので、おはようの前の名前ちゃんも一致
オハヨウの後に.*があるので、オハヨウの後の!も一致
前後に何もないお早うは、お早うだけの一致


ということは

  全ての語句の前後にメタ文字の .* を書き足してみたとしたら…? 

seki10.jpg

反応語句として登録してある、おはよう お早う オハヨウ 以外の語句も全て一致しました。



しかし
これでは、回りくどいというか、面倒というか、無駄な感じがします。


メタ文字の( )でキーワードを囲んだとき、( )はキーワードをグループ化するメタ文字なので
グループ化された( )内にあるキーワードは、全て一致しました。

メタ文字の.*を前後に書き足してみたら、登録してない言葉も一致しました。



ということは、メタ文字の( )と.*を組み合わせて両方使ってみたとしたら…?
 


seki06.jpg


全ての文章が一致しました。

  正規表現チェッカー(便利 app リンク 参照)などで確かめてエラーが出なければ、その正規表現は
  キャラボットにキーワード登録出来るものである ということです。








スペースに注意!



正規表現で気がつきにくい間違いに、余計なスペースがあります。


  例えば、↓ですが、一見どこも間違いが無いように見えます 

aki01.jpg


しかし、どれも一致していません。ですので、ボットは反応しません。


なぜなら


  こうなっているからなのです ↓ 

aki02.jpg

メタ文字の.*の後に、余計なスペースが入っているのです。
この例では半角スペースですが、全角スペースでも結果は同じです。
メタ文字の.*の前にスペースが入っていても同じ結果になります。


aki03.jpg


画像はありませんが、( )や|などのメタ文字と文字の間のスペースも
入っている箇所によりますが、スペースが入ってる箇所のキーワードは
反応しない可能性があります。


  コピー&ペーストで正規表現を登録するときは余計なスペースが入らないよう気をつけて下さい 


しかし

スペースの存在を忘れちゃダメなときもあります。

メタ文字の.*を使用しない正規表現 を登録する場合 です。


「ダメ or だめ or 駄目」という言葉にだけ反応させたいので
自分宛ポストへの返信キーワードに (ダメ|だめ|駄目) という正規表現を登録したとします。

通常、自分宛のリプライは

@botのツイッターアカウント(半角スペース)本文

という形になっています。

デフォルトでは、ツイッターアカウントと本文の間に半角スペースが入っているので
(ダメ|だめ|駄目) という正規表現では .* が入っていないため、半角スペース及び
botのツイッターアカウントを読み取らず、反応を示しません。


キーワード登録した言葉だけに反応させたいのであれば

@botのツイッターアカウント.?(ダメ|だめ|駄目)

のような正規表現でキーワード登録すれば「ダメ or だめ or 駄目」に反応させることが出来ます。







正規表現でありがちなこと



  慣れれば便利な正規表現でのキーワード登録なんですが、ちょっとした落とし穴があったりもします 

たとえば

seki07.jpg


馬鹿 ばか バカ という言葉をキーワード登録したら
全く関係ない文中の該当部分にまで反応してしまった…というもの

この場合、平仮名の「ばか」をキーワード登録するのをやめるか
関係ないものが引っかかっても気にしないか
頑張って作り込むか……など、選択肢は色々あります。

頑張って下さい!^^



キーワード登録でありがちなこと



よくキーワード登録に、半角顔文字で ( ‘д‘⊂彡☆))Д´) パーン が登録されてるんですが
半角顔文字の中には、メタ文字が含まれるため、確実に、例外なく、エラーになっています。

  半角顔文字をキーワードに混ぜて登録するとこうなります 

omake.jpg


顔文字を登録するのは避けた方が無難です。



どうしても、どうしても、半角顔文字が使いたい場合には

 .*\(.?‘д‘⊂彡☆\)\)Д´\).*

のように、メタ文字の前にバックスラッシュを入れるようにすればエラーは出ません。
その場合には、テスターやチェッカーを使用してシッカリ作り込んで下さい。


031.jpg
※この画像では、バックスラッシュが ¥ になっていますが \ が ¥ に見えているだけです。










設定しておいた方が良いと思われる正規表現

↓の正規表現は、コピー&ペースト可能です。
 が、余計なスペースが入らないよう注意!


RT や QT に反応させない

キーワード欄 .*(RT|QT).*  投稿内容欄 #stop#
(正規表現にチェック)



キーワード登録してない言葉にも反応させたい 登録場所は自分宛反応キーワードの一番下
 ※このキーワード登録は、ボットジェネレーターでのランダム返信機能にあたると思います。

キーワード欄 .*  投稿内容欄 任意の言葉
(正規表現にチェック)

この正規表現は、全てのキーワードが一致しますので、一覧の一番上や途中に登録すると
この正規表現より下にあるキーワードが一切反応出来なくなります。
登録する位置には注意して下さい。


 ちなみに管理者はグループタグを使って
  キーワード欄 @自分のボットのアカウント(.*)  投稿内容欄 …#group_1#…? ごめんなさい、分かりません と設定しています。



TL上の他の人たちの会話などに反応させない 登録場所はTL反応キーワードの一番上

キーワード欄 ^@[a-zA-Z0-9_]+.*  投稿内容欄 #stop#
(正規表現にチェック)
 もしくは
キーワード欄 .*@[a-zA-Z0-9_]+.*  投稿内容欄 #stop#
(正規表現にチェック)

 ちなみに管理者は
  .*@[a-zA-Z0-9_]+.* の方を設定しています。が、自分にとって使い勝手の良い方を使えばいいと思います。







ちょっとしたおまけ・ここから〜


おまけとして書いてあることは、正規表現に慣れるまではムリにやろうとしないで下さい!

おはよう お早う オハヨウ を見ると、重複している言葉に気がつきます。

「お」はよ「う」 「お」早「う」 オハヨウ

これらをまとめたり、更に短い正規表現にすることを、作り込むと言います。

  試しに、一例として作り込んでみます 

seki11.jpg


  おはよう と お早う をまとめてみました 

共通する「お」はそのまま、次の文字はどれかが一致の[ ]で囲み
次は「よ」と「う」で違うので、「よ」に当たる部分は.?として文字があれば一致、無ければムシ
そして、やはり共通する「う」はそのまま。にしてみました

全て一致しています。が、あくまでもこれは一例で、作り込み方次第でどんどん変わります。

ちょっとしたおまけ・ここまで〜






 
 
 
 
 

  • 最終更新:2012-05-15 19:31:45

このWIKIを編集するにはパスワード入力が必要です

認証パスワード