这个是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. 【git学习笔记】

    一.查看git的配置文件 1.在项目下,有一个.git的隐藏文件 2.config为git的配置文件 3.查看config :branch表示分支,此配置文件表示当前有两个分支NNU和master,一 ...

  2. 转 linux常用查看硬件设备信息命令

    转载自:http://blog.chinaunix.net/uid-26782198-id-3242120.html 系统 # uname -a               # 查看内核/操作系统/C ...

  3. [转]Peer-to-Peer Communication Across Network Address Translators

    Peer-to-Peer Communication Across Network Address Translators Bryan Ford Massachusetts Institute of ...

  4. SLES 12 SP2 安装src.rpm软件包

      系统型号: SUSE Enterprise  mv systemd-228-117.12.src.rpm   systemd     cd systemd 执行下面的命令解压:     rpm2c ...

  5. unity 实现调用Windows窗口/对话框交互

    Unity调用Window窗口 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分 ...

  6. 快排 - 快速排序算法 (Chinar出品 简单易懂)

    Quicksort 快排的简单讲解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  7. 【杭电OJ3938】【离线+并查集】

    http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  8. hihocoder1490 Tree Restoration 模拟

    There is a tree of N nodes which are numbered from 1 to N. Unfortunately, its edges are missing so w ...

  9. Java中类的构造方法

    constructor:构造函数. 在创建对象的时候,对象成员可以由构造函数方法进行初始化. new对象时,都是用构造方法进行实例化的: 例如:Test test = new Test("a ...

  10. nginx-port-Permission-denied

    nginx use 9000 port Permission denied  other port ok 新架构下web服务需要使用反向代理,将不同的请求转发到不同的service,对应不同的端口. ...