27
AISDK AISDK 版版 版版 0.0.1 0.0.1 版版版版 版版版版 SDK SDK

AISDK 版本 0.0.1

  • Upload
    harris

  • View
    100

  • Download
    0

Embed Size (px)

DESCRIPTION

AISDK 版本 0.0.1. 自动应答 SDK. 多层回答系统. 多层系统增加系统的鲁棒性. 意图匹配. 数据存储 Tag 系统. 结构为主的系统. 关键字为主的系统. AI 的 3 层处理系统. 最底层第三层是关键字层。只要符合关键字即可。 第二层是结构匹配层。只要符合特定的结构即可。 第一层是意图匹配层,它通过意图样本训练得到的一个人工神经网络来识别意图。如果不匹配的才调用第二层和第三层。. 目录介绍. 假设 AI 的数据目录为 Data\ 则如下目录分别为: Data\Dic---- 辞典,结构等文件 - PowerPoint PPT Presentation

Citation preview

Page 1: AISDK  版本  0.0.1

AISDK AISDK 版本 版本 0.0.10.0.1

自动应答自动应答 SDKSDK

Page 2: AISDK  版本  0.0.1

多层回答系统多层回答系统

关键字为主的系统

结构为主的系统

意图匹配数据存储Tag 系统

多层系统增加系统的鲁棒性

Page 3: AISDK  版本  0.0.1

AIAI 的的 33 层处理系统层处理系统 最底层第三层是关键字层。只要符合关键

字即可。 第二层是结构匹配层。只要符合特定的结

构即可。 第一层是意图匹配层,它通过意图样本训

练得到的一个人工神经网络来识别意图。如果不匹配的才调用第二层和第三层。

Page 4: AISDK  版本  0.0.1

目录介绍目录介绍 假设 AI 的数据目录为 Data\ 则如下目录分别为:

1. Data\Dic---- 辞典,结构等文件2. Data\Tag\Main----Tag 存储系统,用户的数

据存放地3. Data\User----- 样本,函数,等先验数据

Page 5: AISDK  版本  0.0.1

意图和意图样本意图和意图样本 这里说的意图,是指一个功能模块 . 意图样本,就是激活这个功能模块的一

些自然语言的句子样本。 例如:为了表达“修改订单”这个意图,

我们有多种表达方式。1. 我有个订单,里面有些产品需要修改一下2. 我要修改订单。订单编号是 123456

Page 6: AISDK  版本  0.0.1

意图样本如何保存意图样本如何保存 新建一个 txt 文件,保存成 UTF-8 格式 这个文件的存放路径为:

Data\User\Common\ITS\ 文件格式如下:

======================================== AI. 意图样本 ---------- 意图 1 ---------- 意图 1 对应的句子 1 ======================================== AI. 意图样本(如果和前面一条记录一样,可以省略) ---------- 意图 2 ---------- 意图 2 对应的句子 2 ========================================

Page 7: AISDK  版本  0.0.1

具体例子具体例子 ======================================== AI. 意图样本 ---------- 修改订单 ---------- 我有个订单,里面有些产品需要修改一下 ======================================== ---------- ---------- 我要修改订单。订单编号是 123456 ========================================

Page 8: AISDK  版本  0.0.1

意图的特征选取意图的特征选取 为了让 AI 自动识别意图,必须给 AI 选取

一些特征。这样 AI 可以自动建立一个识别句子意图网络。

AI 的特征存储在目录为: Data\User\Common\ITS\Keys 注意文件必须是 utf-8 形式 每行一个特征

Page 9: AISDK  版本  0.0.1

意图的简单特征意图的简单特征 特征可以是一个词汇

如:天气 也可以是结构,中间用空格分开

如: { 城市 . 类 .E} 天气 也可以是特征的并(多个特征同时出现),

中间用,分割 如:修改 , 订单

Page 10: AISDK  版本  0.0.1

意图的复杂特征意图的复杂特征 有的结构由于太抽象,包含的东西太多,

它就失去了区分能力。这时候我们给他做一些限制,就可以表达复杂的特征。

如: 什么 _{ 集 . 类 } 0.1={ 节日 }

代表 { 集 . 类 } 的限制为 : { 节日 } 限制符为 0.0 代表是第一个, 0.1 代表第

二个,其他类似。

Page 11: AISDK  版本  0.0.1

TagTag 系统系统 AI 内部数据是采用一个 Tag 存储系统。 这里的 Tag 系统是指:通过关键字可以查询到对

