Cha-tale 自動チャット - オンライン マニュアル




  
これから実装する機能
●例23 奇数行目は、[SELECT][|][|][SL:END]に変更 [RANDOM]とは違い、[SELECT]が2つ以上ある場合、すべてのパターンを展開し、直積を求める。 → [RANDOM]の区切り文字である[|]とは別の区切り文字を使用するか、 プログラム内の日付などを処理する関数で[RANDOM]も処理する。 ●例24-1 辞書: (1行目)[&1][&2]です。 (2行目)なぜ、あなたは[&1][&2]だと思うのですか? チャット: 誰かが「私は幸せです。」と発言すると、 RE_ACTOR が「なぜ、あなたは幸せだと思うのですか?」と発言する。 → トリガーワードに含まれる文字を引用して、質問などを投げかける。 → [&○○]の形式で、記述する。&は必須。 ●例24-2 辞書: (1行目)[&○○][&●●]である。 (2行目)言い切りましたね。本当に[&○○][&●●]ですか? チャット: 誰かが「彼が一番 賢明である。」と発言すると、 RE_ACTOR が「言い切りましたね。本当に一番 賢明ですか?」と発言する。 → [&○○]の形式で、記述する。&は必須。 → また○○や●●の部分は、数字以外の文字も使用可能。 ●例24-3 辞書: (1行目)[&○○][&●●]である。 (2行目)[REPLACE_PRONOUN]言い切りましたね。本当に[&○○][&●●]ですか?[RP:END] チャット: 誰かが「私が一番 賢明である。」と発言すると、 RE_ACTOR が「言い切りましたね。本当に一番 賢明ですか?」と発言する。 → 一人称代名詞が主語になる時、上記のようになってしまう。 → 以下(↓)のように記述して、一人称を二人称で置き換える。 (※[REPLACE_PRONOUN][RP:END]を囲った部分だけ、置き換える) 辞書1: (1行目)[FIRST_PERSON_PRONOUN] (2行目)[SELECT]私[|]わたし[|]わたくし[|]僕[|]自分[|]俺[|]あたし[|]おいら[|]オイラ[SEL:END] 辞書2: (1行目)[SECOND_PERSON_PRONOUN] (2行目)[SELECT]貴方[|]あなた[|]君[|]お前さん[|]貴殿[SEL:END] ※定義しなくてもよい。 ●例24-4 (改良案) 辞書1: (1行目)[&○○] (2行目)[REPLACE_PRONOUN]私[>]貴方[|]わたし[>]あなた[|]わたくし[>]あなた[|]僕[>]君[|]自分[>]君[|]俺[>]君[|]あたし[>]あなた[|]おいら[>]お前さん[|]オイラ[>]お前さん[RP:END] チャット1: [&○○]の文中の「私」を「貴方」に置換してリアクションセンテンスをつくる。 → [&○○]は自作タグと同じ扱い。 → [>]は置換する方向を示す。 辞書2: (1行目)[&○○] (2行目)[REPLACE_PRONOUN]私[<]貴方[|]わたし[<]あなた[|]わたくし[<]あなた[|]僕[<]君[|]自分[<]君[|]俺[<]君[|]あたし[<]あなた[|]おいら[<]お前さん[|]オイラ[<]お前さん[RP:END] チャット2: [&○○]の文中「貴方」を「私」に置換してリアクションセンテンスをつくる。 → [<]も使用できる。 ●例25-1 辞書: (1行目)[HolidaySet] (2行目)01/01,元旦,01/2noMon,成人の日,02/11,建国記念の日,03/21,春分の日,04/29,昭和の日,05/03,憲法記念日,05/04,みどりの日,05/05,こどもの日,07/3rdMon,海の日,09/3rdMon,敬老の日,09/23,秋分の日,10/2ndMon,体育の日,11/03,文化の日,11/23,勤労感謝の日,12/23,天皇誕生日,05/2ndSun,母の日,06/3rdSun,父の日 → まずは祝日を定義する。一年間分まとめて定義すること。一番上にある定義のみ採用される。 → 母の日&父の日、バレンタインデー&ホワイトデーも定義してもよい。 → 振替休日も考慮する。 → 最大で357 (+α) 日分、定義できる。 辞書: (1行目)体育の日は、いつですか? (2行目)[HolidayFormat]m月d日(aaa),SetHoliday=体育の日[HF:END][DateFormat]と同様に書式定義が使える 「SetHoliday=」は必須。その際、定義した祝日名を設定する事。 ●例25-2 応用例: (1行目)[RANDOMCHAT] (2行目)[DateSpan]10/01-10/31,今月の祝日は[HolidayFormat]m月d日(aaa),SetHoliday=体育の日[HF:END](体育の日です)[DS:END] ●例25-3 応用例: (1行目)[BetweenHolidayAndHoliday=TRUE] (2行目)[SinceDate]2011/01/01[SD:END] → 祝日と祝日に挟まれた日を休日にできる。(日本の祝日のルールに従う。) → [SinceDate]以降、(例では2011/01/01以降、)ルールが適用される。 → [SinceDate]はなくても良い。 何も定義しないと、[BetweenHolidayAndHoliday=FALSE]と同じ意味になる。 ●例26-1 辞書: (1行目)あなたは何歳ですか? (2行目)[BIRTHDAY]1990/05/09,FLG=OVER,満21歳です[BD:END] → 現在の年齢(数え年,満年齢)を返す。 → FLG=OVERと記述した場合は満年齢を、記述しなかった場合は数え年を返す。 ●例26-2 辞書: (1行目)あなたは何歳ですか? (2行目)[BIRTHDAY]1990/05/09,FLG=OVER,SetDate=2011/05/09,私は2011年5月9日に満21歳になります。[BD:END] → SetDate=Now(省略化) → SetDate= を 特定の日に指定できるようにする ●例27 辞書: (1行目)禁煙つづいてます? (2行目)禁煙は今日で、[DATE-DIFF]Day,PivotDate=2011/05/09,TargetDate=Now[DD:END]日目になります。つらいですυ → Year,Month,Day その年,月,日を(何年,何日)超えたかどうか? → Year=2にすると PivotDateを2年×何回超えたかを返す。 → Year=1 または Year の時は、上記の通り、満年齢を求める場合にも使える [BIRTHDAY] と同じ。 ●例28 辞書: (1行目)[QUESTION]日本で一番高い建物は?[QUESTION:END][ANSWER]東京スカイツリー[ANS:END] (2行目)[Correct-Answer]正解です![CA:END][Non-Correct-Answer]正解は「東京スカイツリー」です。ちなみに634mです。[NCA:END] → ユーザーの質問に対する解答に応じて、正解・不正解を判定し、それぞれに対し、メッセージを返す。 ●例29 応用例: 辞書: (1行目)[&○○]は分かる? (2行目)う〜ん、[&○○]っなんだろう?教えて下さいm(_ _)m 辞書: (1行目)[SELECT][&□□]だよ。[|][&□□]という意味です。[SL:END] (2行目)[RANDOM]なるほど〜[|]そういう意味だったんですね。[|][&□□]だったとは・・・[END] → このような自然な会話もできる。[RANDOM]タグや自作タグを使って、バリエーションも持たせられる。 ●例30 辞書1: (1行目)[CountDownTime]5m,2012/01/01 00:00[CD:END] (2行目)[CountDownTime]5m,カウントダウンします[CD:END][CountDownTime]3m,後3分です[CD:END][CountDownTime]0m,5分が経ちました[CD:END] → 辞書1の(1行目)は、2012/01/01 の午前0時まで5分前から、1分(m)毎にカウントする事を意味する。 → 辞書1の(2行目)は、5分のとき、3分のとき、目標時刻に達したときのメッセージを発言する。 → 単に、[CountDownTime]あと[&m]分です[CD:END] と書くと、一つひとつ設定する必要はない。 → また[CountDownTime]0m,○○[CD:END]などカウントダウン完了時の発言が定義されていないで、   0分になったら、RE_ACTOR が「予定の時刻になりました」とデフォルトの発言する。 辞書2: (1行目)[CountDownTime]3s,2012/01/01 00:00[CD:END] (2行目)〜〜 → 同様に 2012/01/01 の午前0時まで3秒前から、1秒(s)毎にカウントダウンする。 辞書3: (1行目)[CountDownTime]0s,2012/01/01 00:00[CD:END] (2行目)あけましておめでとうございます。 ※ 0sのみを定義する事によって、RE_ACTOR が定時に発言する。 → 0h や 0m も同様。 → 他のタグとして[CurrentTime]があるので、後述する。 ●例31 辞書1: (1行目)[DefaultChat] (2行目)う〜んどうなんでしょう~ヽ('ー`)ノ~ 辞書2: (1行目)[DefaultChat] (2行目)いや〜、面白い人だな [TRIGGER_NICK]さんは(笑) チャット: 辞書を上から見ていって、トリガーワードがすべてに該当しない場合に、RE_ACTOR が発言する。 複数設定した場合は、[RANDOMCHAT]と同様にランダムにRE_ACTOR が発言する。 辞書3: (1行目)[&] (2行目)いや〜、面白い人だな [TRIGGER_NICK]さんは(笑) → 辞書の一番最後の行に、このように書くと、同じような意味になるが、一つしか定義できない。   これを拡張したのが、[DefaultChat]である。 ※ [DefaultChat]を使用する際は、辞書3のような記述はしてはいけない。 ●例32 応用例: 辞書1: (1行目)[DefaultChat] (2行目)う〜んどうなんでしょう~ヽ('ー`)ノ~ 辞書1': (1行目)[DefaultChat] (2行目)う〜んどうなんでしょう~ヽ('ー`)ノ~ 辞書2: (1行目)[DefaultChat] (2行目)いや〜、面白い人だな [TRIGGER_NICK]さんは(笑) このように全く同じ内容を2個書くと、例えば、3分の2の確率で 「う〜んどうなんでしょう~ヽ('ー`)ノ~」と発言する。 → ランダム処理に偏りがないものというのが前提。 ●例33 辞書1: (1行目)[CurrentTime] (2行目)[CurrentTime]12:00, ランチの時間です。[CT:END] チャット: 12:00になったら、、RE_ACTOR が「ランチの時間です。」ですと発言する。 → 「2011/09/01 12:00」等、日付をつけてもよい。 ●例34 辞書1: (1行目)今日は雨ふるかな?天気予報見ました? (2行目)うんと確か雨のち晴れでしたよ![LinkID=001] 辞書2: (1行目)[LinkID=001] (2行目)そうですか、晴れると気分がいいですね♪[LinkID=002] 辞書3: (1行目)[LinkID=002] (2行目)折りたたみのかさでも持っていこうっと(´∀`) チャット: 会話の順序を[LinkID=□□]で結びつける → [LinkID=□□]の□□は、[ や ] 以外の文字、例えば[LinkID=A]でもいい。 → 前述の通り、辞書は上からスキャンされるので、同じ LinkID だった場合は、上の辞書が優先される。 ●その他 [RANDOMCHAT]を複数書く場合も ●例32 の 応用例 と同様に、発言する確率を変えることが出来る。 [RANDOM] と [END] 内の項目に空欄がある場合、リアクションセンテンスが続いたり、続かなかったりと柔軟性を持たせることができる。 ●例35 [TRIGGER_NICK]の他に、[TRIGGER_ID]をつくり、Twitterに対応する。 同様に、[MY_NICK][MY_ID]には、自分のIDやニックネームが挿入される。 ●例36 辞書1: (1行目)おなか減った[TRIGGER_ID=@who] (2行目)僕もグーグーなって、牛丼が食べたいです。 チャット: @who さん が、「おなか減った」と発言した場合、RE_ACTOR が「僕もグーグーなって、牛丼が食べたいです。」と発言する。 → (辞書1行目)おなか減った。[TRIGGER_ID=@who][TRIGGER_ID=@black][TRIGGER_ID=@white] のように列挙が可能。   この場合、3人の発言に反応する。 ●例37 辞書1: (1行目)[NoReactionTime] (2行目)19:00-06:59 チャット: 指定された時間内には発言しない。 → また、以下の書式で、日付を指定することもできる。 [NoReactionTime]yyyy/mm/dd hh:mm:ss-yyyy/mm/dd hh:mm:ss[NRT:END] →辞書2行目に [DateSpan]や[TimeSpan]を記述することで、より細かな日時の範囲を指定できる(入れ子も可能)。 ●例38 辞書1: (1行目)面白い記事見つけました。bit.ly/hogehoge (2行目)[DO]Link=ON,Action=RT[DO:END]リツイートさせてもらいました! チャット: キーワード があったらリツイート(RT)する。 → Link=ONを追加すると、URLがある場合にさらに絞る。 ●例39 辞書1: (1行目)はじめまして、私もそれ好きです。相互フォローしましょ! (2行目)[DO]Action=Follow[DO:END]リフォローさせて貰いました! チャット: キーワード があったらフォローする。 → その他、Twitterでできる動作も実装予定。 ●例40 辞書1: (1行目)こんにちは。 (2行目)おお、お久しぶり元気にしてるかい?[@〇〇=翔太君]! チャット: 「@〇〇」が「こんにちは。」発言したば場合、RE_ACTOR が「おお、お久しぶり元気にしてるかい?翔太君!」と発言する。 →IDのエイリアス(別名)を該当箇所に挿入する。 ●メモ モードの切り替えで、辞書に合わせて、アプリの負荷を軽減できるようにする。  ・メモリー節約モード  ・速度優先モード  ・機械学習モード #発言者の特定から処理開始&負荷軽減 忙しい時に電話がかかってきたときに、SMSメールで、オートリプライ (自動返信)。


Arrow 戻る