自创公式弄的自创AⅠ

<!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{margin-top:20px;padding:10px;border:1px solid #ccc;border-radius:4px;}</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>

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

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

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

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

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

<script>

const A=0.5,B=2.0;let kb=\[\];

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 sim(t1,t2){

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

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

const hs=1-Math.abs(h1-h2)/(Math.max(h1,h2)||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=>{

const d=1-sim(aL0,a);

const l=a.length/10;s+=d*l;

});return s;

}

function tcr(d,tm,ss,s){return A*(tm/ss)+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());

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

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

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

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

}

function qry(){

const q=document.getElementById('nq').value.trim();let r=document.getElementById('r');

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

let ba="",mr=-Infinity,bq="";

kb.forEach(i=>{

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

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

i.a.forEach(a=>{

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

if(rt>mr){mr=rt;ba=a;bq=i.q;}

});

i.md=(i.md+s)/2;

});

r.innerHTML=`"<strong>匹配问题:</strong> {bq}\\最优回答:\ {ba}<br><strong>总变化率:</strong> ${mr.toFixed(4)}`;

rndKB();

}

function rst(){

kb=\[\];document.getElementById('q').value=document.getElementById('ans').value=document.getElementById('nq').value="";

document.getElementById('r').textContent="等待查询...";rndKB();

}

</script>

</body>

</html>

相关推荐
杨超越luckly18 小时前
Agent应用指南:13年与13线——武汉地铁进化史
数据分析·html·agent·可视化·地铁客流
葡萄城技术团队21 小时前
HTML元素单元格:用自定义 CellType 扩展 SpreadJS 的显示能力
前端·javascript·html
逝水无殇21 小时前
HTML 属性(HTML Attributes)详解
开发语言·前端·html·html5
码农学院2 天前
2026年生成式搜索引擎优化对服务业本地化获客帮助的数字化转型路径
前端·搜索引擎·html
浮江雾2 天前
Flutter第十六节-----路由管理(2)
android·开发语言·前端·javascript·flutter·html
shandianchengzi2 天前
【开源工具】我做了一个周深歌曲淘汰赛生成器:挑选 128 首歌 PK,选出你的年度 TOP1
html·音乐·网页·世界杯
触底反弹2 天前
一文搞懂 Tailwind CSS 弹性布局:从原理到实战
前端·css·html
两点王爷3 天前
一个快速加载面和多面数据的html测试页面(可以导出geojson数据文件)
前端·html·gis
杨超越luckly3 天前
Agent应用指南:长三角41城跨城人口流动OD数据分析
python·数据挖掘·数据分析·html·可视化
不好听6133 天前
HTML 事件监听机制:从 DOM Level 0 到 React 合成事件
前端·react.js·html