当前位置: 首页 > news >正文

直接用一个公式,就逼近几千神经元的效果,吊打传统aI,你们赶紧拿去当知识蒸馏和混合生成,让传统AI的实力进一步提高

<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width,initial-scale=1.0">

<title>意义密度多问题混合问答</title>

<style>body{font-family:Arial,sans-serif;max-width:800px;margin:20px auto;padding:0 20px;}.g{margin:15px 0;}label{display:block;margin-bottom:5px;font-weight:bold;}input,textarea{width:100%;padding:8px;box-sizing:border-box;border:1px solid #ccc;border-radius:4px;}textarea{height:80px;resize:vertical;}button{padding:10px 15px;margin:5px;border:none;border-radius:4px;background:#007bff;color:#fff;cursor:pointer;}button:hover{background:#0056b3;}#r,#kb,#tk{margin-top:20px;padding:10px;border:1px solid #ccc;border-radius:4px;word-break:break-all;}</style>

</head>

<body>

<h1>意义密度多问题混合问答</h1>

<div class="g"><label for="q">问题</label><input type="text" id="q" placeholder="输入问题..."></div>

<div class="g"><label for="ans">回答(英文逗号分隔)</label><textarea id="ans" placeholder="多个回答用英文逗号分隔..."></textarea></div>

<div class="g"><label for="nq">新问题查询(可多个,英文逗号分隔)</label><input type="text" id="nq" placeholder="输入多个查询问题,英文逗号分隔..."></div>

<div class="g"><label for="spd">生成速度(ms/字)</label><input type="number" id="spd" value="100" min="10" max="1000"></div>

<button onclick="updKB()">添加到知识库</button>

<button onclick="qry()">查询答案</button>

<button onclick="rst()">重置所有</button>

<div id="r">等待查询...</div>

<div id="tk">思考过程:</div>

<div id="kb"><strong>知识库:</strong> 暂无数据</div>

<script>

const A=0.5,B=2.0,N=100,DIFF_THRESHOLD=0.1;let kb=[],t="",h=[],c=0,tkSteps=[];

function t2h(t){let h=0,p=31;for(let i=0;i<t.length;i++)h=(h*p+t.charCodeAt(i))&0xFFFFFFFF;return h;}

function tn(s){return s.split('').reduce((a,b)=>a+(parseInt(b)||0),0);}

function sim(t1,t2){

if(!t1||!t2)return 0;

const h1=t2h(t1),h2=t2h(t2);

const hs=1-Math.abs(tn(h1.toString())-tn(h2.toString()))/(Math.max(tn(h1.toString()),tn(h2.toString()))||1);

const m1=t1.split('').reduce((s,c)=>s+c.charCodeAt(0),0)/t1.length;

const m2=t2.split('').reduce((s,c)=>s+c.charCodeAt(0),0)/t2.length;

const cs=1-Math.abs(m1-m2)/(Math.max(m1,m2)||1);

return 0.6*hs+0.4*cs;

}

function sss(aL){let s=0;aL.forEach(a=>s+=(1-sim(aL[0],a))*(a.length/10||1));return s||1;}

function tcr(d,tm,ss,s){return A*(tm/(ss||1))+d*(1+d/B)-s;}

function rndKB(){

const kbe=document.getElementById('kb');

if(!kb.length){kbe.innerHTML="<strong>知识库:</strong> 暂无数据";return;}

let h="<strong>知识库:</strong><br>";

kb.forEach((i,idx)=>h+=`${idx+1}. 问题: ${i.q}<br>&nbsp;&nbsp;回答: [${i.a.join(', ')}]<br>&nbsp;&nbsp;意义密度: ${i.md.toFixed(4)}<br><br>`);

kbe.innerHTML=h;

}

function updKB(){

const q=document.getElementById('q').value.trim(),aL=document.getElementById('ans').value.trim().split(',').map(a=>a.trim()).filter(a=>a);

if(!q||!aL.length){document.getElementById('r').textContent="请输入完整内容!";return;}

kb.push({q,a:aL,md:sim(q,q)});rndKB();

document.getElementById('r').textContent="添加成功!";

document.getElementById('q').value=document.getElementById('ans').value="";

}

function gw(){let ws="";kb.forEach(i=>ws+=i.q+i.a.join(''));return [...new Set(ws.split('').filter(w=>w.trim()))];}

function getMostFrequent(arr){

return arr.reduce((a,b)=>arr.filter(v=>v===a).length>=arr.filter(v=>v===b).length?a:b);

}

function calcAvgStr(arr){

if(!arr.length)return "";

const len=Math.floor(arr.map(s=>s.length).reduce((a,b)=>a+b)/arr.length);

const allChars=arr.join('').split('');

const freq=allChars.reduce((m,c)=>(m[c]=(m[c]||0)+1,m),{});

return Object.entries(freq).sort((x,y)=>y[1]-x[1]).slice(0,len).map(e=>e[0]).join('');

}

function getMultiMatchBest(qList){

let matchList=[];

qList.forEach(q=>{

kb.forEach(i=>{

const s=sim(q,i.q);

i.a.forEach(a=>{

const tm=s*i.md,ss=i.a.length,sSum=sss(i.a);

const d=sim(q,a),rt=tcr(d,tm,ss,sSum);

matchList.push({q:i.q,a:a,score:rt,sim:s,md:i.md});

});

i.md=Math.min((i.md+s)/2,1);

});

});

matchList.sort((x,y)=>y.score-x.score);

return matchList;

}

function getDensityDiff(arr){

if(arr.length<2)return 1;

const maxMd=Math.max(...arr.map(i=>i.md));

const minMd=Math.min(...arr.map(i=>i.md));

return maxMd-minMd;

}

function filterMatchByDiff(matchList){

const diff=getDensityDiff(matchList);

if(diff<DIFF_THRESHOLD) return matchList;

const avgMd=matchList.reduce((sum,i)=>sum+i.md,0)/matchList.length;

return matchList.filter(i=>Math.abs(i.md-avgMd)<DIFF_THRESHOLD);

}

function gn(ws,matchList,mr,isMix){

const sp=parseInt(document.getElementById('spd').value)||100;

const totalLen=isMix?Math.floor(matchList.reduce((sum,item)=>sum+item.a.length,0)/matchList.length)*1.2:matchList[0].a.length;

if(c>=totalLen||!ws.length||t.length>totalLen){

const res=t||matchList[0].a;

document.getElementById('r').innerHTML=`

<strong>总匹配度:</strong> ${mr.toFixed(4)}<br><strong>生成回答:</strong> ${res}

`;

const mostFreq=getMostFrequent(tkSteps);

const avgStr=calcAvgStr(tkSteps);

const tkText=isMix?`基于${tkSteps.length}次迭代,融合${matchList.length}个匹配结果,高频生成串为${mostFreq},平均特征串为${avgStr}`:`基于${tkSteps.length}次迭代,选取最优匹配结果生成,高频生成串为${mostFreq},平均特征串为${avgStr}`;

document.getElementById('tk').textContent=`思考过程: ${tkText}`;

t="";h=[];c=0;tkSteps=[];return;

}

const currentMatch=isMix?matchList[c%matchList.length]:matchList[0];

const newQ=currentMatch.q+t;

const sc={};

ws.forEach(w=>{

const d=(sim(w,newQ[c%newQ.length])+sim(w,currentMatch.a[c%currentMatch.a.length]))/2;

const tm=Math.min(d*N,1000000);

const ss=Math.max(ws.length,1);

const s=sss([currentMatch.q,currentMatch.a,newQ]);

sc[w]=tcr(d,tm,ss,s);

});

const maxW=Object.entries(sc).sort((x,y)=>y[1]-x[1])[0][0];

if(h.filter(x=>x===maxW).length<2){t+=maxW;h.push(maxW);}

tkSteps.push(t);

c++;

setTimeout(()=>gn(ws,matchList,mr,isMix),sp);

}

function qry(){

const nqVal=document.getElementById('nq').value.trim();

const qList=nqVal.split(',').map(q=>q.trim()).filter(q=>q);

const r=document.getElementById('r');

if(qList.length===0||!kb.length){r.textContent="请输入查询问题并确保知识库有数据!";return;}

const matchList=getMultiMatchBest(qList);

if(matchList.length===0){r.textContent="无匹配结果!";return;}

const densityDiff=getDensityDiff(matchList);

const filteredMatch=densityDiff<DIFF_THRESHOLD?matchList:filterMatchByDiff(matchList);

const isMix=filteredMatch.length>1&&densityDiff<DIFF_THRESHOLD;

const mr=matchList[0].score;

r.innerHTML=`匹配到 ${matchList.length} 个相关结果<br>生成中...`;

gn(gw(),filteredMatch,mr,isMix);

rndKB();

}

function rst(){

kb=[];t="";h=[];c=0;tkSteps=[];

document.getElementById('q').value=document.getElementById('ans').value=document.getElementById('nq').value=document.getElementById('spd').value=100;

document.getElementById('r').textContent="等待查询...";document.getElementById('tk').textContent="思考过程:";rndKB();

}

</script>

</body>

</html>

http://www.jsqmd.com/news/259523/

相关文章:

  • 告别命令行“黑箱“!Open Claude Cowork:让AI代理可视化协作的革命性桌面应用
  • 深度学习计算机毕设之卷神经网络基于python-pytorch训练混凝土是否含有裂缝识别
  • 交叉编译入门:为什么要在 x86 上为 ARM 编译程序?
  • Kimi写的论文AI率太高?这3款工具能帮你降下来
  • DeepSeek写的论文怎么降AI率?3款工具实测对比
  • 2026年口碑最好的降AI工具盘点,价格效果全对比
  • 文献综述降AI率,这几款工具专门针对综述优化
  • 2026年期刊论文降AI率工具推荐,顺利发表必备
  • 本科毕业论文降AI率攻略:从70%降到5%的经验分享
  • Unity 查找对象 API 对比(默认行为 + 激活状态)
  • 2026年医学论文降AI率工具推荐,专业术语不被误改
  • 计算机深度学习毕设实战-基于机器学习python-pytorch训练混凝土是否含有裂缝识别
  • 2026年降AI工具年度盘点:哪款最值得用
  • Dev-C++配置
  • 论文AI率从100%降到10%以下,我用的这几款工具
  • 2026年便宜好用的降AI工具推荐,学生党必看
  • 毕业论文降AI率,学长推荐的5款工具(含免费额度)
  • 系统执行init 6,提示正在更新,无法关机怎么办?
  • 嘎嘎降AI vs 比话降AI:2026年降AI工具对比测评
  • SCI论文降AI率工具推荐:Turnitin检测轻松过
  • 基于SSM的酒店管理系统-计算机毕业设计源码+无LW文档
  • 【图像检测】基于计算机视觉的宫颈癌细胞检测附Matlab代码
  • 树状数组实现区间修改(胚胎级教程,耗时一个月,看完这篇保证完全弄懂!)(补档)
  • 实用指南:拼多多Java面试被问:Redis的持久化策略对比(RDBVS AOF)
  • 基于事件触发机制的孤岛微电网二次电压与频率协同控制仿真模型Simulink仿真
  • 【图像识别】杨梅质量检测及分级系(带面板)附Matlab代码
  • Jmeter如何测试接口?
  • 冥想第一千七百六十六天(1766)
  • 谁还在为证件照头疼?6 款工具精准戳中需求! - 实践
  • 医疗影像用EfficientNet分类更准