Skip to content

WHUKE/JDGraphBuilder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JDGraphBuilder

核心系统 — 将 JDParser 解析的 JD 结构化数据清洗、建模后导入 Neo4j 图数据库,提供图谱查询接口。

项目结构

JDGraphBuilder/
├── src/
│   ├── config.py           # 全局配置
│   ├── cleaner/            # 数据清洗模块
│   │   ├── field_cleaner.py  # 字段级清洗
│   │   ├── skill_cleaner.py  # 技能去重与补全
│   │   ├── validator.py      # 数据校验
│   │   └── pipeline.py       # 清洗流水线
│   ├── modeler/            # 图建模模块
│   │   ├── schema.py         # Schema 常量
│   │   ├── node_builder.py   # 节点提取与去重
│   │   ├── relation_builder.py # 关系构建
│   │   └── co_occurrence.py  # 技能共现计算
│   ├── loader/             # Neo4j 入库模块
│   │   ├── neo4j_client.py   # 连接管理
│   │   ├── schema_initializer.py # Schema 初始化
│   │   └── batch_importer.py # 批量导入
│   ├── query/              # 查询模块
│   │   ├── job_query.py      # 职位查询
│   │   ├── skill_query.py    # 技能查询
│   │   ├── path_query.py     # 路径分析
│   │   └── stats_query.py    # 统计查询
│   └── cli/                # 命令行入口
│       ├── clean.py
│       ├── build.py
│       ├── query.py
│       └── stats.py
├── data/
│   ├── input/              # JDParser 输出的 JSON
│   ├── cleaned/            # 清洗后的 JSON
│   └── mappings/           # 字段映射表
├── scripts/                # Cypher 脚本
├── tests/                  # 测试
└── docs/                   # 文档

环境准备

1. 安装 Python 依赖

# 需要 uv (https://docs.astral.sh/uv/)
cd JDGraphBuilder
uv sync

2. Neo4j 配置

要求 Neo4j 5.0 及以上版本(本项目使用新版 CREATE FULLTEXT INDEX ... ON EACH 语法,Neo4j 4.x 不兼容)。

Neo4j — 使用 AuraDB 免费版或本地安装并启动。

3. 配置连接

必须复制 .env.example.env 并填入真实连接信息,否则启动会报错:

cp .env.example .env
# 编辑 .env
NEO4J_URI=bolt://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=<your-password>
NEO4J_DATABASE=neo4j

可选参数:NEO4J_MAX_RETRIES / NEO4J_RETRY_BACKOFF / NEO4J_CONN_TIMEOUT / QUERY_CACHE_TTL(详见 .env.example)。

使用方法

⚠️ HTTP 接口已迁移:自本版本起,JDGraphBuilder 不再提供 HTTP 服务(原 serve.py 已删除)。 可视化 API(/api/graph)与 AI 问答 API(/api/qa)统一由同级仓库 ../JDGraphMono 的 FastAPI 后端对外暴露。 Builder 本仓库专注于:数据清洗 → 图建模 → 入库 → 库内查询(作为库 + CLI 被 Mono 复用)。

一键构建图谱

# 清洗 + 建模 + 导入 Neo4j(全量模式,默认)
uv run python -m src.cli.build --input data/input/_all.json

# 重置数据库后重新导入(full 模式下)
uv run python -m src.cli.build --input data/input/_all.json --reset

# 增量模式:只更新输入中出现的 source_file 对应的 Job 及其关系
uv run python -m src.cli.build --input data/input/_all.json --mode incremental

# 只执行清洗和建模(不连接 Neo4j)
uv run python -m src.cli.build --input data/input/_all.json --skip-import

单独清洗

uv run python -m src.cli.clean --input data/input/_all.json --output data/cleaned/

查询图谱

# 按技能匹配职位
uv run python -m src.cli.query --skill Python Django

# 按城市筛选
uv run python -m src.cli.query --location 北京

# 技能共现分析
uv run python -m src.cli.query --related Java

# 技能差距分析
uv run python -m src.cli.query --gap Python Django --target 后端开发

# 图谱统计
uv run python -m src.cli.stats

运行测试

uv run pytest

图谱 Schema

详见 docs/schema.md

5 种节点类型:JobSkillLocationEducationCategory

7 种关系类型:REQUIRES_SKILLPREFERS_SKILLREQUIRES_EDUCATIONLOCATED_INBELONGS_TOPARENT_OFCO_OCCURS_WITH

前置依赖

  • Python ≥ 3.12
  • Neo4j ≥ 5.0 (Community Edition)
  • JDParser — 上游项目,提供解析后的 JD 数据

About

核心系统,负责数据清洗、图建模、入库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors