这个是2017年机器人项目中涉及到的一点东西,虽然没有派上什么大用场,但是还是有必要在这里记录一下!

1. 初始化Bot
A. 配置各种路径,例如aiml,aimlif,config,set,map等的路径。
B. 创建各种graphmaster。有brain,inputgraph,learnfgraph,deletedgraph,patterngraph,unfinishedgraph。
C. 创建预处理器preProcessor,主要用于后期人机对话时,对用户的输入进行规范化处理。
D. loading config目录下的properties。
E. loading aiml set和map文件。
F. loading categories。【首先从aimlif中加载,若没有category,则从aiml中加载】
  a. 逐个载入aiml文件,对该文件,将里面所有的category解析出来,都放入一个ArrayList里面。
  b. 将ArrayList里面所有的category进行重新构建,每个category转换为一个Path的实例。
  c. 将Path实例(一个链表,每个节点word值就是一个分词),添加到root【Nodemapper】数据结构里,形成一个图的部分。【root是一个森林,每棵树的根就是category里面的pattern的首个分词,注意,不重复】

2. 知识森林理解
A. Graphmaster里面,重点是承载知识森林的root节点,一个bot,root节点就是Nodemapper,他是一个基于map构建的树状数据结构。
B. Nodemapper重点在于String类型的key和一个HashMap类型的map。这个map的value部分也是一个Nodemapper。
C. 对于单知识点,则这个map用不上,直接用Nodemapper的value表示; 若加载的aiml知识库中的category存在多个不相同的分词,则会用map进行构建graphmaster。
D. 加载的aiml知识库中,有多少个category,则最终的知识森林graphmaster中就有多少个叶子节点,因为category实例最终都存储在graphmaster的叶子节点中。
E. 对最终的知识森林graphmaster进行节点统计中,DFS算法,其中有几个概念要明确:
  a. nodeSize:通过当前node的分支数,统计graphmaster中有多少节点。
  b. nodeCnt:直接统计node, 求出graphmaster中有多少节点。
  c. n-ary:表示graphmaster中有多少个节点存在分支。

关于这个Program AB的程序,我通过大家懂的途径,获取到了,有需要的,可以找我!

共同探讨,技术改变生活!

Google program AB程序的基本理解的更多相关文章

  1. 解决高版本 Google Chrome 扩展程序强制停用问题 -摘自网络

    1]前往这里下载你喜欢的语言的组策略模板 后缀为.adm (其他的文件自己看 https://docs.google.com/viewer?a=v&pid=sites&srcid=Y2 ...

  2. PHP程序员如何理解IoC/DI(转)

    php - Dependency Injection依赖注入 和 自动加载 各自的优缺点 ioc/di和自动加载时两回事. ioc/di 让代码由创建对象改为注入对象,是一种编程思想,而自动加载,只是 ...

  3. PHP程序员如何理解依赖注入容器(dependency injection container)

    背景知识 传统的思路是应用程序用到一个Foo类,就会创建Foo类并调用Foo类的方法,假如这个方法内需要一个Bar类,就会创建Bar类并调用Bar类的方法,而这个方法内需要一个Bim类,就会创建Bim ...

  4. google perftools分析程序性能

    Google perftools 1.功能简介 它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目 ...

  5. 【翻译】使用Sencha Touch开发Google Glass应用程序

    原文:Developing for Google Glass with Sencha Touch 作者:Ross Gerbasi Ross Gerbasi is a Senior Engineer a ...

  6. 【转载】知乎答案----孙志岗----Google 发布了程序员养成指南,国内互联网巨头是否也有类似的指南和课程推荐

    国内公司在复制国外商业模式的同时,也应复制人家的社会担当.所以,来答题了!就参考 Google 的框架,列一下中文的课程.大体上在线学完一个计算机专业,是基本不成问题的.但是,这不意味着你可以不上大学 ...

  7. 微信小程序简单入门理解

    简单的小程序示例结构: (一):理解小程序结构app.js,app.json,app.wxss ①app.js,app.json是小程序结构必要的部分,app.wxss可选择 ②app.js用于创建小 ...

  8. QT中使用google breakpad捕获程序崩溃异常

    今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法 一.google breakpad源码的下载和编译 1.https://github.com/google/breakpad.git,源码地 ...

  9. google chrome浏览器 程序无法启动并行配置不正确

    启动电脑后打开chrome弹出如下信息: 系统:win7 进入chrome的安装路径 C:\Program Files (x86)\Google\Chrome\Application 两个版本文件夹, ...

随机推荐

  1. python2.6.6 升级 2.7.X

    下载包 解压 cd 进入 ./configure && make all && make install && make clean && ...

  2. tomcat自动缓存的几种解决方式

    第一种方法:打开一个项目,这里我打开的Mail项目,然后点击Myeclipse菜单栏中的project-选择clean: 选择要clean的项目,确定即可不用进入tomcat服务器直接清理缓存. 上面 ...

  3. angular把echarts封装为指令(配合requirejs)

    1.在require中配置echartsjs文件 2.在directives下定义指令(定义为全局的指令,任何页面调用都可以) define(['app','echarts'],function(ap ...

  4. make命令回显Makefile执行脚本命令

    /********************************************************************** * make命令回显Makefile执行脚本命令 * 说 ...

  5. Java中的Arrays类使用详解

    首先先创建一个打印数组的方法,方便后面直接使用 public static void output(int []a) { for(int i=0;i<a.length;i++) { System ...

  6. xdoj-1279(有趣的线段树--吉司机?!)

    题目链接 一 核心: f(x)=91 (x<=100) f(x)=x-10 (x>100) 那么同一区间就可能不同的操作,那么该怎么解决呢? 我门直到同一区间的数据属于同一类别的时候再进行 ...

  7. 两道不错的递推dp

    hdoj-4055 #include <cstdio> #include <cstring> #include <iostream> #include <al ...

  8. Django模型层之多表操作

    ----------------https://www.cnblogs.com/liuqingzheng/articles/9499252.html 实例:我们来假定下面这些概念,字段和关系 一 创建 ...

  9. php基础-4

    require和include require和include都是导入外部php文件的方法,使用方法为require和include关键字后接导入包(php_file)的名字的字符串形式. 当导入的包 ...

  10. Go Example--range

    package main import "fmt" func main() { nums := []int{2,3,4} sum :=0 //rang 遍历切片 for _,num ...