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

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


实现思路

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

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

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


代码详解

python 复制代码
import ollama
import re

def 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_thinking

You 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_content

renamed_topics = {}

for entry in llm_input:
    name = generate_topic_name(entry["topic_keywords"], entry["sample_abstracts"][:5])
    renamed_topics[entry["topic_num"]] = name
    print(f"Topic {entry['topic_num']}: {name}")
相关推荐
深念Y1 小时前
大模型API缓存的底层原理:从显存到网关
缓存·ai·llm·api·硬件·显存·kvcache
java_logo2 小时前
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
linux·docker·容器·ollama·open-webui·open-webui部署·open-webui教程
冬奇Lab2 小时前
一天一个开源项目(第83篇):karpathy/autoresearch —— 开启 AI“自演化”实验室时代
人工智能·开源·llm
CoderJia程序员甲2 小时前
GitHub 热榜项目 - 日榜(2026-04-25)
ai·大模型·llm·产品运营·github·ai教程
Irissgwe2 小时前
LangChain之聊天模型核心能力
人工智能·langchain·大模型·llm
uncle_ll14 小时前
LangChain基础学习笔记
笔记·学习·langchain·llm·rag
Irissgwe21 小时前
LangChain 与 LangGraph 介绍(一)
人工智能·langchain·llm·langgraph
薛定谔的猫3691 天前
深入浅出 MCP (Model Context Protocol):开启 AI Agent 的标准化连接时代
ai·llm·agent·技术分享·mcp
litble1 天前
如何速成LLM以伪装成一个AI研究者(2)——Pre-LN,KV-Cache优化,MoE
人工智能·大模型·llm·moe·kv-cache·pre-ln
hyunbar7771 天前
DeepSeek-V4预览版到底强在哪?推理性能+Agent能力全方位拆解
llm