想象你手里摊着一张城市地图:商场、学校、地铁站被整齐地画在纸上,一条条马路把它们连成网络。地图刚印好时精确无比,但三个月后再看呢?那家商场可能已经停业,那条路或许正围挡施工。静态知识图谱就像这张印刷地图——把“谁和谁有关系”固化成永不过期的连线,可真实世界从来不会静止。时序知识图谱则像手机里的实时导航:每一条关系都带着“有效期”标签,记录着“Acme公司在2020至2023年间获得BigL投资”这类的动态事实。于是搜索不再只是“现在谁和谁有关联”,而是“2022年谁与谁发生过关系”“这段关系的热度这几年是怎么走的”。这篇文章会沿着“印刷地图如何进化为实时导航”的故事线,带你读懂时序知识图谱的原理、更新策略与工程挑战。

岗位关联

掌握时序知识图谱,你就能让搜索系统“看见时间”——在金融舆情、医疗指南、新闻检索等强时效场景中,把静态知识库升级为动态决策引擎。这是搜索工程师与知识图谱工程师拉开差距的分水岭技能。

目录
  1. 可视化演示
  2. 静态图谱困境
  3. 时序事实表示
  4. 时序事实抽取
  5. 增量更新策略
  6. 过期知识处理
  7. 时序推理应用
  8. 构建维护挑战
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示时序知识图谱的实体关系时间维度建模、增量更新策略与过期知识处理、时序推理在事件搜索中的应用。

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

时序知识图谱 实体关系附加时间维度 事实动态演变建模 (h,r,t,τ)∈G_temporal 四元组结构记录事实及其有效时间区间支持时序查询

静态图谱困境

一张印刷地图把所有道路画成永恒存在的直线。但在真实城市里,路会断、桥会拆、店铺会易主。静态知识图谱就是这张“过于理想”的印刷地图:它把世界压缩成一个个三元组——(头实体,关系,尾实体),比如(Acme公司,获得投资,BigL资本)。画成图后,Acme和BigL之间就多了一条永远存在的连线,仿佛这条投资关系永远不会结束。

现实中,这条关系有明确的起止日期。2020年融资到账,2023年投资方套现退出——关系在2023年就结束了。如果只用静态三元组建模,“Acme当前仍然受BigL投资”这个查询就会得到错误答案。这就好比用户问“这条路现在通不通”,印刷地图只会回答“地图上画着呢”。

为了解决这个问题,研究者把时间维度引入知识图谱,提出了四元组结构 (s, r, o, [t_s, t_e]),其中 t_s 是关系成立的起始时刻,t_e 是结束时刻。一个事实只有在 t_s 到 t_e 之间才“有效”。知识图谱从“一幅静态画”变成了一部“有时间轴的电影”。

回到地图的比喻:三元组是“路永远通”,四元组则是给每条路贴上了“允许通行时段”的电子路牌。导航软件之所以不会把你带进废弃小路,是因为它知道每条路的“有效期”。时序知识图谱的核心,正是为知识世界中的每一条关系都装上这样一块电子路牌。

G={(s,r,o,[ts,te])∣s,o∈E,  r∈R,  ts≤te}\displaystyle G = \{(s, r, o, [t_s, t_e]) \mid s, o \in E,\; r \in R,\; t_s \leq t_e\}
这个公式的意思是:知识图谱G由一组组四元组组成,每个四元组描述“实体s和实体o之间存在关系r,且该关系的有效期是区间[t_s, t_e]”。
  1. s, o ∈ Es和o是知识图谱中的实体,可以是人、公司、城市等任何具体事物。
    s,o∈E\displaystyle s, o \in E
  2. r ∈ Rr是关系类型,来自预定义的关系集合R,比如“获得投资”“任职于”。
    r∈R\displaystyle r \in R
  3. [t_s, t_e] 区间约束关系有效的时间闭区间,t_s是最早成立时刻,t_e是最晚成立时刻,且t_s不能晚于t_e。
    ts≤te\displaystyle t_s \leq t_e

时序事实表示

路过施工路段时,你会看到围挡上写着“2025年3月至6月封闭施工”。这不是一句闲聊,而是给“这条路可以通行”这个事实加上了明确的有效期标签。时序知识图谱干的是同样的事:给每个事实标注“从什么时候开始成立、到什么时候结束”。

