我正在用Python构建一个对话机器人.虽然我想从头开始生成尽可能多的文本,但我仍然需要一种方法来编目和存储一堆对话框片段字符串.理想情况下,我想在字符串中包含某种层次结构/分类.例如:
问候:
"Oh, nice to meet you {0}"
"My name is Bob, how about you?"
调情:
"Stop it"
"I'm blushing"
"How flattering"
等等...
虽然我可以将它们存储在数据库中,但是人们可以轻松地手动编辑不同的格式会很不错.CSV?JSON?这样的东西有先例吗?
这取决于你想如何使用它.如果字符串仅供Python使用,则应考虑将它们存储在自己的.py
文件中.是的,一个模块,但它也是一个简单的文本文件,可以由Python解释:)
许多项目使用.py
文件作为配置文件(Django)并且导入其内容非常简单,因为您只需要做,import answer_strings
并且您已经在变量或类中获得它们.
你可以这样做:
#bot answers module greetings = ["hello {0}", "what's up {0}"] farewells = ["see you soon {0}", "nos vemos {0}"] ...
并且可以随机返回等效答案等.
另一方面,如果这些也应该由Javascript,Java,node.js或除Python以外的任何技术读取,则应使用更通用的格式,JSON,XML,YAML,您可以使用它.
我认为这在文本文件(项目的资源)中比在数据库中更好,因为这样(如你所提到的)可以更加自定义.我还建议使用包含语义的格式.一个CSV文件是IMHO 非常冷,只是一堆数据转储到文件.使用XML,JSON等,您可以按照"问候","告别"等类别对数据进行分组.
不要忘记,因为您有多个选项,以模块化方式构建代码并解耦是非常好的.因此,如果您做出决定并且将来需要改变,那么它将尽可能无缝地完成.
希望这可以帮助!