这个是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. 复习回顾(String,StringBuffer,Arrays方法总结)

    String: String类的对象是一经创建就无法变动内容的字符串常量,创建String类的对象可以使用直接赋值和利用构造方法赋值 String str=“hello”;  String str=n ...

  2. iOS原生项目集成React Native模块

    今天周末,弄弄Native和React Native之间的交互.首先,先在iOS原生项目中集成React Native模块: 注意事项: 1.因为react native的版本问题,部分细节可能有所不 ...

  3. SQL注入之Sqli-labs系列第九关和第十关(基于时间盲注的注入)

    开始挑战第九关(Blind- Time based- Single Quotes- String)和第十关( Blind- Time based- Double Quotes- String) gog ...

  4. 前端笔记 (1.HTML)

    近来一直在学习一些web的知识,主要是包括html,css,js和php,记录一下笔记,希望向和我一样刚学的朋友能提供帮助 这些笔记知识主要来源于菜鸟教程和w3school.我搭建了一个wampSer ...

  5. threejs教程

    http://www.haomou.net/2015/08/30/2015_threejs0/ http://www.johannes-raida.de/tutorials.htm https://w ...

  6. 【论文 PPT】 【转】Human-level control through deep reinforcement learning(DQN)

    最近在学习强化学习的东西,在网上发现了一个关于DQN讲解的PPT,感觉很是不错,这里做下记录,具体出处不详. ============================================= ...

  7. 服务器死机 导致 mongo 挂掉

    1.删除mongod.lock和mongodb.log日志文件 2.携带参数重新启动 mongod --dbpath=/var/lib/mongo --port=27017 --fork --logp ...

  8. CentOS7源码安装qbittorrent最新版本

    CentOS的软件 yum 里 yum search qbittorrent yum info qbittorrent 找到的是3.37版本 官网最新的是4.12版本.但需要源码安装: 官网下载最新版 ...

  9. python可变类型和不可变类型

    原文地址:http://www.cnblogs.com/huamingao/p/5809936.html 可变类型 Vs 不可变类型 可变类型(mutable):列表,字典 不可变类型(unmutab ...

  10. Centos7安装32位库用来安装32位软件程序

    打算在centos7上安装一个远程控制软件,发现teamviewer只有centos的32位版本,试着安装了一下,各种报错,尝试多次无果.于是试着用向日葵远程控制软件,也报错,貌似也是只支持32位. ...