做什么(One-liner)
轻量级文本叙事强度启发式(type-token ratio + 长度 + token 密度加权)+ 可选主题重叠 / 断裂检测(Jaccard)。用于央行声明、研报、新闻等文本的快速叙事监测。
怎么用
Canvas 拖 b0_narrative_v1,填 text(必填)+ reference_text(可选,做主题比较)。输出 token_count / TTR / narrative_intensity(0-1)+ 可选的 Jaccard / topic_break。
核心公式
TTR = unique_tokens / total_tokens
length_norm = min(len(text) / 4000, 1)
intensity = min(1, 0.45·TTR + 0.35·sqrt(length_norm) + 0.2·min(n/500, 1))
# 可选(reference_text 提供时):
Jaccard = |set(A) ∩ set(B)| / |set(A) ∪ set(B)|
topic_break = 1 - Jaccard假设与适用场景
假设:token 级启发式够粗略反映叙事强度;不需要深度语义(那是 FinBERT 的事,Tier 2+ 升级路径)。
适用:英文 / 中文新闻 / 央行声明 / 研报 / 长文本评论。
不适用:短文本(<50 tokens)、结构化数据、多语言混合、纯数字 / 表格。
输入 / 输出契约
详见 frontmatter。注意 scale:输出字段命名为 narrative_intensity_0_1,值域 [0, 1](不是 BLCV 的 0-100 scale)。名字本身暗示了这个 convention,消费方不要误乘 100。
已知局限
- Lexical heuristic 不理解语义('not bullish' vs 'bullish' 不分)
- 权重 0.45/0.35/0.2 是经验 tuned
- Tokenizer 正则可能漏 emoji / URL
- Jaccard 对长度差异敏感(biased low)
- Scale convention 是 0-1,命名已提示 —— 不要和 BLCV 0-100 混淆
参考文献
Shiller (2017) Narrative Economics + Loughran & McDonald (2011) 金融文本 TTR。详见 frontmatter。
Golden Test
tests/golden/fixtures/tier1/b0_narrative/,1e-12 tolerance,3 tests(matches_reference / empty_text / with_reference_jaccard)。2026-04-20 passing。
Changelog
- 1.0.0 (2026-04-20) — Initial Active release

