一、提示词的核心逻辑
AI编程的本质是将需求转化为AI可理解的指令。一个好的提示词应遵循IPO模型:
Input (输入) → Process (处理) → Output (输出)
基础示例:
读取data.xlsx的"评论"列 → 统计词频Top20 → 保存到result.xlsx
完整示例:
读取D:\project\reviews.xlsx的"用户评论"列,
使用jieba分词统计Top20高频词(过滤单字和停用词),
结果保存到D:\output\wordfreq.xlsx
区别在于:完整版明确了路径、工具、参数和输出位置。
二、路径提示词的三种场景
场景1:单文件处理
基础格式:
文件:{绝对路径}
目标:{字段名}
实例:
# 提示词
分析D:\data\用户反馈_20251201.xlsx的"评价内容"列
# AI生成
df = pd.read_excel(r'D:\data\用户反馈_20251201.xlsx')
text = df['评价内容']
关键点:
- 使用完整路径而非相对路径
- 中文路径需说明编码问题
- 字段名用引号标注
场景2:批量文件
提示词模板:
处理{文件夹}下所有{格式}文件,
每个文件分析"{字段}"列,
结果按{命名规则}保存
实例:
# 提示词
批量处理D:\reports\目录下所有xlsx文件,
分析"反馈意见"列,结果保存为"原文件名_分析.xlsx"
# AI生成
from pathlib import Path
for file in Path(r'D:\reports').glob('*.xlsx'):
df = pd.read_excel(file)
result = analyze(df['反馈意见'])
output = file.parent / f"{file.stem}_分析.xlsx"
result.to_excel(output)
场景3:多资源依赖
提示词结构:
主文件:{路径}
词典文件:{路径}
模板文件:{路径}
实例:
分析D:\data\comments.xlsx的"内容"列,
使用词典D:\dict\custom.txt,
mask图片D:\img\shape.png
三、字段类型的通用表达
文本字段
核心原则:用"列名"+数据特征描述
| 场景 | 提示词 | 说明 |
|---|---|---|
| 短文本 | "商品名称"列(10-30字) | 明确长度范围 |
| 长文本 | "用户评论"列(可能含表情) | 说明特殊字符 |
| 结构化文本 | "参数说明"列(键值对格式) | 说明内部结构 |
通用模板:
对"{列名}"列进行分析,该列为{长度/格式/特征}
数值字段
明确三要素:字段名+范围+分析方法
# 单列分析
分析"价格"列(范围100-5000),绘制分布直方图
# 多列对比
对比"评分A"、"评分B"、"评分C"三列(1-5分),绘制箱线图
分类字段
分组统计模板:
按"{分组列}"分组,计算每组的{统计指标}
实例:
按"门店"分组,统计各店好评率(评分≥4的占比)
四、分析方法的标准表达
情感分析
必备要素:算法+阈值+输出
# 基础版
使用SnowNLP对"评论"列进行情感分析
# 完整版
使用SnowNLP情感分析,
阈值:>0.6为正面,<0.4为负面,
添加"情感倾向"和"情感得分"两列
生成代码:
from snownlp import SnowNLP
def sentiment(text):
score = SnowNLP(str(text)).sentiments
label = '正面' if score > 0.6 else ('负面' if score < 0.4 else '中性')
return label, score
df[['情感倾向','情感得分']] = df['评论'].apply(
lambda x: pd.Series(sentiment(x))
)
词频分析
配置要点:分词工具+词典+停用词+统计数
# 标准模板
使用{分词工具}进行分词,
加载词典{路径},
停用词={系统词表/自定义列表},
统计Top{N},词长≥{M}
实例:
使用jieba分词,
加载D:\dict\domain.txt,
停用词=系统词表+["的","了"],
统计Top30,词长≥2
关键代码:
import jieba
jieba.load_userdict(r'D:\dict\domain.txt')
stopwords = set(open('stopwords.txt').read().split())
stopwords.update(['的','了'])
def word_freq(texts, top_n=30):
words = []
for text in texts:
words.extend([w for w in jieba.cut(text)
if len(w)>=2 and w not in stopwords])
return pd.Series(words).value_counts().head(top_n)
网络分析
核心参数:节点来源+边规则+布局
构建共现网络:
节点:Top{N}高频词
边:共现窗口={M}(同段落/同句)
权重:共现频次
布局:{spring/circular/kamada_kawai}
生成逻辑:
import networkx as nx
def build_network(texts, top_words, window=5):
cooccur = {}
for text in texts:
words = [w for w in jieba.cut(text) if w in top_words]
for i in range(len(words)-1):
for j in range(i+1, min(i+window, len(words))):
pair = tuple(sorted([words[i], words[j]]))
cooccur[pair] = cooccur.get(pair, 0) + 1
G = nx.Graph()
for (w1, w2), weight in cooccur.items():
G.add_edge(w1, w2, weight=weight)
return G
五、可视化的精确控制
词云图配置
避免模糊描述,使用精确参数:
| 错误 | 正确 |
|---|---|
| "温暖的颜色" | 色值:#E8977D, #D97662 |
| "好看的形状" | mask:D:\img\cloud.png |
| "合适的大小" | 尺寸:800x600px,最大100词 |
标准模板:
绘制词云:
mask:{图片路径}
配色:{色值列表}
字体:{字体名}
参数:最大{N}词,背景{颜色},DPI={分辨率}
实例:
词云配置:
mask:D:\img\shape.png
配色:#F4A896, #E8977D, #D97662
字体:微软雅黑
参数:最大100词,背景白色,DPI=300
统计图表
箱线图示例:
绘制箱线图:
字段:["评分1","评分2","评分3"]
配色:#E8977D(与词云一致)
标注:显示异常值,添加均值线
布局:1行3列子图
生成代码:
fig, axes = plt.subplots(1, 3, figsize=(15,5))
cols = ['评分1','评分2','评分3']
for ax, col in zip(axes, cols):
bp = ax.boxplot(df[col], patch_artist=True)
bp['boxes'][0].set_facecolor('#E8977D')
ax.axhline(df[col].mean(), color='green',
linestyle='--', label='均值')
ax.set_title(col)
ax.legend()
六、参数化与代码组织
要求可调参数
在提示词末尾添加:
在代码开头定义CONFIG字典,包含所有可调参数并注释说明
生成效果:
# ========== 配置参数 ==========
CONFIG = {
# 情感分析
'sentiment_threshold_pos': 0.6, # 正面阈值
'sentiment_threshold_neg': 0.4, # 负面阈值
# 词频统计
'top_n_words': 30, # Top词数
'min_word_len': 2, # 最小词长
# 词云图
'wordcloud_max': 100, # 最大显示词数
'wordcloud_colors': ['#E8977D','#D97662','#C95447'],
# 网络分析
'network_window': 5, # 共现窗口
'network_nodes': 50, # 网络节点数
# 输出
'output_dpi': 300 # 图片分辨率
}
模块化函数
要求:
代码按功能拆分为独立函数:
- load_data(): 数据加载
- preprocess(): 预处理
- analyze(): 核心分析
- visualize(): 可视化
- main(): 主流程
七、通用提示词模板
标准模板结构
【数据输入】
文件:{绝对路径}
字段:"{列名}" ({数据特征})
【分析任务】
1. {任务名}
- 方法:{算法名}
- 参数:{关键参数=默认值}
- 输出:{结果形式}
【依赖资源】
- 词典:{路径}
- 停用词:{路径或列表}
- 素材:{路径}
【可视化】
- {图表类型}:配色{色值},尺寸{宽x高},DPI{分辨率}
【输出规范】
- 目录:{路径}
- 命名:{规则}
- 格式:{文件类型}
【代码要求】
- CONFIG字典管理参数
- 函数化拆分模块
- 异常处理和日志
填充示例
【数据输入】
文件:D:\project\reviews_20251201.xlsx
字段:"用户评论" (50-500字用户反馈)
【分析任务】
1. 情感分析
- 方法:SnowNLP
- 参数:正面阈值=0.6,负面阈值=0.4
- 输出:添加"情感"和"得分"列
2. 词频统计
- 方法:jieba分词
- 参数:Top30,词长≥2
- 输出:正负面分别统计
【依赖资源】
- 词典:D:\dict\custom.txt
- 停用词:系统词表+["的","了","在"]
- mask:D:\img\cloud.png
【可视化】
- 词云图:配色#E8977D/#D97662,尺寸800x600,DPI=300
- 箱线图:显示异常值和均值线
【输出规范】
- 目录:D:\output\
- 命名:原文件名_分析结果_时间戳
- 格式:xlsx(数据)+png(图表)
【代码要求】
- CONFIG字典管理所有参数
- 拆分为5-8个独立函数
- 文件不存在时友好提示
八、常见问题速查
| 问题 | 错误示例 | 正确示例 |
|---|---|---|
| 路径不完整 | "分析data.xlsx" | "分析D:\project\data.xlsx" |
| 字段不明确 | "分析评论" | "分析'用户评论'列" |
| 方法不清晰 | "做情感分析" | "使用SnowNLP情感分析" |
| 配色模糊 | "用暖色调" | "配色:#E8977D, #D97662" |
| 缺少参数 | "统计词频" | "统计Top30词频,词长≥2" |
九、提示词质量检查表
写完提示词后对照检查:
必备项:
- 文件路径是绝对路径
- 字段名加引号且准确
- 算法/工具名称明确
- 输出路径和命名清晰
优化项:
- 参数有默认值说明
- 配色给出具体色值
- 要求参数化配置
- 要求函数化组织
- 说明异常处理
十、进阶技巧
1. 分步骤对话
复杂任务拆分为多轮:
第一轮:先生成数据读取和预处理部分
第二轮:基于预处理结果,添加情感分析
第三轮:补充可视化代码
2. 参考示例
提供类似代码片段:
情感分析参考这个逻辑:
[粘贴示例代码]
但改用SnowNLP并添加阈值判断
3. 迭代优化
优化上面的代码:
1. 将硬编码路径改为CONFIG配置
2. 添加文件存在性检查
3. 输出改为多sheet的Excel
总结
好的AI编程提示词=精确的IPO描述 +标准化表达 +参数化设计
核心要点:
- 路径要全:使用绝对路径
- 字段要准:列名加引号
- 方法要明:指定算法名
- 参数要清:给出默认值
- 输出要细:格式和位置
实践建议:
- 建立自己的提示词模板库
- 每次成功的提示词都保存下来
- 从简单开始,逐步添加细节
- 用生成的代码反向优化提示词