|
|
@@ -16,6 +16,8 @@ import json
|
|
|
import random
|
|
|
from pathlib import Path
|
|
|
|
|
|
+from acquisition.query import ACTIONS, _nonleaf_d4 # 第六家族(老正交)用的动作轴 + 4级非叶子取节点
|
|
|
+from acquisition.query import STAGES as OLD_STAGES # 老的裸阶段 灵感/选题/脚本
|
|
|
from acquisition.query_filter import filter_queries # 共享筛选器(query_filter.txt)
|
|
|
from core.config import Settings
|
|
|
|
|
|
@@ -102,6 +104,21 @@ def main():
|
|
|
def xing(i):
|
|
|
return XING_BATCH[i % len(XING_BATCH)]
|
|
|
|
|
|
+ # 第六家族(最老正交方案·去实质):形式 × 阶段 × 动作 × 作用 × 知识类型。
|
|
|
+ # 形式/作用 取分类树4级非叶子,阶段=灵感/选题/脚本,动作=ACTIONS(+无动作变体),query 形如「叙事组织 脚本撰写 趣味互动 有哪些」
|
|
|
+ F6_FORMS = _nonleaf_d4("形式", 10, under="架构")
|
|
|
+ F6_ZY = _nonleaf_d4("作用", 10)
|
|
|
+ F6_STAGE_ACT = [(s, a) for s in OLD_STAGES for a in ACTIONS] + [("", "")] # +「无动作」=老方案的 /
|
|
|
+
|
|
|
+ def gen6(i):
|
|
|
+ f_ = F6_FORMS[i % len(F6_FORMS)]
|
|
|
+ st, ac = F6_STAGE_ACT[i % len(F6_STAGE_ACT)]
|
|
|
+ zy_ = F6_ZY[i % len(F6_ZY)]
|
|
|
+ suf = KTYPE[i % len(KTYPE)]
|
|
|
+ seg = (st + ac) if ac else "" # 脚本撰写 / 空(动作=/ 时连阶段一起省)
|
|
|
+ q = " ".join([f_] + ([seg] if seg else []) + [zy_, suf])
|
|
|
+ return {"parts": {"形式": f_, "阶段": st or "/", "动作": ac or "/", "作用": zy_, "知识类型": suf}, "query": q}
|
|
|
+
|
|
|
# 每家族:生成器 + 用到的轴(给前端标列)
|
|
|
# 业务阶段=脊柱,每族必带;模态+知识类型固定收尾;前面配 实质/形式/目的 之一或组合
|
|
|
families = [
|
|
|
@@ -115,18 +132,23 @@ def main():
|
|
|
"gen": lambda i: {"parts": {"目的": pick(POOL), "业务阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
{"key": "f5", "name": "纯业务阶段", "axes": ["模态", "业务阶段", "知识类型"],
|
|
|
"gen": lambda i: {"parts": {"业务阶段": pick(INTENT), "模态": pick(MODALITY), "知识类型": pick(KTYPE)}}},
|
|
|
+ {"key": "f6", "name": "形式 × 阶段 × 动作 × 作用(老正交·去实质)",
|
|
|
+ "axes": ["形式", "阶段", "动作", "作用", "知识类型"], "gen": gen6},
|
|
|
]
|
|
|
# 各部件按固定顺序拼成原串(内容维度在前,模态贴题材后,业务阶段+知识类型收尾)
|
|
|
order = ["实质", "形式", "目的", "模态", "业务阶段", "知识类型"]
|
|
|
|
|
|
# 业务阶段值存「分组结构」(STAGE_INTENT),前端按 灵感/选题/脚本 分组+缩进展示;其余轴是扁平数组
|
|
|
- out = {"axis_values": {"实质": SHI, "形式": XING, "目的池": POOL, "业务阶段": STAGE_INTENT, "模态": MODALITY, "知识类型": KTYPE},
|
|
|
+ out = {"axis_values": {"实质": SHI, "形式": XING, "目的池": POOL, "业务阶段": STAGE_INTENT,
|
|
|
+ "模态": MODALITY, "知识类型": KTYPE,
|
|
|
+ "阶段": OLD_STAGES, "动作": ACTIONS, "作用": F6_ZY}, # 第六家族的老轴
|
|
|
"families": []}
|
|
|
for fam in families:
|
|
|
seen, items = set(), []
|
|
|
while len(items) < PER and len(seen) < PER * 40:
|
|
|
- parts = fam["gen"](len(items))["parts"] # 序号轮转实质/形式批
|
|
|
- q = " ".join(parts[k] for k in order if k in parts)
|
|
|
+ g = fam["gen"](len(items)) # 序号轮转实质/形式批
|
|
|
+ parts = g["parts"]
|
|
|
+ q = g.get("query") or " ".join(parts[k] for k in order if k in parts) # f6 自带 query 串
|
|
|
if q in seen:
|
|
|
continue
|
|
|
seen.add(q)
|