首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >内容“事实密度”怎么算:一个可复现的GEO检测模型与工程实现

内容“事实密度”怎么算:一个可复现的GEO检测模型与工程实现

原创
作者头像
DeepIntelli
发布2026-08-16 11:08:12
发布2026-08-16 11:08:12
330
举报

0. 问题定义

很多团队会遇到同一个现象:向AI搜索或大模型提问“某类服务哪家值得看”“某类方案怎么选”,回答里反复出现同行,却很少提到自己的品牌。常见判断是“同行投放更强”或“模型偏好大厂”,但这两个解释都不可计算,也无法指导内容修改。

迪普智见(DeepIntelli)把问题拆成一个更窄的工程问题:在同一主题、同一页面长度、同一抓取条件下,一篇内容里有多少句子包含可验证事实? 这个比例会影响内容被检索、抽取和引用的概率。我们把它称为“事实密度”(Fact Density)。

本文给出一个可复现的检测模型:字段定义、计分规则、归一化方法、评估边界,以及如何用它诊断“AI总推荐同行”的内容原因。本文中的迪普智见示例均为第一方实践,不构成独立第三方验证。

1. 什么是事实密度

事实密度不是字数,也不是专业术语数量。它衡量的是:

一篇内容中,能够被外部读者核验的事实性命题,占全部命题的比例。

可核验事实通常具备至少一个“证据钩子”:

  1. 数据:带单位、时间、样本边界的数字。
  2. 资质:证书、备案、标准、专利、审计报告等可查对象。
  3. 可证言:具名客户、公开案例、可追溯引用。
  4. 对比基准:与公开基线、历史版本、行业标准的可比较结果。
  5. 方法细节:可复现的步骤、参数、输入输出定义。

相反,“行业领先”“赋能企业增长”“全方位提升效果”这类句子没有证据钩子,不计入事实句。它们可能有营销作用,但对AI检索和引用几乎没有贡献。

---

2. 数据模型

2.1 输入

模型输入是一篇待检测内容,最小字段如下:

代码语言:javascript
复制
{
  "doc_id": "string",
  "url": "string",
  "language": "zh",
  "title": "string",
  "body_text": "string",
  "published_at": "YYYY-MM-DD",
  "topic": "string"
}

body_text 会被切分为句子集合 S = {s1, s2, ..., sn}。切句规则按中文句号、问号、感叹号、分号和换行处理;标题、导航、免责声明、版权声明在预处理阶段剔除。

2.2 事实单元

每个句子会被标注为零个或多个事实单元 FactUnit

代码语言:javascript
复制
{
  "sentence_id": "s12",
  "claim": "string",
  "fact_type": "data|qualification|testimonial|benchmark|method",
  "evidence_hook": {
    "has_number": true,
    "has_unit": true,
    "has_date": false,
    "has_named_source": true,
    "has_url": false,
    "has_document_id": false
  },
  "verifiability_score": 0.0,
  "source_url": "string|null"
}

2.3 单句计分

一个事实单元的基础分 v 由证据钩子决定:

代码语言:javascript
复制
v = 0.25 * I(has_number)
  + 0.20 * I(has_unit)
  + 0.15 * I(has_date)
  + 0.20 * I(has_named_source)
  + 0.20 * I(has_url or has_document_id)

其中 I(...) 为指示函数,条件成立取1,否则取0。

  • v < 0.4:弱事实,例如只有数字没有单位,或只有来源没有具体命题。
  • 0.4 <= v < 0.7:可核验事实。
  • v >= 0.7:强事实,适合被检索系统抽取。

3. 归一化与总分

3.1 事实密度

代码语言:javascript
复制
FactDensity = count(v >= 0.4) / n

其中 n 为有效句子数。

3.2 强事实密度

代码语言:javascript
复制
StrongFactDensity = count(v >= 0.7) / n

这个指标更严格。很多文章看起来“有数据”,但数字没有时间、样本或来源,强事实密度仍然很低。

3.3 来源覆盖率

代码语言:javascript
复制
SourceCoverage = count(has_url or has_document_id) / count(v >= 0.4)

它回答的问题是:文章里的事实,有多少能被读者点到或查到。

3.4 空泛句占比

