Python树形聊天机器人

我正在用Python开发一个基于文本的RPG游戏,但在NPC方面遇到了困难。我需要一种类似于树形结构的东西。例如:

Bot: hello there.1. Hi, what's your name?2. Hi, Where do you live?> 2Player: Where do you live?Bot: That's a creepy question. Why do you ask?1. I was just curious.2. Never mind.3. Hide yo kids, hide yo wife> 1Player: I was just curious.Bot: Okay.1. Do you like cheese?2. Bye.> 1Player: Do you like cheese?Bot: Yes! I LOVE cheese.

你所做的每一个选择都会分支出其他选择,也就是说,如果用户在第一个问题上选择了’1’,机器人会回答“我的名字是Bob。你叫什么名字?”

我的游戏设计方式使得创建一个关卡编辑器并非不可能(你可以访问的每个地方都存储为字典中的一个键,然后是一个包含其中所有内容的元组[我有一个商店类,一个敌人类,一个’传送门’类,很快还会有NPC类])。所以我希望这种结构能够以一种方式创建,使我可以将其存储在NPC类的一个变量中(而不是一堆’if’语句)

只是为了澄清,我并不是在请求别人为我编写代码,我只是不确定如何解决这个问题。


简要描述我确切需要什么:

一种树状结构,从一个字符串开始,并有多个字符串从中分支出来

这些字符串中的每一个都有更多的分支

这与元组的元组不同之处在于,需要有一个字符串作为分支点,而不是立即分裂。


回答:

这与决策树密切相关,但玩家是做出选择的一方,所以在AI意义上它并不完全是一个决策树。你可以自己定义一个具有这些属性的数据结构,

class TreeNode:    def __init__(self,parent,children,overview_text,direction_text):        #... 设置变量 ...        # question_text 是一个字符串    def print_question(self):        print overview_text        for child in children:            print direction_text    # 添加一些访问方法    def add_child(self,child):         ...

然后你的NPC可以通过特定的TreeNode跟踪它们的状态 – 称之为current_question – 而整个对话则是在TreeNode的树中 – 称之为对话。

class NPC:     def __init__(self,dialogue):         #... 设置变量 ...         self.current_question = None     def converse(self):         #.... 做一些事情....         self.current_question = users_choice;

这样你就可以根据需要中断对话了。

请注意,TreeNode可能是一个误称,因为你可能希望对话代表一个图而不是仅仅是一个树。许多RPG游戏会有可以循环以重复信息的对话路径,例如。上述数据结构无法做到这一点,因为overview_text(概念上是节点的一部分)和direction_text(概念上是边的部分)被视为一个整体。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注