制作一个能够自动和人一起玩泡泡堂游戏的软件 1.允许软件犯错,因为人也会犯错,这样,设计起来才容易 2.必须有学习功能,就是玩过一段时间后,明显感觉到技能提高 3.对于印象程度深的事件,综合出能够遵照执行的规则 印象程度:玩游戏过程中所发生的某一件事情,由于其发生的状况很特殊,比如我竟然被自己下的泡泡所杀死,使得这件事情给人的印象很深刻.什么叫特殊?就是需要和人脑中已存在的事件进行比较,只有从未经历过或者很少经历过,用专业术语来说,就是在已有的知识库中搜索到的这件事情的发生概率很低.这需要将没发生的一件事情进行概率统计.同样需要将所发生的事情进行相似性分析.具体步骤如下: 1) 当发生一件事情时,抽取其特征 2) 将其特征与已有的事件知识库进行相似性分析 3) 将这件事情进行分类,并进行概率统计 4) 若这件事情所属类别的概率高,就马上根据事件,综合处规则,结合对该事件的熟练度,并赋予一定的的优先级 5) 若概率不高,则属于新的知识,需要重视, 难点 抽取事件的特征 ---------->自然语言理解,"主语-谓语-宾语"的模式 将事件进行相似性分析----------> 提取事件的规则 根据规则确定执行方案攻克难点的途径:仿照人脑的思维模式人脑 1)抽取特征:人对于两个事件是否相似,是根据事件的动作,也就是动词和动词的对象来判断.如我买了一斤猪肉,我买了一只鸡.这两件事情涉及到的经验可能有些类似,但又有些不同.为什么类似呢?因为同是买.为什么不同呢?因为一个买猪肉,一个买鸡.这样,抽取事件的特征涉及到怎样来建立事件的模型的问题了.一个可行的方案就是采用人类自然语言"主语-谓语-宾语"的模式.根据谓语动词来进行大类分析.这个过程需要中文系的朋友帮忙分析.这个难题涉及到自然语言理解.一件事情,可能是一系列的动作,究竟是那些动作呢?也不能把所发生的所有动作都放到该事件中.这就需要对所有的动作进行原因逻辑分析.前面提到的主谓宾模式则必须加上条件,即动作发生所需要的条件.比如我被一个泡泡杀死,那为什么被杀死呢?因为周围都是泡泡.动作的条件构成前驱,动作的结果构成后继,这样就能够很好的将所有动作联系到一起,形成事件链.人脑思维也是这个样子的.如果我丢了钥匙,我就会顺着时间线,往过去一步一步的搜索所有发生的动作,想到我昨天只去过图书馆,那个时候钥匙还在.这样,原因就不知是动作的一个前驱了.包括动作发生的场所.综上,前驱包含三一因素:空间相关因素,时间相关因素,作用对象(上一个动作的宾语就是这个动作的主语).首先说空间相关因素,当我掉了钥匙,我会想我去过哪些地方.当我在一个地方没找到,我会扩大范围继续搜索.这说明空间因素上有一个优先级别的问题,空间与动作(丢钥匙)越近的地方,优先级越高.对于时间因素也一样.可问题是我不知道在哪儿丢的.怎么确定丢钥匙的空间?根据时间由优先级别高的向优先级别低的搜索,由于每个时间必与空间相联系,故在每个时间点根据空间由优先级别高的向低的搜索,这就像程序中的双重循环一样.而作用对象因素,则是遍寻所有记忆,使用特征词(作用对象钥匙)搜索,搜索方向也是根据时间优先级别进行.构造一个平面直角坐标系,横坐标指示时间轴,方向由左至右,纵坐标指示空间,距离越大表示空间距离越大.坐标系中每一个点表示一个动作,两个动作若构成动作练,就连起来.这样,事件在这个坐标系中就表示为一条由左至右的曲线(时空连续体现为曲线连续).当要分析事件链时,就顺着曲线,沿时间轴左右,并在纵轴一定的距离内的曲线带中分析. 有时候,也有这样的事情:我丢了钥匙,但我清清楚楚记得昨天晚上我还在寝室里见过.这表示什么?表示上述曲线的搜索有了一个明确的范围,时间范围为昨天晚上至今,空间为昨天晚上至今所有动作的发生地点以及其周边地区.,用数学上的角度就是时间轴上有上下限.怎么样识别这个用自然语言表示的范围?关键是这个动作(钥匙在)与钥匙丢了相矛盾.这样问题就清楚了:沿着时间轴反向搜索,与但前动词矛盾的动作时间点,即当前动作发生的边缘条件. 这里又引出一个难点.怎么解决关于矛盾的问题.可行的几个方案是:1. 整编人类自然语言,使其定义符合逻辑.这条很理想,很不现实. 2. 模仿现代程序结构,汇编一些词汇库,就像C语言运行库一样,当需要引用时,就include进来.(以后的程序,功能更为强大,搜索功能更为完备,不用include语句,汇编器会自动寻找)3. 程序员本身将用到的几个词汇的关系事先声明一下. 方案2将这些词汇的关系声明在一个公共的库中,方案3则自己准备.个人觉得方案2和方案3要结合起来.因为库不可能在建立之初就很完备. 那词汇之间到底有什么样的关系?相近,相反,这个我暂时不是很清楚,最起码没语言学的专业人士清楚.解决方案:1.结识一些语言学方面的朋友;2.阅读语言学方面的论文. 人工智能和自然语言理解走的很近,自己若是不掌握,就进不了智能的大门.朋友也很重要. 中文语法分析关于主谓宾模式:这里只涉及到陈述语句,关于语气的方面,难,暂且不提. 一句人类的自然语言,怎样才能提取出程序能够理解的语言呢?第一步,语法分析,就是找出主谓宾,以及时空因素.最难的就是动词.倘若在库中搜索不到动词怎么办?只能靠程序员自行指定,且汇编器能够记录这项指定,自动入库,下次无需指定.对于语法分析,不能完全按照中文语法进行分析.如"我拿刀杀了我的情敌".主语为我,谓语为杀,宾语为情敌,拿刀只是条件."了"表时间,"我要拿刀杀了我的情敌",中的要体现意志. 还未完成,待续 2008/05/10-06:46
制作一个能够自动和人一起玩泡泡堂游戏的软件
最新推荐文章于 2023-06-22 07:49:42 发布