实际建模中,时间表达有“时间点”和“时间区间”两种形态。有的关系只关心某个瞬间,比如“某公司于2023年8月1日上市”;有的关系持续一段时间,比如“某高管2021年至2024年任职某公司”。前者是点事件,用单个时间戳表示;后者是区间事件,用[t_s, t_e]表示。两者可以互相转换:一个区间可以压缩成“开始时间点”和“结束时间点”两个点事件。

时间粒度的选择也很关键。新闻搜索需要精确到天甚至小时,而“谁投资了谁”这类企业关系精确到月就够了。为了控制存储开销,通常设置最小时间粒度 τ_min,只有持续时长不小于 τ_min 的事实才被单独建模,过短的事件就合并或丢弃。这就像导航地图只显示“有通行价值的道路”,不会为一条十米长的小巷专门画一条线。

就像导航不会为只持续五分钟的临时管制专门造一条“管制道路”,时序图谱也不会为转瞬即逝的消息浪费节点和边。合适的时间粒度,是“地图既能看到街道,又不会糊成一团”的关键。

Δt=te−ts,Δt≥τmin\displaystyle \Delta t = t_e - t_s, \quad \Delta t \geq \tau_{min}
公式说明:一个事实的有效持续时长必须达到最小时间粒度,否则不值得入图。这是存储成本与信息价值的权衡。
  1. 计算持续时长用结束时刻减去开始时刻,得到事实持续多久。
    Δt=te−ts\displaystyle \Delta t = t_e - t_s
  2. 门槛检查只有当持续时间不小于最小粒度 τ_min 时,才把事实存入图里。
    Δt≥τmin\displaystyle \Delta t \geq \tau_{min}

时序事实抽取

实时导航之所以“实时”,背后有一群情报采集员在听交管广播、看路况摄像头,把“今早8点,中山西路发生追尾事故,预计两小时恢复”浓缩成一条带时间的路况。时序知识图谱也需要这样的“情报员”:从新闻、公告、维基百科等非结构化文本中,抽取“什么时间、谁和谁、发生了什么事”。

这个环节叫时序事实抽取。一条典型的流水线包含三步:先用命名实体识别找出文本中的实体;再用时间表达式识别找出“2023年”“去年”“上个月”等时间短语;最后做事件抽取,把实体、关系、时间组装成四元组。其中“去年”“三周前”这类相对时间必须经过时间归一化换算成绝对时间才能参与计算,否则“去年获投”永远无法与时间区间对齐。

假设抽取模型对候选事实 f 的置信度为 P_extract(f),时间对齐模型的置信度为 P_align(t),两者相乘得到该事实的整体置信度。低于阈值的候选事实会被丢弃,避免把“听错的新闻”灌进图谱。

就像路况员不仅要听清“事故”两个字,还要确认“是今天早上而不是上周”——时序事实抽取的难点从来不只是“找出来”,更是“放对时间位置”。放错了时间的知识,比没有知识更危险。

P(f∣d,t)=Pextract(f)⋅Palign(t)\displaystyle P(f \mid d, t) = P_{extract}(f) \cdot P_{align}(t)
公式表示:从文档d中抽取“事实f发生在时间t”的置信度,等于“f被正确抽取”的置信度乘以“时间t被正确对齐”的置信度。一个环节不靠谱,整体就不可信。
  1. 抽取置信度抽取模型对“实体与关系判断正确”的置信度,比如“Acme真的获得了BigL投资”。
    Pextract(f)\displaystyle P_{extract}(f)
  2. 对齐置信度时间对齐模型对“该事实确实发生在t时刻”的置信度,比如“获投发生在2020年”。
    Palign(t)\displaystyle P_{align}(t)
  3. 整体置信度两个置信度相乘,任何一个偏低都会拉低最终分数,从而过滤有风险的候选事实。
    P(f∣d,t)=Pextract(f)⋅Palign(t)\displaystyle P(f \mid d, t) = P_{extract}(f) \cdot P_{align}(t)

增量更新策略

印刷地图的更新方式是“重新印一批”,成本高、周期长。实时导航完全不同:它平时只下载“差分更新包”——处理完一条施工信息就更新一条,而不是把整张地图重新下载一遍。知识图谱的更新也面临同样的抉择。

全量重建指每隔一段时间用最新数据重新构建整个图谱,实现简单但成本随规模线性增长。时序场景更常用增量更新,只处理新增、修改、删除的局部事实。增量更新还分成两种节奏:批量刷新,每几小时合并一批变更后写入;流式更新,消息到达即处理,适合股价、突发新闻这类高动态数据。

