如何在Python编写的聊天机器人中插入计算器

如何在Python编写的聊天机器人中插入计算器,python,python-3.x,nltk,calculator,chatbot,Python,Python 3.x,Nltk,Calculator,Chatbot,我用Python3.6编写了一个聊天机器人程序。我从几个网站学习语法,我的聊天机器人的大部分内容都来自这里:。该程序对文本执行nltk没有问题。我计划将物理知识输入聊天机器人。到目前为止,机器人可以回答所有与物理有关的问题,如牛顿第二定律,甚至可以给出公式。然而,我计划让这个机器人可以对方程进行简单的计算,比如F=m*a。这几天我在谷歌搜索了这么多的网站,但仍然找不到解决方案。我也在stack overflow中进行了搜索,但离我答案最近的帖子似乎不是我的答案。(). 如果是普通python脚

我用Python3.6编写了一个聊天机器人程序。我从几个网站学习语法,我的聊天机器人的大部分内容都来自这里:。该程序对文本执行nltk没有问题。我计划将物理知识输入聊天机器人。到目前为止,机器人可以回答所有与物理有关的问题,如牛顿第二定律,甚至可以给出公式。然而,我计划让这个机器人可以对方程进行简单的计算,比如F=m*a。这几天我在谷歌搜索了这么多的网站,但仍然找不到解决方案。我也在stack overflow中进行了搜索,但离我答案最近的帖子似乎不是我的答案。(). 如果是普通python脚本,我知道如何编写,我想我会这样写:

  mass = input("input the mass of an object")
  acceleration=input("input the acceleration of an object")
  print("Force of the object: ", mass*acceleration "Newton.")

但是,我该如何在聊天机器人中实现这一点?到目前为止,我唯一能想到的方法就是使用聊天机器人平台,比如chatterbot.AI、Dialogflow、chatfoure等等。如果我只想使用python,我如何改进chatbot,使它能够执行我上面提到的计算。感谢堆栈溢出专家的帮助和建议。

在快速总结中,您的聊天机器人应该:

  • 识别意图(每个公式需要链接到单个意图)
  • 收集所有必需的实体(每个实体表示公式所需的变量)
  • Python计算(求解公式)
  • 检索答案

长答案:

第一项是最棘手的。因此,让我们分离两种主流聊天机器人模式:

  • 基于脚本(如Chatfuel)。 在这种模式下,聊天机器人需要某种菜单(按钮/carroussel/quick answers),为用户提供它可以求解的预定义公式列表。在用户选择(F=ma)之后,脚本必须询问每个变量(质量、加速度)

  • 基于自然语言处理(如NLTK、RASA或Dialogflow)。 我想这就是你想走的路。它更加用户友好和交互式,但也更加复杂。 您必须首先为每个公式设置一个意图,然后向聊天机器人传授每个意图的一些查询示例,如:

    • 我想解F=ma
    • 计算牛顿第二定律
    • 10m/s²的速度加速我的500kg汽车需要什么力
  • 在上一个示例中,用户已经输入了求解方程所需的所有实体。 如果您想允许该用例,您需要设置一个实体提取器。 无论如何,当用户没有提供所需的所有信息时,您需要向他们询问剩余的实体

    您可能还需要提取度量单位(m/s、km/h)并在内部进行转换

    之后,您将拥有计算、准备答案并交付给用户所需的意图(公式/函数)和所有实体(输入/变量)