文章结尾部分有CSDN官方提供的学长 联系方式名片文章结尾部分有CSDN官方提供的学长 联系方式名片关注B站,有好处!

编号: F061

大模型诗词推荐与可视化系统

在传统文化数字化的浪潮下,我开发了这款诗歌问答大数据平台,旨在通过现代技术赋能古典诗词学习与传播。平台不仅实现了诗词数据的系统化管理,更融合了AI推荐、可视化分析等智能化功能。本文将重点介绍平台的核心功能模块,分享技术实现思路与功能亮点。

技术架构

vue+flask+mysql+llm

功能说明

在这里插入图片描述

功能介绍

1.推荐功能:混合推荐算法【基于内容的推荐+协同过滤+冷启动】
协同过滤:结合用户点赞行为,挖掘兴趣相似用户群体的偏好;
算法说明:该推荐算法位于poem_route.py文件的get_recommendations函数中,采用混合推荐策略实现诗歌个性化推荐。算法通过HTTP GET请求接收用户ID(user_id)和推荐数量(top_n)两个核心参数,其中top_n参数设置了默认值9,支持动态调整推荐结果数量。

算法核心逻辑调用了hybrid_recommend函数,该混合推荐机制可能融合了协同过滤与基于内容的推荐方法:通过用户历史行为数据(如like_poem记录的点赞行为)构建用户兴趣模型,同时结合诗歌文本特征(标题、作者、内容)进行相似度计算。

系统实现了完整的推荐生命周期管理:首先验证用户ID的有效性,调用推荐函数生成诗歌ID列表,再通过ORM查询获取诗歌详细信息,最终通过make_response格式化JSON响应。算法具备良好的扩展性,支持通过调整top_n参数控制推荐列表长度,通过poem_schema序列化器灵活配置返回字段。

在异常处理方面,算法通过try-except块捕获潜在错误,确保服务稳定性。该推荐系统适用于诗歌类内容平台,能够基于用户偏好提供个性化阅读推荐,提升用户粘性和内容发现效率。
在这里插入图片描述

def hybrid_recommend(user_id, top_n=10):"""混合推荐函数,结合基于内容的推荐、协同过滤推荐和热门推荐。:param user_id: 用户的 ID,用于获取用户的点赞记录。:param top_n: 推荐的诗歌数量,默认为 10。:return: 推荐的诗歌 ID 列表。"""# 获取指定用户的点赞记录,仅提取诗歌 IDuser_likes = UserLike.query.filter_by(user_id=user_id).with_entities(UserLike.poem_id).all()# 将查询结果转换为包含诗歌 ID 的列表user_likes = [like.poem_id for like in user_likes]# 若用户没有点赞记录,调用热门推荐函数,返回热门诗歌的 ID 列表# 打印联合推荐结果# 合并基于内容和协同过滤的推荐结果,去除重复项,并截取前 top_n 个# 调用协同过滤推荐函数,获取推荐的诗歌 ID 列表# 若用户有点赞记录,调用基于内容的推荐函数,获取推荐的诗歌 ID 列表# 检查用户是否有点赞记录# 打印调试信息,可注释掉这行以避免输出过多信息# 调用 extract_features 函数,提取所有诗歌的 ID、文本特征和类别特征poem_ids, text_features, category_features = extract_features()# print(poem_ids, text_features, category_features)if user_likes:content_based_rec = content_based_recommend(user_likes, poem_ids, text_features, category_features, top_n)collaborative_rec = collaborative_filtering_recommend(user_id, top_n)combined_rec = list(set(content_based_rec + collaborative_rec))[:top_n]print('联合推荐:', combined_rec)return combined_recelse:return popular_recommend(top_n)

2.喜欢功能:这个和结合推荐一起用的,可以点击喜欢诗词点赞/取消点赞
用户可对喜爱的诗词进行 点赞/取消点赞,操作数据实时反馈至推荐引擎;
在这里插入图片描述

3.智能写诗:基于硅基流动的模型接口实现对话写诗
对接 硅基流动模型接口,实现自然语言对话式写诗。
在这里插入图片描述

在这里插入图片描述

