当前位置: 首页 > news >正文

使用LLM(Ollama部署)为Bertopic确定的主题命名

使用本地部署的 Ollama + Qwen3:14b 模型,结合 BERTopic 输出的关键词与样本摘要,自动生成 3–4 个词的主题名称。整个流程自动化、可复用,适用于学术论文、新闻聚类、客户反馈分析等多种场景。


实现思路

我们设计了一个简单的 Python 函数 generate_topic_name(),它接收两个参数:

  • topic_keywords:由 BERTopic 生成的当前主题关键词列表;
  • sample_abstracts:属于该主题的若干样本摘要(用于提供上下文)。

函数构造一个清晰的提示词(prompt),调用本地 Ollama 模型进行推理,并对输出结果进行后处理,移除模型可能生成的 <think>...</think> 思考标签(常见于 Qwen 系列模型),最终返回干净的主题名称。


代码详解

import ollama
import redef remove_thinking_tags(text):"""移除所有 <think>...<think> 标签及其内部内容(支持跨行)"""pattern = r'<think>.*?</think>'cleaned = re.sub(pattern, '', text, flags=re.DOTALL)return cleaned.strip()def generate_topic_name(topic_keywords, sample_abstracts):prompt = f""" /no_thinkingYou are a helpful assistant for naming topics from research paper abstracts.
Given the following keywords generated using BERTopic and sample abstracts, generate a short and meaningful topic name.The topic name should be very short, maximum of 3 to 4 words — not a sentence or description.Keywords: {', '.join(topic_keywords)}Abstracts:
{chr(10).join(f"- {abs}" for abs in sample_abstracts)}Give a concise 3–4 word topic name:"""response = ollama.chat(model='Qwen3:14b',messages=[{'role': 'user', 'content': prompt}],options={'temperature': 0.7,'num_predict': 3000  # 类似 max_tokens})raw_content = response['message']['content'].strip()# 清理 thinking 标签内容cleaned_content = remove_thinking_tags(raw_content)return cleaned_contentrenamed_topics = {}for entry in llm_input:name = generate_topic_name(entry["topic_keywords"], entry["sample_abstracts"][:5])renamed_topics[entry["topic_num"]] = nameprint(f"Topic {entry['topic_num']}: {name}")

文章转载自:

http://koSxx4Yk.sxmbk.cn
http://6GUAt5Xb.sxmbk.cn
http://alxbCB8D.sxmbk.cn
http://HcoNbVzp.sxmbk.cn
http://N17wCDU5.sxmbk.cn
http://Ot58ne7F.sxmbk.cn
http://zveDJMZE.sxmbk.cn
http://TzU9ZKxs.sxmbk.cn
http://6q47KdvC.sxmbk.cn
http://Ki2bDUjp.sxmbk.cn
http://EVO9KAbz.sxmbk.cn
http://dUuTQMpm.sxmbk.cn
http://o3zDiagK.sxmbk.cn
http://cDx0t2r2.sxmbk.cn
http://b13aDPhD.sxmbk.cn
http://355QqAFw.sxmbk.cn
http://gyUvH5AM.sxmbk.cn
http://mxCEHP2a.sxmbk.cn
http://bIrAkM87.sxmbk.cn
http://3kUtiF7R.sxmbk.cn
http://NyrhvDMa.sxmbk.cn
http://AgLRPwoV.sxmbk.cn
http://ZysJOj6z.sxmbk.cn
http://bJ9KtCpb.sxmbk.cn
http://yK8qNSlb.sxmbk.cn
http://oEOE9FPW.sxmbk.cn
http://rEpvkFwJ.sxmbk.cn
http://6vq5RI0t.sxmbk.cn
http://f9nwfoAi.sxmbk.cn
http://rA5Z45lj.sxmbk.cn
http://www.dtcms.com/a/374936.html

相关文章:

  • C++容器:list
  • PAT 1178 File Path
  • ESP32开发:ubuntu22.04 下esp-idf开发环境搭建
  • JWT全面理解
  • C++:类和对象
  • Linux(3)|入门的开始:Linux基本指令(3)
  • REST接口幂等设计深度解析
  • 在Word和WPS文字中便捷切换英文段落大小写
  • 【华为OD】寻找连续区间
  • 渗透测试信息收集步骤与工具详解
  • #C语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!
  • 乐吾乐大屏可视化组态软件【SQL数据源】
  • 打工人日报#20250909
  • PyTorch中的flatten操作详解:从start_dim=1说起
  • 上网行为审计软件应该如何选择?适配图书馆管理的上网行为审计软件推荐
  • 计算机网络第五章(1)——传输层(概念 + UDP)
  • AI 时代,我们是否应该重温极限编程?
  • Protobuf 新版“调试表示为什么有链接?为什么会打码?我该怎么改代码?
  • php 使用html 生成pdf word wkhtmltopdf 系列1
  • vcsa6.0 升级6.7
  • python中的深拷贝与浅拷贝详细介绍
  • 【Java】Hibernate二级缓存下
  • R 包的管理涉及两个概念:二进制包的下载缓存位置和包的最终安装位置。你看到的临时路径只是包的下载缓存,它并不会长期占用C盘空间
  • Android 项目:画图白板APP开发(四)——笔锋(单 Path)
  • Nginx反向代理与负载均衡部署
  • 微算法科技(NASDAQ: MLGO)采用量子相位估计(QPE)方法,增强量子神经网络训练
  • Vue: Class 与 Style 绑定
  • 在 Cursor IDE 中配置 SQLTools 连接 MySQL 数据库指南(Windows 11)
  • SKYTRAC-无人机、无人机系统和城市空中交通卫星通信 – BVLOS 和 C2 卫星通信终端和任务服务器
  • 如何将 iPhone 备份到电脑/PC 的前 5 种方法