想象小镇档案室里挂着一张巨大的关系合影:甲和乙是朋友,乙和丙是同事,一眼能看懂现在谁和谁熟。但合影不会告诉你,甲乙去年大吵一架、今年才和好,也不会告诉你乙丙的同事关系三个月前才建立。普通知识图谱就像这张合影,只能回答“现在是什么”,回答不了“以前是什么、接下来会怎样”。时序知识图谱就是给合影加一条时间轴,把它变成一部《小镇关系纪录片》:每个时刻都有一帧快照,按下播放键,你能看见关系如何诞生、转变、消失,甚至可以快进到未来,预测下一幕。这套“给知识装上时间维度”的技术,正在舆情演化、金融风控、历史分析等场景里变成越来越重要的基础设施。

岗位关联

学会时序知识图谱,你就从“给知识拍照片”进阶到“给知识拍电影”,能设计和维护真正感知时间演变的智能系统——这是很多动态业务场景的核心能力。

目录
  1. 可视化演示
  2. 时序图谱概念:从合影到纪录片
  3. 时序表示模型:给事实贴上时间标签
  4. 动态嵌入方法:让向量跟着时间起舞
  5. 时序推理机制:预测关系下一步怎么走
  6. 事件预测应用:预测下一幕剧情
  7. 动态建模与部署:让纪录片持续更新
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

\u5C55\u793A\u65F6\u5E8F\u77E5\u8BC6\u56FE\u8C31\u4E2D\u5B9E\u4F53\u5173\u7CFB\u968F\u65F6\u95F4\u7684\u52A8\u6001\u6F14\u53D8\uFF0C\u8FB9\u7F18\u5F3A\u5EA6\u968F\u65F6\u95F4\u5468\u671F\u6CE2\u52A8\uFF0C\u53CD\u6620\u77E5\u8BC6\u7684\u65F6\u5E8F\u6027\u53D8\u5316\u3002

本节配有交互动效(进入视口后自动加载,约 3KB)。

\u65F6\u5E8F\u77E5\u8BC6\u56FE\u8C31\u52A8\u6001\u6F14\u5316 \u5B9E\u4F53\u8282\u70B9\u8868\u793A\u77E5\u8BC6\u56FE\u8C31\u4E2D\u7684\u5B9E\u4F53\uFF0C\u8FB9\u7F18\u8868\u793A\u5E26\u65F6\u95F4\u622A\u7684\u5173\u7CFB \u8FB9\u7F18\u5F3A\u5EA6\u968F\u65F6\u95F4\u5468\u671F\u6CE2\u52A8\uFF0C\u53CD\u6620\u5173\u7CFB\u7684\u65F6\u5E8F\u6027\u53D8\u5316 (s, r, o, t) \u56DB\u5143\u7EC4\u65F6\u5E8F\u5EFA\u6A21 \u65F6\u5E8F\u8F74\u5E95\u90E8\u5C55\u793A\u65F6\u95F4\u7A97\u53E3\u6ED1\u52A8\uFF0C\u7528\u4E8E\u65F6\u5E8F\u63A8\u7406\u548C\u4E8B\u4EF6\u9884\u6D4B

时序图谱概念:从合影到纪录片

小镇档案室的老相册里,只放着一张今天拍的合影。你可以指着照片说,甲和乙现在关系好,乙和丙现在是同事,但没有人知道这些关系维持了多久、未来会不会变。普通知识图谱就是这样的“关系合影”,把实体和关系固化成一个静态快照。

时序知识图谱要做的是给这张合影配上连续的时间轴,把“现在”变成“每个时刻”。每条知识从三元组扩展为四元组 (头实体, 关系, 尾实体, 时间),于是同一对实体之间可以有多个不同时间段的关系事实。比如“甲合作乙”在 2020 年成立,到 2023 年变成“甲竞争乙”。

为了便于计算,我们把每个时间点上的所有事实整理成一个“快照图”。整部纪录片就是快照序列。所谓“演变三要素”通常指三类变化:新增事实、消失事实、关系属性变化。舆情中,公众对某个话题的情绪可能从“好奇”变成“恐慌”,这些变化都会落成新快照。

所以,时序图谱不是把一张照片 PS 上几个日期,而是重新剪辑成有前后因果的纪录片。有了快照这套基础语言,后面才能谈如何表示、如何嵌入、如何推理。

Gt={ (s,p,o)∣⟨s,p,o⟩ holds at t }\displaystyle \mathcal{G}_t = \{\, (s, p, o) \mid \langle s, p, o \rangle \text{ holds at } t \,\}
这个公式表示:在时间 t 这一刻,所有满足条件的三元组共同组成一张知识图谱快照。
  1. 快照符号\mathcal{G}_t 表示第 t 个时间点上的知识图谱快照。
    Gt\displaystyle \mathcal{G}_t
  2. 集合花括号\{\, \,\} 说明快照是由多个事实组成的集合,不是一个孤立节点。
    { (s,p,o) }\displaystyle \{\, (s, p, o) \,\}
  3. 四元组元素(s, p, o) 是头实体、关系、尾实体三元组,这里省略时间,是因为整个集合已经限定在 t 时刻。
    (s,p,o)\displaystyle (s, p, o)
  4. 成立条件\langle s, p, o \rangle \text{ holds at } t 表示这条边只在这个时刻有效。
    ⟨s,p,o⟩ holds at t\displaystyle \langle s, p, o \rangle \text{ holds at } t

时序表示模型:给事实贴上时间标签

拍纪录片要在素材带上写时间码。同样,建立时序知识图谱先要决定“时间”怎么记。是像闹钟一样记到秒,还是像日历一样记一段日子?这决定了你能回答什么样的问题。

点时间戳适合瞬时事件:(股票A, 涨停, 股票B, 2025-06-01 09:30)。时间区间适合持续关系:(甲, 任职, 乙公司, [2020-01, 2023-06])。前者精确但无法表达“持续多久”,后者适合表达任期、合作期、婚姻状态这类有起止的关系。

在传统 RDF 三元组上扩展 validFrom / validTo,或者使用四元组事实,都是常见的时序表示方案。用区间表示时,一条知识可以写成:

给事实贴上时间标签后,系统才能回答“甲在这家公司任职期间和谁合作过”这类时间相关的问题。这就像给纪录片每帧都打上时间码,后续剪辑、回放、检索才成为可能。

⟨s,p,o⟩:[tstart, tend]\displaystyle \langle s, p, o \rangle : [t_{\text{start}},\, t_{\text{end}}]
冒号后面的闭区间表示这条事实从开始时刻到结束时刻一直成立。
  1. 事实主体\langle s, p, o \rangle 表示一条知识,比如“甲合作乙”。
    ⟨s,p,o⟩\displaystyle \langle s, p, o \rangle
  2. 冒号约束冒号表示“这条知识的时间约束如下”。
    :\displaystyle :
  3. 闭区间[t_{\text{start}}, t_{\text{end}}] 用闭区间表示开始和结束时刻,两端点都成立。
    [tstart,tend]\displaystyle [t_{\text{start}}, t_{\text{end}}]
  4. 开区间变形若写成 (t_{\text{start}}, t_{\text{end}}],表示不包含起始时刻,适合表达“月初生效、月底失效”等精细业务。
    (tstart,tend]\displaystyle (t_{\text{start}}, t_{\text{end}}]

动态嵌入方法:让向量跟着时间起舞

纪录片里的角色会换装、换身份,但你还是能认出他。动态嵌入就是给每个实体在不同时间点准备“不同状态向量”,同时保持身份内核稳定。

静态嵌入把实体固定为一个常量,无法表达“甲今年和乙合作,明年改成竞争”。动态嵌入的核心思路是:实体表示 = 基础向量 + 时间偏移向量,或者按时间片分别训练后再做对齐。这样同一个实体在不同时刻拥有不同坐标,但底层仍保留稳定的身份锚点。

TTransE 是经典方法之一,它对每个时间戳 τ 计算一个打分距离:

