我目前正在研究如何在不使用 Web UI 的情况下训练 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 将话语转换为标记化文本t“(stockName) 的价格是多少?”并且该实体位于位置 6(从零开始)。
这意味着要在可导入的 JSON 中生成话语列表,我需要能够从 LUIS 获取标记化的话语文本或自己对其进行标记化。
还有其他方法可以实现这一目标吗?
有没有办法从 LUIS 获取标记化文本,以便我可以生成 JSON 格式的应用程序?
提前致以最诚挚的问候和感谢
最佳答案
我认为您对实体的 startPos
和 endPos
值的理解不正确。
首先,在最新版本的 LUIS
中,这些参数被命名为 startIndex
和 endIndex
。不确定您是否使用的是 v1,或者您发布的 JSON
是否只是您正在创建的自定义架构。
但无论如何,预期的值是:
startIndex:给定文本中实体的第一个字符的索引
endIndex:给定文本中实体最后一个字符的索引
例如,在“Ezequiel Jadib 是谁?”这样的话语中其中“Ezequiel Jadib”是一个实体(假设为 People),LUIS 将为 startIndex
和 endIndex
属性返回以下值:
其中 7 是实体的第一个字符(“E”),20 是最后一个字符(“b”),考虑到它是从零开始的。
知道这一点,我认为生成开始/结束值会更容易,因为您只需要知道实体从哪里开始和结束。
关于json - Microsoft LUIS - 话语和实体中的 startPos 和 EndPos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44523924/