智能机器人c语言编程,【图片】教你快速制作一个简单的人工智能机器人(懂编程的人进来看)【科幻吧】_百度贴吧...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
教你快速制作一个简单的人工智能机器人(懂编程的人进来看)
本文我首发于“人工智能吧”,叫做《机器人理解人类语言》和《计算机回答人类的提问》
这个机器人能理解你的语言,能和你对话,能学习知识。
首先安装:SQL Server,然后用SQL语言编程。
(一)计算机理解人类语言
说明:/* 符号 和 */ 符号之间的内容为注释内容。
SQL源代码:
/*
设计语言:SQL
数据库名称:try
表名:verb,只有一列,列名:动词,数据类型:varchar(50)
表名:noun,只有一列,列名:名词,数据类型:varchar(50)
要找的动词和名词必须是动词表和名词表里已有的词
*/
/*全句*/
declare @s varchar(100)--全句的内容
set @s = '我很喜欢漫天飞雪的冬季'
/*寻找动词*/
declare @verb varchar(100)--要找的动词
set @verb = ''--默认为空
declare mouse cursor for select 动词 from [try].[dbo].verb--定义游标,叫做mouse
open mouse--打开游标
declare @cat varchar(100)--存储游标读出的数据
fetch next from mouse into @cat--读取下一条语句,并把游标获取的值存入cat变量
while @@fetch_status=0--SQL Server本身自带的全局变量,等于0表示读取下一条语句成功
begin--循环开始
set @cat = RTRIM(@cat)--注意:游标获得的@cat值,右边带有空格,必须用rtrim去除掉空格
if (CHARINDEX(@cat,@s)>0)--找到动词:@s变量包含@cat变量时,也就是数据库的动词@cat属于句子@s里
begin
set @verb = @cat--把cat变量的值(找到的动词)给verb变量
break--结束循环
end
else--还没找到动词
begin
fetch next from mouse into @cat--读取下一条语句,并把游标获取的值存入cat变量
end
end
close mouse--关闭游标
deallocate mouse--删除游标
if(@verb = '')--没有找到动词
print '句子不含动词'--输出
else--找到了动词
print '动词:' + @verb--输出
/*
函数说明:
截取函数:SUBSTRING(全句,截取的开始位置,截取长度)
判断词语在全句位置的函数:CHARINDEX(词语,全句)
测量变量字符串的长度:LEN(变量)
*/
declare @left varchar(100)--动词左边的内容
set @left = SUBSTRING(@s,1,CHARINDEX(@verb,@s)-1)--可以嵌套函数,把函数返回值作为SUBSTRING的参数
print '动词左边:' + @left
declare @right varchar(100)--动词右边的内容
set @right = SUBSTRING(@s,CHARINDEX(@verb,@s)+LEN(@verb),LEN(@s))
print '动词右边:' + @right
/*
用相同原理的方法,在@left里找主语(名词),相当于把@left作为全句变量@s进行分析
用相同原理的方法,在@right里找宾语(名词),相当于把@right作为全句变量@s进行分析
说明:建立形容词表和副词表,名词 + “的” = 定语,“在” + 名词 = 地点状语,用数量单位确定数词,PATINDEX('%[0-9]%',变量)判定数字,去分直接宾语和间接宾语
*/
(二)计算机回答人类的提问
规范语法,是为了方便初学者学习,不规范语法也可以,但是代码就复杂多了,不适合给初学者看。
语法解释语言:主语 - 谓语 - 宾语 来表示 动作执行者 - 动作 - 动作对象。
第一章 提问:主语、谓语、宾语
第一步:建立名词表和动词表。
在名词表添加词语:猫、老鼠,在动词表添加词语:追赶。
在名词表添加疑问词:谁,在动词表添加疑问词:怎样。
第二步:建立语法表:
第1列:主语。
第2列:谓语。
第3列:宾语。
第4列:时间状语。
第5列:地点状语。
第6列:目的状语。
第7列:原因状语。
第8列:条件状语。
第9列:结果状语。
为了简单的讲解,语法表不考虑定语(形容词、数词、名词所有格)和副词,也不考虑间接宾语。
第三步:用户教导:猫追赶老鼠。(先教导,后提问)
第四步:计算机语义理解:
请先阅读我之前发表的文章《计算机理解人类语言(源代码)》
通过语义理解得知:提问句的“猫”是主语,存入语法表的主语列, “追赶”是谓语,存入语法表的谓语列,“老鼠”是宾语,存入语法表的宾语列。
第五步:提问和回答。
用户提问:谁追赶老鼠
计算机分析:
通过语义理解代码,计算机得知该句的主语是“谁”,存入变量@zhuyu中,谓语是“追赶”,存入变量@weiyu中,宾语是“老鼠”,存入变量@binyu中。
IF(@zhuyu = ‘谁’)
SELECT 主语 FROM 语法表 WHERE 谓语 = @weiyu AND 宾语 = @binyu
输出:猫
IF(@weiyu = ‘怎样’)
SELECT 谓语 FROM 语法表 WHERE 主语 = @zhuyu AND 宾语 = @binyu
输出:追赶
IF(@binyu = ‘谁’)
SELECT 宾语 FROM 语法表 WHERE 主语 = @zhuyu AND 谓语 = @weiyu
输出:老鼠
同理,还可以提问:猫怎样老鼠,猫追赶谁。
第二章 提问状语:时间、地点、目的、原因、条件、结果
第一步,教导:
要求:教导时,状语和主句用逗号隔开。主句:猫追赶老鼠。
教导时间状语:昨天,猫追赶老鼠。
标志词:昨天。
教导地点状语:在操场,猫追赶老鼠。
标志词:在。
教导目的状语:猫追赶老鼠,为了吃。
标志词:为了。
教导原因状语:由于猫饿了,猫追赶老鼠。
标志词:由于。(不用在主句加“所以”)
教导条件状语:如果猫饿了,猫追赶老鼠。
标志词:如果。
教导结果状语:猫追赶老鼠,结果猫吃了老鼠。
标志词:结果。
第二步,计算机确定壮语:
确定主句和状语:根据逗号,把主句和状语分开,包含谓语的句子为主句,不包含谓语的句子为状语。
分割方法在《计算机理解人类语言(源代码)》一文中,已经讲解了。
截取函数:SUBSTRING(全句,截取的开始位置,截取长度)
判断词语在全句位置的函数:CHARINDEX(词语,全句)
测量变量字符串的长度:LEN(变量)
按照逗号分割句子,逗号左边的部分存入@left,逗号右边的部分存入@right。
如果@left包含谓语,@left就是主句,@right就是状语,@right赋值给@zhuangyu。
如果@right包含谓语,@right就是主句,@left就是状语,@left赋值给@zhuangyu。
如果@zhuangyu包含时间状语标志词:昨天,则把该状语存入语法表的时间状语列,主句存入同一行的主、谓、宾列。
如果@zhuangyu包含地点状语标志词:在,则把该状语存入语法表的地点状语列,主句存入同一行的主、谓、宾列。
如果@zhuangyu包含目的状语标志词:为了,则把该状语存入语法表的目的状语列,主句存入同一行的主、谓、宾列。
如果@zhuangyu包含原因状语标志词:由于,则把该状语存入语法表的原因状语列,主句存入同一行的主、谓、宾列。
如果@zhuangyu包含条件状语标志词:如果,则把该状语存入语法表的条件状语列,主句存入同一行的主、谓、宾列。
如果@zhuangyu包含结果状语标志词:结果,则把该状语存入语法表的结果状语列,主句存入同一行的主、谓、宾列。
判断一句话是否包含某个词的方法在《计算机理解人类语言(源代码)》一文中,已经讲解了。
如果CHARINDEX(特定的词,全句)>0表示全句包含该词。
第三步:提问和回答:
要求:提问时,状语和主句用逗号隔开。主句:猫追赶老鼠。
提问:什么时间,猫追赶老鼠
通过语义理解得知:提问句的“猫”是主语, “追赶”是谓语,“老鼠”是宾语,“什么时间”是状语。然后把状语部分的内容放入变量@zhuangyu中,主语存到@zhuyu中,谓语存到@weiyu中,宾语存到@binyu中。
IF(@zhuangyu = ‘什么时间’)
SELECT 时间状语FROM 语法表 WHERE主语 = @zhuyu AND谓语 = @weiyu AND 宾语 = @binyu
输出:昨天
IF(@zhuangyu = ‘什么地点’)
SELECT 地点状语FROM 语法表 WHERE主语 = @zhuyu AND谓语 = @weiyu AND 宾语 = @binyu
输出:在操场
IF(@zhuangyu = ‘什么目的’)
SELECT 目的状语FROM 语法表 WHERE主语 = @zhuyu AND谓语 = @weiyu AND 宾语 = @binyu
输出:为了吃
IF(@zhuangyu = ‘什么原因’)
SELECT 原因状语FROM 语法表WHERE主语 = @zhuyu AND谓语 = @weiyu AND 宾语 = @binyu
输出:由于猫饿了
IF(@zhuangyu = ‘什么条件’)
SELECT 条件状语FROM 语法表 WHERE主语 = @zhuyu AND谓语 = @weiyu AND 宾语 = @binyu
输出:如果猫饿了
IF(@zhuangyu = ‘什么结果’)
SELECT 结果状语FROM 语法表 WHERE主语 = @zhuyu AND谓语 = @weiyu AND 宾语 = @binyu
输出:结果猫吃了老鼠
计算机回答人类提问 SQL源代码:
declare @sen varchar(100)
set @sen = '猫追赶老鼠'
/*
语义理解。具体代码见:计算机理解人类语言(源代码),此处省略
通过语义理解,得知主语、谓语、宾语,然后存入相应的变量
*/
declare @zhuyu varchar(100)
declare @weiyu varchar(100)
declare @binyu varchar(100)
/*因为省略了语义理解代码,所以下面的赋值,我手工填写*/
set @zhuyu = '猫'
set @weiyu = '追赶'
set @binyu = '老鼠'
/*
建立一张表,表名sentence(数据库名:try)
第1列,列名:主语,数据类型:varchar(50)
第2列,列名:谓语,数据类型:varchar(50)
第3列,列名:宾语,数据类型:varchar(50)
*/
insert into [try].[dbo].sentence values(@zhuyu,@weiyu,@binyu)--按照主、谓、宾,插入sentence表
/*提问*/
declare @ask varchar(100)
set @ask = '谁追赶老鼠'--提问的内容,不用加问号
/*
语义理解。具体代码见:计算机理解人类语言(源代码),此处省略
通过语义理解,得知主语、谓语、宾语,然后存入相应的变量
注意:名词表里必须先加入“谁”,动词表里必须先加入“怎样”,然后再执行此代码,否则语义理解会失败
因为省略了语义理解代码,所以下面的赋值,我手工填写
*/
set @zhuyu = '谁'
set @weiyu = '追赶'
set @binyu = '老鼠'
/*计算机回答提问*/
declare @answer varchar(100)
IF(@zhuyu = '谁')--对主语进行提问
BEGIN
SET @answer = (SELECT 主语 FROM [try].[dbo].sentence WHERE 谓语 = @weiyu AND 宾语 = @binyu)
PRINT '回答: ' + @answer
END
IF(@weiyu = '怎样')--对谓语进行提问
BEGIN
SET @answer = (SELECT 谓语 FROM [try].[dbo].sentence WHERE 主语 = @zhuyu AND 宾语 = @binyu)
PRINT '回答: ' +@answer
END
IF(@binyu = '谁')--对宾语进行提问
BEGIN
SET @answer = (SELECT 宾语 FROM [try].[dbo].sentence WHERE 主语 = @zhuyu AND 谓语 = @weiyu)
PRINT '回答: ' +@answer
END
分割状语和主句 SQL源代码:
/*全句*/
declare @m varchar(100)--全句的内容
set @m = '在学校,我看见一只猫'
if (CHARINDEX(',',@m)>0)--找到逗号:@m变量包含逗号时
begin
declare @l varchar(100)--逗号左边的内容
set @l = SUBSTRING(@m,1,CHARINDEX(',',@m)-1)--可以嵌套函数,把函数返回值作为SUBSTRING的参数
print '逗号左边:' + @l
declare @r varchar(100)--逗号右边的内容
set @r = SUBSTRING(@m,CHARINDEX(',',@m)+LEN(','),LEN(@m))
print '逗号右边:' + @r
end
if (CHARINDEX('在',@l)>0)--如果句子中包含“在”字
print '逗号左边为地点状语'
if (CHARINDEX('在',@r)>0)
print '逗号右边为地点状语'
if (CHARINDEX('昨天',@l)>0)--如果句子中包含词语“昨天”
print '逗号左边为时间状语'
if (CHARINDEX('昨天',@r)>0)
print '逗号右边为时间状语'
if (CHARINDEX('为了',@l)>0)
print '逗号左边为目的状语'
if (CHARINDEX('为了',@r)>0)
print '逗号右边为目的状语'
if (CHARINDEX('由于',@l)>0)
print '逗号左边为原因状语'
if (CHARINDEX('由于',@r)>0)
print '逗号右边为原因状语'
if (CHARINDEX('如果',@l)>0)
print '逗号左边为条件状语'
if (CHARINDEX('如果',@r)>0)
print '逗号右边为条件状语'
if (CHARINDEX('结果',@l)>0)
print '逗号左边为结果状语'
if (CHARINDEX('结果',@r)>0)
print '逗号右边为结果状语'
智能机器人c语言编程,【图片】教你快速制作一个简单的人工智能机器人(懂编程的人进来看)【科幻吧】_百度贴吧...相关推荐
- 教你快速制作一个简单的网页
像下面这样一个简单的网页怎么制作呢? 通过这篇文章,可以让你基本掌握一个HTML的结构和常用标签的使用 需要用到的常用标签 <b> 加粗</b> ~~~~~~~~~~~~~~~ ...
- php如果实现日历的制作,教你如何制作一个简单的PHP日历
PHP是一款功能强大的后端编程软件,我们在学习PHP的过程中要经过很多实际的战斗,现在让我们做一个日历来巩固PHP的基础,今天爱站技术频道小编为大家整理了教你如何制作一个简单的PHP日历,希望能帮到大 ...
- 实战教程|使用知晓云快速制作一个简单的个人博客
我们在向大家征集开发课程大纲后,便陆续收到了很多建议.大家的热情与支持,是我们持续更新的动力. 由于大家的课程建议比较散,需要结合实际案例进行讲解,因此我们先从最简单的开始.本文将介绍如何通过知晓云的 ...
- 手把手教你制作一个简单的聊天机器人(图灵api)
前言:在无聊的时候打打游戏.听听歌还不如来找个人来陪你聊天,今天来教大家制作一个聊天机器人,这样就不会无聊了,在线聊天机器人地址借愁哥哥机器人(可能有点丑,大家将就一下 (
- 教你如何制作一个简单的学生网页
学生网页要求不能太高,老师在安排作业的时候会降低难度,一般是初学者的水平就可以了,我们在这里讲一讲如何简单制作一个学生静态网页,能够顺利通过考试. 准备工具 dreamwear 这是学习网页必备的软件 ...
- 【Houdini】如何利用黑白的图片在Houdini中快速制作一个立体的模型
如何利用黑白的图片在Houdini中快速制作一个立体的模型 1.首先在Houdini右下角的Network中按tab创建一个Geometry 2.点击进入后,按tab创建一个trace 3.在trac ...
- 32位mips运算器logisim_大神教你制作一个简单的16位CPU
如何制作一个简单的16位CPU,首先我们要明确CPU是做什么的,想必各位都比我清楚,百度的资料也很全..... 如果想要制作一个CPU,首先得明白下计算机的组成结构(或者计算机的替代品,因为并不是只有 ...
- 【Hyperledger Fabric入门】(一) 快速运行一个简单的Fabric网络2
本文在Ubuntu18.04运行,fabric版本为2.3.0.本文篇幅较长,因此分为两篇.快速运行一个简单的Fabric网络1详见:link 目录 3. Orderer节点的启动 4. Peer节点 ...
- 流媒体视频服务:快速搭建一个简单的流媒体视频服务(一)
快速搭建一个简单的流媒体视频服务 前言 系统组成 RTMP协议简介 Red5 概述 Red5 服务器搭建 前言 最近自己在研究有关于流媒体播放的技术,网上资料甚少.出于开源精神以及在查阅资料得到各位大 ...
最新文章
- java 移动页面中的图片上传_移动端图片操作——上传
- linux中安装vsftpd出现的问题
- $python爬虫系列(1)——一个简单的爬虫实例
- Windows azure国际版下通过 windows auzre powershell为VM分配绑定virtual ip address
- 使用parted命令对硬盘进行操作
- centos7 tomcat_centos7中利用logrotate工具切割日志,以tomcat日志为例
- Nginx 笔记与总结(11)Nginx + php-fpm + MySQL 安装 ecshop
- 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
- 开源开放 | 图数据交互可视化分析框架 InteractiveGraph v0.3 版本发布
- 三菱plc可以用c语言编程吗,三菱PLC六种常用编程语言讲解
- YDOOK: USB 转 TTL 串口模块接线图
- 【游戏开发指路】Unity学习路线,三万字大纲(面试题大纲 | 知识图谱 | Unity游戏开发工程师)
- NanoMsg框架C++的相关函数介绍
- (转贴)联想员工亲历联想大裁员:公司不是家
- linu重置root密码(CentOS7)
- 电脑打印准考证图片显示不出来
- Atcoder题解与视频集
- MOSFET的基本知识
- 2015年macbookpro更换电池
- BibTex使用笔记
热门文章
- Zigbee的CC2530与烟雾传感器
- 模仿游戏中图灵设计的计算机叫什么,智能哲学:“第三问题”与图灵的“模仿游戏”...
- Rocksdb源码-读调用链路
- 文字也可以这样简单 这样优美的阅读
- 服装销售应如何掌握消费者心理
- Python标准库之 functools
- kdevelop怎么调试_Kdevelop的C++断点调试设置
- 一个比较漂亮的计算器
- 夜空中最亮的星:慕课网新手学习指南_慕课手记
- GBase 8s SQL 指南:教程———12 创建和使用SPL例程