AI Reader V2

智能知识图谱

AI Reader 的知识图谱将小说中错综复杂的人物关系以力导向图(Force-directed Graph)的形式直观呈现。系统从每章提取的 ChapterFact 中自动聚合关系数据,支持从几十人到数百人的大规模网络可视化。

关系类型自动识别

系统内置 _RELATION_TYPE_NORM 规范化映射表,覆盖 70+ 种关系类型变体。LLM 提取的原始关系描述(如"师父"、"师傅"、"授业恩师")会被自动归一化为标准类型,确保同一关系不会因措辞差异而重复出现。

归一化采用两级匹配策略:先精确匹配,再子串匹配,最大程度兼容 LLM 的多样化输出。

六大关系分类

每条归一化后的关系会被进一步分入 6 个语义分类,用于图谱着色和筛选:

分类 英文标识 典型关系 边颜色
血亲 family 父子、母女、兄弟、姐妹 暖色
亲密 intimate 夫妻、恋人、知己 粉色
师承 hierarchical 师徒、主仆、上下级 蓝色
社交 social 朋友、同门、邻居 绿色
敌对 hostile 仇敌、对手、宿敌 红色
其他 other 未归类关系 灰色

图谱上方提供 分类筛选芯片(Category Filter Chips),点击可快速显示/隐藏特定分类的关系边。

边(Edge)特性

  • 权重过滤:后端自动计算建议的最小权重阈值,滑动调节可隐藏低频关系,聚焦核心人物网络
  • 频次聚合:边的关系类型基于 Counter 统计最高频类型,而非"最后一章覆盖",结果更稳定
  • 虚线弱边:权重 <= 1 的关系以虚线绘制,视觉上区分一次性提及和持续关系
  • 悬浮详情:每条边显示 relation_type(最高频类型)、all_types(按频次排序的全部类型)和 category 分类

节点(Node)特性

  • 大节点:标签绘制在圆内部,适合主要角色
  • 小节点:标签显示在节点下方,避免遮挡
  • 尺寸映射:节点大小反映角色出场章节数或关系连接数
  • 颜色编码:人物蓝色、地点绿色、物品橙色、组织紫色,全局一致

密集网络优化

针对大部头小说(如《红楼梦》400+ 角色)的专项优化:

  • minChapters 智能默认值:根据节点总数自动设定最小出场章节数,仅保留重要角色
  • 力间距自适应:力导向排斥力随图密度动态调整,防止节点重叠
  • 标签碰撞检测:每帧追踪标签矩形区域,重叠时自动隐藏低优先级标签
  • 交互式图例:图例条目可点击,等同分类筛选

别名自动合并

基于 AliasResolver 的 Union-Find 算法,自动合并同一角色的多个称呼。例如"林黛玉"、"黛玉"、"林妹妹"会被识别为同一人物节点,关系和出场次数自动汇总。

别名来源包括:

  • 实体预扫描阶段的字典别名(entity_dictionary.aliases
  • 逐章提取时 LLM 识别的新别名(characters[].new_aliases

安全过滤机制防止通用称谓(如"妖精"、"那怪"、"师父")成为 Union-Find 节点,避免不相关角色被错误合并。

暗色模式

图谱通过 MutationObserver 监听系统/应用主题切换,自动适配暗色模式下的背景、节点和标签颜色。

章节范围筛选

支持指定章节区间(chapter_start ~ chapter_end),仅展示特定章节范围内的关系数据,便于追踪人物关系的阶段性变化。