应的文本或 INT 数组的系统。 1. 关键字 ---(String)

例如: 1/name ID=1 的记录的标题 1/content ID=1 的记录的内容

2.Tag---{1,2,5,7,3} 例如: 上海 ---{1,2,3} 区号 ---{1,2,3}

支持 Tag 的交,数组的翻页。

Page 12: AISDK  版本  0.0.1

读取数据到读取数据到 TagTag 系统系统 Data\User\Common\ 下都是 Tag 系统的预处理文件。 这些数据都会自动读取到 AI 的一个 Tag 系统( AI 包含多个 Tag 系

统) 格式:如果关键字一样的内容,可以放在一起。 ======================================== 关键字 ---------- 内容 1 ---------- 内容 2 ======================================== 关键字 2 ---------- 内容 3 ========================================

Page 13: AISDK  版本  0.0.1

意图和子意图意图和子意图 如果一个模块激活必须包含几个子模块的

激活,我们称这些子模块为这个意图的子意图。

提醒 . 设置

日期 提醒内容

Page 14: AISDK  版本  0.0.1

意图和子意图的存储意图和子意图的存储 意图和子意图的关系 存储在 Tag 系统的预处理文件中,如下表示: ======================================== AI.Map ---------- ITS.Fire|Topic. 日期 |Topic. 提醒 . 设置 ||1 ---------- ITS.Fire|Topic. 提醒内容 |Topic. 提醒 . 设置 ||1 ========================================

Page 15: AISDK  版本  0.0.1

AIAI 脚本语言脚本语言 当结构匹配的时候, AI 就可以执行一系列

操作,给用户反馈等。为了提高 AI 的作用,有必要提供一套语言。让 AI 执行各种命令。

如:知识的存储,各种结构的增减。意图的激活等。权重的调整。

Page 16: AISDK  版本  0.0.1

AIAI 脚本调用机制脚本调用机制 当用户输入一个句子后 AI检查是否激活了某些意图 如果激活意图 A 。 则系统自动检测是否有 Tag 为“ Fun.A.” 的记录,如果有则执行

这个记录的内容字段中包含的脚本。

Page 17: AISDK  版本  0.0.1

一个简单的脚本一个简单的脚本 我们来看一个简单的脚本

============================= Fun.Test1. --------------------- 【 AI.Map】 A=“1” B=“2” Sys.out=Math.Cal(“【 A】 +【 B】” ) =============================

这个函数的名称为 Fun.Test1. 【 AI.Map】代表这个是一个脚本,而不是普通文本。 其中 A , B 是 2 个变量 ,sys.out 是函数的输出值。 Math.Cal 是计算函数。 【 A】是对变量 A 的引用。 注意 :AI 中所有的变量都是字符串 !

Page 18: AISDK  版本  0.0.1

脚本函数的分类脚本函数的分类 “ITS.“ 开头的, 意图有关的函数 “CN.“ 开头的, 以集合为基础的语义网函数 (CN=ConceptNetWork) “Hook." 开头的, Hook 函数 “FW .” 开头的, Tag 系统函数 “Session.” 开头的, Session 函数,与用户有关的临时变量存储

“Net.“ 开头的, 网络函数,如抓取网络信息,天气, IP 等 "Vector.“ 开头的, 向量函数 “Break.” 开头的,中断函数 “Check.” 开头的,判断检测函数 “Save.” 开头的, 保存函数 “Time.“ 开头的, 时间函数 "SYS.“ 开头的, 系统函数 “String.“ 开头的, 字符串函数 “Var.“ 开头的, 系统变量的一些函数 "File.“ 开头的, 文件函数 "Math.“ 开头的, 数学函数 “Map.“ 或” Search.“ 开头的,映射或搜索有关的函数。

Page 19: AISDK  版本  0.0.1

HookHook 函数函数 Hook 设置

设置 Hook 函数后,当指定的结构出现在句子中,相应的函数就自动激活;如:

=Hook.Set(" 城市 ","{ 城市 . 类 .E}"," 城市 .Save")

如果出现城市,如:上海 就会自动激活 Tag 为“ Fun. 城市 .Save" 的函

数。

Page 20: AISDK  版本  0.0.1

Session Session 函数介绍函数介绍 保存一个字符串到某个地址 key1/key2

Session.Save(“key1”,”key2”,”value1”)从 key1/key2 地址读取一个值存储到 A

A=Session.Load(“key1”,”key2”)

Page 21: AISDK  版本  0.0.1

