独自の「メモリ」を持つチャットボットを作成しています。ユーザーの入力をキーと値のペアで保存し、後でそのメモリにアクセスして、応答を構築する方法を確認します。データベースは基本的に、ボットが入力を受け取ると拡張する辞書として機能します。
最初の方法は、単純に 2 つの列を作成し、「値」列に複数の値を追加することです。値列には複数の文字列が格納されます。(どうやってこれを行うのかさえわかりません...) そのように:
Key | Values |
"i play" | "games","with","music" |
"and i" | "run", "sleep", "like" |
もう 1 つの方法は、複数の値に対応する 1 つの「キー」列を持つことです。各値列には、1 つの文字列が格納されます。そのようです:
Key | Value 1 | Value 2 | Value 3 |
"i play" | "games" | "with" |"music" |
"and i" | "run" | "sleep" | "like" |
複数の値を 1 つのキーに格納することは、リレーショナル データベースでは大きな「ノーノー」であることを知っています。より良い方法があれば教えてください。
編集: ボットが応答を作成する方法について少し説明します。ボットはキーを取り、複数の値から 1 つの値をランダムに選択します。たとえば、「I play」が選択されたキーの場合、「music」などの値がランダムに選択されます。そこから、「play music」という新しいキーを見つけ (キーが存在しない場合は作成します)、複数の値から 1 つの値をランダムに選択します。
値列に配列リストを使用して、真の「1つのキー、1つの値」のキーと値のペアにすることを考えましたが、SQLiteがリストをサポートしているかどうかはわかりません.