如何设置Microsoft LUIS以检测组合名称(短划线)

时间:2017-10-20 13:58:58

标签: luis

我想在LUIS中检测一个人的姓名,包括一个有姓名的人(例如:Mary-Anne)
设置:

  • 名称的简单自定义实体
  • 短划线分隔词的模式功能: ^ \ w * - \ w * $
  • 一个功能短语列表,尝试至少使用一些示例: [marc-andre,marie-anne,jean-marc]

我训练和发表(在分期)但是,它从不检测整个组合名称,而是只返回第一部分作为实体(例如:实体是“marc”而不是“marc-andre”)。

您知道如何配置LUIS以正确检测我的组合名称实体吗?

将Denise的回答纳入考虑

在Luis.ai UI中,我没有意识到在标记话语时,可以在指定实体时多次单击以选择多个单词。

utterance labelling

1 个答案:

答案 0 :(得分:5)

我能够像你描述的那样配置一个简单的自定义实体。我发布了可以导入LUIS here的JSON。

如果没有看到您的LUIS应用程序的JSON,很难说它为什么无法识别以破折号分隔的名称 - 请随时在此处发布您的LUIS应用程序的JSON。有时,由于缺少标签,LUIS应用程序将无法识别实体。让LUIS识别实体的关键部分是标注足够的示例。模式特征只是LUIS的一个提示 - 您仍然需要定义具有标记实体的示例语句。例如,如果您已定义名为 MyNameIs 的意图并想要识别其中的名称实体,则您需要向添加各种话语MyNameIs 意图包含以虚线分隔的名称,并使用实体标记每个名称。 enter image description here

当我添加模式功能时,我使用 btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 20)); btnNewButton.setBounds(375, 190, 120, 40); frame.getContentPane().add(btnNewButton); JButton btnStart = new JButton("Run"); btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } }); btnStart.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { try { Desktop.getDesktop().open(new File("C:\\Users\\User\\Desktop\\Discord-Selfbot-master\\self-bot.bat")); } catch (IOException ex) { System.out.println(ex.getMessage()); } } }); 来表示正则表达式中的“一个或多个”而不是+。但是,这种差异不应该破坏您的模式功能。 enter image description here

连字符可能发生的另一个问题是LUIS返回的JSON。当您从LUIS检查JSON结果时,您可以看到如何标识Name实体。请注意,在*字段中,LUIS在连字符周围插入空格,但entitystartIndex字段标识原始话语中实体的索引。因此,如果您的代码解析endIndex字段而未在entity字段上使用startIndexendIndex,则行为可能与您预期的不同。

query