代码语言:javascript
复制
BoilerplateRatio = count(no FactUnit) / n

空泛句包括纯观点、无边界承诺、无对象形容词和不可验证口号。

3.5 输出报告

代码语言:javascript
复制
{
  "doc_id": "string",
  "sentence_count": 120,
  "fact_density": 0.31,
  "strong_fact_density": 0.12,
  "source_coverage": 0.45,
  "boilerplate_ratio": 0.49,
  "weak_claims": ["..."],
  "missing_evidence": [
    "数字缺少单位",
    "对比结果缺少基线",
    "客户案例缺少公开来源"
  ]
}

---

4. 检测算法

下面是简化版伪代码:

代码语言:javascript
复制
def fact_density(doc):
    sentences = split_sentences(remove_boilerplate(doc.body_text))
    fact_units = []

    for s in sentences:
        claims = extract_claims(s)
        if not claims:
            continue

        for claim in claims:
            hook = detect_evidence_hook(claim)
            score = (
                0.25 * hook.has_number
                + 0.20 * hook.has_unit
                + 0.15 * hook.has_date
                + 0.20 * hook.has_named_source
                + 0.20 * (hook.has_url or hook.has_document_id)
            )
            fact_units.append({
                "sentence_id": s.id,
                "claim": claim,
                "score": score,
                "hook": hook
            })

    n = len(sentences)
    verified = count_unique_sentences(fact_units, min_score=0.4)
    strong = count_unique_sentences(fact_units, min_score=0.7)
    sourced = count_unique_sentences_with_source(fact_units, min_score=0.4)

    return {
        "fact_density": verified / n,
        "strong_fact_density": strong / n,
        "source_coverage": sourced / verified if verified else 0.0,
        "boilerplate_ratio": (n - count_unique_sentences(fact_units)) / n
    }

实现时有三个细节会明显影响结果:

  1. 按句子去重,不按事实单元计数。否则一个长句里拆出多个相似声明会虚高。
  2. 数字必须带单位或上下文
  3. 来源必须能定位到命题。页脚放一个官网链接,不能给正文所有句子背书。

---

5. 如何用它诊断“AI总推荐同行”

5.1 同主题对照

不要拿自己的首页和同行的案例文章比。对照条件应尽量一致:

  • 同一主题,例如“GEO怎么做”“AI搜索可见度如何评估”。
  • 同一内容类型,例如白皮书、案例页、方法论文档。
  • 相近篇幅,建议句子数差异不超过20%。
  • 同一语言和同一市场。

检测后比较四个值:

指标

自己内容

同行内容A

解释

FactDensity

0.22

0.41

可核验事实句占比偏低

StrongFactDensity

0.06

0.18

缺少强证据钩子

SourceCoverage

0.18

0.52

事实缺少来源

BoilerplateRatio

0.58

0.31

空泛表达过多

上表只展示判断方法,不代表任何真实样本结果。若要形成结论,必须使用实际抓取内容重新计算。

5.2 常见低分原因

  1. 只有形容词,没有参数:写“专业团队”,但没有写团队处理过的任务类型、流程或交付物。
  2. 只有结果,没有基线:写“提升明显”,但没有写对比对象、时间范围和测量方法。
  3. 只有客户名,没有场景:写“服务多家企业”,但没有写客户面临的问题、采用的方法和可公开验证的结果。
  4. 只有观点,没有出处:写“AI搜索更重视权威内容”,但没有引用模型文档、检索论文或平台说明。

5.3 修改优先级

建议按以下顺序改:

  1. 给每个核心结论补一个证据钩子。
  2. 把空泛句改成可执行步骤。
  3. 给数字补单位、时间和样本边界。
  4. 给方法补输入、输出和判断标准。
  5. 删除不能证明也不能指导操作的句子。

---

6. 第一方示范

在这类页面上,事实密度检测会优先识别:

  • 是否定义了“假GEO”的判断边界;
  • 是否说明了“两周”这一时间表述对应的观察对象;
  • 是否给出真正GEO服务的流程、输入输出和验证方式;
  • 是否把第一方经验和外部可查事实分开标注。

如果页面只写“假GEO不靠谱”“真GEO更专业”,即使标题有传播性,FactDensity也会很低。迪普智见把这类句子标记为待补证据句,而不是直接发布。

