| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- """第六家族(最老正交方案去掉实质):形式 × 阶段 × 动作 × 作用 × 知识类型 → 组合 query,过 query_filter。
- 沿用 query.py 的老轴:形式/作用 取分类树(4级非叶子),阶段=灵感/选题/脚本,动作=构思/策划/组织/
- 撰写/改编/润色(+无动作变体),知识类型=怎么做/有哪些/为什么。query 形如「叙事组织 脚本撰写 趣味互动 有哪些」。
- 只产 query + LLM 筛选,打印看效果。用法:PYTHONPATH=. CK_ENV_FILE=.env python scripts/build_family6.py [n]
- """
- from __future__ import annotations
- import sys
- from acquisition.query import ACTIONS, KTYPE_SUFFIX, STAGES, _nonleaf_d4
- from acquisition.query_filter import filter_queries
- from core.config import Settings
- N = int(sys.argv[1]) if len(sys.argv) > 1 else 24
- def build(n: int) -> list[dict]:
- xs = _nonleaf_d4("形式", 10, under="架构") # 创作手法(架构支)
- zy = _nonleaf_d4("作用", 10) # 作用
- ktypes = list(KTYPE_SUFFIX.items()) # [(what,有哪些),…]
- stage_act = [(s, a) for s in STAGES for a in ACTIONS] + [("", "")] # +「无动作」变体(=老方案的 /)
- rows = []
- for i in range(n):
- f_ = xs[i % len(xs)]
- st, ac = stage_act[i % len(stage_act)]
- zy_ = zy[i % len(zy)]
- kt, suf = ktypes[i % len(ktypes)]
- seg = (st + ac) if ac else "" # 脚本撰写 / 空(动作=/ 时连阶段一起省)
- parts = [f_] + ([seg] if seg else []) + [zy_, suf]
- rows.append({"形式": f_, "阶段": st or "/", "动作": ac or "/", "作用": zy_,
- "知识类型": kt, "query": " ".join(parts)})
- return rows
- def main() -> None:
- settings = Settings.from_env()
- rows = build(N)
- verdicts = filter_queries([r["query"] for r in rows], settings)
- kept = 0
- print(f"第六家族 形式×阶段×动作×作用×知识类型(去实质):{len(rows)} 条\n")
- print(f"{'留/扔':<4} {'query':<34} 轴(形式/阶段/动作/作用) 理由")
- for r, v in zip(rows, verdicts):
- kept += 1 if v["keep"] else 0
- mark = "✓留" if v["keep"] else "✕扔"
- axes = f"{r['形式']}/{r['阶段']}/{r['动作']}/{r['作用']}"
- print(f"{mark:<4} {r['query']:<34} {axes:<22} {v['reason']}")
- print(f"\n保留 {kept} / {len(rows)}(排除 {len(rows) - kept})")
- if __name__ == "__main__":
- main()
|