def chat_with_siliconflow(messages, model="Qwen/Qwen3-32B"):"""使用硅基流动的Qwen3模型生成回答"""headers = {"Authorization": f"Bearer {OPENAI_API_KEY}","Content-Type": "application/json"}# 构建提示词prompt = f"""你是一个写诗专家,请完成用户的需求:{messages}。"""payload = {"model": model,"messages": [{"role": "system", "content": "你是一个写诗专家,请完成用户的需求。"},{"role": "user", "content": prompt}],"max_tokens": 512,"temperature": 0.7,"top_p": 0.9}try:response = requests.post(f"https://api.siliconflow.cn/v1/chat/completions",headers=headers,data=json.dumps(payload),timeout=60)if response.status_code == 200:data = response.json()return data["choices"][0]["message"]["content"].strip()else:logger.error(f"API请求失败: {response.status_code} - {response.text}")return "抱歉,暂时无法回答这个问题,请稍后再试。"except requests.exceptions.RequestException as e:logger.error(f"API请求异常: {e}")return "抱歉,暂时无法回答这个问题,请稍后再试。"

4.可视化功能:echarts图形进行分析诗人朝代、主题分布
朝代分布:柱状图展示各朝代诗词数量占比,直观呈现“唐诗宋词”的巅峰地位;
主题分析:词云图/饼图统计山水、边塞、思乡等主题的分布情况;
在这里插入图片描述

5.个人信息:个人信息修改、头像上传修改、预设头像
支持 个人信息修改+头像自定义+预设头像库个性化配置。
在这里插入图片描述
在这里插入图片描述

6.登录注册:登录、注册
在这里插入图片描述
在这里插入图片描述

7.查询诗词+诗人展示:支持诗词浏览、查询
支持标题查询+全文检索
在这里插入图片描述

诗人展示
在这里插入图片描述

8.用户管理:支持用户管理、增删改查
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92662.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92662.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92662.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Ignite 核心组件:GridClosureProcessor解析

这是一个 Apache Ignite 中非常核心的组件 —— GridClosureProcessor,它是 分布式闭包(Closure)执行的调度中枢,负责在集群节点上异步执行用户提交的任务(如 Runnable、Closure)。 我们来逐层深入理解它的…

for循环详解与实战技巧

目录 一、for循环语法 二、for循环执行流程 流程图表示: 三、for循环实践示例 示例:在屏幕上打印1~10的值 四、while循环与for循环对比 for循环和while循环都包含三个关键部分: 两者的主要区别在于代码组织方式: 五、练习…

winform中的listbox实现拖拽功能

文章目录前言一、实现前言 winform中的listBox实现拖拽! 一、实现 winform中的listbox实现拖拽只需要实现四个事件 1、准备两个listbox控件 其中listtarget,AllowDrop属性设置为True。 2、实现四个事件 2.1MouseDown //在 MouseDown 事件期间&#x…

用 Docker 安装并启动 Redis:从入门到实战

用 Docker 安装并启动 Redis:从入门到实战Redis 作为一款高性能的键值对数据库,在缓存、会话存储、消息队列等场景中被广泛应用。本文将详细介绍如何使用 Docker 快速安装和启动 Redis,包括基础配置、数据持久化以及容器管理等核心操作&#…

ansible学习第一天

一:ansible基础知识1.1 ansible的定义与工作原理简述ansible是一个自动化运维工具,用于执行自动化任务,包括像配置管理,应用部署,任务执行等等,本质上来说也是基础设施及代码工具,通过可读性较强…

Vue原理与高级开发技巧详解

Vue 的底层原理、高级用法、性能优化和生态整合 文章目录Vue 的底层原理、高级用法、性能优化和生态整合一、Vue 双向绑定原理深度剖析1. Vue 2 实现原理(Object.defineProperty)2. Vue 3 实现原理(Proxy)3. v-model 高级用法二、…

axios的封装

axios的封装 在src目录下新建文件夹utils工具类,文件夹里面新建http.js文件,如果项目涉及到多个基地址可以新建http2.js文件。 import axios from axios;/*** 后端*/// 创建axios实例 const http axios.create({// 1.接口基地址baseURL: http://192.168…

MariaDB 数据库管理与web服务器

MariaDB 数据库管理与WEB 服务器 介绍 MariaDB 数据库介绍 **数据库,是一个存放计算机数据的仓库。**这个仓库是按照一定的数据结构来对数据进行组织和存储的,我们可以通过数据库提供的多种方法来管理其中的数据。 数据结构,是指数据的组织形…

分治-归并-912.排序数组-力扣(LeetCode)

一、题目解析1、将数组排升序2、在不使用任何内置函数的情况下解决问题二、算法原理分治-归并合并两个有序数组1、双指针遍历两个合并数组2、将比较后的较小值放到新开数组中3、防止有指针未遍历完&#xff0c;特殊处理4、将nums中的元素还原三、代码示例vector<int> tmp…

