Google program AB程序的基本理解
这个是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程序的基本理解的更多相关文章
- 解决高版本 Google Chrome 扩展程序强制停用问题 -摘自网络
1]前往这里下载你喜欢的语言的组策略模板 后缀为.adm (其他的文件自己看 https://docs.google.com/viewer?a=v&pid=sites&srcid=Y2 ...
- PHP程序员如何理解IoC/DI(转)
php - Dependency Injection依赖注入 和 自动加载 各自的优缺点 ioc/di和自动加载时两回事. ioc/di 让代码由创建对象改为注入对象,是一种编程思想,而自动加载,只是 ...
- PHP程序员如何理解依赖注入容器(dependency injection container)
背景知识 传统的思路是应用程序用到一个Foo类,就会创建Foo类并调用Foo类的方法,假如这个方法内需要一个Bar类,就会创建Bar类并调用Bar类的方法,而这个方法内需要一个Bim类,就会创建Bim ...
- google perftools分析程序性能
Google perftools 1.功能简介 它的主要功能就是通过采样的方式,给程序中cpu的使用情况进行“画像”,通过它所输出的结果,我们可以对程序中各个函数(得到函数之间的调用关系)耗时情况一目 ...
- 【翻译】使用Sencha Touch开发Google Glass应用程序
原文:Developing for Google Glass with Sencha Touch 作者:Ross Gerbasi Ross Gerbasi is a Senior Engineer a ...
- 【转载】知乎答案----孙志岗----Google 发布了程序员养成指南,国内互联网巨头是否也有类似的指南和课程推荐
国内公司在复制国外商业模式的同时,也应复制人家的社会担当.所以,来答题了!就参考 Google 的框架,列一下中文的课程.大体上在线学完一个计算机专业,是基本不成问题的.但是,这不意味着你可以不上大学 ...
- 微信小程序简单入门理解
简单的小程序示例结构: (一):理解小程序结构app.js,app.json,app.wxss ①app.js,app.json是小程序结构必要的部分,app.wxss可选择 ②app.js用于创建小 ...
- QT中使用google breakpad捕获程序崩溃异常
今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法 一.google breakpad源码的下载和编译 1.https://github.com/google/breakpad.git,源码地 ...
- google chrome浏览器 程序无法启动并行配置不正确
启动电脑后打开chrome弹出如下信息: 系统:win7 进入chrome的安装路径 C:\Program Files (x86)\Google\Chrome\Application 两个版本文件夹, ...
随机推荐
- c#帮助文档chm打不开的问题
c# 帮助文档,chm 格式, 不可以放在含有字符 # 的文件夹下(包括当前文件夹和上级文件夹),文件名也不可以含有 # 字符, 否则会打不开.
- python day04--列表,元祖
一.列表增删改查 1.增----append() # lst = [1, True, "哈哈", ("可口可乐", "百事可乐", &quo ...
- Python 基于队列的进程通信
from multiprocessing import Process,Queue def f1(q): q.put('约吗?') if __name__ == '__main__': q = Que ...
- 设置idea文件类型
- SpringMvc使用FastJson做为json的转换器(注解方式)
在使用XML方式配置项目,使用fastjson做为Json转换器时通常的在XML内添加如下的配置: <mvc:message-converters register-defaults=" ...
- ES6 class的继承-学习笔记
1.简介 Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多. 子类必须在constructor方法中调用super方法,否则新建实例时会报错. ...
- Spring NoSQL
把数据收集到一个非规范化的结构中,按照这种方式优化处理文档的数据库称之为文档数据库.文档数据库不适用于数据具有明显关联关系,因为文档数据库并没有针对存储这样的数据进行优化. Spring Data M ...
- SQL注入之Sqli-labs系列第九关和第十关(基于时间盲注的注入)
开始挑战第九关(Blind- Time based- Single Quotes- String)和第十关( Blind- Time based- Double Quotes- String) gog ...
- 【leetcode】35-Search Insert Position
problem Search Insert Position 一种容易想到的是暴力破解法,一种是常用的二分法. 暴力破解法1(不推荐) class Solution { public: int sea ...
- HBase使用压缩存储(snappy)
在将mysql数据导入到hbase数据的过程中,发现hbase的数据容量增加很快, 原本在mysql存储30G容量的数据导入到hbase一直增加到快150G(还未完全导入,手动结束), 而采用默认3个 ...