语义理解输入和输出

json格式简介

属性名/属性值

即键值对(key-value)

数组

在 json 中是“[]”括起来的内容,数据结构为["value1","value2",...],取值方式和所有语言中一样,使用索引获取,属性值的类型可以是数字、字符串、数组、对象。

对象

在 json 中是“{}”括起来的内容,数据结构为["value1","value2",...],取值方式和所有语言中一样,使用索引获取,属性值的类型可以是数字、字符串、数组、对象。

意图表示协议说明

语义表示协议由以下字段组成:

results是数组,由若干object构成(少数情况下,语义解析结果不一定唯一, query 可能属于多个领域或存在歧义等)。一个 object 对应一个解析结果,若有 多个按 score 排序,每个 object 结构如下:

语义理解示例:

query:我要看名侦探柯南

{
    "appid": 597,
    "encoding": "UTF-8",
    "results": [
        {
            "domain": "movie",
            "intent": "MOVIE_INFO",
            "score": 100,
            "slots": {
                "user_movie_name": [
                    {
                        "word": "名侦探柯南",
                        "norm": ""
                    }
                ]
            }
        },
        {
            "domain": "animation",
            "intent": "ANIMATION_INFO",
            "score": 100,
            "slots": {
                "user_ani_name": [
                    {
                        "word": "名侦探柯南",
                        "norm": ""
                    }
                ]
            }
        }
    ],
    "parsed_text": "我 要 看 名 侦探 柯南",
    "raw_text": "我要看名侦探柯南",
    "err_no": 0
}

意图取值

意图和领域相关,每个领域下,均有若干个该领域专属的意图,详见各领域语义表示协议。

词槽取值

某些比较复杂的query仅使用意图无法完整的表示其语义信息,因此需要加入词槽信息,即该意图下的附加信息或限制条件,如query=我要买明天去北京的机票,意图是买机票,另外还有限制条件是明天和北京,因此语义解析会得到以下词槽信息::

"slots": {
            "user_time": [
         {
           "word": "明天",
              "norm": ""
          }
         ],
                 "user_arrival_city": [
         {
           "word": "北京",
           "norm": ""
          }
           ]
}

表示语义解析得到2个词槽,分别为user_time(时间)和user_arrival_city(到达地)。而每个词槽对应的值有2种,一种是原始值(word),另一种是归一化值(norm):原始值是指query中出现的词槽值的原文,即"明天"和"北京";而归一化值是对某些词槽,系统会在原始值的基础上进行规范化处理,得到的统一格式的词槽值,该字段为预留字段,目前置空,后续将会开放给开发者使用。

词槽值类型

所有词槽的原始值和归一化值类型均为string型。