Talkto -- 使用 JavaScript 建立的交談機器人
程式作品C 語言JavaC#JavaScript常用函數文字處理遊戲程式衛星定位系統程式資料結構網路程式自然語言人工智慧機率統計資訊安全等待完成訊息相關網站參考文獻最新修改簡體版English |
專案下載:talkto.zip 執行方法請連到下列網址,然後開始與這個機器人交談。 程式範例<html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <SCRIPT language="JavaScript" SRC="jquery.js"></SCRIPT> </head> <body> <div> 請輸入問題: <input id="say" name="say" type="text" value="我想去峇里島" size="80" onkeydown="keyin(event)"/> <input type="submit" value="送出" onclick="say()"/> </div> <BR/> <textarea id="rules" style="display:none;"> </textarea> <div id="dialogBox" style="width:95%; height:80%; overflow:auto; border:ridge 1px #888888; "> </div> <script type="text/javascript"> $(document).ready(function() { var r=new RegExp("\\#!([\\w/:\\.]+)", "gi"); if (location.href.match(r)) { var ruleFile = RegExp.$1; $('#rules').load(ruleFile, onRuleLoaded); } }); function QA(Q, A) { this.Q = Q; this.A = A; this.toString = function() { return "Q:"+Q+" A:"+A+"\n"; } } var qaList = new Array(); function onRuleLoaded() { var ruleText = document.getElementById("rules").value; var rules = ruleText.replace(/\r/gi, "").replace(/\n/gi, "#").split("Q:"); for (i in rules) { if (rules[i].match(/^([^#]*)#([^$]*)$/gi)) { var q = RegExp.$1; var a = RegExp.$2; q = q.replace(/\s/gi, ""); a = a.replace(/##/gi, "").replace(/#/gi, "|"); var qa = new QA(q,a); qaList.push(qa); } } } function say() { append(document.getElementById("say").value); answer(); } function random(n) { return Math.floor(Math.random()*n); } function keyin(event) { var keyCode = event.which; if (keyCode == 13) { append(document.getElementById("say").value); answer(); } } function append(line) { var dialogBox = document.getElementById("dialogBox"); dialogBox.innerHTML += line+"<BR/>"; dialogBox.scrollTop = dialogBox.scrollHeight; } function answer() { append(">> "+getAnswer()); append(""); } function getAnswer() { var say = document.getElementById("say").value; for (qai in qaList) { var qa = qaList[qai]; var qList = qa.Q.split("|"); var aList = qa.A.split("|"); for (qi in qList) { var r = new RegExp("(.*)"+qList[qi]+"([^?.;]*)", "gi"); if (say.match(r)) { var tail = RegExp.$2; return aList[random(aList.length)].replace(/\*/, tail); } } } return "然後呢?"; } </script> </body> </html> 規則檔案:ccc.txt
執行結果![]() |
page revision: 4, last edited: 16 Dec 2010 04:59
Post preview:
Close preview