V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
1722332572
V2EX  ›  Python

构建一个简单的 Google Dialogflow 聊天机器人 [下]

  •  
  •   1722332572 · 2019-07-03 16:07:52 +08:00 · 2174 次点击
    这是一个创建于 1730 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这部分内容主要包括实体的抽取和定义,意图识别和简单的多轮对话。

    使用实体提取数据

    此页面描述了如何从用户的查询中提取参数值(实体数据)。

    添加参数到您的意图

    参数是用户查询中提取的重要且相关的单词或短语,因此您的聊天机器人可以提供适当的响应。 您将使用语音和编程语言的参数创建一个新意图,以探索它们如何匹配特定意图并包含在您的响应中。

    • 通过单击左侧菜单中 Intents 旁边的加号来创建新意图。

    • 在意图页面的顶部命名意图“语言”。

    • 将以下内容添加为训练短语:

    我懂英语 我说法语 我知道如何用德语写作

    • 单击“保存”。

    extracting-entities-001.png

    Dialogflow 自动检测训练短语中包含在系统实体中的参数。 系统实体是 DIalogflow 提供的实体集,用于覆盖位置,颜色和日期等最容易出现的值。

    在“训练短语”部分下方,Dialogflow 会使用收集到的信息填写一些表格:

    • 该参数是可选的(不是必需的)。
    • 名称 language (自动为系统实体解析)。
    • 此条目对应的实体(在本例中为系统实体 @ sys.language。
    • $ language 的值(自动解决)。
    • 该参数不是列表。

    在响应中使用参数数据

    参数的值可以在您的回复中使用。 在这种情况下,您可以在回复中使用$ language,它将替换为查询中指定给您的聊天机器人的语言。

    在“响应”部分中,添加以下响应,然后单击“保存”按钮:

    Wow! I didn't know you knew $language

    尝试一下

    在右侧的模拟器中,使用“我知道俄语”查询您的聊天机器人。

    您可以在模拟器输出的底部看到 Dialogflow 正确地从查询中使用值“ Russian ”提取语言参数。 在响应中,您可以看到在使用参数值的地方正确插入了“俄语”。 参数也可以在您的集成中处理。 稍后将在“将其他服务与实现集成”中进行介绍。

    extracting-entities-003.png

    创建你的实体

    在大多数情况下,您将获得从用户收集的特定信息,这些信息不在 Dialogflow 的系统实体中。 开发人员实体是您提供的值集和同义词集。

    要创建实体,请按照下列步骤操作:

    • 单击左侧菜单中“实体”旁边的加号。
    • 输入“ ProgrammingLanguage ”作为实体名称。
    • 单击左侧文本字段并添加以下条目:

    JavaScript Java Python

    • 输入条目时,按 Tab 键会将光标移动到同义词字段中。 为每个条目添加以下同义词: WechatIMG2014.jpeg
    • 点击保存按钮

    每个实体必须具备以下条件:

    • 用于定义类别的名称( ProgrammingLanguage )
    • 一个或多个条目( JavaScript,Python )
    • 一个或多个同义词( js,ECMAScript,py ) Dialogflow 可以处理多项和大写等简单的事情,但请确保为您的条目添加所有可能的同义词。 添加的越多,聊天机器人就越能确定您的实体。

    添加新实体

    现在我们已经为编程语言定义了我们的实体,将训练短语添加到“语言”意图中:

    • 单击左侧菜单中的 Intents,然后单击“ Languages ”意图。

    • 将以下内容添加为培训短语:

    I know javascript I know how to code in Java

    应自动注释训练短语中的编程语言。 这会将 ProgrammingLanguage 参数添加到表中。

    extracting-entities-006.png

    • 在 Responses 部分,添加 $Programming Language 很酷,然后单击 SAVE 按钮。

    尝试一下

    extracting-entities-008.png

    现在,使用新实体查询您的聊天机器人。 在模拟器中,键入我知道如何在 py 中编码并按 Enter 键。

    您可以看到 Dialogflow 正确提取了实体 py,将其标识为 Python 实体,并将值插入响应中。

    上下文状态管理

    • 单击左侧菜单中 Intents 旁边的加号以创建新意图。

    • 将意图命名为“语言”。

    • 输入以下训练短语:

    我懂英语 我说法语 我知道如何用德语写作

    • 在“响应”部分中,输入以下文本响应:

    哇! 我不知道你懂得 $language。 你知道 $language 多久了?

    • 单击“保存”按钮。

    • 单击左侧菜单中的 Intents。

    • 将鼠标悬停在“语言”意图上,然后点击添加后续意图: contexts-002.png

    • 单击显示列表中的“自定义”:

    contexts-003.png

    Dialogflow 自动命名后续意图“语言 - 自定义”,箭头表示意图之间的关系。

    意图与后续意图匹配

    后续意图仅在匹配父意图后匹配。 由于此意图仅在“语言”意图之后匹配,因此我们可以假设用户刚刚被问到“您知道多久语言?”这一问题。 您现在将添加训练短语,表明用户可能对该问题的答案。 单击左侧菜单中的 Intents,然后单击“ Languages - custom ”意图。

    添加以下训练短语:

    3 years about 4 days for 5 years

    contexts-005.png

    尝试一下

    在右侧的 Dialogflow 模拟器中尝试此操作。 首先,通过输入我知道法语的查询来匹配“语言”意图。 然后,回答问题您已知的 $language 有多长? 约 2 周。

    contexts-006.png

    尽管第二个查询没有响应(“大约 2 周”),但我们可以看到我们的查询与正确的意图(“语言 - 自定义”)匹配,并且持续时间参数被正确解析(“ 2 周”)。

    意图和上下文

    现在您的后续意图正确匹配,您需要添加响应。在“语言 - 自定义”中,您只询问用户已知语言的持续时间,而不是引用语言本身。

    要使用从“语言”意图收集的参数进行响应,您需要了解后续意图的工作方式。后续意图使用上下文来跟踪是否已触发父意图。如果您检查“语言”意图,您将看到“语言 - 后续”列为输出上下文,以数字 2 开头:

    contexts-007.png

    在匹配 “ Languages ” 意图后,将对话语 “ Languages-followup ” 附加到在匹配“语言”意图后,将对话语“语言跟随”附加到对话两轮。因此,当用户回答问题“你知道$ language 语言多长时间?”时,上下文“语言跟随”是活动的。当 Dialogflow 匹配意图时,任何具有相同输入上下文的意图都非常受欢迎的。

    单击左侧导航中的 Intents,然后单击“ Languages - custom ”意图。

    contexts-007.png

    您可以看到 intent 具有与“ Languages ”的输出上下文相同的输入上下文(“ Languages-followup ”)。因此,在“语言”意图匹配后,“语言 - 自定义”更有可能匹配对话。因此,当用户回答问题“你知道$ language 语言多长时间?”时,上下文“语言跟随”是活动的。当 Dialogflow 匹配意图时,任何具有相同输入上下文的意图都非常受欢迎。

    单击左侧导航中的 Intents,然后单击“ Languages - custom ”意图。

    您可以看到 intent 具有与“ Languages ”的输出上下文相同的输入上下文(“ Languages-followup ”)。因此,在“语言”意图匹配后,“语言 - 自定义”更有可能匹配。

    contexts-007.png

    上下文和参数

    上下文存储参数值,这意味着您可以在“语言 - 自定义”等其他意图中访问“语言”意图中定义的参数值。

    将以下响应添加到“语言 - 自定义”意图中,然后单击“保存”按钮:

    我不敢相信你已经知道 #languages-followup.language $duration 了! 现在,您可以再次查询聊天机器人并获得正确的响应。首先输入“我知道法语”,然后用“ 1 个月”回答问题。

    您应该看到从上下文中检索语言参数值。contexts-010.png

    英文原文:https://dialogflow.com/docs/getting-started/

    磐创 AI: http://www.panchuangai.com

    智能客服,聊天机器人: http://www.panchuangai.com

    TensorFlow 教程: http://panchuang.net

    第 1 条附言  ·  2019-07-03 16:48:09 +08:00
    感谢提醒,图片挂了,原文简书上写的: https://www.jianshu.com/p/88581759710a
    2 条回复    2019-07-03 16:46:44 +08:00
    GoTop
        1
    GoTop  
       2019-07-03 16:40:05 +08:00
    图片裂了
    1722332572
        2
    1722332572  
    OP
       2019-07-03 16:46:44 +08:00
    @GoTop 凉,图片果然是跨站会凉凉。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1193 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:17 · PVG 07:17 · LAX 16:17 · JFK 19:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.