动态嵌入让模型的“记忆”不再是静态名片,而是会呼吸的角色档案。角色还是那个角色,但他的社交位置、职业状态会随剧情推进而移动,这正是时序知识图谱预测能力的基础。

fr(h,o,τ)=∥hτ+rτ−oτ∥\displaystyle f_r(h, o, \tau) = \left\| \mathbf{h}_\tau + \mathbf{r}_\tau - \mathbf{o}_\tau \right\|
距离越小,说明“头实体 + 关系 ≈ 尾实体”在这个时间点越可能成立。
  1. 打分函数f_r(h, o, \tau) 是给“头实体 h、关系 r、尾实体 o、时间 τ”四元组打分的函数,输出一个距离值。
    fr(h,o,τ)\displaystyle f_r(h, o, \tau)
  2. 时间下标\mathbf{h}_\tau 表示头实体在 τ 时刻的动态向量。
    hτ\displaystyle \mathbf{h}_\tau
  3. 关系向量\mathbf{r}_\tau 表示关系在 τ 时刻的向量,关系也可以随语境演化。
    rτ\displaystyle \mathbf{r}_\tau
  4. 向量范数\left\| \cdot \right\| 表示向量长度,用来度量“头 + 关系 − 尾”的剩余误差。
    ∥hτ+rτ−oτ∥\displaystyle \left\| \mathbf{h}_\tau + \mathbf{r}_\tau - \mathbf{o}_\tau \right\|

时序推理机制:预测关系下一步怎么走

纪录片看到一半,观众会猜测后面剧情。时序推理就是让模型根据已播放的剧情,推断还没发生或没拍到的关系。

时序推理包括两条路线:一是基于时间规则的符号推理,比如“如果 A 和 B 在 t1 合作,B 和 C 在 t2 成为队友,且 t2 晚于 t1,那么 A 和 C 可能产生合作关系”;二是基于嵌入表示的统计推理,比如图谱补全——给定时间 t,预测此时缺失的三元组。

一条典型的时间规则可以写成:

时序推理机制让纪录片不只是一段录好的素材,而是一个会“追剧”的助理。它能补全缺失镜头、识别前后矛盾、回答“他们是怎么走到这一步的”,并为最后的预测模块提供弹药。

∀x,y,z, t1<t2<t3: partner(x,y,t1)∧member(y,z,t2)⇒partner(x,z,t3)\displaystyle \forall x,y,z,\, t_1 < t_2 < t_3: \ \mathrm{partner}(x,y,t_1) \wedge \mathrm{member}(y,z,t_2) \Rightarrow \mathrm{partner}(x,z,t_3)
这组符号表达的是:当两个事件在时间上按先后顺序发生时,模型可以推导出第三个时间点的关系。
  1. 全称量词\forall x,y,z 表示这条规则对任意实体都适用。
    ∀x,y,z\displaystyle \forall x,y,z
  2. 时间顺序t_1 < t_2 < t_3 限定事件必须严格按先后发生。
    t1<t2<t3\displaystyle t_1 < t_2 < t_3
  3. 前提条件\mathrm{partner}(x,y,t_1) \wedge \mathrm{member}(y,z,t_2) 表示两个事实在各自时间点成立。
    partner(x,y,t1)∧member(y,z,t2)\displaystyle \mathrm{partner}(x,y,t_1) \wedge \mathrm{member}(y,z,t_2)
  4. 推理结论\Rightarrow \mathrm{partner}(x,z,t_3) 表示可以推出未来或缺失的关系。
    ⇒partner(x,z,t3)\displaystyle \Rightarrow \mathrm{partner}(x,z,t_3)

事件预测应用:预测下一幕剧情

纪录片剪辑师会依据时间线预测下一个镜头。事件预测就是给定截至当前的全部“剧情快照”,预测未来会出现什么新事件、旧事件会不会消失、关系标签会不会变化。

在舆情场景中,事件可以是“某平台新增一条负面评论关系”;在金融风控中,事件可以是“某企业新增一条担保关系”。建模时,我们把历史快照序列当作条件,输出候选事件成为下一个事实的概率:

事件预测把“已经发生的关系演化”转化为“下一步最可能的剧情”。有了它,舆情平台能提前预警,风控系统能提前冻结高风险链路,历史研究也能用模型辅助推演因果。

P(et+1∣G0:t)=softmax⁡(Φ(et+1,G0:t))\displaystyle P(e_{t+1} \mid \mathcal{G}_{0:t}) = \operatorname{softmax}\left( \Phi(e_{t+1}, \mathbf{G}_{0:t}) \right)
这个公式表示:给定从 0 到 t 时刻的历史快照,模型对每个候选事件打分并归一化成概率。
  1. 候选事件e_{t+1} 表示下一个时刻可能发生的一条事件,比如“甲和丙建立合作”。
    et+1\displaystyle e_{t+1}
  2. 历史条件\mathcal{G}_{0:t} 表示从 0 到 t 时刻的全部快照序列。
    G0:t\displaystyle \mathcal{G}_{0:t}
  3. 打分模型\Phi(e_{t+1}, \mathbf{G}_{0:t}) 是事件预测模型的打分函数,输出一个实数。
    Φ(et+1,G0:t)\displaystyle \Phi(e_{t+1}, \mathbf{G}_{0:t})
  4. 归一化\operatorname{softmax}(\cdot) 把所有候选事件的得分变成概率,概率最高的就是预测的下一幕。
    softmax⁡(⋅)\displaystyle \operatorname{softmax}(\cdot)

动态建模与部署:让纪录片持续更新

纪录片不能永远只剪旧素材,要持续补充新素材、选择合适剪辑节奏。动态建模与部署关注如何在生产环境中维护和优化时序知识图谱系统。

动态建模要解决三个问题:用多长的时间窗、多久更新一次快照、如何让旧事实“淡出”。常见做法是快照增量更新加时间衰减因子,让近期事实对损失函数的影响更大。模型选型要看数据是否真的具备强时序性,如果只是偶尔变化,静态模型反而更稳定。

部署时还要配套时间索引、版本管理和监控评估。一个实用的时序损失项可以写成:

动态部署像经营一座持续更新的纪录片素材库:定期追加素材、清理过期内容、监控画面质量。只有建模、存储、更新、评估四者配合,时序知识图谱才能从实验室走进生产环境。

Ltime=∑t=0TλT−t ℓ(Gt,G^t)\displaystyle \mathcal{L}_{\text{time}} = \sum_{t=0}^{T} \lambda^{T-t}\, \ell(\mathcal{G}_t, \hat{\mathcal{G}}_t)
这个公式表示:每个历史时刻的误差都乘上时间衰减系数,离当前越远的事实权重越低。
  1. 累计求和\sum_{t=0}^{T} 把所有时间切片上的损失相加。
    ∑t=0T\displaystyle \sum_{t=0}^{T}
  2. 衰减系数\lambda^{T-t} 中 λ 是 0 到 1 之间的衰减因子,指数越大表示越靠近当前。
    λT−t\displaystyle \lambda^{T-t}
  3. 单步损失\ell(\mathcal{G}_t, \hat{\mathcal{G}}_t) 是第 t 步快照的预测误差。
    ℓ(Gt,G^t)\displaystyle \ell(\mathcal{G}_t, \hat{\mathcal{G}}_t)
  4. 整体目标整个公式让模型在拟合历史的同时,更重视最近的变化趋势。
    Ltime\displaystyle \mathcal{L}_{\text{time}}

AI 应用场景

舆情演化预测

阶段:模型应用与推理服务

解决的问题:传统关键词监测只能统计热度,看不出“公众—话题—情绪”之间的关系如何随时间传播。时序知识图谱能把每小时的微博转发、评论、负面情绪落成快照,再用动态嵌入发现谣言扩散路径,预测下一个热点。

具体案例:某舆情平台把官媒、KOL、公众设为实体,把转发、评论、负面情绪设为关系,按小时建快照。TTransE 对候选事件排序后,系统提前两小时预警了一次负面情绪爆发,比关键词监测提前一个周期。

金融风险预警

阶段:特征建模与风险推理

