首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将FAQ JSON文件转换为RASA nlu和stories文件

将FAQ JSON文件转换为RASA nlu和stories文件
EN

Stack Overflow用户
提问于 2020-03-18 15:11:37
回答 2查看 971关注 0票数 0

我有一个500+常见问题的JSON文件,我想在RASA中使用它来制作常见问题聊天机器人。这个JSON文件有一个问题和相应的答案。我需要在RASA中创建nlu,故事和域文件。有没有办法自动做到这一点?因为手动操作会花费很多时间。

EN

回答 2

Stack Overflow用户

发布于 2020-03-27 12:16:34

这取决于您想要如何处理您拥有的数据。如果你想使用它来训练NLU模型,你(或某人)将不得不手动标记每个话语所属的意图。如果你想用它来训练一个NLG模型,你可以编写一个脚本,将你的数据分别格式化成相关的意图和响应(参见https://rasa.com/docs/rasa/core/retrieval-actions/#training-data)。就故事而言,你需要手动编写它们,然而,如果你使用的是检索操作,这些可能会比你想象的要简单得多,也少得多。

我建议检查检索操作,因为这听起来与您的数据最相关。

票数 1
EN

Stack Overflow用户

发布于 2020-04-26 16:22:40

我详细介绍了@lahsuk评论和@Melinda回答。

假设您的JSON (faq.json)类似于这个微型示例:

代码语言:javascript
复制
[
  {
    "name":"1",
    "question":"question balbla 1",
    "answer":"answer blabla 1"
  },
  {
    "name":"2",
    "question":"question bla bla bla 2",
    "answer":"question bla bla 2"
  },
  {
    "name":"3",
    "question":"question blablabla 3",
    "answer":"answer blablabla 3"
  },
]

对于BTW,我显式地添加了属性name,该属性是可选的,但之后会很有用。如果你没有名字,你可以使用一个连续递增的数字( id)来识别Q/A对。

第1步:数据文件脚本生成(强制/最小)

首先,让我们假设使用RASA Retrieval Actions来管理我们的常见问题。在这个场景中,我们将只向RASA模型添加一个名为faq的单一意图。我们必须在domain.yml中添加一行

代码语言:javascript
复制
intents:
  - faq

因此,您必须拆分JSON问题和答案,从faq.json创建两种类型的文件

  1. data/nlu.md
  2. data/responses.md

代码语言:javascript
复制
<!-- faq data/nlu.md: contains questions as intents -->
## intent: faq/1
- question balbla 1

## intent: faq/2
- question bla bla bla 2

## intent: faq/3
- question blablabla 3
代码语言:javascript
复制
<!-- faq data/responses.md: contains answers -->
## faq/1
* faq/1
  - answer blabla 1

## faq/2
* faq/2
  - question bla bla 2

## faq/3
* faq/3
  - answer blablabla 3

为了完成这项任务,您可以用您选择的任何语言创建一个脚本,甚至是bash脚本,它接受您的JSOn输入并以所描述的格式生成2个文件。

次要注意:使用数字id标识每个问题/答案对是可能的,但具有drawbasks。最好给每一对都起一个自言自语的名字。

步骤2:意向数据“增强”(可选/改进)

第一步是最低要求。但是,只有一个问题示例作为意图并不是最好的。用户可以用不同的方式表达问题。一个好主意是在nlu.md中分解单个问题,给出一些不同的例子。例如。

代码语言:javascript
复制
<!-- faq data/nlu.md: many questions for the same answer -->
## intent: faq/1
- original question balbla 1
- another question example
- a third question example 

题外话:使用检索响应的利弊

你提到的故事。事实上,faq的简单方法是预测单轮问题答案,而不是任何上下文范围。检索动作可能是管理单轮“截击”的很好解决方案。

但是,在常见问题知识库中预测可能的导航可能更聪明。例如,机器人可以尝试验证问题的答案是否有用,也许它可以提出与初始问题相关的深化子主题。

这里的故事很棒!但是,要从数据创建自动故事,您可能需要在input JSON中“标记”您的问题/答案,并避免Retrieval操作,更喜欢标准方法,在您的domain.yml中分离意图和响应。至少折衷方案是将机器人检索操作和“宏意图”结合起来,以允许在对话框中进行知识导航。

RASA Sara demo assistant包含有趣/复杂的故事作为智能常见问题解答帮助的示例,使用Rasa Core stories的“通过示例学习”对话框。另请参阅文章:Integrate response retrieval models in assistants built with Rasa

另一个检索响应减去的是答案中缺少文本格式,正如我在my RASA forum question中指出的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60734906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档