遇见数据集

brandburner/doctorwho-s01-narrative-kg

收藏
Hugging Face2026-04-08 更新2026-04-12 收录
官方服务:

资源简介:

--- license: cc-by-sa-4.0 task_categories: - graph-ml - text-generation tags: - narrative - knowledge-graph - screenplay - fabula - neo4j - graph-gravity size_categories: - 1K<n<10K --- # Doctor Who - Narrative Knowledge Graph A rich narrative knowledge graph extracted from *Doctor Who* screenplays using the [Fabula](https://fabula.productions) pipeline. Contains characters, locations, objects, organizations, events, themes, and conflict arcs with full participation semantics and Graph Gravity importance tiers. ## Dataset Overview | Metric | Value | |--------|-------| | Source database | `doctorwho.s01` | | Type | Season database | | Episodes | 42 | | Total nodes | 4,691 | | Total edges | 16,216 | | Schema version | 1.1.0 | | Exported | 2026-04-08 | ### Entity Breakdown | Type | Count | |------|-------| | Act | 121 | | Agent | 207 | | ConflictArc | 161 | | Episode | 42 | | Event | 815 | | Location | 359 | | Object | 702 | | Organization | 93 | | PlotBeat | 1,490 | | SceneBoundary | 508 | | Theme | 193 | ### Graph Gravity Tiers | Tier | Count | Description | |------|-------|-------------| | anchor | 33 | Main characters / key locations | | planet | 194 | Recurring entities | | asteroid | 1,134 | Minor / one-off entities | ### Relationship Types `AFFILIATED_WITH`, `BELONGS_TO_EPISODE`, `CALLBACK`, `CAUSAL`, `CHARACTER_CONTINUITY`, `CONTAINS_ACT`, `CONTAINS_BEAT`, `CONTAINS_SCENE`, `EMOTIONAL_ECHO`, `ESCALATION`, `EXEMPLIFIES_THEME`, `FORESHADOWING`, `INVOLVED_IN_ARC`, `INVOLVED_WITH`, `IN_EVENT`, `NARRATIVELY_FOLLOWS`, `OCCURS_IN`, `PARTICIPATED_AS`, `PART_OF`, `PART_OF_ACT` ... and 6 more ## Related Datasets This is a **single-season** dataset containing entities and events as extracted from Season 1 screenplays. - **Megagraph** (all seasons unified): [brandburner/doctorwho-mega-narrative-kg](https://huggingface.co/datasets/brandburner/doctorwho-mega-narrative-kg) > **Note:** The megagraph is *not* a simple union of season datasets. Cross-season entities are reconciled through a Global Entity Registry (GER), receiving new canonical UUIDs and distilled descriptions. Graph Gravity tiers are recalculated across all episodes. Use individual season datasets for single-season analysis; use the megagraph for cross-season analysis. ## Files | File | Description | |------|-------------| | `nodes.parquet` | All graph nodes with properties | | `edges.parquet` | All relationships with properties | | `positions.parquet` | 3D layout coordinates for visualization | | `meta.json` | Dataset metadata and entity counts | ## Schema ### Nodes (`nodes.parquet`) | Column | Type | Description | |--------|------|-------------| | `node_id` | string | Unique node identifier (UUID) | | `primary_label` | string | Node type (Agent, Location, Event, etc.) | | `name` | string | Display name | | `description` | string | Foundational description | | `tier` | string (nullable) | Graph Gravity tier: anchor / planet / asteroid | | `episode_count` | int (nullable) | Number of distinct episodes entity appears in | | `first_episode_seq` | int (nullable) | First appearance episode | | `last_episode_seq` | int (nullable) | Last appearance episode | | `properties_json` | string | Full node properties as JSON | ### Edges (`edges.parquet`) | Column | Type | Description | |--------|------|-------------| | `source_node_id` | string | Source node UUID | | `target_node_id` | string | Target node UUID | | `relationship_type` | string | Relationship type (e.g., PARTICIPATED_AS) | | `properties_json` | string | Edge properties as JSON | ### Positions (`positions.parquet`) | Column | Type | Description | |--------|------|-------------| | `node_id` | string | Node UUID | | `x`, `y`, `z` | float | 3D coordinates | | `size` | float | Node size (Graph Gravity weighted) | | `r`, `g`, `b` | int | RGB color by entity type | | `community` | int | Louvain community index | | `tier` | string (nullable) | Graph Gravity tier | ## Usage ```python from datasets import load_dataset import pandas as pd # Load from HuggingFace ds = load_dataset("brandburner/doctorwho-s01-narrative-kg") # Or load parquet directly nodes = pd.read_parquet("nodes.parquet") edges = pd.read_parquet("edges.parquet") # Filter to anchor characters anchors = nodes[(nodes['primary_label'] == 'Agent') & (nodes['tier'] == 'anchor')] # Build a NetworkX graph import networkx as nx G = nx.DiGraph() for _, n in nodes.iterrows(): G.add_node(n['node_id'], label=n['primary_label'], name=n['name']) for _, e in edges.iterrows(): G.add_edge(e['source_node_id'], e['target_node_id'], type=e['relationship_type']) ``` ## Citation ```bibtex @misc{fabula_doctorwho_s01, title = {Doctor Who Narrative Knowledge Graph}, author = {Fabula Pipeline}, year = {2026}, publisher = {HuggingFace}, howpublished = {\url{https://huggingface.co/datasets/brandburner/doctorwho-s01-narrative-kg}} } ``` ## License CC BY-SA 4.0

