百度语义理解开放平台面向互联网开发人员提供自然语言文本的解析服务,也就是能够依据文本的意图解析成对应的表示。

为了易于人阅读,同一时候也方便机器解析和生成,意图表示协议採用 json 语言进行描写叙述,採用 gb18030 编码。

json 语言的基本概念: 

1、属性名/属性值 

即键值对(key-value) 

2、数组 

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

3、对象 

在 json 中表示为“{}”括起来的内容,数据结构为 {key1:value1,key2:value2,...}的键值对的结构。在面向对象的语言中,key 为对象的属性,value 为相应的属性值,所以非常easy理解,取值方法为对象.key 获取属性值,这个属性值的类型能够是数字、字符串、数组、对象几种。

自然语言文本(下面简称 query)。query 的意图表示由例如以下键值对和数组构成: 

1、raw_text:用户的原始输入文本 

2、parsed_text:经过分词,纠错,改写处理后的文本 

3、version:协议版本 

4、results:意图表示数组

从server中得到的json数据就是依照这种几个部分组成的,比如 “北京天气”相应的json结构例如以下

[plain] view
plain
copy

  1. query:北京明天天气
  2. {
  3. "raw_text":"北京明天天气",
  4. "parsed_text":"北京 明天 天气",
  5. "results":[
  6. {
  7. "domain":"weather",
  8. "intent":"query",
  9. "score":1,
  10. "object":{
  11. "date": "2013-09-25,2013-09-25",
  12. "region":"北京"
  13. }
  14. }
  15. ]
  16. }

在“百度语义理解开放平台 意图表示协议”文档中有具体的介绍,这篇文章主要介绍怎样通过代码对这种语义模型结果进行解析,并对解析的结果进行对应的操作。

以下的代码就是对server返回的json数据结构进行解析的过程,开发人员首先须要了解json数据是怎么的键值对,然后一层一层解析就能够,依据不同的语义,分发到不同的操作中。

[java] view
plain
copy

  1. private void handleResult(String result) {
  2. try {
  3. JSONObject r = new JSONObject(result);
  4. result = r.optString("json_res");
  5. r = new JSONObject(result);
  6. String query = r.optString("raw_text");
  7. if (!TextUtils.isEmpty(query)) {
  8. mAdapter.add(new ChatItem(query));
  9. mAdapter.notifyDataSetChanged();
  10. }
  11. JSONArray commands = r.optJSONArray("results");
  12. JSONObject command = null;
  13. String type = null;
  14. if (commands != null && commands.length() > 0) {
  15. command = commands.optJSONObject(0);
  16. type = command.optString("domain");
  17. } else {
  18. commands = r.optJSONArray("commandlist");
  19. if (commands != null && commands.length() > 0) {
  20. command = commands.optJSONObject(0);
  21. type = command.optString("commandtype");
  22. }
  23. }
  24. if (!TextUtils.isEmpty(type)) {
  25. Log.i("TYPE", type);
  26. new CommandProcessorTask().execute(mProcessors.getProcessor(type), command);
  27. }
  28. } catch (JSONException e) {
  29. e.printStackTrace();
  30. }
  31. }

结果是以String格式返回的,所以首先,将该字符串转为JSONObject,然后解析"json_res"相应的字符串,再生产JSONObject,之后解析"raw_text"相应的文本,然后一步步的把每一个键值相应的数据提取出来,当中“domain”相应的是语义的领域,能够作为区分语意的type类型分发到不同操作。

