基于京东家电商品知识图谱的自动问答系统(三) -- Java实现问答系统

系列文章:

基于京东家电商品知识图谱的自动问答系统(一) -- 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用户字典、自定义字典

问题模板定义文件

问题模板训练集文件

词汇表文件

Node

实体类,名字就是neo4j中node的label,比如本系统中就都是jd_entity

Repository

相当于mysql的DAO层,是对neo4j的查询入口

Service、Serviceimpl

对repository的封装,实现具体的问答业务逻辑

分词、分类、模板匹配调用repository查询数据库

返回结果

Controller

控制前端发来的请求,调用serviceimpl

Process

实现一个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语句查询后台数据库

问答历史记录、问句偏爱推荐

功能区域与展示区域的分离

项目已上传,下载地址为 CSDN下载地址

参考文章

初期问答系统的搭建与学习参考网上教程,感谢开源。

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

你可能感兴趣的:(NLP-自然语言处理,项目,自然语言处理,朴素贝叶斯算法,spring,boot,spring,neo4j)