网络安全初学者学习心得

看到你对网络安全学习的兴趣&#xff0c;我感到非常振奋&#xff01;这个领域既充满挑战又回报丰厚&#xff0c;作为初学者&#xff0c;理清学习内容和方向确实至关重要。下面我将结合多年的行业观察和指导经验&#xff0c;为你详细拆解网络安全初学者的学习内容并分享一些核心…

防火墙笔记优化版

一、防火墙的核心定义防火墙是一种基于预设安全策略&#xff0c;用于隔离内网与外网、控制网络流量的安全系统&#xff08;可分为软件系统或硬件系统&#xff09;。其核心作用包括&#xff1a;流量隔离&#xff1a;物理或逻辑分隔内网、外网及 DMZ 区域&#xff08;DMZ 为内网与…

vue3前端项目cursor rule

cursor rule是什么&#xff0c;以及怎么定义&#xff0c;看这个文章&#xff1a; cursor中定义cursor rules_cursor rules如何编写-CSDN博客 针对现有一个vue3的前端项目&#xff0c;写了一份cursor rule&#xff0c;可以作为参考&#xff0c;内容如下&#xff08;仅作为参考&…

基于51单片机红外遥控定时开关智能家电插座设计

1. 功能介绍 本设计是一款基于 STC8C52 单片机 的智能家电插座系统&#xff0c;集 红外遥控控制、定时开关控制、自动与手动模式切换、掉电数据保存、液晶显示、蜂鸣器提示 于一体&#xff0c;能够方便用户对家用电器进行精准的定时控制与远程操作。系统广泛适用于家用电器、办…

下一代防火墙组网方案

知识回顾&#xff1a;1.传统防火墙包括包过滤防火墙、应用网关防火墙、状态检测防火墙。2.包过滤防火墙工作在3、4层。3.包过滤防火墙特点&#xff1a;4.应用网关防火墙主要作用&#xff1a;①截取用户初始化连接请求&#xff0c;对用户进行认证&#xff1b;②通过ALG能让多通道…

WEB开发-第二十七天(PHP篇)

DW PHPStorm PhpStudy Navicat Premium DW : HTML&JS&CSS开发 PHPStorm : 专业PHP开发IDE PhpStudy &#xff1a;Apache MYSQL环境 Navicat Premium: 全能数据库管理工 变量覆盖安全&#xff1a; $GLOBALS&#xff1a;这种全局变量用于在PHP脚本中的任意位置访…

Lwip深度阅读-网络架构

LWIP网络协议栈详细介绍 本文的内容基本基于野火的LWIP手册&#xff0c;和LWIP源码撰写。 网络协议栈概述 从图片可以看出&#xff0c;网络协议栈采用分层架构&#xff0c;每一层都有特定的功能和协议。 TCP/IP协议分层模型数据封装过程MAC数据包 我使用wireShark抓包的时候&am…

嵌入式系统学习Day16(C语言中的位运算)

位运算二进制位的运算嵌入式:通过位运算 控制 硬件运算: 运算规则 & 与 一假则假 | 或 一真则真 ~ 非 真假相对 ^ 异或 相同为假 不同为真 << 左移 表示二进制位的移动 >> 右移 eg:int a 0x55; int b 0x33;0101 0101 //0x55 &am…

Endnote下载,导入曼大 harvard_manchester格式

下载endnote 并激活中国农业科技文献与信息服务平台&#xff0c;点击下载 下载harvard_manchester 格式 Harvard Manchester - Referencing guide at the University of Manchester - Subject guides at University of Manchester 双击打开第二步下载的安装包&#xff08;使用…

【Docker进阶实战】从多容器编排到集群部署

Docker进阶实战&#xff1a;从多容器编排到集群部署 当你已经熟悉Docker的基本操作后&#xff0c;面对的下一个挑战往往是&#xff1a;如何管理多个容器的协作&#xff1f;如何实现容器的集群化部署与扩展&#xff1f;如何保证服务的高可用&#xff1f; 一、Docker Compose&…

【Linux文件操作】文件操作系统调用

目录 一、文件创建&#xff08;creat 系统调用&#xff09;​ 1.1 函数原型 1.2 参数说明​ 1.3 返回值​ 1.4 使用示例 二、文件打开&#xff08;open 系统调用&#xff09;​ 2.1 函数原型 2.2 参数说明​ 2.3 返回值​ 2.4 使用示例 三、文件读写&#xff08;read 和 write …