增量更新的核心是计算“变化量”:用新时刻的图 G_{t+1} 减去旧时刻的图 G_t,得到一组新增和删除的四元组。更新过程还要处理冲突消解——比如新旧数据源对同一关系的有效期判断出现矛盾时,按照数据源时效性评级或人工规则裁决。这就像导航同时收到“前方施工”和“道路已通车”两条矛盾信息,需要一个机制来决定信谁。

用“不重印地图,只贴路况贴纸”的思维去做图谱维护,更新延迟可以从“几天”压缩到“几分钟”。这正是时序知识图谱能在瞬息万变的场景中保持生命力的秘密。

ΔGt=Gt+1∖Gt\displaystyle \Delta G_{t} = G_{t+1} \setminus G_t
公式说明:一次增量更新,就是算出图谱从t时刻到t+1时刻出现了哪些变化。把“整个图谱重新印一遍”变成“只替换变化的路段”。
  1. 相邻快照G_t 与 G_{t+1} 是相邻两个时间点的图谱状态。
    Gt,  Gt+1\displaystyle G_t, \; G_{t+1}
  2. 集合差运算G_{t+1} 中存在而 G_t 中不存在的部分,就是新增或变更的事实集合。
    Gt+1∖Gt\displaystyle G_{t+1} \setminus G_t

过期知识处理

施工路段总有完工的一天。围挡撤掉,导航里的“封闭施工”提示也会消失,这条路重新恢复为“可通行”。知识图谱里的过期事实同样需要“撤围挡”——但方式很有讲究。

处理过期事实有三种常见策略。物理删除直接把四元组从图中移除,省空间但丢失了历史轨迹;软删除把事实标记为“已失效”,在时间轴上它仍然可见;版本化则保留旧版本快照,供任意时间点回溯查询。多数生产系统采用“软删除+版本化”的组合:日常查询过滤失效事实,历史分析仍能访问完整时间线。

为了让搜索排序感知“新鲜度”,工程上还会给事实计算时效性权重。设事实的结束时刻为 t_e,当前时刻为 t,衰减系数为 λ,那么事实权重随时间的推移呈指数衰减。λ越大,旧事实被遗忘得越快;λ越小,历史知识被保留得越久。搜索引擎可以把这个权重与静态相关性得分融合,实现“既相关又新鲜”的排序。

“撤围挡”不等于“从地图上抹去这条路”。对导航来说,知道“这里以前封过路”能帮助预测下次施工时长;对知识图谱来说,保留历史痕迹,才能既服务当下搜索,又支撑回溯分析。

w(f,t)=e−λ⋅(t−te),t>te\displaystyle w(f, t) = e^{-\lambda \cdot (t - t_e)}, \quad t > t_e
公式说明:事实结束得越久,权重就越低,如同路况提醒从“全屏弹窗”逐渐淡出为“不再提示”。λ 是遗忘速度的旋钮。
  1. 指数衰减结构自然常数 e 让权重平滑地从1向0衰减,不出现跳变。
    e−λ⋅(t−te)\displaystyle e^{-\lambda \cdot (t - t_e)}
  2. 衰减系数 λ控制遗忘速度;λ大则旧事实快速失去权重,λ小则缓慢衰减。
    λ⋅(t−te)\displaystyle \lambda \cdot (t - t_e)
  3. 权重趋近零当当前时间远大于结束时间时,权重趋近0但不等于0,为历史分析留下线索。
    lim⁡t→∞w(f,t)=0\displaystyle \lim_{t \to \infty} w(f, t) = 0

时序推理应用

通勤老司机都有这种经验:周五下午3点打开导航,它提醒“XX路预计拥堵40分钟”。这个预测来自对历史路况的统计——“每个周五下午这条路都堵”。时序知识图谱的推理应用,正是把“谁和谁在何时有关”升级为“这段关系正处于上升还是衰退”。

时序推理体现在两类搜索场景。一类是时序事件搜索,比如“2023年Acme经历了哪些重大事件”——按时间线输出实体在指定窗口内发生的事实;另一类是趋势分析,分析某个关系(如“获得投资”“高管离职”)在不同时间窗内的出现频率变化,回答“这类事件是变多了还是变少了”。

