基于java实现简单的人工智能
·
package com.xmkjsoft.xmkjsoft.ai;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
import java.util.Scanner;
/**
* AIstart 类是一个简单的命令行交互程序,用于教授基础知识给AI,并允许用户通过输入问题来检索答案。
*/
public class AIstart {
// 存储学到的知识点的列表
private ArrayList<String> knowledgeList = new ArrayList<>();
// 存储学到的知识点特征的列表
private ArrayList<String> knowledgeFeatureList = new ArrayList<>();
// 使用HashMap存储知识点和其特征的映射关系
private HashMap<String, String> knowledgeMap = new HashMap<>();
/**
* teachAI 方法用于循环教授知识点给AI,并接受用户提问。
*/
public void teachAI() {
Scanner scanner = new Scanner(System.in);
// 循环进行知识教授和提问
while (true) {
System.out.print("请输入知识点名称(输入 'exit' 退出),(输入 '提问' 进行提问):");
String knowledgePoint = scanner.nextLine();
if (knowledgePoint.equalsIgnoreCase("提问")) {
System.out.print("请输入问题:");
String question = scanner.nextLine();
// 从知识库中检索问题的答案
String answer = retrieveAnswer(question);
System.out.println("AI的回答:" + answer);
}
// 结束教学循环
if (knowledgePoint.equalsIgnoreCase("exit")) {
System.out.println("学习结束,退出循环。");
break;
}
// 将知识点名称存入ArrayList
knowledgeList.add(knowledgePoint);
// 继续学习知识点特征
System.out.print("请输入知识点特征(输入 'exit' 退出):");
String knowledgeFeaturePoint = scanner.nextLine();
// 将知识点特征存入ArrayList
knowledgeFeatureList.add(knowledgeFeaturePoint);
// 将知识点名称和特征存入HashMap
knowledgeMap.put(knowledgePoint, knowledgeFeaturePoint);
}
// 打印学到的知识
printLearnedKnowledge();
}
// 在类的开头声明一个随机数生成器
private Random random = new Random();
/**
* retrieveAnswer 方法用于从知识库中检索问题的答案。
* @param question 用户提问的问题
* @return 答案字符串
*/
private String retrieveAnswer(String question) {
// 用于存储匹配的知识点的列表
ArrayList<String> matchingQuestions = new ArrayList<>();
// 遍历知识库,寻找包含或被包含于提问中的知识点
for (String knownQuestion : knowledgeMap.keySet()) {
if (knownQuestion.contains(question) || question.contains(knownQuestion)) {
matchingQuestions.add(knownQuestion);
}
}
// 如果有匹配的知识点,则随机选择一个返回其特征
if (!matchingQuestions.isEmpty()) {
String randomMatchingQuestion = matchingQuestions.get(random.nextInt(matchingQuestions.size()));
return knowledgeMap.get(randomMatchingQuestion);
}
// 如果没有匹配的知识点,则返回默认提示
return "抱歉,我不知道答案。";
}
/**
* printLearnedKnowledge 方法用于打印学到的知识点和特征。
*/
private void printLearnedKnowledge() {
System.out.println("学到的知识:");
for (int i = 0; i < knowledgeList.size(); i++) {
System.out.println("知识点:" + knowledgeList.get(i) + ", 特征:" + knowledgeFeatureList.get(i));
}
}
/**
* 主程序入口,创建 AIstart 对象并调用 teachAI 方法。
* @param args 命令行参数
*/
public static void main(String[] args) {
AIstart ai = new AIstart();
// 调用 teachAI() 方法进入循环教授知识
ai.teachAI();
}
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)