解决的问题:担保链、股权穿透关系是动态的,静态图谱只能看到当前关系,无法识别“一个月后可能断裂的担保圈”。时序知识图谱用时间区间表示担保关系,捕捉企业间关系的建立、存续和解除。

具体案例:某银行用时间区间记录担保关系,结合时序推理规则发现“企业 A 担保 B、B 担保 C,且 A、C 行业景气度同时下降”的高危链,提前生成了预警名单。

历史周期分析

阶段:知识构建与跨学科分析

解决的问题:历史文献中的事件有明确先后顺序,人工梳理因果链非常耗时。时序知识图谱把朝代、人物、事件作为实体,用四元组记录“发生时间”,支持研究者按时间窗查询和推演。

具体案例:数字人文项目中,研究者用图谱补全推断“某项政策颁布后三年内哪些地区起义事件增加”,发现了几条此前未被文献直接记载的潜在关联。

Python 演示

python82 行
import randomimport math  class TemporalTransE:    def __init__(self, entities, relations, times, dim=4, lr=0.05, margin=1.0):        self.entities = list(entities)        self.relations = list(relations)        self.times = list(times)        self.dim = dim        self.lr = lr        self.margin = margin        self.entity_base = {e: [random.uniform(-0.5, 0.5) for _ in range(dim)] for e in self.entities}        self.rel_emb = {r: [random.uniform(-0.5, 0.5) for _ in range(dim)] for r in self.relations}        self.time_bias = {(e, t): [random.uniform(-0.1, 0.1) for _ in range(dim)]                          for e in self.entities for t in self.times}     def embed_entity(self, entity, t):        base = self.entity_base[entity]        bias = self.time_bias[(entity, t)]        return [b + delta for b, delta in zip(base, bias)]     def score(self, s, r, o, t):        h = self.embed_entity(s, t)        rel = self.rel_emb[r]        tail = self.embed_entity(o, t)        return sum((h[i] + rel[i] - tail[i]) ** 2 for i in range(self.dim))     def corrupt(self, s, r, o, t):        if random.random() < 0.5:            s = random.choice(self.entities)        else:            o = random.choice(self.entities)        return s, r, o, t     def train_step(self, facts):        total = 0.0        for s, r, o, t in facts:            ns, nr, no, nt = self.corrupt(s, r, o, t)            pos = self.score(s, r, o, t)            neg = self.score(ns, nr, no, nt)            loss = max(0.0, self.margin + pos - neg)            total += loss            if loss > 0:                h = self.embed_entity(s, t)                rel = self.rel_emb[r]                tail = self.embed_entity(o, t)                for i in range(self.dim):                    grad = h[i] + rel[i] - tail[i]                    self.entity_base[s][i] -= self.lr * grad                    self.time_bias[(s, t)][i] -= self.lr * grad                    self.rel_emb[r][i] -= self.lr * grad                    self.entity_base[o][i] += self.lr * grad                    self.time_bias[(o, t)][i] += self.lr * grad        return total / len(facts)  def main():    entities = ["甲", "乙", "丙"]    relations = ["合作", "竞争"]    times = [0, 1, 2]    facts = [        ("甲", "合作", "乙", 0),        ("乙", "竞争", "丙", 0),        ("甲", "合作", "丙", 1),        ("乙", "竞争", "丙", 1),        ("甲", "合作", "乙", 2),        ("甲", "合作", "丙", 2),    ]    model = TemporalTransE(entities, relations, times, dim=4, lr=0.05, margin=1.0)    for epoch in range(50):        loss = model.train_step(facts)    pos_score = sum(model.score(*fact) for fact in facts) / len(facts)    unseen = ("乙", "合作", "丙", 2)    neg_score = model.score(*unseen)    print("训练后正样本平均得分:", round(pos_score, 4))    print("未出现过的三元组得分:", round(neg_score, 4))    print("序列: 甲乙合作(t0) -> 甲丙合作(t1) -> 预测乙丙关系变化")  if __name__ == "__main__":    main()
目的:用简化版 TTransE 在含时间维度的四元组上训练动态嵌入,观察正样本得分低于未出现样本的趋势。
  1. self.entity_base = {e: [random.uniform(-0.5, 0.5) for _ in range(dim)] for e in self.entities}每个实体先有一个“常住形象”,也就是身份锚点。
  2. bias = self.time_bias[(entity, t)]取出该时间点对应的“状态偏移”,让实体在不同时间有不同坐标。
  3. return sum((h[i] + rel[i] - tail[i]) ** 2 for i in range(self.dim))这是 TTransE 的核心翻译距离。
  4. neg = self.score(ns, nr, no, nt)对随机替换过的负样本打分。
  5. loss = max(0.0, self.margin + pos - neg)合页损失:正样本得分应比负样本低出一个间隔。
  6. self.entity_base[s][i] -= self.lr * grad简单梯度下降,让头实体朝“更像尾减去关系”的方向微调。
  7. loss = model.train_step(facts)一个训练轮次返回平均损失,方便观察模型收敛。

