毕业设计-基于微信小程序的智能问答系统

目录

前言

课题背景与简介

实现设计思路

一、系统总体框架设计

二、知识库设计

三、系统功能模块设计

四、初步实现结果

实现效果样例

更多帮助


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

 选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277

大家好,这里是海浪学长微信小程序毕设专题,本次分享的课题是

🎯基于微信小程序的智能问答系统

课题背景与简介

在互联网信息爆炸性增长的今天,人们对信息 的需求日益增多,如何在如此庞大的互联网上获取 对用户有价值的信息成为日益被关注的问题,传统 的问答系统已经无法满足人们获取准确信息的需 求,用相对简单的词语或句子搜索无法准确刻画用 户的真实需求,导致搜索结果差强人意。智能问 答系统与传统的只依靠关键字匹配的搜索引擎相 比,能够更好的理解问题,准确识别人们的意图, 满足用户的检索需求,并且在如今私人定制热潮的 互联网环境下,精准推荐能大大满足用户的所需。 本系统利用眼下热门的手机应用软件与微信小程序 作为智能问答系统的主体部分进行开发与设计,通 过算法实现问题理解与精准推荐,简化了大部分用 户的操作,极大的方便用户对精确信息的查找。立足于微信小程序与手机客户端平 台,智能问答系统从总体的设计出发,到知识库的构建,通过对自然语言处理,以达到精确快速匹配到最佳答案的目的,从而解决问题。

实现设计思路

一、系统总体框架设计

安卓 APP 模块设计

随着科技发展,安卓成为了最广泛的手机系统, 安卓系统有很多优点,并且具有极大的开放性,安 卓系统平台主要由四个组成部分架构起来,利用应 用程序层的安卓主件进行首页、QA 页面、个人页 面、智能超市的开发,主要的主件有 Activity、 Service、BroadCastReceiver、ContentProvider 以及 Intent。

本系统采用 MVP 开发模式,以利于解决 Activity 越来越庞大臃肿和耦合度越来越高的问题,这些问题会导致后期维护变得困难。在安卓应用开 发将 Model 层和 View 层通过 Presenter 层实现完全 分离,主要业务层在 Presenter 层实现。这样的分层 大大降低了 Model 层和 View 层的耦合度。

微信小程序模块设计

微信小程序自面世以来,其受欢迎程度一直呈 增长趋势,越来越多的开发者学习微信小程序的开 发,越来越多的用户也在使用微信小程序这个平台。 微信小程序有几个比较明显的优势:

一、无需安装, 即开即用,轻松方便;

二、潜在流量大,微信是现 如今发展最为成熟、使用人数最多的社交应用软件, 人们能够利用互联网在微信上完成发送图片、文 字、音频等操作;

三、开发的周期相对较短,成 本较低。 基于微信小程序的这些优点,智能问答系统也 设计了微信小程序版。一方面,为那些不想下载 APP 版的用户提供了方便;另一方面,多种形式的应用 设计可以为用户提供多种选择,这也有利于本应用 的推广,从而扩大用户群。

二、知识库设计

本系统采用 Mysql数据库作为系统的知识库。

概念设计

主要数据存储功能,如表所示。

逻辑设计

由实体可确定 4 张表,以下是每张表字段的设 计,如表所示。

Question_answer(问答数据)表

 User(用户)表

User_question (用户 _ 问题)表

 Question_question(问题_问题)表

三、系统功能模块设计

理解问题模块

该模块使系统更好地理解用户的提问、意图, 并进行语义的解析、修正,其流程图如图所示。

1、同义词处理

检索用户问题时,由于同义词的存在而导致问 答系统的检索准确率低,在进行特征提取前,先按 照同义词词典进行同义词处理,在这里使用 Hash散列表的形式表示同义词的数据结构。知识库中每 个词语对应着唯一一个关键码值:key 和它的同义 词序列 valueList。如知识库中词语为:“程序员”, 其在同义词词典中对应关键码值:{“程序员”:{“程 序猿”, “码农”, “敲代码的人”}}。

2、特征提取

