|
|
@@ -3,8 +3,10 @@
|
|
|
不真实搜,只产 query 供前端看。轴严格取分类树的"创作支":
|
|
|
实质 = 实质树·理念支(排除表象) 形式 = 形式树·架构支(排除呈现)
|
|
|
目的池 = 作用树 + 感受树 + 意图树 全部合一(随机取)
|
|
|
- 创作阶段 = 灵感/选题/脚本(不补) 知识类型 = 怎么做/有哪些/为什么
|
|
|
-5 家族:① 实质×形式 ② 实质×目的池 ③ 纯形式 ④ 形式×目的池 ⑤ 创作阶段×实质,各 20 条。
|
|
|
+ 阶段意图 = 灵感/选题/脚本 展开成创作者真会搜的词(选题/开头/钩子/标题/封面/文案…)——脊柱,每族必带
|
|
|
+ 模态 = 视频/图片 知识类型 = 怎么做/有哪些/为什么
|
|
|
+脊柱(每条都带):… 阶段意图 + 模态 + 知识类型;前面配 实质/形式/目的 之一或组合。
|
|
|
+5 家族:① 实质×阶段 ② 形式×阶段 ③ 实质×形式×阶段 ④ 目的池×阶段 ⑤ 纯阶段,各 20 条。
|
|
|
每条原串过 query_filter.txt(keep/排除),存 keep+reason 供前端展示。
|
|
|
用法:PYTHONPATH=. CK_ENV_FILE=.env python scripts/build_creation_demo.py
|
|
|
"""
|
|
|
@@ -23,9 +25,16 @@ TREES = ROOT / "scope_trees" / "trees_index.json"
|
|
|
FILTER_PROMPT = ROOT / "acquisition" / "query_filter.txt" # 筛选词在 acquisition/
|
|
|
OUT = ROOT / "data" / "queries" / "creation_demo.json"
|
|
|
PER = 20
|
|
|
-STAGES = ["灵感", "选题", "脚本"]
|
|
|
KTYPE = ["怎么做", "有哪些", "为什么"]
|
|
|
-MODALITY = ["视频", "图文"] # 被创作内容的形态(与教学帖本身格式无关),正交进所有家族
|
|
|
+MODALITY = ["视频", "图片"] # 被创作内容的形态(与教学帖本身格式无关),正交进所有家族
|
|
|
+# 创作阶段意图轴(脊柱):灵感/选题/脚本 展开成创作者真会搜的词(query构造.md)。真实数据里
|
|
|
+# "脚本"0次、但 开头/钩子/标题/封面/选题 各几十次——故用展开词,不用三个干阶段词。
|
|
|
+STAGE_INTENT = {
|
|
|
+ "灵感": ["找素材", "内容方向", "案例拆解", "灵感"],
|
|
|
+ "选题": ["选题", "爆款选题", "选题方向"],
|
|
|
+ "脚本": ["脚本", "文案", "开头", "钩子", "结构", "标题", "封面", "结尾"],
|
|
|
+}
|
|
|
+INTENT = [w for ws in STAGE_INTENT.values() for w in ws] # 扁平成一个池,随机取
|
|
|
|
|
|
|
|
|
def _segs(p):
|
|
|
@@ -100,28 +109,29 @@ def main():
|
|
|
SHI = _nonleaf(idx, "实质", depths=(3, 4), under="理念") # 类目层,非元素
|
|
|
XING = _nonleaf(idx, "形式", depths=(3, 4), under="架构") # 类目层,非元素
|
|
|
POOL = _leaves(idx, "作用") + _leaves(idx, "感受") + _leaves(idx, "意图")
|
|
|
- print(f"实质 {len(SHI)} / 形式 {len(XING)} / 目的池 {len(POOL)} / 阶段 {len(STAGES)}")
|
|
|
+ print(f"实质 {len(SHI)} / 形式 {len(XING)} / 目的池 {len(POOL)} / 阶段意图 {len(INTENT)}")
|
|
|
|
|
|
def pick(seq):
|
|
|
return rng.choice(seq)
|
|
|
|
|
|
# 每家族:生成器 + 用到的轴(给前端标列)
|
|
|
+ # 阶段意图=脊柱,每族必带;模态+知识类型固定收尾;前面配 实质/形式/目的 之一或组合
|
|
|
families = [
|
|
|
- {"key": "f1", "name": "实质 × 形式", "axes": ["实质", "模态", "形式", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"实质": pick(SHI), "模态": pick(MODALITY), "形式": pick(XING), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f2", "name": "实质 × (作用/感受/意图)", "axes": ["实质", "模态", "作用/感受/意图", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"实质": pick(SHI), "模态": pick(MODALITY), "目的": pick(POOL), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f3", "name": "纯形式", "axes": ["模态", "形式", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"模态": pick(MODALITY), "形式": pick(XING), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f4", "name": "形式 × (作用/感受/意图)", "axes": ["模态", "形式", "作用/感受/意图", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"模态": pick(MODALITY), "形式": pick(XING), "目的": pick(POOL), "知识类型": pick(KTYPE)}}},
|
|
|
- {"key": "f5", "name": "创作阶段 × 实质", "axes": ["实质", "模态", "创作阶段", "知识类型"],
|
|
|
- "gen": lambda: {"parts": {"实质": pick(SHI), "模态": pick(MODALITY), "创作阶段": pick(STAGES), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f1", "name": "实质 × 阶段意图", "axes": ["实质", "阶段意图", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"实质": pick(SHI), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f2", "name": "形式 × 阶段意图", "axes": ["形式", "阶段意图", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"形式": pick(XING), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f3", "name": "实质 × 形式 × 阶段意图", "axes": ["实质", "形式", "阶段意图", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"实质": pick(SHI), "形式": pick(XING), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f4", "name": "(作用/感受/意图) × 阶段意图", "axes": ["作用/感受/意图", "阶段意图", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"目的": pick(POOL), "阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f5", "name": "纯阶段意图", "axes": ["阶段意图", "模态", "知识类型"],
|
|
|
+ "gen": lambda: {"parts": {"阶段意图": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
]
|
|
|
- # 各部件按固定顺序拼成原串(模态紧跟实质、在形式/目的之前)
|
|
|
- order = ["实质", "模态", "形式", "目的", "创作阶段", "知识类型"]
|
|
|
+ # 各部件按固定顺序拼成原串(内容维度在前,阶段意图+模态+知识类型固定收尾)
|
|
|
+ order = ["实质", "形式", "目的", "阶段意图", "模态", "知识类型"]
|
|
|
|
|
|
- out = {"axis_values": {"实质": SHI, "模态": MODALITY, "形式": XING, "目的池": POOL, "创作阶段": STAGES, "知识类型": KTYPE},
|
|
|
+ out = {"axis_values": {"实质": SHI, "形式": XING, "目的池": POOL, "阶段意图": INTENT, "模态": MODALITY, "知识类型": KTYPE},
|
|
|
"families": []}
|
|
|
for fam in families:
|
|
|
seen, items = set(), []
|