当前位置:   article > 正文

基于java实现简单的人工智能_java写ai

java写ai
  1. package com.xmkjsoft.xmkjsoft.ai;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.Random;
  5. import java.util.Scanner;
  6. /**
  7. * AIstart 类是一个简单的命令行交互程序,用于教授基础知识给AI,并允许用户通过输入问题来检索答案。
  8. */
  9. public class AIstart {
  10. // 存储学到的知识点的列表
  11. private ArrayList<String> knowledgeList = new ArrayList<>();
  12. // 存储学到的知识点特征的列表
  13. private ArrayList<String> knowledgeFeatureList = new ArrayList<>();
  14. // 使用HashMap存储知识点和其特征的映射关系
  15. private HashMap<String, String> knowledgeMap = new HashMap<>();
  16. /**
  17. * teachAI 方法用于循环教授知识点给AI,并接受用户提问。
  18. */
  19. public void teachAI() {
  20. Scanner scanner = new Scanner(System.in);
  21. // 循环进行知识教授和提问
  22. while (true) {
  23. System.out.print("请输入知识点名称(输入 'exit' 退出),(输入 '提问' 进行提问):");
  24. String knowledgePoint = scanner.nextLine();
  25. if (knowledgePoint.equalsIgnoreCase("提问")) {
  26. System.out.print("请输入问题:");
  27. String question = scanner.nextLine();
  28. // 从知识库中检索问题的答案
  29. String answer = retrieveAnswer(question);
  30. System.out.println("AI的回答:" + answer);
  31. }
  32. // 结束教学循环
  33. if (knowledgePoint.equalsIgnoreCase("exit")) {
  34. System.out.println("学习结束,退出循环。");
  35. break;
  36. }
  37. // 将知识点名称存入ArrayList
  38. knowledgeList.add(knowledgePoint);
  39. // 继续学习知识点特征
  40. System.out.print("请输入知识点特征(输入 'exit' 退出):");
  41. String knowledgeFeaturePoint = scanner.nextLine();
  42. // 将知识点特征存入ArrayList
  43. knowledgeFeatureList.add(knowledgeFeaturePoint);
  44. // 将知识点名称和特征存入HashMap
  45. knowledgeMap.put(knowledgePoint, knowledgeFeaturePoint);
  46. }
  47. // 打印学到的知识
  48. printLearnedKnowledge();
  49. }
  50. // 在类的开头声明一个随机数生成器
  51. private Random random = new Random();
  52. /**
  53. * retrieveAnswer 方法用于从知识库中检索问题的答案。
  54. * @param question 用户提问的问题
  55. * @return 答案字符串
  56. */
  57. private String retrieveAnswer(String question) {
  58. // 用于存储匹配的知识点的列表
  59. ArrayList<String> matchingQuestions = new ArrayList<>();
  60. // 遍历知识库,寻找包含或被包含于提问中的知识点
  61. for (String knownQuestion : knowledgeMap.keySet()) {
  62. if (knownQuestion.contains(question) || question.contains(knownQuestion)) {
  63. matchingQuestions.add(knownQuestion);
  64. }
  65. }
  66. // 如果有匹配的知识点,则随机选择一个返回其特征
  67. if (!matchingQuestions.isEmpty()) {
  68. String randomMatchingQuestion = matchingQuestions.get(random.nextInt(matchingQuestions.size()));
  69. return knowledgeMap.get(randomMatchingQuestion);
  70. }
  71. // 如果没有匹配的知识点,则返回默认提示
  72. return "抱歉,我不知道答案。";
  73. }
  74. /**
  75. * printLearnedKnowledge 方法用于打印学到的知识点和特征。
  76. */
  77. private void printLearnedKnowledge() {
  78. System.out.println("学到的知识:");
  79. for (int i = 0; i < knowledgeList.size(); i++) {
  80. System.out.println("知识点:" + knowledgeList.get(i) + ", 特征:" + knowledgeFeatureList.get(i));
  81. }
  82. }
  83. /**
  84. * 主程序入口,创建 AIstart 对象并调用 teachAI 方法。
  85. * @param args 命令行参数
  86. */
  87. public static void main(String[] args) {
  88. AIstart ai = new AIstart();
  89. // 调用 teachAI() 方法进入循环教授知识
  90. ai.teachAI();
  91. }
  92. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/542815
推荐阅读
相关标签
  

闽ICP备14008679号