背景
最近搭建了一个导航站点,主体框架已完成。由于第一版数据来源于第三方,仅包含基础信息,缺乏分类标签。目前的快捷筛选完全依赖关键字匹配检索,这种方式过于粗糙且准确性不足。
针对导航站点数据分类需求,本文介绍了使用本地 Llama3 大模型配合 Ollama 进行批量数据自动标记的方案。通过对比人工标记与云端 API 方案,选择本地部署以降低门槛与成本。文章详细阐述了 Ollama 的安装配置、API 接口调用方式以及提示词工程的关键调试过程,特别是针对 AI 类网站易被误分类问题的优化策略。提供了完整的 Python 批量处理代码示例,实现了从数据读取、API 请求到结果解析的全流程。实测显示该方法在 CPU 占用较低的情况下能达到约 80% 的分类准确率,适合中小规模数据的自动化清洗场景。

最近搭建了一个导航站点,主体框架已完成。由于第一版数据来源于第三方,仅包含基础信息,缺乏分类标签。目前的快捷筛选完全依赖关键字匹配检索,这种方式过于粗糙且准确性不足。
随着数据量增加,基于关键词的筛选越来越不准确。有时站点信息中不包含特定关键字,但实际分类一致。为了更精准地按类型区分站点,考虑了以下方案:
最终选择了第三种方案,利用本地部署的大模型进行批量数据分类。
使用 Ollama 可以便捷地运行本地大模型。Ollama 支持多种常见模型,安装后通过命令行即可启动。
下载并安装 Ollama 后,可以通过以下命令运行指定模型(以 llama3 为例):
ollama run llama3
默认情况下,Ollama 服务会监听在 11434 端口。如果未启动,可执行以下命令确保服务运行:
ollama serve
虽然命令行支持对话,但面对数百条数据的批量处理需求,必须通过 API 自动化执行。
参考 Ollama 官方文档,主要涉及 /api/generate 端点。该端点适用于文本生成任务,无需维护对话记忆。
需要处理的数据结构通常包含 URL、标题和描述信息。请求体需符合 Ollama API 规范。
提示词工程是核心环节。经过多轮迭代,确定了最终的 Prompt 策略。主要诉求是:根据给定的网站信息,输出限定范围内的分类标签。
以下是一个完整的 Python 脚本示例,展示了如何批量调用 Ollama API 进行分类:
import requests
import json
import time
OLLAMA_API_URL = "http://localhost:11434/api/generate"
MODEL_NAME = "llama3"
# 模拟数据源
sites_data = [
{"url": "https://example.com", "desc": "一个关于 AI 编程助手的工具"},
{"url": "https://example2.com", "desc": "低代码开发平台"},
]
# 优化后的系统提示词
SYSTEM_PROMPT = """
你是一个专业的网站分类助手。请根据提供的网站描述,将其归类到以下类别之一:
Code&IT, Design, Productivity, Education, Entertainment, Other.
注意:所有输入网站均与 AI 相关,不要简单地归类为 Code&IT 或 AI,除非它明显是代码助手、低代码或建站工具。请结合人工智能特性给出更具体的分类。
输出格式必须为 JSON 数组,包含 url 和 category 字段。
"""
def classify_site(site):
payload = {
"model": MODEL_NAME,
"prompt": f"网站描述:{site['desc']}\n请给出分类:",
"system": SYSTEM_PROMPT,
"stream": False,
"format": "json"
}
try:
response = requests.post(OLLAMA_API_URL, json=payload)
if response.status_code == 200:
result = response.json()
# 解析返回的 JSON 字符串
return json.loads(result.get('response', '{}'))
else:
print(f"Error: {response.status_code}")
return None
except Exception as e:
print(f"Exception: {e}")
return None
# 批量处理
results = []
for site in sites_data:
classification = classify_site(site)
if classification:
results.append({"url": site['url'], "category": classification})
time.sleep(0.5) # 避免过快请求
print(json.dumps(results, ensure_ascii=False))
在调试过程中,曾遇到大部分站点被错误分类为 Code&IT 的情况。这是因为输入数据多为 AI 相关,导致模型产生偏差。通过在 System Prompt 中明确限制'不要简单添加 Code&IT 或 AI 分类',有效解决了这一问题。
本地 CPU 占用率约 20%,处理速度约为每秒一条数据。对于 800+ 条数据的处理,总耗时可控。
综合评估,分类准确率约为 80%。剩余误差可通过后续微调或二次人工修正解决。
利用本地大模型(Llama3 + Ollama)进行数据分类标记,是一种低成本、高隐私且可扩展的方案。相比云端 API,它避免了数据泄露风险;相比人工标注,效率大幅提升。对于拥有大量非结构化数据需要进行初步清洗的场景,此方法具有较高的实用价值。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online