简单的基于关键词匹配的 QA 系统示例
下面为你展示使用 Java 开发一个简单的基于关键词匹配的 QA 系统的示例。此系统会把关键词和对应的答案存储在一个 Map
里,接着通过匹配用户输入的关键词来返回相应答案。
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;public class QASystem {// 初始化知识库private static final Map<String, String> knowledgeBase = new HashMap<>();static {knowledgeBase.put("天气", "今天天气晴朗");knowledgeBase.put("价格", "产品价格是199元");knowledgeBase.put("售后", "售后电话:400-xxx,7天无理由退换");}// 获取答案的方法public static String getAnswer(String question) {for (Map.Entry<String, String> entry : knowledgeBase.entrySet()) {if (question.contains(entry.getKey())) {return entry.getValue();}}return "对不起,我暂时无法回答这个问题。";}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入你的问题:");String question = scanner.nextLine();String answer = getAnswer(question);System.out.println(answer);scanner.close();}
}
代码解释
- 知识库初始化:借助
static
代码块对knowledgeBase
这个Map
进行初始化,把关键词和对应的答案存进去。 - 获取答案方法:
getAnswer
方法会遍历knowledgeBase
,查看用户输入的问题是否包含关键词,若包含就返回对应的答案,若不包含则返回默认回复。 - 主方法:在
main
方法中,运用Scanner
类来获取用户输入的问题,接着调用getAnswer
方法得到答案并输出。
拓展建议
- 模糊匹配:可以使用第三方库(如 Apache Commons Text)来实现模糊匹配,从而处理用户输入中存在错别字或语序不同的情况。
- 使用正则表达式:利用正则表达式来匹配更灵活的关键词模式。
- 数据库存储:把知识库存到数据库中,这样就能更方便地进行管理和更新。