百度Android语音识别SDK语义理解与解析方法的更多相关文章

  1. 发现最新版百度Android 定位SDK v6.1.3 网络定位bug

    对于百度地图已经实在忍无可忍了,实验室两年以前的一个项目用到了百度地图,以前师兄毕业了,我来维护这个破项目,百度地图推出新版本出来后,老版本的api不能用了,不能做到向下兼容吗?换掉少量的api也就算 ...

  2. 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)

    Kotlin是由JetBrains创建的基于JVM的编程语言,IntelliJ正是JetBrains的杰作,而android Studio是 基于IntelliJ修改而来的.Kotlin是一门包含很多 ...

  3. 百度Android定位SDK获取位置

    http://gis.sunxianlei.cn/2013/01/27/%E7%99%BE%E5%BA%A6android%E5%AE%9A%E4%BD%8Dsdk%E8%8E%B7%E5%8F%96 ...

  4. 百度Android在线语音识别SDK用法

    百度Android语音识别SDK分在线与离线两种,这篇文章介绍在线SDK的用法. 在线SDK是以JAR包和动态链接库形式公布和使用,能够从百度开放云平台站点中下载SDK及使用说明文档. title=d ...

  5. 提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件

    提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件 11月5日,在『WAVE Summit+』2019 深度学习开发者秋季峰会上,百度对外发布基于 ERNIE 的语义理解 ...

  6. 百度地图定位SDK 之构想

    百度地图定位 前提 从香港旅游回来,心中油然升起一股热血滂湃,激励自己发现市场需求,向创业奋进,朝着梦想前进. 简介 百度Android定位SDK支持Android1.5以及以上设备,提供: 定位功能 ...

  7. 我的Android进阶之旅------>Android百度地图定位SDK功能学习

    因为项目需求,需要使用百度地图的定位功能,因此去百度地图开发平台下载了百度地图的Android定位SDK最新版本的开发包和示例代码学习. Android 定位SDK地址:http://develope ...

  8. Android接入百度自动更新SDK

    一:前言 公司的app,上传到百度应用市场,然后说必须要接入百度的自动更新sdk才能上架,于是从百度官网上去下载jar包,下载的时候必须要带上数据统计,如果使用自动的jar包,还需要带上广告联盟,坑爹 ...

  9. 【百度地图-安卓SDK】从头开始写android程序

    [百度地图-安卓SDK]从头开始写android程序首先确保有这四个文件    安装jdk先安装android开发SDK(并不只是为eclipse服务的),即运行installer_r15-windo ...

随机推荐

  1. 如何有效地配置基于Spring的应用系统

    Spring为应用系统的开发提供了极大的方便,其IoC反向注入(或DI依赖注入)的概念也彻底地改变了旧的编程方式,让我们只需关注如何使用对象,而创建对象交给Spring去完成,即把使用对象和创建对象分 ...

  2. hdu 4497 GCD and LCM 质因素分解+排列组合or容斥原理

    //昨天把一个i写成1了 然后挂了一下午 首先进行质因数分解g=a1^b1+a2^b2...... l=a1^b1'+a2^b2'.......,然后判断两种不可行情况:1,g的分解式中有l的分解式中 ...

  3. OpenStack core components CLI快速调用API

    1,openStack core components CLI 使用自身参数执行;

  4. SecureCRT按退格键出现^H问题解决

    解决办法一: 解决办法二: ctrl+backspace.即是返回

  5. 位运算 (&|)与--或 一位数组表示多种意思~~ 与--或

    var arr:Array = [0,1,2,4,8,16] var gate:int = 0; gate |= arr[1] gate |= arr[2] gate |= arr[3] trace( ...

  6. 好用的DNS服务器推荐

    DNS在平时上网中扮演重要角色,如果不注意DNS的话,可能会导致网速慢.弹窗广告.网址打不开.打开不是自己想要的网站.淘宝客劫持等一系列问题.针对DNS的问题,网络上也有各种DNS平台供用户选择.这里 ...

  7. oracle优化思考-双刃剑

    oracle优化是一个双刃剑,特别注意这把剑用的场合:系统规划OLTP or OLAP 优化1:索引 在DML操作时.必须维护索引.假设大量的DML操作,想想看,IO是不是老高了? 索引长处:在非常多 ...

  8. js触摸屏案例

    js 手机端触发事事件.javascript手机端/移动端触发事件   处理Touch事件能让你跟踪用户的每一根手指的位置.你可以绑定以下四种Touch事件: 1 2 3 4 touchstart:  ...

  9. 10个你必须知道的jQueryMobile代码片段

    1.在列表项和按钮上禁用文本截断     如果你的列表项或者按钮上是一个很长的文本,它将会被jQuery Mobile自动截断,要禁用这个截断设置,需要在CSS选择器上添加属性"white- ...

  10. linux 生产环境搭建

    Linux基础命令杂记   今天又一次搞Linux生产环境搭建.这是种步骤很多,很繁琐而且又不得不做的事情.虽然做过很多次,但还是有很多步骤.命令不记得,每一次到处找资料很麻烦,于是将一些步骤记下,以 ...