采用基于规则的中文分词进行特征提取,对用 户提出的问题进行如下 4 个规则的切分: (1)先采用最大匹配算法,进行两次匹配,用 正向最大匹配法和逆向最大匹配法各进行一次句子 的切分,并比较正向和逆向匹配分出的词数,选取 每一句中切除的词数最少的词组。 (2)经过规则(1)过滤后,若剩余词组超过 1 个,选取平均词语长度最大的词组。公式如下:

 其中 L 表示平均词长, wt 表示句子的总字数, wc 表示词语数。 (3)经过规则(2)过滤后,若剩余词组超过 1 个,计算词组的标准差,选取标准差最小的那个词 组。公式如下:

 其中 N 为总词组数, Xi 表示第 i 个词的字数。

3、关键特征提取

采用改进的 TF-IDF[6]算法,适配本问答系统, 以句为单位计算上一步算法分到的每一个词语W 在知识库的词频 TF(Term Frequency)

 并计算在知识库所有问答对 QA 除以出现该 词的问答对 QAWC ,将得到的商取以 10 为底的对数 得到逆向文件频率(inverse document frequency, IDF),

 然后再计算 TF 与 IDF 的乘积,得出该句中每个词语的权重V,选取前三分之二的词语作为关键词。其计算 公式如公式

4、计算匹配问答对的权值

根据前面处理好的关键字及其权重利用 BM25算法在知识库中进行匹配排名,并将结果返回给用 户。BM25 算法通过给问答对和查询语句加入权值 和参数,拓展了二元独立模型的得分函数。这种拓 展是基于概率论和实验验证的,并不是一个正式的 模型。算法模型如公式所示:

 其中为 Query, d 为搜索结果的问答对, qi 表 示 Query 中的一个参数(每个关键词),Vi 表示 qi 的权 重, V i , R(q,d) 表示参数 qi 与问答对 d 的相关性得分

 Rq d 由两部分组成,第一个组成部分是查询 词在问答对 d 中的权值,第二个组成部分是查询词 自身的权值, fi 是词项在问答对 d 中的频率, qfi 是词项在查询 Q 中的频率往往为 1。 K 因子代表了 对文档长度的考虑,由于问答对长度并不会太长, 这里可忽略不计。将上面公式整理可得:

精准推荐模块

1、基于项目的协同过滤推荐算法

基于项目的协同过滤推荐算法依据用户-项目 评分矩阵通过计算项目之间的评分相似性来衡量项 目评分相似性,找到与目标项目最相似的 n 个项目 作为最近邻居集[9]。然后通过对目标项目的相似邻 居赋予一定的权重来预测当前项目的评分,再将得 到的最终预测评分按序排列,将评分最高的 N 个项 目推荐给当前用户,在这里,可以将项目理解为智 能问答系统处理的问题。算法流程如图 2 所示。

2、算法步骤

(1)读取目标用户中的搜索记录集合。

(2)计算项目 i 与其他问题的相识度,提取 K 个最近邻居。

(3)根据评分相似度计算公式计算候选集中所 有问题的预测评分。

(4)最后选取预测评分最高的 N 个问题推荐 给用户。 基于项目的协同过滤推荐算法预测评分与其他 用户评分的加权评分值相关,通过过滤处理后目标用户Uk 的最近邻集合为{Ut Us ,,,,Uf} 按照 Uk 与中用户U j 之间的综合相似性, sim( i, j) 由大到 小排列,目标用户Uk 对项目 i 的评分 P (u, i )通过下 列公式计算:

3、实现步骤

(1)实时统计 user 对 question 的搜索,从而生 成 user-question 表(即构建用户-问题评分矩阵)。

(2)计算各个 question 之间的相识度,从而生 成 question-question 的得分表,并进行排序。

(3)对每一 user 的 question 集合排序 。

(4)针对预推荐的 user,在该用户已经选择的 question 集合中,根据 question-question 表选择与选 择 question 最相似的 N 个 question。

(5)此时的 N 个 question 即为向该用户推荐的 问题集。

四、初步实现结果

通过上述的设计,进行知识库的创建以及代码 的编写,并对功能进行测试,具体结果如图所示。

 部分表的数据:

APP 关键词或问句的自动回复:

 APP 首页的精准推荐:

实现效果样例

智能问答系统:

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

更多帮助


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部