UID548063性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2022-8-5最后登录1970-1-1
| 本帖最后由 我是李君子 于 2024-1-29 20:46 编辑
我不知道是教程还是其他诶
总之是编程就暂时扔这个板里罢
GramoJS.zip(32.91 KB, 下载次数: 4)
目录
• 实现模仿
• 实现过滤
• 生成训练成果
• 载入训练成果
实现模仿 和 实现过滤
打开压缩文件呢,我们可以看到我们使用了两个js作为支持,一个是我们的jQuery一个是用来对比相似度的函数
Index.js里的load不用管,这是写的时候的废弃代码,不过后面把他移到click事件里然后声明mum等于JSON.parse(json元素)就能实现读档,不过比较懒所以没弄,以及自动读档仅在有后端的情况下,我们要用的语言是原生js,加入后端只是方便保存调教结果
然后我们可以开始了
搭建架子 ( 让 jQuery HTMLDOM 启动 生成表单 )
- //先生成一个HTML架子
- document.write("<center><h1>Gramo Free --- Chat Ai</h1>");
- document.write("\
- <input type='text' value='Question?' id='input'>\
- <button id='output'>Think Now</button>\
- <br><user>Text please</user>\
- <br><bot>...</bot><br><br>\
- <br><a href='head/info.json'>download data infojson</a><br>/*下载条件结果*/\
- <em>Let's try Like as 'HELLO' and other sentences</em>\
- </center>");
- //设置与body的间隔为20px
- document.body.style.padding = "20px";
- //jQuery准备
- $(document).ready( function(){
- $("#output").click( function(){
- //id为output的点击事件
- }
- })
复制代码
然后写事件
咱们先实现一下简单的复述( 方便不熟悉jQuery的人熟悉设置内容 )
在事件函数中写入如下代码
- var user = $("#input").val();
- var bot = $("#input").val();
- //获得用户输入的内容
- $("user").html("You: " + user);
- $("bot").html("bot: " + bot);
- //输出输入内容
复制代码
Ok,然后你就得到了一个复述者
但是这玩意这么搞就没意思了,我们得让他记住然后用,而不是一味的复数
我们在bot输出前加上这句代码
- mum[num] = user;
- //将输入内容放到mum的num位置上
复制代码
注意: num变量应该在jQuery准备前声明为0或者在click事件里声明为mum的长度
Mum在head/think.html中声明
Head里的json是储存条件结果的,txt是你说话的记录(我忘清除了,你清一下谢谢
然后将bot输出内容代码更换为
- $("bot").html("bot: " + mum[Math.floor(Math.random()*mum.length)]);
- //bot说的话为数组mum的第随机数0-mum长度位的字符
- num++
复制代码
然后就实现了随机使用玩家说的语句了
但是他还是会答非所问
我们要让他分析我们说的内容
搞这么一段代码
另外zero变量记得在jQuery准备前声明为0
- var nml = mum.length - 2;
- var num = mum.length;
- function contrast(){
- if(typeof user !== "undefined"){/*判断是否存在*/
- while(similar(user,mum[zero]) < Math.floor(Math.random()*7)/10 && zero < mum.length - 1){/*循环得出和玩家差不多的字符同时不超过玩家输入的内容*/
- zero++;/*返回值然后自加*/
- }
- if(zero >= mum.length){/*没有则随机*/
- zero = Math.floor(Math.random()*nml);
- }
- return mum[zero];/*返回值*/
- } else {
- return 0;
- }
- }
- $("user").html("You: " + user);
- mum[num] = user;
- $("bot").html("bot: " +contrast());
- //函数调用值
复制代码
就是这样了,然后就实现了纯js差不多的可学习然后可以回答的ai了,而不借用if递归
生成训练成果
注意这里可以使用你会的后端语言
不过我推荐Php和Node因为方便
在js里加上post请求
- $.post("head/think.php",
- {
- info: user,
- c: num,
- //传递用户输入和记录数组
- array: mum
- },
- function(){
- num++;
- //请求完毕后num自加(记得把前面的自加删掉
- });
复制代码
Php代码(当时没太注意代码质量 有点烂别喷
- <?php
- $info = $_POST["info"]." ";
- //获取info
- $file = fopen("info.txt","r+");
- //打开
- fread($file,filesize("info.txt"));
- //读到结尾
- fwrite($file,$info);
- //写入记录
- fclose($file);
- //关闭
- //在给的包里中间还有一段破代码,那段代码也是废弃的,不用管没用
- file_put_contents("info.json",json_encode($_POST["array"]));
- //传递来的数组转json写入json
- //方便以后下载
- ?>
复制代码
然后就ok了
读取训练结果
点a就可以下载了
下载后将json内容全部替换掉think.js里的mum值然后把index.js中num的值改为mum的长度或者mum.length-1读取
然后把var children = [];删掉
Ok,这样就读上训练结果啦,你学会了嘛
GramoJS.zip(32.91 KB, 下载次数: 4) |
|