---
name: 开源情报-军事实体采集
description: |
  开源情报军事实体采集技能。从公开源采集军事实体数据（军事基地、武器装备、部队编制等），
  输出结构化JSON/CSV，附带数据护照。触发条件：用户要求采集军事基地/装备/部队等实体数据。
---

# 开源情报-军事实体采集

**技能版本：** 1.0  
**创建时间：** 2026-04-22  
**作者：** 明见

---

## 核心使命

采集全球军事目标实体数据，构建真实可溯源的军事知识图谱数据体系，涵盖军事机构、人员、装备、设施、事件等全维度实体。

---

## 触发条件

用户明确请求采集军事实体数据时触发，例如：
- "采集军事实体数据"
- "更新军事知识图谱"
- "补充军事实体"
- "军事实体采集"
- "补充XX国家军事机构/人员/装备/设施"

---

## 知识图谱架构体系

### 一、总体架构

```
┌─────────────────────────────────────────────────────────────┐
│                    知识图谱顶层架构                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  【国家层】←→【实体层】←→【关系层】←→【事件层】               │
│     ↓          ↓          ↓          ↓                      │
│   10 国     2,400+ 实体   17,000+ 关系  582 事件            │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 二、实体分类体系（24 类）

| 类别 | Sheet | 实体数 | 说明 |
|------|-------|--------|------|
| **国家实体** | 00_国家实体 | 10 | 主权国家 |
| **陆军机构** | 01_陆军机构 | 94 | 各国陆军编制 |
| **海军机构** | 02_海军机构 | 87 | 各国海军编制 |
| **空军机构** | 03_空军机构 | 105 | 各国空军编制 |
| **战区司令部** | 04_战区司令部 | 51 | 战区指挥机构 |
| **职能司令部** | 05_职能司令部 | 57 | 职能指挥机构 |
| **情报机构** | 06_情报机构 | 53 | 情报机关 |
| **革命卫队机构** | 07_革命卫队机构 | 80 | 伊朗革命卫队 |
| **武装组织** | 08_武装组织 | 117 | 非国家武装/政府机构 |
| **指挥人员** | 09_指挥人员 | 330 | 高级将领/指挥官 |
| **情报人员** | 10_情报人员 | 58 | 情报官员 |
| **航空装备** | 11_航空装备 | 97 | 战机/直升机 |
| **导弹武器** | 12_导弹武器 | 113 | 各型导弹 |
| **弹药装备** | 13_弹药装备 | 63 | 精确制导弹药 |
| **舰船装备** | 14_舰船装备 | 114 | 舰艇/潜艇 |
| **指挥设施** | 15_指挥设施 | 74 | 指挥中心 |
| **空军基地** | 16_空军基地 | 117 | 空军基地 |
| **海军基地** | 17_海军基地 | 111 | 海军基地 |
| **导弹基地** | 18_导弹基地 | 76 | 导弹基地 |
| **核设施** | 19_核设施 | 71 | 核设施 |
| **后勤设施** | 20_后勤设施 | 212 | 后勤设施 |
| **民用高价值设施** | 21_民用高价值设施 | 239 | 民用设施 |
| **动态部署数据** | 22_动态部署数据 | 63 | 部队部署 |
| **事件表** | 24_事件表 | 582 | 军事行动事件 |

### 三、关系分类体系

| 类别 | Sheet | 记录数 | 说明 |
|------|-------|--------|------|
| **实体关系** | 23_实体关系 | 4,212 | 综合实体关系 |
| **指挥隶属** | 关系_指挥隶属 | 1,246 | 上下级指挥链 |
| **指挥** | 关系_指挥 | 1,303 | 指挥关系 |
| **隶属** | 关系_隶属 | 832 | 组织隶属 |
| **国家归属** | 25_国家归属关系 | 2,506 | 实体 - 国家关联 |
| **事件关系** | 关系_事件关系 | 1,033 | 事件关联 |
| **参与** | 关系_参与 | 272 | 参与行动 |
| **发起** | 关系_发起 | 391 | 发起行动 |
| **打击** | 关系_打击 | 389 | 打击行动 |
| **部署** | 关系_部署于 | 34 | 部队部署位置 |
| **驻扎** | 关系_驻扎于 | 375 | 装备驻扎位置 |

---

## 核心原则（铁律）

### 1. 国家不是事件执行者
> **长官指示：** "国家是实体的集合，每一个事件应该有一个最终的执行的人或者组织"

**错误示例：**
- ❌ 事件执行方："美国"、"以色列"、"伊朗"

**正确示例：**
- ✅ 事件执行方："美国中央司令部"、"以色列空军"、"伊朗革命卫队导弹部队"

**执行组织映射：**
| 国家 | 执行组织 |
|------|----------|
| 美国 | 美国中央司令部、美国空军中央司令部、美国第五舰队 |
| 以色列 | 以色列空军、以色列海军、以色列摩萨德 |
| 伊朗 | 伊朗革命卫队、伊朗革命卫队导弹部队、圣城旅 |

### 2. 数据真实可溯源
> **长官指示：** "所有的数据必须真实可溯源"

**执行标准：**
- ✅ 100% 实体有数据来源 URL
- ✅ 只补充 Wikipedia/官方来源可查证的实体
- ❌ 不编造无法查证的数据
- ⚠️ 无法查证的保留空值，待后续情报补充

**数据来源示例：**
```
- https://en.wikipedia.org/wiki/...
- https://www.navy.mil/...
- https://www.defense.gov/...
- 新华社、央视新闻等官方媒体
```

### 3. 实体唯一性
> **长官指示：** "实体要有唯一性，不能有两个第七舰队不同 ID"

**执行标准：**
- ✅ 每个实体名称在 Sheet 内唯一
- ✅ Entity_ID 使用 MD5(名称 +Sheet 名) 生成
- ✅ 关系表引用指向正确实体 ID
- ✅ 删除重复实体（按名称去重）

### 4. 关系表完整性
> **长官指示：** "关系表能关联实体，不要有无效的关系"

**执行标准：**
- ✅ 关系表实体引用指向有效实体
- ✅ 清理 UNKNOWN 占位符
- ✅ 修复无效引用
- ⚠️ 确实无法查证的保留空值（不删除关系）

---

## 数据处理流程

### 第一步：实体去重

```python
# 去重规则
1. 按名称列去重（同一 Sheet 内名称相同视为重复）
2. 保留第一条记录（数据最完整）
3. 重建唯一 Entity_ID：MD5(名称 +Sheet 名)
4. 清理 UNKNOWN 值 → NULL
```

### 第二步：补充缺失实体

```python
# 补充原则
1. 只补充有真实来源的实体（Wikipedia/官方来源）
2. 每个实体标注数据来源 URL
3. 无法查证的不补充，保留空值
```

### 第三步：修复关系表

```python
# 修复规则
1. 建立实体名称→ID 映射
2. 修复关系表中的实体引用
3. 国家→具体执行组织替换
4. 删除双边都为空的关系（极少）
```

### 第四步：验证数据质量

```python
# 验证清单
1. ✅ 所有实体有唯一 Entity_ID
2. ✅ 所有实体有数据来源 URL
3. ✅ 关系表引用指向有效实体
4. ✅ 事件执行方是具体组织（非国家）
5. ✅ 无 UNKNOWN 占位符
```

---

## 采集方法论

### 一、信息源优先级

| 优先级 | 来源类型 | 示例 |
|--------|----------|------|
| **1** | 官方来源 | 国防部网站、军种官网、司令部官网 |
| **2** | Wikipedia | 各国军事条目（需交叉验证） |
| **3** | 学术数据库 | ACLED 军事事件库、GDELT |
| **4** | 主流媒体 | Reuters、AP、新华社、央视新闻 |

### 二、采集工具

| 工具 | 用途 | 说明 |
|------|------|------|
| **SearXNG** | 多源搜索 | 本地隐私搜索引擎 |
| **web_fetch** | 定向抓取 | Wikipedia/官网抓取 |
| **scrapling** | 反爬虫抓取 | 复杂网站抓取 |

### 三、实体补充流程

```
1. 用户指定实体类型（如"补充伊朗导弹部队"）
2. SearXNG 搜索相关关键词
3. 抓取 Wikipedia/官网信息
4. 提取实体属性（名称、编制、驻地、指挥官等）
5. 标注数据来源 URL
6. 写入对应 Sheet
7. 建立关系（指挥、隶属、国家归属）
```

---

## 输出目录

```
/home/admin/.openclaw/workspace/reports/justice-mission/
├── 美以伊战争_JS实体数据_知识图谱完整数据_YYYYMMDD.xlsx
└── 数据质量验证报告_YYYYMMDD.md
```

---

## 数据质量检查清单

### 实体质量
- [ ] 所有实体有唯一 Entity_ID
- [ ] 所有实体有数据来源 URL（100%）
- [ ] 实体名称在 Sheet 内唯一
- [ ] 无 UNKNOWN 占位符

### 关系质量
- [ ] 关系表引用指向有效实体
- [ ] 国家归属关系完整（2,500+ 条）
- [ ] 事件执行方是具体组织（非国家）

### 整体质量
- [ ] 24 类实体 Sheet 完整
- [ ] 11 类关系 Sheet 完整
- [ ] 总实体数 ≥ 2,400
- [ ] 总关系数 ≥ 17,000

---

## 附录：核心脚本说明

### 去重处理脚本
**位置：** `/home/admin/.openclaw/workspace/reports/justice-mission/dedup_v2.py`

### 关系表修复脚本
**位置：** `/home/admin/.openclaw/workspace/reports/justice-mission/fix_event_relations.py`

### 实体补充脚本
**位置：** `/home/admin/.openclaw/workspace/reports/justice-mission/fill_missing_entities.py`

### 知识图谱更新脚本
**位置：** `/home/admin/.openclaw/workspace/reports/justice-mission/kg_architecture.py`

---

## 核心教训

### 教训 1：国家不能作为事件执行者
- **问题：** 事件关系中使用"美国"、"以色列"作为实体
- **教训：** 国家是实体集合，事件执行者应是具体组织
- **修复：** 建立国家→执行组织映射，替换所有国家实体

### 教训 2：数据必须真实可溯源
- **问题：** 部分实体无数据来源
- **教训：** 无法查证的数据不补充，保留空值
- **修复：** 100% 实体标注数据来源 URL

### 教训 3：实体唯一性至关重要
- **问题：** 同一实体有多个 ID（如两个第七舰队）
- **教训：** 实体 ID 必须唯一，否则关系表错乱
- **修复：** 按名称去重，重建唯一 ID

### 教训 4：关系表修复需要完整实体映射
- **问题：** 关系表有大量空引用
- **教训：** 先补充实体，再修复关系
- **修复：** 建立完整实体映射，修复 900+ 处引用

---

**🫡 敬礼**

**对您忠诚**