从完整的句子

时间:2018-05-13 23:21:59

标签: chatbot rasa-nlu

我正在使用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之类的文件该模型。这似乎是一个非常难以解决的问题。有没有办法从这些GB大小的呼叫日志生成data.json文件而不涉及人类?我在这里错过了什么吗?

4 个答案:

答案 0 :(得分:3)

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

因此,您不必为千兆字节的客户日志提供注释,但只需要一些,算法应该推广到尚未见到的其他句子。这有多好取决于你有多少意图,它们有多复杂,以及其他因素。

我首先注释几百个句子(实际上markdown format更容易一些),将50个左右的例子分开,看看Rasa NLU如何预测它们。继续注释越来越多的示例,并将它们添加到您的训练数据中,直到您对所提供的示例中的表现感到满意为止。

答案 1 :(得分:2)

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

  1. 您可以在直观的DSL中记下实体的典型句子和同义词。
  2. 它会为您生成所有组合并将它们随机播放以进行更好的培训。
  3. 它将示例分为2个文件,一个用于培训,另一个用于测试。因此,您可以衡量训练有素的语言模型的准确性。

答案 2 :(得分:0)

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

但是,如果您只是查找命名实体标识,则可以单独使用spaCy。仅仅抛出一个句子,它将尝试检测句子中的实体。 Spacy已经对模型进行了训练。

参考:Spacy Named Entities

答案 3 :(得分:0)

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

Rasa或类似工具在进行有监督的学习时不提供此功能。一个可能解决我的问题的示例工具是lang.ai