Microsoft LUIS - 在话语和实体中的startPos和EndPos

时间:2017-06-13 14:06:59

标签: json azure botframework tokenize luis

我目前正在研究如何在不使用网络用户界面的情况下培训LUIS。特别是我正在考虑找到一种方法来描述文件中的应用程序,并在LUIS中导入和重新训练它。我知道在Python中有一个实现,但有一些限制和API版本。

在提供话语时,我希望能够像这样做一些思考,其中(Stockname)是我话语中的一个实体:

What's the price of (stockName)?

当我想生成用于将应用程序导入LUIS的JSON时,这需要如下所示:

                "utterances": [
              {
                "text": "What's the price of (stockName)?",
                "intent": "stockPrice",
                "entities": [
                  {
                    "entity": "stock",
                    "startPos": 6,
                    "endPos": 6
                  }
                ]
              },

问题是 startPos endPos 。据我所知,这是实体“单词”在标记化话语中的位置。我认为LUIS将话语转换为 tokenized tex t“(stockName)的价格是多少?”并且实体位于第6位(从零开始)。

这意味着要在可导入的JSON中生成话语列表,我需要能够从LUIS获取标记化的话语文本或者自己标记它。

还有其他方法可以实现这一目标吗?

有没有办法从LUIS获取标记化文本,所以我可以用JSON格式生成我的应用程序?

提前致以最诚挚的问候和谢意

1 个答案:

答案 0 :(得分:3)

我认为您对实体的startPosendPos值的理解不正确。

首先,在最新版本的LUIS中,这些参数名为startIndexendIndex。不确定您使用的是v1,还是您发布的JSON只是您正在创建的自定义架构。

但无论如何,预期的值是:

startIndex :给定文本中实体的第一个字符的索引

endIndex :给定文本中实体的最后一个字符的索引

所以,例如在“谁是Ezequiel Jadib?”这样的话语中? “Ezequiel Jadib”是一个实体(比方说人物),LUIS将为startIndexendIndex属性返回以下值:

enter image description here

其中7是实体的第一个字符(“E”),20是最后一个(“b”),考虑到基于零。

了解这一点,我认为生成开始/结束值更容易,因为您只需知道实体的开始位置和结束位置。