趋势可以用“关系频率变化率”来度量:统计关系 r 在 t1、t2 两个时间窗内出现的有效事实数量 N1、N2,用数量差除以时间差,得到可比较的趋势指标。大于0表示热度上升,小于0表示衰退。搜索排序时,可以把趋势指标与时效性权重融合——一个正在升温的事件,其相关的历史事实也会被排得更靠前。

导航预测拥堵并不是玄学,而是把“这条路过去每个周五都堵”的统计规律讲给用户听。时序知识图谱的趋势分析同理——当用户问“最近这类事件是不是变多了”,图谱把时间维度上的变化娓娓道来,搜索就从“查档案”进化成了“看风向”。

Trend(s,r,o)=Nt2(s,r,o)−Nt1(s,r,o)t2−t1\displaystyle \text{Trend}(s, r, o) = \frac{N_{t_2}(s, r, o) - N_{t_1}(s, r, o)}{t_2 - t_1}
公式说明:趋势值衡量一段时间内“某个关系相关的有效事实数量”是增长还是减少,反映关系的热度方向。
  1. 有效事实计数N_{t_1} 与 N_{t_2} 是关系 (s, r, o) 在 t1、t2 两个时刻的有效事实数量。
    Nt1(s,r,o),Nt2(s,r,o)\displaystyle N_{t_1}(s, r, o), \quad N_{t_2}(s, r, o)
  2. 数量差t2 比 t1 多的有效事实数,代表该关系在这段时间内新增的价值。
    Nt2−Nt1\displaystyle N_{t_2} - N_{t_1}
  3. 归一化变化率除以时间差,把绝对增长量折算成“单位时间的变化率”,使不同时长的窗口可以横向比较。
    Nt2−Nt1t2−t1\displaystyle \frac{N_{t_2} - N_{t_1}}{t_2 - t_1}

构建维护挑战

实时导航的流畅体验背后,是遍布大街小巷的采集车、传感器和人工巡检团队——每一张“活地图”都在持续烧钱。时序知识图谱的构建与维护,同样是一笔需要精打细算的账。

构建成本主要来自三块:数据采集成本,包括订阅新闻流、企业公告、数据库许可;标注成本,让标注员或规则引擎确认“事实+时间”是否正确;更新维护成本,包括硬件资源、定时任务、流式管道的持续运行。其中“时间校验”比普通实体标注昂贵得多,因为人必须读原始文本才能确认时间对齐是否正确。

更麻烦的是冷启动问题:早期阶段没有历史积累,无法回填完整时间线。同时,更新频率与质量存在权衡——更新越快,噪声越多;更新越慢,时效性越差。工程上通常对“高动态关系”(如股价、人事变动)用高频流式更新,对“低动态关系”(如公司注册地)用低频批量刷新。此外,增量更新虽然比全量重建省资源,却需要更复杂的冲突消解和版本管理逻辑,这些隐形成本常被低估。

印刷地图的利润来自“一次印刷,多次售卖”;实时导航的竞争力来自“持续运营,实时更新”。时序知识图谱的构建者必须接受一个现实:它不是一次性项目,而是需要长期供血的活体系统。谁能在成本与时效之间找到平衡,谁才真正握有“活地图”的钥匙。

Cost=Ccollect+Cannotate+Crefresh\displaystyle \text{Cost} = C_{collect} + C_{annotate} + C_{refresh}
公式说明:总维护成本等于采集、标注、更新三部分成本之和。优化任何一项,都不能突破整体预算上限。
  1. 采集成本获取多源数据的订阅、爬取与接入成本。
    Ccollect\displaystyle C_{collect}
  2. 标注成本时间标注与事实校验的人工或模型成本。
    Cannotate\displaystyle C_{annotate}
  3. 更新维护成本高频增量更新、存储版本与运维监控的持续投入。
    Crefresh\displaystyle C_{refresh}

AI 应用场景

金融投研事件追踪

阶段:数据采集与知识更新(增量更新 + 时序推理)

解决的问题:传统投研系统用静态知识图谱回答“谁和谁有关”,但投资人真正关心的是“这段关系何时建立、何时结束、当前是否仍有效”。并购传闻、股权质押、高管离职这类事件的价值几乎完全由时间决定。时序知识图谱按时间轴组织事件,让“关系变化”变得可搜索、可排序。

