赞
踩
- 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();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。