0

我正在创建一个拥有自己“记忆”的聊天机器人。它将用户的输入保存在键值对中,然后访问该内存以查看如何构造响应。该数据库将基本上充当一个字典,随着机器人接收输入而增长。

第一种方法是简单地创建两列并将多个值添加到“值”列。value 列存储多个字符串。(我什至不知道我会怎么做......)像这样:

 Key     | Values                 |
"i play" | "games","with","music" |
"and i"  | "run", "sleep", "like" |

另一种方法是拥有一个对应于多个值的“键”列。每个值列存储一个字符串。像这样:

  Key    | Value 1 | Value 2 | Value 3 |
"i play" | "games" | "with"  |"music"  |
"and i"  | "run"   | "sleep" | "like"  |

我知道将多个值存储到一个键是关系数据库中的一个很大的“禁忌”,所以如果有更好的方法让我知道?

编辑:所以有点关于机器人将如何创建响应,它将获取一个键并从多个值中随机选择一个值。例如,如果“I play”是选择的键,它会随机选择一个值,例如“music”。从那里,它会找到名为“播放音乐”的新键(如果键不存在,它将构造一个)并从多个值中随机选择一个值。

我想过可能在 value 列中使用 arraylist,这样它是一个真正的“一个键,一个值”键值对,但我不确定 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"

也就是说,键/值对应该就是这样,每个键/值对一行。当然,您可能需要额外的列来指定其他信息——例如实体 ID 或多个值的排序。

于 2016-03-10T00:51:54.807 回答