我是李君子 发表于 2024-1-29 20:39:46

这次成果比较好 • 手搓AI日记 • 这次的主要语言是js

本帖最后由 我是李君子 于 2024-1-29 20:46 编辑

我不知道是教程还是其他诶
总之是编程就暂时扔这个板里罢


目录
• 实现模仿
• 实现过滤
• 生成训练成果
• 载入训练成果

实现模仿 和 实现过滤
打开压缩文件呢,我们可以看到我们使用了两个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 = user;
//将输入内容放到mum的num位置上
注意: num变量应该在jQuery准备前声明为0或者在click事件里声明为mum的长度
Mum在head/think.html中声明
Head里的json是储存条件结果的,txt是你说话的记录(我忘清除了,你清一下谢谢
然后将bot输出内容代码更换为
$("bot").html("bot: " + mum);
//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) < Math.floor(Math.random()*7)/10 && zero < mum.length - 1){/*循环得出和玩家差不多的字符同时不超过玩家输入的内容*/
                  zero++;/*返回值然后自加*/
                }
                if(zero >= mum.length){/*没有则随机*/
                  zero = Math.floor(Math.random()*nml);
                }
                return mum;/*返回值*/
            } else {
                return 0;
            }
      }
      $("user").html("You: " + user);
      mum = 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,这样就读上训练结果啦,你学会了嘛

我是李君子 发表于 2024-1-29 20:51:35

本作品公开使用权给看完帖子的klp网友以和Fds FDO 魅音幻想四方所有[贴吧_呵呵]

我是李君子 发表于 2024-1-29 20:46:04

我把他用做⑨Chat的语言模型了
可以参考下这个
因为我后面是边写⑨chat边改他的,所以⑨chat这边的代码测试过,可以看看

jxhdamjr 发表于 2024-1-29 22:00:51

我有使用权但我不会用

portedboar44215 发表于 2024-1-30 07:26:01

本帖最后由 portedboar44215 于 2024-1-30 07:30 编辑

jxhdamjr 发表于 2024-1-29 22:00
我有使用权但我不会用

解压后浏览器打开index.html
草,好像带PHP的[贴吧_滑稽]
可以装个ksweb,将手机作为服务器,然后浏览器访问http://localhost:端口
页: [1]
查看完整版本: 这次成果比较好 • 手搓AI日记 • 这次的主要语言是js