docs: 对齐竞品报告第八章新节号与情感 LLM 说明

第三节/§8.3 改为第二节/§8.2(关注词与场景路径);策略规划表区分报告章与策略稿 §8.x;快照 omission_note 与 brief 无 lexicon 一致;generate_sections/comment_sentiment 注释反映报告不再发图。

Made-with: Cursor
This commit is contained in:
hub-gif 2026-04-21 10:32:06 +08:00
parent 23ddf115ee
commit 30ea9783b3
9 changed files with 28 additions and 15 deletions

View File

@ -409,7 +409,7 @@ def build_comment_sentiment_llm_payload(
全量去重后的评价句确定性洗牌抽样供模型结合语境自行判断褒贬
``sentiment_bucket_method``有有效评分列时为 ``score_then_lexeme``否则为 ``keyword_substring_heuristic``
条形图与 ``comment_sentiment_lexicon`` 计数方式与之一致正文归纳仍以整句语义为准
``comment_sentiment_lexicon`` 与各象限计数一致竞品报告与 brief **已不再**发布同口径图正文归纳仍以整句语义为准
"""
use_score_column = bool(
scores is not None

View File

@ -292,7 +292,7 @@ def build_scenario_groups_llm_payload(
sku_header: str,
title_h: str,
) -> dict[str, Any]:
"""供 ``generate_scenario_group_summaries_llm``;计数与 §8.3 图右栏(场景)一致。"""
"""供 ``generate_scenario_group_summaries_llm``;计数与 **§8.2** 关注词/场景路径下图右栏(场景)一致。"""
if not feedback_groups:
return {}
sku_meta: dict[str, tuple[str, str, str]] = {}

View File

@ -51,7 +51,7 @@ def generate_matrix_group_summaries_llm(
COMMENT_GROUPS_SYSTEM = """你是用户研究与品类顾问。输入为 JSON``keyword`` 与 ``groups``。
每个 group ``group`` 第五章矩阵一致的细分类目名``comment_flat_rows````effective_text_lines``
``focus_hit_lines``关注词子串命中摘要 第八章第三节 同源``sample_text_snippets``评价短摘录已截断
``focus_hit_lines``关注词子串命中摘要 **第八章第二节**关注词与场景路径左栏同源``sample_text_snippets``评价短摘录已截断
摘录行通常以 ``细类SKU品名店铺`` 开头细类可与本 group 名对照**品名/SKU/店铺**表示该句具体出自哪条链接归纳时若引用原话**须交代是哪家店哪条 SKU哪款品名上的反馈**勿只写有用户说口感差而不指代产品
关注词命中为子串统计可能与句意不一致**请以整句语义**判断褒贬软硬适中没那么甜常为满意表述不得据此写成质地问题
@ -163,9 +163,9 @@ def generate_comment_group_summaries_llm(
SCENARIO_GROUPS_SYSTEM = """你是用户研究与品类顾问。输入为 JSON``keyword``、``scenario_lexicon``、``groups``。
``scenario_lexicon`` 列出各场景标签及示例触发子串与报告 **第八章第三节** 右栏统计规则一致
``scenario_lexicon`` 列出各场景标签及示例触发子串与报告 **第八章第二节**关注词与场景路径右栏统计规则一致
``groups`` 每项含 ``group`` 第五章矩阵一致的细分类目名``effective_text_count``有效评价文本条数
``scenario_distribution``各预设场景的 ``mention_rows`` ``share_of_effective_texts``**一条评价可计入多场景** 第八章第三节 图右栏同源
``scenario_distribution``各预设场景的 ``mention_rows`` ``share_of_effective_texts``**一条评价可计入多场景** **第八章第二节** 图右栏同源
``sample_text_snippets``摘录行常含细类SKU品名店铺等前缀的短引文已截断
统计为**子串命中**不是语义主题模型
@ -179,7 +179,7 @@ SCENARIO_GROUPS_SYSTEM = """你是用户研究与品类顾问。输入为 JSON
SCENARIO_GROUPS_USER_PREFIX = (
"请根据以下 JSON 撰写竞品报告 第八章第右栏使用场景之后的「使用场景要点归纳」正文Markdown\n\n"
"请根据以下 JSON 撰写竞品报告 第八章第右栏使用场景之后的「使用场景要点归纳」正文Markdown\n\n"
)

View File

@ -1,4 +1,4 @@
"""第八章情感解读、报告分章、章节衔接等 LLM"""
"""评价情感 LLM可选默认**不**写入竞品报告;供独立调用或历史任务兼容"""
from __future__ import annotations
import json
@ -10,9 +10,9 @@ from .llm_client import call_llm
SENTIMENT_LLM_SYSTEM = """你是电商/食品类用户研究助手。输入 JSON 含:
- ``comment_sentiment_lexicon``子串词表统计报告条形图**同一计数方式****仅作定量参考**子串命中说话人态度
- ``comment_sentiment_lexicon``子串词表统计载荷内各计数字段**同一计数方式**竞品报告**已不再**发布同口径扇形图/条形图**仅作定量参考**子串命中说话人态度
- ``positive_lexeme_hits_top`` / ``negative_lexeme_hits_top``短语级命中摘要同源
- ``sentiment_bucket_method````score_then_lexeme`` 表示**先按 15 星分桶**无评分行再按关键词``keyword_substring_heuristic`` 表示**仅关键词**分桶条形图一致``sample_reviews_positive_biased`` / ``negative`` / ``mixed_tone`` 按该规则**机械归类**的抽样**可能与整句真实褒贬不一致**例如软硬适中曾被误归负向
- ``sentiment_bucket_method````score_then_lexeme`` 表示**先按 15 星分桶**无评分行再按关键词``keyword_substring_heuristic`` 表示**仅关键词**分桶 ``comment_sentiment_lexicon`` 内四象限计数一致``sample_reviews_positive_biased`` / ``negative`` / ``mixed_tone`` 按该规则**机械归类**的抽样**可能与整句真实褒贬不一致**例如软硬适中曾被误归负向
- **``sample_reviews_semantic_pool``**若有本批评价经去重后的**随机/洗牌抽样**来自全部有效条不限于某一象限**归纳正/负向体验引用短引文时优先以此池与上述各列表中的原文为准自行结合语境理解**转折对比没那么甜软硬适中先抑后扬/先扬后抑整句态度**不得以子串是否命中负面词来断言该句为抱怨**
每条样本通常以 ``细类SKU品名店铺`` 开头表示 **第五章细类SKU品名店铺**写归纳与引文时须能还原哪家店哪条 SKU哪款品名或保留前缀**禁止**无指代地写用户普遍
@ -24,7 +24,7 @@ SENTIMENT_LLM_SYSTEM = """你是电商/食品类用户研究助手。输入 JSON
- **定性归纳**满意点/抱怨点引语是否算差评**整句语义**为准若某句在语义上为褒义或中性描述**不得**放入质地差口感硬等负向归因若词表归类结果与句意冲突**以句意为准**并在使用注意点明关键词归类**仅反映子串计数不作态度判断**
- **负向主题优先级硬性**主要集中突出类抱怨前**必须对照** ``negative_lexeme_hits_top`` 各短语的 ``texts_matched``口感硬/咬不动/发硬**预设短语命中为 0 或明显低于**其它维度如分量物流**不得**把质地硬写成首要负向主题若抽样原文与语义池里**反复出现**分量少太少不够吃等而预设短语未列出仍须**单独归纳**用户常用生活化表述不必与预设表完全一致
- 若某措辞****出现在任一抽样原文含前缀后正文**禁止**用引号写成直接引语
- **不要**只复述某词出现 N 条形图已展示你的价值是**语义归纳**
- **不要**只复述某词出现 N 若业务侧仍配图表则由图展示你的价值是**语义归纳**
**建议结构**使用四级标题 ``####``
1. ``#### 正向体验主题``36 条;概括满意点(口感、甜度、性价比等),**尽量**用「」引用 ``sample_reviews_semantic_pool`` 或其它样本中**语义确为正面**的短句(勿把对比褒义句当差评例子)。
@ -36,7 +36,7 @@ SENTIMENT_LLM_SYSTEM = """你是电商/食品类用户研究助手。输入 JSON
def generate_comment_sentiment_analysis_llm(payload: dict[str, Any]) -> str:
"""基于 lexicon 统计 + 语义池与按词表归类的抽样,生成 第八章第二节 大模型解读段落Markdown"""
"""基于 lexicon 统计 + 语义池与按词表归类的抽样,生成评价情感归纳段落Markdown**默认不**嵌入竞品报告正文"""
p = dict(payload)
raw = json.dumps(p, ensure_ascii=False)
if len(raw) > 88_000:

View File

@ -145,7 +145,9 @@ class BuildCompetitorBriefTests(SimpleTestCase):
self.assertIn("店铺:", lines[0])
self.assertIn("整体口感还差点意思", lines[0])
def test_scenario_groups_llm_payload_matches_section_8_4_counts(self) -> None:
def test_scenario_groups_llm_payload_matches_chapter8_sec2_right_rail_counts(
self,
) -> None:
sku_h = "SKU(skuId)"
merged = [
{

View File

@ -9,7 +9,7 @@ reportlab>=4.0
matplotlib>=3.8
playwright>=1.40
# 第八章评论文本补充分析(默认写入竞品报告第八章第节时需安装)
# 第八章评论文本补充分析(默认写入竞品报告第八章第节时需安装)
jieba>=0.42
scikit-learn>=1.4
numpy>=1.26

View File

@ -0,0 +1,11 @@
# 市场策略稿(示例 · 批次 20260410_134015— 已过时
本文件曾基于较早跑批撰写,其中 **§1.2「核心场景」规则统计占比表**(如早餐/代餐 28.6%)来自简报 **`usage_scenarios` 词组规则****已非当前产品主依据**。
当前版本已改为以 **第八章第二节「评论文本补充分析」文本挖掘分词、词频、共现、LDA、词云** 作为评论侧策略依据(`chapter8_text_mining_probe` 开启时);**不再**使用原「评价正负面粗判」预设口语短语扇形图/条形图。未开探针时第八章第二节仍为「关注词与使用场景」并列图路径。
**请改读:**
- **[市场策略稿-示例-20260413_104252_低GI.md](./市场策略稿-示例-20260413_104252_低GI.md)**`data/JD/pipeline_runs/20260413_104252_低GI`,与现有文本挖掘产出一致)
目录模板仍见:[市场策略稿-目录模板-六主轴与品牌四线.md](../templates/市场策略稿-目录模板-六主轴与品牌四线.md)。

File diff suppressed because one or more lines are too long

View File

@ -184,7 +184,7 @@ LLM 路径下:**A** 经 `compact_brief_for_llm` 压缩进 payload**B** 原
| 口感按细类:酥脆 vs 松软分线,禁止一词盖全站 | `STRATEGY_SYSTEM` **口感/质地与细类** |
| 促销:满减/满折/券/跨店,不编造门槛、不全节留空 | `STRATEGY_SYSTEM` **促销**;底稿 §八.3 |
| 报告第九章仍用 `generate_strategy_opportunities_llm`runner 正文拼装不改 | 代码现状;本文件 §5 |
| 人工可读示例(低 GI | `docs/demo/市场策略稿-示例-20260413_104252_低GI.md`(含 §2.1、§8.3 范例句 |
| 人工可读示例(低 GI | `docs/demo/市场策略稿-示例-20260413_104252_低GI.md`(含 §2.1;策略稿目录 §8.x 为「战术支柱」促销等,勿与竞品报告第八章节号混淆 |
**另行立项(本文件不承诺已编码)**:营销内容管线 S2/S3`strategy-marketing-content-alignment.md`)、仅摘要模板、表单新字段、输出数字同源性自动校验 S4。