如何使Microsoft LUIS区分大小写?

我有一个用于NLP的Azure LUIS实例, 尝试使用RegEx表达式提取字母数字值。它运行良好,但是输出以小写字母输出。

例如:

案例1 *

我的输入:“为AE0002运行作业” RegExCode = [a-zA-Z]{2}\d+

输出:

{
  "query": " run job for AE0002","topScoringIntent": {
    "intent": "Run Job","score": 0.7897274
  },"intents": [
    {
      "intent": "Run Job","score": 0.7897274
    },{
      "intent": "None","score": 0.00434472738
    }
  ],"entities": [
    {
      "entity": "ae0002","type": "Alpha Number","startIndex": 15,"endIndex": 20
    }
  ]
} 

我需要保持输入的大小写。

案例2

我的输入:“仅提取诸如HP和IBM之类的缩写” RegExCode = [A-Z]{2,}

输出:

{
  "query": "extract only abreaviations like hp and ibm",// Query accepted by LUIS test window
  "query": "extract only abreaviations like HP and IBM",// Query accepted as an endpoint url
  "prediction": {
    "normalizedQuery": "extract only abreaviations like hp and ibm","topIntent": "None","intents": {
      "None": {
        "score": 0.09844558
      }
    },"entities": {
      "Abbre": [
        "extract","only","abreaviations","like","hp","and","ibm"
      ],"$instance": {
        "Abbre": [
          {
            "type": "Abbre","text": "extract","startIndex": 0,"length": 7,"modelTypeId": 8,"modelType": "Regex Entity Extractor","recognitionSources": [
              "model"
            ]
          },{
            "type": "Abbre","text": "only","startIndex": 8,"length": 4,....          
          {
            "type": "Abbre","text": "ibm","startIndex": 39,"length": 3,"recognitionSources": [
              "model"
            ]
          }
        ]
      }
    }
  }
}

这使我怀疑整个培训是否都以小写形式进行。令我震惊的是,最初针对其各自实体培训的所有单词都被重新培训为 Abbre

任何输入都会有很大帮助:)

谢谢

ykwdcy 回答:如何使Microsoft LUIS区分大小写?

您可以简单地使用输出中提供的单词索引从输入字符串中获取与提供的值完全相同的值。

{
  "query": " run job for AE0002",...
  "entities": [
    {
      "entity": "ae0002","type": "Alpha Number","startIndex": 15,"endIndex": 20
    }
  ]
} 

收到回复后,请在查询中使用substring方法,并使用startIndexendIndex(如果您的方法需要长度而不是结尾,则使用endIndex - startIndex索引),以获取所需的值。

,

对于案例1,是否需要保留案例以查询系统上的作业?只要工作标识符始终具有大写字符,您就可以使用toUpperCase(),例如var jobName = step._info.options.entities.Alpha_Number.toUpperCase()(不确定字母数字的下划线,我之前从未有过带空格的实体)。

对于情况2,这是LUIS应用程序的缺点。您可以使用(?-i)(例如/(?-i)[A-Z]{2,}/g)在正则表达式中强制区分大小写。但是,LUIS似乎首先将所有内容都转换为小写,因此您永远都不会在该语句中找到任何匹配项(这比匹配每个单词要好,但这并不过分!)。我不知道有什么方法可以让LUIS以您的请求方式识别实体。

您可以使用期望的所有缩写创建一个列表实体,但是根据期望的输入,可能难以维护。加上也是单词的缩写将被当作假阳性(例如CAT和cat)。您还可以在LUIS之外编写一个函数为您完成此任务,基本上是建立自己的手动实体检测。识别缩写后,可能还会根据您要尝试做的事情提供一些其他解决方案。

本文链接:https://www.f2er.com/3035736.html

大家都在问