P paper2skillsPlaybook
AI 路线图 →

供应链知识图谱标签传播算法 — LPA/层级继承/关系链传播的Tag扩散引擎

Skill-Tag-Propagation-Supply-Chain · 24-标签工程

causalexperimentknowledge_graphfraud_detection供应链与补货知识图谱与RAG风控与合规WF-A 智能补货WF-D 选品扫描WF-K 全域风险防御WF-M 新品上市全链路
实现难度⭐⭐⭐☆☆
业务视角
适用角色数据架构师 / 供应链数字化负责人 · CTO · 数据工程师 · 供应链团队
什么情况下用多平台数据孤岛导致断货识别延迟8小时;标签覆盖率不足使AI决策触发率<30%;想实现分析→行动自动闭环但不知从何下手
成功是什么样的统一 Tag Schema + 传播引擎将标签覆盖率从 30% 提升至 97%;Palantir 风格 Object-Action-Writeback 将补货响应从 2 天缩短至 4 小时自动触发
业务痛点
多平台 SKU 编码混乱无法统一合规标签手工维护遗漏频繁预测模型有了但结果无法自动触发采购标签打了但没有质量监控

1. 解决的问题

供应链团队面临"认证标签手工维护60%覆盖率"——LPA+层级继承传播算法将合规标签覆盖率从60%提升至95%,供应商FDA认证自动扩散到旗下所有SKU

2. 核心算法逻辑

标签传播(Tag Propagation) 解决的核心问题:人工打标覆盖率不足,但实体间存在关系——可以沿关系边"传导"已知标签到未标注节点。

3. 业务应用场景

场景A:供应商认证标签传播到 SKU - 业务问题:供应商「宁波精工」获得了 CE 认证,但旗下 15 个吸奶器 SKU 需要手工逐一更新合规标签,容易遗漏 - 数据要求:供应商→产品关系图谱 + 供应商认证数据 - 传播逻辑: - 业务价值:合规标签更新从 2 小时人工 → 5 秒自动,且零遗漏

**场景B:仓库容量风险标签传播到 SKU** - **业务问题**:US-FBA 仓容量预警(使用率 92%),但系统不知道哪些 SKU 的补货计划应该调整 - **传播逻辑**: - **业务价值**:仓容预警自动影响 SKU 补货策略,避免入仓被拒收

4. 输入数据要求

请查看原始代码模板获取输入规格。

5. 输出结果

请查看原始代码模板获取输出规格。

6. 业务价值 / ROI

  • ROI预估:认证标签传播使合规覆盖率从60%→95%,合规审查效率提升10倍;风险标签扩散使断货预警从15%覆盖→85%覆盖,减少断货事件约50%,年化约8万元
  • 实施难度:⭐⭐⭐☆☆(需要先建立实体关系图谱,然后配置传播规则)
  • 优先级评分:⭐⭐⭐⭐⭐(是标签工程从"手工打标"到"自动扩散"的关键技术,直接解决覆盖率问题)
  • 评估依据:供应链实体间关系密度高(每个SKU平均涉及1个供应商+2个仓库+3个物流商),传播效益显著

7. 代码模板

代码块数量:5 · 路径:paper2skills-code/data_collection/tag_propagation_supply_chain

"""
供应链知识图谱标签传播引擎
功能:层级继承传播 / LPA迭代传播 / 关系链传播 / 置信度衰减管理
输入:实体关系图谱 + 种子标签集合
输出:传播后完整标签集 + 传播路径追踪 + 覆盖率提升报告
"""
import numpy as np
import pandas as pd
from collections import defaultdict, deque
from typing import Optional
import warnings
warnings.filterwarnings('ignore')


class SupplyChainTagGraph:
    """供应链实体关系图谱(用于标签传播)"""

    def __init__(self):
        self.entities = {}   # entity_id → {type, name, tags: {tag_id: {value, confidence, source}}}
        self.edges = []      # (src, dst, relation_type, weight)
        self.adj = defaultdict(list)   # src → [(dst, relation, weight)]
        self.radj = defaultdict(list)  # dst → [(src, relation, weight)] 反向

    def add_entity(self, entity_id: str, entity_type: str, name: str, tags: dict = None):
        self.entities[entity_id] = {
            "type": entity_type, "name": name,
            "tags": {k: {"value": v, "confidence": 1.0, "source": "manual"}
                     for k, v in (tags or {}).items()}
        }

    def add_relation(self, src: str, dst: str, relation: str, weight: float = 1.0):
        self.edges.append((src, dst, relation, weight))
        self.adj[src].append((dst, relation, weight))
        self.radj[dst].append((src, relation, weight))

    def get_tag(self, entity_id: str, tag_id: str) -> Optional[dict]:
        e = self.entities.get(entity_id)
        if e and tag_id in e["tags"]:
            return e["tags"][tag_id]
        return None

    def set_tag(self, entity_id: str, tag_id: str, value, confidence: float, source: str):
        if entity_id in self.entities:
            self.entities[entity_id]["tags"][tag_id] = {
                "value": value, "confidence": confidence, "source": source
            }


class TagPropagationEngine:
    """三种传播模式引擎"""

    def __init__(self, graph: SupplyChainTagGraph, decay_alpha: float = 0.85, conf_threshold: float = 0.5):
        self.graph = graph
        self.decay_alpha = decay_alpha
        self.conf_threshold = conf_threshold
        self.propagation_log = []

    def hierarchical_propagation(self, tag_id: str, allowed_relations: list,
                                  max_hops: int = 3) -> int:
        """

8. 论文来源

  • 2104.07682
  • 2210.01813
  • 2303.09294