常见误区

误区我只要在数据库里给每条关系加一个 `start_time` 字段,就算建好时序知识图谱了。

正解时序知识图谱不只是“存储层带时间”,还要求建模层能用时间做推理、嵌入和预测。就像给照片手写一个日期不代表它是纪录片,还需要时间轴、镜头顺序和剪辑逻辑把画面串成故事。

为何常见:因为静态知识图谱太深入人心,很多人把“时间字段”当成全部,忽略了时间维度对模型结构、推理规则和部署流程的系统性影响。

误区把时间戳转成一个数,塞进向量里和实体特征拼在一起,就是动态嵌入。

正解更好的做法是让时间参与实体表示本身,比如基础向量加时间偏移向量,或使用时间感知打分函数。单纯拼接时间数字,模型很容易把它当成无关噪声,学不到“关系随时间的演化规律”。

为何常见:很多人在静态模型里做过“加特征”的操作,惯性思维让他们把时间也当成一个普通特征,没有意识到时间维度改变了问题的结构。

误区事件预测和链接预测一样,把历史所有三元组混在一起训练就行。

正解事件预测对时间顺序极敏感。把不同时刻的事实混在一起,等于把纪录片的镜头全部打乱再播放,模型会丢失“谁先发生、谁后发生”的因果线索,预测未来事件的能力会大幅下降。

为何常见:静态链接预测的流程已经标准化,初学者容易忽略时序任务对数据切分、训练窗口和评估协议的特殊要求。

误区只要数据里有时间,就无脑上动态嵌入模型,动态一定碾压静态。

正解如果数据变化稀疏、时间信号弱,静态模型反而更稳定、更容易训练。选型应该先做时序性检验,再决定是否引入额外复杂度。给一张长期不变的合影配豪华剪辑团队,只会浪费预算。

为何常见:技术选型容易被“新方法更好”的直觉带偏,缺少对数据本身时间强度的判断。

误区要保证时序图谱最新,就必须每天用全部数据重新训练一次模型。

正解实时全图重训练成本极高,且旧数据会淹没新信号。常见做法是快照增量更新:只训练新时间窗内的数据,配合时间衰减和版本管理,既控制成本又能及时反映变化。

为何常见:实验室里数据量小,全量训练很轻松;到了生产环境,人们才发现数据和算力都不允许“每天重拍整部纪录片”。

面试题

Q1. 时序知识图谱相对于静态知识图谱的核心区别是什么?

单选题 · easy

  • A.节点数量成倍增加
  • B.关系携带时间信息← 正确答案
  • C.边的颜色更加丰富
  • D.无法进行链接预测

答案:B。时序图谱的本质是让关系具有“成立时间”信息,因此能回答“某段时间内是否成立”“关系如何演变”等问题。其他选项都是对差异的误解,节点数量、颜色和链接预测能力都不是核心区别。

Q2. 一条时序事实通常用什么结构表示?

单选题 · easy

  • A.二元组(头实体,关系)
  • B.三元组(头,关系,尾)
  • C.四元组(头,关系,尾,时间)← 正确答案
  • D.四元组(时间,头,关系,尾)