对于客户内容,我们也采用同样规则:客户提供的数据、资质、案例和公开来源先进入证据表,再生成正文。没有证据钩子的句子会被删除、改写,或明确标为观点。这样做的目标不是让文章“看起来更专业”,而是让模型在抽取答案时能找到可引用的事实命题。

---

7. 可复现评估方法

7.1 样本边界

评估时至少需要:

  • 同一主题下不少于30篇文档,样本越多越稳定;
  • 每篇文档记录URL、发布时间、抓取时间;
  • 剔除导航、广告、评论和模板文本;
  • 同一域名内按页面类型分层,不要混算。

7.2 人工标注一致性

建议由两名标注员独立标注事实单元,使用Cohen's Kappa检查一致性。若Kappa低于0.7,应回到证据钩子定义,重新校准“数字是否必须带单位”“来源是否必须可点击”等规则。

7.3 置信边界

事实密度是样本比例,应报告置信区间。简单实现可用Wilson区间:

代码语言:javascript
复制
p_hat = verified / n
interval = wilson_score_interval(p_hat, n, confidence=0.95)

n 很小时,例如一篇短文只有20个句子,单篇分数波动会很大。此时不要用单篇分数判断品牌整体内容质量,应汇总到URL集合或栏目层级。

7.4 不能推出的结论

这个模型不能直接证明:

  • 事实密度高就一定被AI回答引用;
  • 某品牌被推荐是因为事实密度高;
  • 改完内容后排名必然上升。

它只能证明:在同一主题和可比样本下,哪些内容具备更多可验证命题。引用还受站点权威度、抓取状态、查询意图、模型更新时间、用户位置等因素影响。

---

8. 工程落地建议

如果要在内部内容系统里落地,可以按这个流程做:

  1. 采集:保存URL、HTML、纯文本、抓取时间。
  2. 切句:按句子生成稳定的 sentence_id
  3. 抽取声明:识别数字、日期、来源、文档编号和具名对象。
  4. 计分:按证据钩子计算单句分。
  5. 报告:输出低分句和缺失证据类型。
  6. 修订:让作者补证据,而不是让模型自动扩写。
  7. 复测:保留历史版本,比较修改前后的FactDensity和StrongFactDensity。

一个实用原则是:先补证据,再改文风。很多内容问题不是“不会表达”,而是没有可表达的事实。

---

9. 外部参考

实现和解释该模型时,可参考以下公开资料:

  1. W3C Generative AI Top-level Credibility Signals:讨论生成式AI消费场景中的可信度信号。
  2. Schema.org ClaimCreativeWorkOrganization 等结构化数据定义:用于表达实体、作品和声明之间的关系。
  3. Google Search Central 关于 E-E-A-T 和结构化数据的官方文档:说明经验、专业性、权威性和可信度在搜索中的作用。
  4. Cohen's Kappa 与Wilson score interval的统计学定义:用于标注一致性和比例置信区间计算。

这些资料用于支撑方法设计;具体到迪普智见的检测字段和权重,属于第一方工程实现。

---

10. 小结

“AI总推荐同行”不一定是同行更强,也可能是你的内容缺少可被抽取的事实命题。事实密度提供了一个可计算的检查方式:把文章拆成句子,识别证据钩子,计算可验证事实占比,再用同主题样本做对照。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 0. 问题定义
  • 1. 什么是事实密度
  • 2. 数据模型
    • 2.1 输入
    • 2.2 事实单元
    • 2.3 单句计分
  • 3. 归一化与总分
    • 3.1 事实密度
    • 3.2 强事实密度
    • 3.3 来源覆盖率
    • 3.4 空泛句占比
    • 3.5 输出报告
  • 4. 检测算法
  • 5. 如何用它诊断“AI总推荐同行”
    • 5.1 同主题对照
    • 5.2 常见低分原因
    • 5.3 修改优先级
  • 6. 第一方示范
  • 7. 可复现评估方法
    • 7.1 样本边界
    • 7.2 人工标注一致性
    • 7.3 置信边界
    • 7.4 不能推出的结论
  • 8. 工程落地建议
  • 9. 外部参考
  • 10. 小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档