具体案例:某券商智能投研平台把上市公司公告、监管处罚、股权变动等数据建成时序图谱。分析师搜索“某公司2023年重大事件”,系统返回一条结构化时间线:“2023-03 获得B轮融资、2023-08 创始人卸任、2023-11 被监管问询”。系统还能对“融资事件”做趋势统计,提示分析师该行业融资热度正在上升。这就像导航不仅告诉你“这条路现在堵不堵”,还告诉你“这条路在这个时段越来越堵”。

医学知识库的时效性维护

阶段:过期知识处理与软删除

解决的问题:医学指南和药物禁忌更新频繁,一个“推荐使用”的关系可能在一年后变成“慎用”甚至“禁用”。静态图谱会继续展示过时的用药建议,造成医疗风险。时序知识图谱为每条医学事实标注“指南版本有效期”,查询时自动过滤过期版本。

具体案例:某医院临床决策支持系统把“某药对某适应证的有效性”建成带生效日期的四元组。当新指南发布,系统用软删除把旧关系标记为失效,再新增“更新后的推荐关系”。医生搜索旧方案时,系统会提示“该推荐已于2024年3月被替代”,同时展示替代方案的生效时间。这就像导航收到“老路改道”的通知后,既在路线规划中避开老路,又保留“老路曾经怎么走”的历史记录。

Python 演示

python82 行
import math  class TemporalKnowledgeGraph:    """极简时序知识图谱:支持带有效期的四元组存储与查询。"""     def __init__(self):        self.facts = []      # 每个元素: [s, r, o, t_start, t_end]        self.entities = set()     def add_fact(self, s, r, o, t_start, t_end=None):        """添加带时间区间的事实,t_end 为空表示永不过期。"""        if t_end is None:            t_end = float("inf")        self.facts.append([s, r, o, t_start, t_end])        self.entities.add(s)        self.entities.add(o)     def expire_fact(self, s, r, o, t_end):        """软删除:将指定事实的结束时间更新为 t_end。"""        for f in self.facts:            if f[0] == s and f[1] == r and f[2] == o:                f[4] = t_end     def query_at(self, t, subject=None, rel=None, obj=None):        """查询 t 时刻所有有效的事实,可限定主体/关系/客体。"""        result = []        for f in self.facts:            if not (f[3] <= t <= f[4]):                continue            if subject is not None and f[0] != subject:                continue            if rel is not None and f[1] != rel:                continue            if obj is not None and f[2] != obj:                continue            result.append((f[0], f[1], f[2], f[3], f[4]))        return result     def count_at(self, t, rel):        """统计 t 时刻关系 rel 下有效事实的数量。"""        return sum(1 for f in self.facts if f[1] == rel and f[3] <= t <= f[4])     def trend(self, rel, t1, t2):        """计算关系 rel 在 [t1, t2] 时间窗内的变化趋势。"""        count_t1 = self.count_at(t1, rel)        count_t2 = self.count_at(t2, rel)        return ((count_t2 - count_t1) / max(float(t2 - t1), 1.0))     def weight_at(self, f, t, lam=0.2):        """计算事实 f 在 t 时刻的时效性权重(仅对已过期事实衰减)。"""        if t <= f[3]:            return 1.0        if f[4] == float("inf"):            return 1.0        if t <= f[4]:            return 1.0        dt = t - f[4]        return math.exp(-lam * dt)  def main():    kg = TemporalKnowledgeGraph()    kg.add_fact("Acme", "funded_by", "BigL", 2020, 2023)    kg.add_fact("Exe1", "works_at", "Acme", 2021, 2024)    kg.add_fact("Med1", "reports_on", "Acme", 2022, 2025)    kg.add_fact("Acme", "located_in", "Shanghai", 2018, None)     print("== 2022 年有效事实 ==")    for fact in kg.query_at(2022):        print(fact)     kg.expire_fact("Med1", "reports_on", "Acme", 2023)    print("\n== 2024 年仍有报道关系吗?==")    print(len(kg.query_at(2024, rel="reports_on")), "条")     print("\n== funded_by 趋势(2020->2024) ==")    print("Trend =", kg.trend("funded_by", 2020, 2024))  if __name__ == "__main__":    main()
目的:演示时序知识图谱的四元组存储、时间点查询、软删除和趋势计算——完整跑一遍“活地图”的四种基本操作。
  1. self.facts.append([s, r, o, t_start, t_end])每个事实以列表存储,结束时间后续可被软删除修改
  2. if not (f[3] <= t <= f[4])时间区间判断,只有落在有效期内的四元组才进入查询结果
  3. for f in self.facts: if f[0] == s and f[1] == r and f[2] == o匹配指定事实,将结束时间改为新值,完成软删除
  4. return sum(1 for f in self.facts if f[1] == rel and f[3] <= t <= f[4])统计某时刻某关系下的有效事实数量
  5. (count_t2 - count_t1) / max(float(t2 - t1), 1.0)数量差除以时间差,得到关系热度的变化趋势

