# 知识工程 **Repository Path**: wuhushangjiang_1/knowledge-engineering ## Basic Information - **Project Name**: 知识工程 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-09-03 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多专业培养计划 GraphRAG 问答系统 当前版本 **0.5.0(2026-09-14)**。已整合人工智能、网络空间安全、计算机科学与技术、软件工程、马克思主义理论五个专业,默认进入跨专业统一问答,也可切换单专业检索。 本次保留main的AI/网安数据与补修比较、cs的计划项模型及多跳检索、soft-engineering的软件工程模块、my的马院课程和知识资料。分支来源、修复与验证见 [五专业合并说明](docs/five_program_integration.md)。 > 培养方案建议学期不等于学校正式先修要求。课程关系属于项目推断。马院扫描件整理数据的学分、学期含估算值,回答会保留这一说明;涉及该方案的按时间补修计算会提示资料不足。 ## 数据规模 | 专业 | 培养方案 ID | 原始计划项 | 去重课程 | 推断边 | | --- | --- | ---: | ---: | ---: | | 人工智能 | tju-ai-2024 | 105 | 95 | 302 | | 计算机科学与技术 | tju-cs-2024 | 121 | 111 | 54 | | 网络空间安全 | tju-cybersecurity-2024 | 103 | 93 | 300 | | 软件工程 | tju-se-2024 | 106 | 96 | 306 | | 马克思主义理论 | tju-marxism-2024 | 90 | 77 | 525 | 共525条计划项、212个不同课程代码。AI与网安共有64个代码,五份数据交集为36个代码。这不是学生已修课程数量,也不是学分互认结论。同一课程在不同方案中的学分、性质和学期可以不同。 - AI、计科、软件工程从提供的2024级PDF直接解析。 - 网安沿用此前确认,将2025级源文件映射用于2024级,保留source_cohort=2025。 - 软件工程修复23列表格漏行,记录从80补齐为106,并处理第83条跨页性质。 - 马院沿用my分支整理的90条记录,绑定扫描件指纹,明确标注学分换算、学期估算和粗粒度页码。 - 原始PDF不提交Git,已提交JSON足以运行问答;重建所需文件见 [data/raw](data/raw/README.md)。 ## 安装与启动 Python支持3.11–3.13。在仓库根目录执行: ```powershell python -m venv .venv .\.venv\Scripts\python.exe -m pip install -e ".[dev]" .\.venv\Scripts\python.exe -m streamlit run app/streamlit_app.py ``` 已有虚拟环境可复用。仓库位置改变后重新安装,以更新可编辑安装路径。不要覆盖已有.env;真实模型参照.env.example配置DeepSeek或Ollama。 网页默认**内置关系图 + 离线证据预览**,不需要密钥,明确标注“未调用LLM”。侧栏可切换真实模型和Neo4j。 ## 示例与命令行 - 人工智能和网安有哪些共同课程? - 五个专业有哪些共同课程? - 计科和软件工程的专业核心课有什么不同? - 计科:从程序设计原理到算法设计与分析有什么多跳路径? - 大二结束从网安转到AI需要补修哪些专业课? - 马院的马克思主义基本原理一哲学部分主要学习哪些知识? ```powershell python scripts/ask.py --retrieval-only "五个专业有哪些共同课程?" python scripts/ask.py --program cs --retrieval-only --mode graph "从程序设计原理到算法设计与分析有什么多跳路径?" python scripts/ask.py --program se --retrieval-only "第六学期有哪些课程?" ``` --program支持完整ID和ai/cybersecurity/cs/se/marxism;统一问答用all。注册表兼容旧大写ID。 ## 重建与Neo4j导入 统一配置:[data/programs.json](data/programs.json)。 ```powershell python scripts/parse_curriculum.py --all python scripts/infer_curriculum_relations.py --all python scripts/import_neo4j.py --all ``` 也可用--program se等单独处理。解析校验记录数和字段;计科、软件工程及马院固定整理数据还校验PDF指纹。换版PDF需要重新核对配置。培养方案与推断文件来源指纹必须一致。 Neo4j需启动并配置NEO4J_URI、NEO4J_USER、NEO4J_PASSWORD、NEO4J_DATABASE。采用Program/ProgramCourse/PlanEntry模型,课程身份共享、原始计划项分别保存,每个专业的事实、关系、知识映射在同一事务中导入。 旧0.4数据库不会随代码自动迁移。新导入后刷新网页缓存;旧大写programId关系可能保留,新问答按新模型和小写ID查询。最初合并未连接原运行数据库;后续完整系统验收已完成实库迁移和五专业导入。旧名称约束迁移使用 python scripts/migrate_neo4j_schema.py --apply,默认不带--apply仅检查。 ## 实现范围 - PDF解析、来源页与指纹、课程代码对齐、原始计划项保存。 - 中文字符TF-IDF;通用Hybrid交替合并文本和图证据。 - 计科独立路由、有界多跳搜索与RRF融合。 - 五专业交集、专业差异与带条件的候选补修。 - 公开知识按培养方案限定映射,不自动当作其他专业官方大纲。 - 统一入口允许声明范围内的跨专业证据;单专业服务继续拒绝混入其他方案。 补修计算假设来源专业同期必修课已通过,同代码或规范化后同名按项目规则视为覆盖。没有个人成绩或教务审批数据。“大三结束不可转”是沿用的演示规则,不是已核验的学校政策。 ## 验证 ```powershell python -m pytest -q python scripts/evaluate_cs.py python scripts/evaluate_multi_program.py --output reports/integration_isolation.json python scripts/evaluate_retrieval.py --program tju-ai-2024 --output-dir reports/integration-ai ``` 2026-09-14完整系统验收:**153 passed,0 skipped**,已启用Neo4j实库测试。另完成30项检索组合、7个DeepSeek真实问答场景及8项浏览器检查,Ruff检查通过。详见 [完整测试报告](reports/system_validation/README.md)。 计科检索验收10/10;AI/计科实库隔离18/18;AI Hybrid固定集10/10、Recall@12=0.967。这些不是生成答案准确率。最新真实模型和实库结果位于reports/system_validation/;其他旧reports/cs_*及交付说明含原分支历史记录。 ## 主要目录 ```text app/ Streamlit统一界面 src/course_graphrag/ programs.py 五专业注册表 ingestion/ PDF、整理数据、归一化 cs/ 计科规则、路径、检索 graph/ 通用规则与Neo4j retrieval/ 文本、图、跨专业查询 generation/ 证据约束与问答 data/programs.json 专业配置入口 data/processed/ 可运行的结构化数据 data/rules/ 专业规则 data/curated/ 公开课程知识 data/raw/ 本地PDF tests/ 离线及可选实库测试 docs/five_program_integration.md 本次合并说明 ```