自动问答系统是当前自然语言处理领域一个非常热的方向。它综合运用了知识表示、信息检索、自然语言处理等技术。自动问答系统能够使用户以自然语言提问的形式而不是关键词的组合,提出信息查询需求,系统依据对问题进行分析,从各种数据资源中自动找出准确的答案。从系统功能上讲,自动问答分为开放域自动问答和限定域自动问答。开放域是指不限定问题领域,用户随意提问,系统从海量数据中寻找答案;限定域是指系统事先声明,只能回答某一个领域的问题,其他领域问题无法回答。
为了测试这个方面可行与否,近期,利用百度知道的相关问答语料,测试了下。
具体步骤:
(1)数据预处理:将百度知道的原始数据通过预处理整合成格式规范的数据导入数据库中,方便后续处理,就形成了训练数据所需的原始数据集。
(2)构建分类器:利用所给数据训练文本分类器模型,在用户提出测试问题时可以将测试问题贴上类别标签,锁定答案的知识范围;、
(3) 相似问题检索:将测试问题与训练语料库中相同类别下的其它问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合
(4) 答案抽取:将相似问题集合中的所有答案进行排序,选出最佳答案反馈给用户。
里面的核心技术是分类器的构建,由于还没采用深度学习的办法,目前只采用SVM分类器进行测试,发现还是可行的。而相似问题计算这种,有很多现成的东东。
用JAVA代码实现,测试结果如下: