2

我正在使用Rasa.ai构建一个机器人。使用 Rasa NLU 训练机器人时,我们使用一个训练数据文件,其中指定了文本、意图、实体等。例如对于一个简单的餐厅聊天机器人,训练文件data.json可能包含

{
        "text": "central indian restaurant",
        "intent": "restaurant_search",
        "entities": [
          {
            "start": 0,
            "end": 7,
            "value": "central",
            "entity": "location"
          },
          {
            "start": 8,
            "end": 14,
            "value": "indian",
            "entity": "cuisine"
          }
        ]
      }

我们用它来训练模型。但是我们需要手动(或通过 GUI)创建这个训练文件。

有什么工具可以让我输入句子并自动创建意图和实体?

Sample Input: Is there any central Indian restaurant?
Sample Output: The above data.json

编辑:

为了更好地解释这个问题 - 假设我有大量的客户服务通话记录。我的理解是使用 Rasa(或其他类似框架)——人类需要通过调用日志并了解过去发生的所有可能的意图、实体组合,并data.json在训练模型之前创建一个像上面这样的文件。这似乎是一个非常不可扩展的问题。data.json有没有一种方法可以在不涉及人类的情况下从这些 GB 大小的通话记录中生成该文件?我在这里错过了什么吗?

4

4 回答 4

3

这正是您训练 Rasa NLU 执行的任务。接受句子并将它们转化为结构化输出。通过提供示例,您正在教模型这是如何工作的。

因此,您不必为数千兆字节的客户日志提供注释,而只需提供一些注释,该算法应该推广到它尚未看到的其他句子。其效果如何取决于您有多少意图、它们的复杂程度以及其他因素。

我会先注释几百个句子(markdown 格式实际上更容易一些),将 50 个左右的示例分开,然后看看 Rasa NLU 对它们的预测效果如何。继续注释越来越多的示例并将它们添加到您的训练数据中,直到您对保留示例的性能感到满意为止。

于 2018-05-14T12:50:47.387 回答
3

使用几行代码生成任意大的训练数据集的快速方法是Chatito

  1. 您在直观的 DSL 中写下实体的典型句子和同义词。
  2. 它会为您生成所有组合并将它们打乱以进行更好的训练。
  3. 它将示例拆分为 2 个文件,一个用于训练,一个用于测试。所以你可以测量你训练的语言模型的准确性。
于 2018-05-14T13:30:58.217 回答
1

我要问的本质上是无监督学习。输入一堆自然语言并以 Rasa 或任何其他类似工具所需的意图/实体格式输出。

Rasa 或类似工具不存在这一点,因为他们正在进行监督学习。一个可以解决我的问题的示例工具是lang.ai

于 2018-08-12T03:00:56.070 回答
0

我们的想法是仅提供示例句子。通过提供样本,您正在训练模型以了解句子结构、实体的预期位置、实体的数据类型等。

但是,如果您只是寻找命名实体标识,则可以单独使用 spaCy。只需抛出一个句子,它就会尝试检测句子中的实体。Spacy 已经训练了模型来做到这一点。

参考:Spacy 命名实体

于 2018-08-10T17:01:23.217 回答