From 872874b41eb4c51f8571abc2d2bc55504440e341 Mon Sep 17 00:00:00 2001 From: hub-gif <2487812171@qq.com> Date: Thu, 16 Apr 2026 15:54:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(pipeline):=20=E6=8E=A2=E9=92=88=20LLM=20?= =?UTF-8?q?=E7=A6=81=E6=AD=A2=E9=80=90=E6=9D=A1=E7=B2=98=E8=B4=B4=E6=91=98?= =?UTF-8?q?=E5=BD=95=E5=B9=B6=E6=94=B6=E7=B4=A7=E4=B8=8A=E4=B8=8B=E6=96=87?= =?UTF-8?q?=E6=9D=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- .../pipeline/demos/chapter8_text_mining_probe.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/pipeline/demos/chapter8_text_mining_probe.py b/backend/pipeline/demos/chapter8_text_mining_probe.py index 1daf3f1..492b03a 100644 --- a/backend/pipeline/demos/chapter8_text_mining_probe.py +++ b/backend/pipeline/demos/chapter8_text_mining_probe.py @@ -99,10 +99,10 @@ PROBE_TEXT_MINING_SYSTEM = """你是用户研究与文本挖掘方向的助手 **任务**:对 ``groups`` 中**每一项**输出对应 Markdown(**顺序与输入一致**): - 对 ``probe_status == "ok"``:以 ``#### `` + 与该条 ``group`` 字段**完全一致**的细类名作为小节标题(勿用 ``##`` 一级标题);每段约 **100~260 字**。 -- 内容须包含:①用 **1~2 句**概括该细类评论**主要讨论焦点**(综合词频与 TF-IDF,**不要罗列具体数字**);② **1~2 句**说明共现词对**暗示**哪些维度常一起出现(**非因果**);③若 ``lda.topics`` 非空,**1~2 句**说明主题粗分侧重点,并**明确** LDA 无监督、**不**与矩阵细类一一对应;④至少 **一句**与 ``sample_text_snippets`` 或 ``focus_hit_lines`` 中的**原文信息**呼应(可保留 ``【细类…店铺…】`` 前缀);若无可用摘录则写明。 +- 内容须包含:①用 **1~2 句**概括该细类评论**主要讨论焦点**(综合词频与 TF-IDF,**不要罗列具体数字**);② **1~2 句**说明共现词对**暗示**哪些维度常一起出现(**非因果**);③若 ``lda.topics`` 非空,**1~2 句**说明主题粗分侧重点,并**明确** LDA 无监督、**不**与矩阵细类一一对应;④用 **1~2 句**体现 ``sample_text_snippets`` / ``focus_hit_lines`` 中的**用户语气与关切**(以**转述**为主);若必须引用原文,**全小节合计**仅 **一处**极短引号内容(**≤40 字**,**不要**输出 ``【细类…SKU…店铺…】`` 等长前缀);若无可用摘录则写明。 - 对 ``probe_status == "skipped"``:该小节仅 **一句**说明原因。 -**禁止**:编造数据中未出现的品牌、价格、医学功效或疗效承诺;不要把 ``keyword`` 监测词写进「用户原话」;不要输出 Markdown 表格;不要声称本段与「正式报告 §8 末」完全同源——本任务为**探针解读**。 +**禁止**:编造数据中未出现的品牌、价格、医学功效或疗效承诺;不要把 ``keyword`` 监测词写进「用户原话」;不要输出 Markdown 表格;不要声称本段与「正式报告 §8 末」完全同源——本任务为**探针解读**。**禁止**把输入里的 ``sample_text_snippets`` / ``focus_hit_lines`` **逐条罗列**、**多条整段复制**到输出(那不是归纳,是重复贴评论)。 全文末可另起一段 **「使用注意」**(简短):点明开放词表统计与人工阅读差异、LDA 局限、小样本细类不可靠。 @@ -404,7 +404,8 @@ def _truncate_probe_payload(payload: dict[str, Any]) -> dict[str, Any]: g2 = dict(g) sn = g2.get("sample_text_snippets") if isinstance(sn, list): - g2["sample_text_snippets"] = [str(x)[:260] for x in sn[:12]] + # 条数略减,降低模型「照抄罗列」倾向;仍以转述为主见系统提示 + g2["sample_text_snippets"] = [str(x)[:200] for x in sn[:6]] groups.append(g2) out["groups"] = groups return out @@ -444,10 +445,10 @@ def _merge_snippets_from_comment_groups( row["comment_flat_rows"] = src.get("comment_flat_rows") fh = src.get("focus_hit_lines") if isinstance(fh, list): - row["focus_hit_lines"] = [str(x) for x in fh[:14]] + row["focus_hit_lines"] = [str(x) for x in fh[:8]] sn = src.get("sample_text_snippets") if isinstance(sn, list): - row["sample_text_snippets"] = [str(x)[:300] for x in sn[:14]] + row["sample_text_snippets"] = [str(x)[:220] for x in sn[:8]] def _run_probe_text_mining_llm( @@ -694,7 +695,7 @@ def build_markdown( "", "## 探针归纳(大模型 · 文本挖掘专用)", "", - "> 输入为探针 JSON(``schema_version``=1):每细类含 **word_freq / tfidf / cooccurrence / lda** 及合并后的 **focus_hit_lines、sample_text_snippets**;" + "> 输入为探针 JSON(``schema_version``=1):每细类含 **word_freq / tfidf / cooccurrence / lda** 及合并后的 **focus_hit_lines、sample_text_snippets**(供语境,**非**要求逐条复述);" "系统提示为脚本内 ``PROBE_TEXT_MINING_SYSTEM``,**不是** ``COMMENT_GROUPS_SYSTEM``。", "", ]