0

独自の「メモリ」を持つチャットボットを作成しています。ユーザーの入力をキーと値のペアで保存し、後でそのメモリにアクセスして、応答を構築する方法を確認します。データベースは基本的に、ボットが入力を受け取ると拡張する辞書として機能します。

最初の方法は、単純に 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がリストをサポートしているかどうかはわかりません.

4

1 に答える 1

3

どちらの方法も良い方法ではないと思います。これはどう?

key         value
"i play"    "games"
"i play"    "with"
"i play"    "music"
"and i"     "run"
"and i"     "sleep"
"and i"     "like"

つまり、キーと値のペアは、キーと値のペアごとに 1 行である必要があります。もちろん、エンティティ ID や複数の値の順序など、他の情報を指定する追加の列が必要になる場合もあります。

于 2016-03-10T00:51:54.807 に答える