常见误区

误区把时间当成普通属性塞进三元组,比如("Acme“, “获投”, ”BigL", "2022"),查询时做字符串匹配就够了。反正时间也是数据,存进属性表里不就行了?

正解时间应当参与图的结构语义,支持区间查询和时态推理。字符串标签无法回答“2023年中旬这条关系是否有效”这类范围判断问题。就像导航不会把“施工中”当景点标注在地图上,而是作为道路属性的有效期来建模。

为何常见:初学RDF时习惯把一切信息编码为属性值,忽略了时间在时序图谱中是“一等公民”,需要专门的区间表示和索引结构。

误区为了保证数据新鲜,网站每天晚上把整个知识图谱重新构建一遍,这不就是增量更新吗?反正结果都是“最新数据”。

正解全量重建的成本随图规模线性增长,大型图谱每天新增上亿条事实,全量重建需要数小时。真正的增量更新只处理变化的部分,像导航地图只下载差分数据包;更新延迟从“天”压缩到“分钟”,代价是需要更复杂的变更捕获和冲突消解。

为何常见:从批处理思维迁移到流式更新有学习曲线,全量重建实现最简单、最不容易出错,所以被当作默认方案。

误区事实一旦过期就该从图里彻底删除,节省存储空间,还能避免旧数据干扰搜索。留着过期数据只会让图谱越来越脏。

正解直接删除会丢失历史轨迹,导致“当时发生了什么”这类回溯性问题无法回答。正确做法是软删除(标记失效时间),让图谱保留完整时间线,检索时可以过滤过期事实。这就像导航保留已施工路段的历史数据,用于回答“上个月这里为什么绕行”。

为何常见:受传统数据库 DELETE 操作的影响,认为“清理 = 删除记录”。但知识图谱更强调语义完整性,历史本身就是一种有价值的信息资产。

误区时序推理这么高级,肯定得用复杂的深度学习模型,比如时序图神经网络或大模型提示工程,否则做不出效果。

正解很多实际场景用区间查询、时间衰减打分和简单趋势统计就足够。做一个“某关系在某时间窗内出现了多少次”的统计查询,用几个减法就能完成。就像一个导航用加减法算平均车速就能预测路况,不必上大模型。

为何常见:AI 技术文章容易把效果归功于模型复杂度,让初学者误以为“不堆模型就不专业”,忽视了轻量算法在实际工程中的可靠性和可解释性。

面试题

Q1. 时序知识图谱与静态知识图谱最核心的区别是什么?

单选题 · easy

  • A.增加了更多的实体类型
  • B.在实体和关系上附加了时间维度← 正确答案
  • C.用图数据库替代关系数据库
  • D.引入了深度学习推理算法

答案:B。B正确。时序图谱的本质是给“谁和谁有什么关系”加上时间维度,类似印刷地图升级为实时导航。A是实体层面的扩展,C是存储技术,D是推理算法,都不是时序图谱区别于静态图谱的本质特征。

Q2. 四元组 (s, r, o, [t_s, t_e]) 中,[t_s, t_e] 表示什么?

单选题 · easy

  • A.事实的创建和更新时刻
  • B.事实的有效起止时间区间← 正确答案
  • C.实体的出生和死亡日期
  • D.关系的查询缓存窗口

答案:B。B正确。[t_s, t_e] 是关系在现实世界中成立的有效期,比如“Acme在2020至2023年间获得BigL投资”。A是工程维护时间,C描述实体生命周期,D与查询缓存无关。只要关系仍在有效期,它就参与搜索;超过区间就被过滤或衰减。

Q3. “软删除”过期知识的核心思想是什么?

单选题 · hard

  • A.将知识放入回收站等待确认
  • B.标记失效时间并保留历史版本← 正确答案
  • C.降低过期知识在存储中的优先级
  • D.用新知识覆盖旧知识的内容

答案:B。B正确。软删除是把失效时间写入事实(如将结束时间改为昨天),历史版本依然可查询,日常搜索则自动过滤。A是操作系统概念,C只是调整存储层级,D会彻底丢失旧信息。就像导航撤掉施工围挡但保留施工记录,随时可以回看“当时发生了什么”。