NetNet 函数介绍函数介绍 从 google.cn抓取上海天气

A=String.URLENCODE(“ 上海天气 ") HTML=Net.Post("www.google.cn","80","/search?q=【 A】 ","G

ET","","utf-8") Net.Post 是抓取函数,

第一个参数是网址 第二个是端口 第三个是文件地址 第四个是方法 第五个是 Post 的值(注意先编码) 最后一个是编码方式。

Net.SendMsg 主动发送消息

Net.SendMsg(“[email protected]”,“AI启动了” )

Page 22: AISDK  版本  0.0.1

StringString 函数介绍函数介绍 String.Reg.Get,正则表达式匹配

如果 HTML变量是抓取来的一个网页我们要用 Pattern 去匹配。则: Pattern="[细节 ](.*?)(【 B】天气 (.|\n)*?)北京市专业气象台 " R=String.Reg.Get(HTML, Pattern, "0")

String.Replace 函数 替换字符串

R=String.Replace(R,“hi”,“你好 ")

String.HTML2Text 函数 把 HTML转为普通文本

HTML=String.HTML2Text(HTML)

String.URLENCODE 函数 编码为 utf-8 格式

Page 23: AISDK  版本  0.0.1

一个抓取上海天气的例子一个抓取上海天气的例子 如果我们想输入:上海天气,或者输入: shtq 就把 google.cn 中的上海天气信息抓取

过来,则我们需要写如下一个 Tag 记录即可实现我们要的功能。

======================================== 上海天气 shtq ---------- 【 AI.Map】 A=String.URLENCODE(“ 上海天气 ") HTML=Net.Post("www.google.cn","80","/search?q=【 A】 ","GET","","utf-8") HTML=String.HTML2Text(HTML) R=String.Reg.Get(HTML,"[细节 ](.*?)(【 B】天气 (.|\n)*?)北京市专业气象台 ","0") R=String.Replace(R,"细节 ] 。 ","") R=String.Replace(R,"北京市专业气象台 ","") Sys.out=【 R】 ========================================

Page 24: AISDK  版本  0.0.1

通用的天气查询,通用的天气查询, step1step1 如果我们要查询任何城市的天气如何做呢? 1.首先需要让 AI 识别这样的意图 我们在 \Data\User\Common\ITS\ 下建立一个 utf-8 编码的文本文件。 内容如下:

======================================== AI. 意图样本 ---------- 天气查询 ---------- 上海天气 ======================================== ---------- ---------- 北京的天气 ======================================== ---------- ---------- 上海的天气 ======================================== ---------- ---------- 天气上海 ========================================

Page 25: AISDK  版本  0.0.1

通用的天气查询,通用的天气查询, step2step2

训练 AI 方法: 输入 t 然后输入次数,比如 1.

建议正确和错误的比率 <1/5 为止次数越多,越接近。如果特征选取不够,错误率也不会趋向于零。

Page 26: AISDK  版本  0.0.1

通用的天气查询,通用的天气查询, step3step3 输入一些函数

======================================== AI.Map ---------- ITS.Fire|Topic. 城市 |Topic. 天气查询 ||1 ======================================== Fun. 天气查询 . ---------- 【 AI.Map】 B=Session.Load("","Topic. 城市 ") T=Session.Save("","Topic. 城市 ","") A=String.URLENCODE("【 B】天气 ") HTML=Net.Post("www.google.cn","80","/search?q=【 A】 ","GET","","utf-8") HTML=String.HTML2Text(HTML) R=String.Reg.Get(HTML,"[细节 ](.*?)(【 B】天气 (.|\n)*?)北京市专业气象台 ","0") R=String.Replace(R,"细节 ] 。 ","") R=String.Replace(R,"北京市专业气象台 ","") =【 R】 ======================================== Fun. 城市 . ---------- 【 AI.Map】 =Hook.Set(" 城市 ","{ 城市 . 类 .E}"," 城市 .Save") =请输入城市,如:上海 ======================================== Fun. 城市 .Save ---------- 【 AI.Map】 =Session.Save("","Topic. 城市 ","$[@]$") =ITS.SetItem("Topic. 城市 ") ========================================

Page 27: AISDK  版本  0.0.1

AIAI 的访问接口的访问接口 AI除了可以 web 方式访问外。还可以通过

GTalk , MSN , QQ访问 Web 方式访问

90端口, HTTP协议。 GTalk , MSN , QQ

对应 3 个 Msger程序。