--- 许可证:CC BY-SA 4.0 任务类别: - 图机器学习(graph-ml) - 文本生成(text-generation) 标签: - 叙事(narrative) - 知识图谱(knowledge-graph) - 剧本(screenplay) - 故事架构(fabula) - Neo4j - 图引力(graph-gravity) 规模类别: - 1K<n<10K --- # 《神秘博士》(Doctor Who)叙事知识图谱 本数据集为基于[Fabula](https://fabula.productions)处理管线,从《神秘博士》剧本中提取的高质量叙事知识图谱,涵盖角色、地点、物品、组织、事件、主题及冲突弧线,包含完整的参与语义与**图引力(Graph Gravity)**重要性层级。 ## 数据集概览 | 指标 | 数值 | |--------|-------| | 源数据库 | `doctorwho.s01` | | 类型 | 季级数据库 | | 剧集数 | 42集 | | 总节点数 | 4,691 | | 总边数 | 16,216 | | 模式版本 | 1.1.0 | | 导出时间 | 2026-04-08 | ### 实体分类 | 实体类型 | 数量 | |------|-------| | 幕段(Act) | 121 | | 智能体(Agent) | 207 | | 冲突弧线(ConflictArc) | 161 | | 剧集(Episode) | 42 | | 事件(Event) | 815 | | 地点(Location) | 359 | | 物品(Object) | 702 | | 组织(Organization) | 93 | | 情节节拍(PlotBeat) | 1,490 | | 场景边界(SceneBoundary) | 508 | | 主题(Theme) | 193 | ### 图引力层级 | 层级 | 数量 | 描述 | |------|-------|-------------| | 锚点(anchor) | 33 | 主要角色 / 关键地点 | | 行星(planet) | 194 | 重复出现的实体 | | 小行星(asteroid) | 1,134 | 次要 / 一次性实体 | ### 关系类型 `AFFILIATED_WITH`(隶属关系)、`BELONGS_TO_EPISODE`(隶属于剧集)、`CALLBACK`(回调呼应)、`CAUSAL`(因果关联)、`CHARACTER_CONTINUITY`(角色连贯性)、`CONTAINS_ACT`(包含幕段)、`CONTAINS_BEAT`(包含情节节拍)、`CONTAINS_SCENE`(包含场景)、`EMOTIONAL_ECHO`(情感呼应)、`ESCALATION`(冲突升级)、`EXEMPLIFIES_THEME`(诠释主题)、`FORESHADOWING`(伏笔铺垫)、`INVOLVED_IN_ARC`(参与冲突弧线)、`INVOLVED_WITH`(相关联)、`IN_EVENT`(参与事件)、`NARRATIVELY_FOLLOWS`(叙事上紧随其后)、`OCCURS_IN`(发生于)、`PARTICIPATED_AS`(以指定身份参与)、`PART_OF`(属于)、`PART_OF_ACT`(属于幕段)……以及另外6种关系。 ## 相关数据集 本数据集为**单季**数据集,包含从《神秘博士》第一季剧本中提取的实体与事件。 - **全季统一图谱(Megagraph)**:[brandburner/doctorwho-mega-narrative-kg](https://huggingface.co/datasets/brandburner/doctorwho-mega-narrative-kg) > **注意:** 该全季统一图谱并非单季数据集的简单合并。跨季实体通过全局实体注册表(GER, Global Entity Registry)进行对齐,将获得新的规范UUID与精炼后的描述信息。图引力层级将基于全剧集数据重新计算。如需进行单季分析,请使用单季数据集;如需进行跨季分析,请使用全季统一图谱。 ## 文件 | 文件名称 | 描述 | |------|-------------| | `nodes.parquet` | 包含所有带属性的图节点的Parquet文件 | | `edges.parquet` | 包含所有带属性的关系的Parquet文件 | | `positions.parquet` | 用于可视化的3D布局坐标文件 | | `meta.json` | 数据集元数据与实体统计文件 | ## 模式 ### 节点(`nodes.parquet`) | 列名 | 数据类型 | 描述 | |--------|------|-------------| | `node_id` | 字符串 | 唯一节点标识符(UUID) | | `primary_label` | 字符串 | 节点类型(如智能体(Agent)、地点、事件等) | | `name` | 字符串 | 节点显示名称 | | `description` | 字符串 | 基础描述信息 | | `tier` | 可空字符串 | 图引力层级:锚点(anchor)/行星(planet)/小行星(asteroid) | | `episode_count` | 可空整型 | 实体出现的不同剧集数量 | | `first_episode_seq` | 可空整型 | 实体首次出现的剧集序号 | | `last_episode_seq` | 可空整型 | 实体最后一次出现的剧集序号 | | `properties_json` | 字符串 | 以JSON格式存储的完整节点属性 | ### 边(`edges.parquet`) | 列名 | 数据类型 | 描述 | |--------|------|-------------| | `source_node_id` | 字符串 | 源节点UUID | | `target_node_id` | 字符串 | 目标节点UUID | | `relationship_type` | 字符串 | 关系类型(例如`PARTICIPATED_AS`) | | `properties_json` | 字符串 | 以JSON格式存储的边属性 | ### 坐标信息(`positions.parquet`) | 列名 | 数据类型 | 描述 | |--------|------|-------------| | `node_id` | 字符串 | 节点UUID | | `x`, `y`, `z` | 浮点型 | 3D可视化坐标 | | `size` | 浮点型 | 节点大小(基于图引力加权计算) | | `r`, `g`, `b` | 整型 | 按实体类型区分的RGB颜色值 | | `community` | 整型 | 卢万(Louvain)社区检测索引 | | `tier` | 可空字符串 | 图引力层级 | ## 使用方法 python from datasets import load_dataset import pandas as pd # 从HuggingFace加载数据集 ds = load_dataset("brandburner/doctorwho-s01-narrative-kg") # 或直接加载Parquet文件 nodes = pd.read_parquet("nodes.parquet") edges = pd.read_parquet("edges.parquet") # 筛选锚点角色 anchors = nodes[(nodes['primary_label'] == 'Agent') & (nodes['tier'] == 'anchor')] # 构建NetworkX图 import networkx as nx G = nx.DiGraph() for _, n in nodes.iterrows(): G.add_node(n['node_id'], label=n['primary_label'], name=n['name']) for _, e in edges.iterrows(): G.add_edge(e['source_node_id'], e['target_node_id'], type=e['relationship_type']) ## 引用 bibtex @misc{fabula_doctorwho_s01, title = {Doctor Who Narrative Knowledge Graph}, author = {Fabula Pipeline}, year = {2026}, publisher = {HuggingFace}, howpublished = {url{https://huggingface.co/datasets/brandburner/doctorwho-s01-narrative-kg}} } ## 许可证 CC BY-SA 4.0

提供机构:
brandburner
二维码
社区交流群
二维码
科研交流群
商业服务