コンテンツにスキップ

重複回避

同じ名前の文や、単語群の単語が複数あるとき、里々は候補から 1 つを選びます。既定では等しい確率で選びますが、同じものが続けて選ばれるのを避けるように設定できます。

設定

システム変数で、対象と方法・期間を指定します。

$単語群「名前」の重複回避=方法、期間
$文「名前」の重複回避=方法、期間

名前を * にすると、そのときに存在するすべての単語群(文)が対象です。値の期間は省略でき、省略すると 起動中 です。方法を省略すると 無効 です。区切りは 、 か , です。

設定する場所

設定は、辞書が読み込まれたあとに存在する単語群・文にだけ効きます。*初期化(satori_conf.txt)では、まだ単語群と文が存在しないので効きません。*OnSatoriLoad など、読み込み後に実行されるトークの中に書いてください。

方法

方法 動作
無効 完全にランダム
有効(完全) 全部を 1 度ずつ使い切るまで、同じものを選ばない。1 周したら、また全部が候補になる(周の切り替わりでの連続も避ける)
直前 直前に選んだものだけを避ける
正順(降順) 定義した順に、1 つずつ順番に選ぶ。最後まで行ったら最初に戻る
逆順(昇順) 定義した順の逆に、1 つずつ順番に選ぶ

期間

期間 動作
起動中 記録は起動している間ずっと続く
トーク中 1 回の応答(トーク)が終わるたびに、記録をクリアする

既定の設定

辞書の読み込みが終わった時点で、次の設定が自動で行われます。

$単語群「*」の重複回避=有効、トーク中
$文「*」の重複回避=有効

つまり単語群は 1 回のトークの中で同じ単語を選ばず、文は 1 周するまで同じものを選びません。この設定を変えたいときは、*OnSatoriLoad で上書きします。

使い切りの確認

(単語群「名前」の重複回避枯渇) は、有効・順番の方法で最後の候補まで使い切った直後に 1 を返します。

条件式との関係

採用条件式(文と単語群)や、単語の追加・追加単語の削除 で候補が変わったときは、その時点の候補に合わせて記録が更新されます。残った候補の記録(使用済みかどうか、順番の位置)は引き継がれます(Mc202-2以降。Mc202-1 までは、単語を追加・削除すると記録が消えることがありました)。

方法が 正順(降順) 逆順(昇順) のとき、直前に選んだ候補が条件で外れると、順番どおりの次の候補から続けます(Mc202-2以降。Mc202-1 までは、最初に戻ることがありました)。