系列文章:
基于京东家电商品知识图谱的自动问答系统(一) -- Neo4j构建知识图谱
基于京东家电商品知识图谱的自动问答系统(二) -- IDEA搭建开发环境
基于京东家电商品知识图谱的自动问答系统(三) -- Java实现问答系统
目录
基于知识图谱的自动问答系统架构
配置文件
问题模板
Node
Repository
Service、Serviceimpl
Controller
Process
附加功能
项目已上传,下载地址为 CSDN下载地址
参考文章
项目源码已经上传了,源码中注释很详细,就不做过多描写了。
前后端交互的自动问答实现步骤:
1、前端接收问句,发送至后端(涉及CSS、ajax通信)
2、对问句进行分词,每个单词标注词性(涉及用户字典)
3、对问句进行抽象化,将单词用对应的词性替换,比如 “海尔的冰箱有哪些” 替换成 “ntc的n有哪些”(涉及HashMap)
5、对抽象化后的句子,生成词向量(涉及词汇表、HashMap)
6、匹配问题模板,比如 “ntc n 有哪些”(涉及问题模板、训练集)
7、抽象的问题模板还原成具体的问题,比如 “ntc n 有哪些”,替换其中的ntc->海尔、n->冰箱,最后是 “海尔 冰箱 有哪些”
8、确定问题模板后,根据对应的服务层逻辑,调用数据库连接层,去图数据库Neo4j中查找问题的答案
9、将返回结果进行处理,返回至前端输出
依赖文件pom.xml
配置文件application.properties
配置文件hanlp.properties
都已上传,内有注释,文章内就不过多说了
HanLP用户字典、自定义字典
问题模板定义文件
问题模板训练集文件
词汇表文件
实体类,名字就是neo4j中node的label,比如本系统中就都是jd_entity
相当于mysql的DAO层,是对neo4j的查询入口
对repository的封装,实现具体的问答业务逻辑
分词、分类、模板匹配调用repository查询数据库
返回结果
控制前端发来的请求,调用serviceimpl
实现一个spark的朴素贝叶斯分类器
一个向量(1.0, 0.0, 3.0)它有两种表示方法,稀疏和稠密向量的区别定义:
密集:[1.0, 0.0, 3.0],其和一般的double数组无异。
稀疏:(3, [0, 2], [1.0, 3.0]),其表示的含义(元素的个数,元素的序号,元素序号对应的值),序号从0开始,不写出的默认为0.0。
由于老师要求,又增加了:
后台处理流程的前台显示
用户前台自助使用Cypher语句查询后台数据库
问答历史记录、问句偏爱推荐
功能区域与展示区域的分离
初期问答系统的搭建与学习参考网上教程,感谢开源。
https://www.jianshu.com/p/2f73a6805a57
https://blog.csdn.net/russle/article/details/79940894?utm_source=blogxgwz1
https://blog.csdn.net/weixin_42348333/article/details/90319715
https://blog.csdn.net/cqn9012/article/details/89426303
https://blog.csdn.net/Appleyk/article/details/80422055
https://blog.csdn.net/wangshuaiwsws95/article/details/105041767
https://www.cnblogs.com/loveis715/p/5425790.html
https://blog.csdn.net/u014258362/article/details/81044286