用 Python 构建你自己的聊天机器人

要点总结

  • 学习 AI 和 ML 的基础知识
  • 玩转不同的 AI
  • 创建你自己的人工智能

课程大纲

这个一小时的课程向您介绍人工智能 (AI)、它的历史以及它多年来的演变。您还将学习机器学习 (ML) 的基础知识以及它如何帮助 AI 的快速改进。您将有机会尝试三个 AI 编码示例……

课程内容

  • 什么是人工智能?
  • 人工智能趋势
  • 人工智能计算器
  • 机器学习
  • 实现聊天机器人
  • 任务:训练你的房子 AI
  • 解决方案:训练你的房子 AI
  • 结论

什么是人工智能?#

介绍人工智能及其表现方式。最后,您还将构建一个基本的 AI 系统。

我们将介绍以下内容

简介#

如果您曾经浏览过 Netflix 电影推荐或告诉 Alexa、Siri 或 Cortana 订购芝士汉堡,那么您已经与人工智能进行了交互。人工智能的设计使计算机可以自主运行。为什么每个人似乎都对 AI 如此兴奋?

这是人类与周围环境互动的最重要的进步之一。人工智能是计算机科学的一个广泛分支,其目标是创建可以智能和独立运行的系统。

人工智能的历史#

尽管现在每个人都在谈论人工智能,但这并不是什么新鲜事。这个想法在今天流行之前就已经被创造出来了。以下是 2000 年代之前人工智能的简史:

?你知道吗?#

艾萨克·阿西莫夫的机器人三定律:#

  1. 机器人不得伤害人类,或因不作为而让人类受到伤害。
  2. 机器人必须服从人类的命令,除非这些命令与第一定律相冲突。
  3. 机器人必须保护自己的存在,只要这种保护不与第一或第二定律相冲突。

AI的表现#

人工智能可以以许多不同的方式表现出来。让我们看几个例子:

机器人#

机器人是通过 Internet 运行自动化任务的软件应用程序。执行的任务简单且重复。这些任务的执行速度比人类快得多。

时间机器人被编程为通过从特定数据源中提取时间来为您提供时间。如果您向时间机器人询问西雅图的时间,它会告诉您正确的时间。但是如果你问波士顿的温度是多少,它会感到困惑并给你随机的答案。

自然语言处理#

自然语言处理 (NLP) 包括与机器处理人类书写或​​说的自然语言(例如英语)相关的任务。这些任务包括将口语句子翻译成文本、识别一种语言的特定单词以及从一种语言翻译成另一种语言。

当你问你的人工智能最近的麦当劳在哪里时,它真的只是

  1. 将您的声音翻译成文字,
  2. 将其提供给搜索引擎,
  3. 用人类可以理解的语言读回答案

因此,换句话说,您不必说计算机语言就可以与计算机进行交流。

基于规则的人工智能#

人工智能包括多种不同的方法,其中一些在行为上相当僵化,实际上并不能学习。例如,简单的 if-else 语句非常“基于规则”,被认为是最早的 AI 形式之一。基于规则的人工智能主要用于开发可以在国际象棋等游戏中与人类对抗和击败的智能计算机。

下图表示一个简单的基于规则的 AI,其结果取决于系统的预定义规则。

一个简单的基于规则的系统

这是系统的工作原理:

  • 如果案例 1 为真,我们得到结果 1。
  • 如果案例 1 为假,我们将进入案例 2。
  • 如果案例 2 为真,我们得到结果 2。
  • 如果案例 2 为假,我们得到结果 3。

通过基于规则的模型实现人工智能的系统称为基于规则的人工智能系统。基于规则的人工智能产生基于一组特定预定义规则的预定义结果。

这些 AI 模型使用 if-else 编码语句的规则。基于规则的人工智能模型的两个主要组成部分是:

  • 一套规则
  • 一组事实

您可以借助这两个组件开发一个简单的人工智能模型。

示例:世界时钟#

让我们看一个基于规则的人工智能的例子。AI 仅使用 GMT 时间和用户输入来确定世界不同城市的时间。

运行步骤#

  1. 运行按钮加载并运行代码。
  2. 输入城市名称以获取时间。
  3. 如果城市名称未预加载或不正确,则会打印 GMT。
import datetime  

while (True):
  ## get the name of the city from the user
  city = input("Enter city: ")

  ## get the current time 
  current_time = datetime.datetime.now()

  ## save hours, minutes and second of the current time 
  ## in their corresponding variables 
  hour = current_time.hour
  minute = current_time.minute
  second = current_time.second
  
  ## check for case 1: the learner has typed Boston
  if city == "Boston":
    hour = hour - 4 

  ## check for case 2: the learner has typed Tokyo
  elif city == "Tokyo":
    hour = hour + 9

  ## check for case 3: the learner has typed Chicago
  elif city == "Chicago":
    hour = hour - 5 

  ## check for case 4: the learner has typed Seattle
  elif city == "Seattle":
    hour = hour - 7
  
  ## check for case 5: the learner has typed exit
  elif city == "exit": 
    break

  ## if all cases fail, show the time for GMT    
  else:
    print(city, "is not added")
    city = "GMT" 

  # print the name of the city and the its corresponding time
  print(city, str(hour) + ":" + str(minute) + ":" + str(second))

世界时钟

规则和事实是在代码中预定义的。例如,在代码的第 17-18 行:

规则:城市是波士顿
事实:波士顿时间是格林威治标准时间- 4−4:0000

同样,我们也为其他城市定义了这一点。

您可以添加更多城市。我们将在下面解释该方法。

任务 – 将城市添加到世界时钟#

您的任务是搜索以下城市的时区并为这些时间添加规则:

要更新城市,请按照以下步骤操作:

  1. exit在要求输入城市名称时键入。这将关闭程序。
  2. 从第 23 行开始在代码中添加城市。
  3. 运行按钮更新代码。
  4. 键入world_clock以打开世界时钟。

现在您的城市已更新。保存代码以保持更新。

提示:
您需要使用if-elif代码行 11-20 中使用的块。

import datetime  

while (True):
  city = input("Enter city: ")

  current_time = datetime.datetime.now()
  hour = current_time.hour
  minute = current_time.minute
  second = current_time.second
  
  if city == "Boston":
    hour = hour - 4 

  elif city == "Tokyo":
    hour = hour + 9

  elif city == "Chicago":
    hour = hour - 5 

  elif city == "Seattle":
    hour = hour - 7

  ## add more cities here
  
  elif city == "exit": 
    break
    
  else:
    print(city, "is not added")
    city = "GMT" 

  print(city, str(hour) + ":" + str(minute) + ":" + str(second))

世界时钟与其他城市

  if city == "Kolkata":
    hour = hour + 5
    minutes = minutes + 30

  if city == "Karachi":
    hour = hour + 5

  if city == "Cairo":
    hour = hour + 2
  
  if city == "Shanghai":
    hour = hour + 8