答案:C。静态知识图谱用三元组(头、关系、尾),时序知识图谱在尾部再加一个时间维度,形成四元组。选项 D 虽然也是四个元素,但顺序不合规范,时间应放在事实末尾作为约束条件。

Q3. TTransE 动态嵌入的核心思想是什么?

单选题 · easy

  • A.头向量加关系向量约等于尾向量← 正确答案
  • B.头向量加时间向量约等于尾向量
  • C.关系向量加尾向量约等于头向量
  • D.所有向量都初始化为零向量

答案:A。TTransE 沿用 TransE 的翻译思想:在特定时间 τ 下,h(τ) + r(τ) ≈ o(τ)。它把时间作为下标融入实体和关系的表示,而不是单独加一个时间向量。

Q4. 时间区间表示相比点时间戳的最大优势是什么?

单选题 · mid

  • A.能描述事件发生的持续时长← 正确答案
  • B.能显著减少实体数量
  • C.能替代所有静态三元组
  • D.能免去时间对齐工作

答案:A。点时间戳只能表示瞬间状态,而时间区间可以表达“任职三年”“合作从 2020 到 2023”这类持续型关系。它不是为了减少实体数量,也不能替代静态三元组。

Q5. 以下哪些属于时序知识图谱中常用的动态建模策略?

多选题 · mid

  • A.用快照序列建模动态图← 正确答案
  • B.用时间感知嵌入捕获演化← 正确答案
  • C.把所有时间戳强制取平均
  • D.用增量更新维护模型← 正确答案

答案:ABD。快照序列、时间感知嵌入和增量更新都是处理时间维度的手段。把时间戳取平均会抹掉顺序信息,相当于把纪录片所有帧叠成一张模糊合影,是错误的做法。

Q6. 哪些场景更适合用时序知识图谱?

多选题 · mid

  • A.舆情话题随时间的演化分析← 正确答案
  • B.金融担保链的风险传导追踪← 正确答案
  • C.权威百科静态事实查询
  • D.历史王朝更迭周期研究← 正确答案

答案:ABD。舆情、金融、历史都强调关系随时间变化,符合时序知识图谱的核心价值。权威百科静态查询没有显著时间动态,用普通知识图谱就足够。

Q7. 事件预测中为什么要引入时间衰减因子?

单选题 · hard

  • A.让近期事实对预测影响更大← 正确答案
  • B.让所有历史事实权重相同
  • C.让模型参数量减少一半
  • D.让时间戳自动变成向量

答案:A。现实世界的关系会过时,近期事实通常比很久以前的事实更有预测价值。时间衰减因子会给近因更高权重,避免旧数据淹没当前信号。它与参数量和时间戳向量化没有直接关系。

Q8. 时序知识图谱部署的优化要点包括哪些?

多选题 · hard

  • A.对多版本数据建立时间索引← 正确答案
  • B.采用快照增量更新策略← 正确答案
  • C.建立推理准确率监控体系← 正确答案
  • D.完全放弃离线批处理服务

答案:ABC。时间索引支持高效按时间查询,增量更新控制成本,监控体系保障线上质量。完全放弃离线批处理会导致冷启动和回溯分析困难,批流结合才是常见做法。

Q9. 动态嵌入训练中,哪一项最容易造成时间泄漏?

单选题 · extreme

  • A.用时间感知负采样构造负例
  • B.用未来事实训练当前时刻表示← 正确答案
  • C.增加实体嵌入的向量维度
  • D.对时间偏移施加正则约束

答案:B。训练当前时刻的表示时如果混入未来事实,模型会在“考试时偷看答案”,推理指标虚高。时间感知负采样、增加维度和正则约束都是常规技术,不会泄漏未来信息。

Q10. 时序图谱补全任务的目标是什么?

单选题 · mid

  • A.预测给定时间下缺失的三元组← 正确答案
  • B.移除所有关系的时间属性
  • C.对每个时间点重新随机初始化
  • D.把时间维度压缩成一个整数

答案:A。时序图谱补全要回答“在某个时间 t,某个实体和另一个实体是否存在某关系”这类缺失事实问题。移除时间属性或压缩时间维度都会破坏时序语义,随机初始化更不是补全。