Q4. 增量更新相比全量重建的优势有哪些?

多选题 · mid

  • A.节省计算资源和更新时间成本← 正确答案
  • B.让图谱始终反映最新的事实变化← 正确答案
  • C.完全避免数据冲突和错误
  • D.只处理变化部分,扩展性更好← 正确答案

答案:ABD。A、B、D正确。增量更新像导航只下载差分数据包,只处理变化的路段,因此省资源、延迟低、易扩展。C“完全避免冲突”太绝对——增量更新恰恰需要额外的冲突消解机制来处理多数据源矛盾,它减少的是全量重建的计算负担,而非数据质量风险。

Q5. 时间归一化在时序事实抽取中的作用是什么?

单选题 · mid

  • A.统一时间表述为可计算的时间数据← 正确答案
  • B.抽取时间短语并解析其数值
  • C.识别文本中的地名和机构名
  • D.对抽取结果进行降噪处理

答案:A。A正确。时间归一化把“去年”“上个月”这类相对时间换算成绝对时间,才能参与区间计算和存储。B是时间表达式识别本身,C是命名实体识别的任务,D是通用数据清洗。没有归一化,“去年获投”永远无法和图谱中的年份对齐,就像路况员分不清“今天”和“上周”的拥堵。

Q6. 时间衰减函数 w(t)=e^{-λ(t-t_e)} 中,增大 λ 会导致什么?

单选题 · mid

  • A.衰减加快,过期权重下降更陡← 正确答案
  • B.衰减减慢,过期知识更晚失效
  • C.所有知识的权重整体上升
  • D.所有时间区间自动延长

答案:A。A正确。λ是“遗忘速度”旋钮:λ越大,指数中的负号影响越强,过期事实的权重快速趋近于零。B方向反了,C与事实无关,D是混淆项。想象导航中的路况提醒,λ大就像“修路提示三天后就没人再看到”,λ小就像“半年前的老管制还挂在页面上”。

Q7. 时序知识图谱中,事实有效期的“时间粒度”选择需要考虑哪些因素?

多选题 · mid

  • A.场景对时间精度的要求← 正确答案
  • B.数据源的更新频率← 正确答案
  • C.存储和算力的开销← 正确答案
  • D.实体名称的字符长度

答案:ABC。A、B、C正确。时间粒度是“地图的缩放级别”:新闻搜索要精确到天,投资关系精确到月,粒度选择要匹配场景精度、数据更新频率和存储开销。D实体名称字符长度与时间精度毫无关系,属于干扰项。

Q8. 在事件搜索中,时序推理能帮助回答哪类问题?

单选题 · hard

  • A.查找城市中的公园列表
  • B.某时间点事实是否有效← 正确答案
  • C.投资机构投过哪些公司
  • D.判断两家公司同行关系

答案:B。B正确。时序推理的核心是“把事实放在时间轴上判断有效性”,例如“2023年3月Acme是否处于获投有效期内”。A是空间检索,C是静态关系查询,D是行业分类,都不需要时间维度。就像导航的核心能力不是“知道有哪些路”,而是“判断此刻哪条路能走”。

Q9. 时序图谱中“事实有效期”是指什么?

单选题 · easy

  • A.图谱数据的备份保留期限
  • B.事实在现实中成立的时间区间← 正确答案
  • C.用户访问该事实的会话时长
  • D.图谱系统的缓存过期时间

答案:B。B正确。事实有效期描述“这条关系在现实世界中真实成立的时间段”,是语义层面的属性。A是备份策略,C是用户会话,D是系统缓存,都是工程运维概念而非图谱语义概念。施工围挡上“3月至6月封闭”就是事实有效期在生活中的缩影。

Q10. 构建和维护时序知识图谱的主要成本来自哪些环节?

多选题 · extreme

  • A.多源异构数据的持续采集← 正确答案
  • B.时间标注与事实校验的人工审核← 正确答案
  • C.长期高频更新带来的运维投入← 正确答案
  • D.离线全量重建的批量计算费用

答案:ABC。A、B、C正确。数据采集、时间标注、持续更新运维是“活地图”三大开销。D离线全量重建恰恰是增量更新要避免的,它不是主要成本来源——即使作为初始化的一次性投入,占比也远低于长期运维。一个持续运营的时序图谱,真正的成本是“每一天都在发生”的高频开销。