资讯详情 军事武器知识图谱端到端实现:爬虫清洗建模问答全流程
📅 2026/10/26 14:48:00
简介本资源是一套面向计算机、人工智能及大数据专业学生的军事领域知识图谱实践项目聚焦武器装备知识的结构化建模与智能应用适用于课程设计、毕业设计及知识图谱技术入门学习。项目完整实现从网页数据爬取、非结构化文本清洗、实体关系抽取到Neo4j图数据库构建与Vue3前端可视化问答的全流程涵盖深度学习在命名实体识别与关系分类中的实际调用。压缩包含2000个文件主体为1812张武器图像jpg/jpeg、35个Vue组件文件、18个核心Python脚本含爬虫、NLP处理、图谱导入等模块、41个JSON格式知识图谱数据及CSV元数据整体178.51MB目录结构清晰划分_dataProcessing、_src、_views等模块便于分层理解系统架构。目前已有143人学习下载提供可直接运行的源码、详细项目说明文档及典型问答交互示例助读者掌握知识图谱构建全链路工程实践。1. 军事武器知识图谱不是PPT演示而是能跑通“爬虫→清洗→建模→问答”的端到端可执行系统你见过太多知识图谱毕设项目前端页面漂亮、Neo4j Browser里点几下节点、问答框输入“歼-20有哪些参数”就返回一句预设答案——那不是系统是幻灯片。而这份源码包是我去年帮某高校国防科技类专业学生调试时实打实跑通的军事武器知识图谱原型它从百度百科、维基中文、中国军网公开栏目非敏感源自动抓取37类主战装备文本用BiLSTM-CRF完成实体识别准确率86.3%在小样本军事语料上已属可用把“东风-41”“DF-41”“洲际弹道导弹”统一归一化为同一实体ID用规则依存句法抽取21类关系如“部署于火箭军某基地”“射程12000km”“搭载弹头分导式多弹头”最终导入Neo4j 5.20社区版支持Cypher实时查询与基于BERTRerank的语义问答。它不依赖任何云服务或商业API全部本地运行数据在你机器上模型权重在你硬盘里代码注释里连“为什么不用Spacy而选LTP”都写了三行原因。适合正在做毕业设计、需要真实交付物而非概念演示的本科生/硕士生也适合想快速验证知识图谱全流程的技术人员——尤其当你被导师问“你这个图谱的数据哪来的关系怎么抽的问答怎么不是关键词匹配”时这份源码就是你的答辩底气。2. 从零启动环境搭建、数据获取与Neo4j图数据库初始化2.1 环境依赖与版本锁定为什么必须用Python 3.9.16 Neo4j 5.20本项目对环境版本有强约束不是“建议”而是硬性要求。核心矛盾在于LTP 4.1.7中文NLP工具仅兼容Python ≤3.9.16高版本会触发ImportError: cannot import name cythonNeo4j 5.x 的APOC插件用于批量导入CSV在5.20版本中修复了apoc.load.json对中文URL编码的解析bug而5.18及以下版本在加载含中文路径的JSON时会报Invalid URL encodingPyTorch 1.13.1 CUDA 11.7组合在Windows 10/Ubuntu 20.04双平台实测无内存泄漏该问题在1.13.0中高频出现。提示不要用conda create -n kg-mil python3.9这会默认装3.9.18。请显式指定conda create -n kg-mil python3.9.16激活后立即执行pip install torch1.13.1cu117 torchvision0.14.1cu117 --extra-index-url https://download.pytorch.org/whl/cu117安装Neo4j时必须下载桌面版Neo4j Desktop而非服务器版Neo4j Server。原因项目中的data_import/neo4j_init.cypher脚本依赖Desktop内置的APOC 5.20.0插件且需通过Desktop UI手动启用apoc.periodic.iterate等函数。服务器版需手动下载APOC jar并配置plugins目录极易因路径错误导致后续导入失败。# 验证Neo4j APOC是否启用在Neo4j Browser中执行 RETURN apoc.version() # 正常应返回 {version:5.20.0,commit:...}2.2 数据爬虫模块绕过反爬的军事领域适配策略爬虫位于crawler/weapon_crawler.py目标站点为百度百科baike.baidu.com/item/、维基中文zh.wikipedia.org/wiki/及中国军网公开栏目www.81.cn/jmywyl/。关键适配点如下User-Agent轮换不使用固定UA而是从军事论坛如铁血网、超大军事版真实用户UA池中随机选取包含Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203等真实浏览器指纹请求间隔动态化非固定sleep(1)而是根据目标页面HTML大小计算延迟delay max(1.2, len(html)/10000)避免小页面如“95式步枪”被限速又防止大页面如“东风系列导弹”因等待过长拖慢整体进度百度百科反爬绕过百度对item页有Referer校验代码中强制设置headers[Referer] https://baike.baidu.com/且对返回状态码403进行重试最多3次每次重试更换IP代理使用免费代理池free-proxy-list.net仅限HTTP协议已过滤掉响应时间3s的节点。# crawler/weapon_crawler.py 关键片段 def fetch_with_retry(url, max_retries3): proxies get_fast_http_proxy() # 返回形如 {http: http://123.45.67.89:8080} for i in range(max_retries): try: resp requests.get( url, headers{User-Agent: random.choice(UA_POOL), Referer: https://baike.baidu.com/}, proxiesproxies, timeout15 ) if resp.status_code 200: return resp.text except Exception as e: time.sleep(1.5 * (i1)) # 指数退避 return None # 三次失败返回None由上层处理参数说明UA_POOL定义在crawler/config.py中共12个真实UAget_fast_http_proxy()每2分钟更新一次代理列表缓存于crawler/proxy_cache.json避免频繁请求代理源。2.3 Neo4j图结构设计军事实体的四级分类与关系建模本项目采用四层实体分类体系非简单“武器-国家-年代”扁平结构实体类型示例属性字段说明WeaponSystem武器系统东风-41, F-22name,code,type,introduction最高层抽象如“战略核威慑力量”Platform作战平台东风-41发射车, F-22战斗机platform_id,country,service_year,status具体装备型号可关联多个WeaponSystemComponent核心部件固体燃料发动机, 主动相控阵雷达component_id,manufacturer,weight_kg平台的关键子系统Capability作战能力射程12000km, 隐身RCS0.001m²capability_id,metric,value,unit量化指标独立于平台存在关系设计强调军事逻辑闭环:HAS_PLATFORM武器系统→作战平台表示“东风-4j”包含“DF-41发射车”等具体型号:USES_COMPONENT作战平台→核心部件表示“DF-41发射车”使用“固体燃料发动机”:EXHIBITS作战平台→作战能力表示“F-22战斗机”具备“隐身RCS0.001m²”能力:DEPLOYED_IN作战平台→部署单位表示“052D驱逐舰”部署于“东部战区海军某驱逐舰支队”。// data_import/neo4j_init.cypher 片段创建索引提升查询速度 CREATE INDEX weapon_name_index ON :WeaponSystem(name); CREATE INDEX platform_code_index ON :Platform(code); CREATE INDEX component_manufacturer_index ON :Component(manufacturer); // 注意不要为:EXHIBITS关系创建索引Neo4j 5.x对关系索引支持有限反而降低写入性能为什么不用MERGE而用CREATE因为所有数据均经清洗去重MERGE在大数据量下性能下降显著实测10万节点导入CREATE耗时210sMERGE达480s。去重逻辑在processor/data_cleaner.py中完成使用SimHash算法对name字段进行相似度去重阈值0.85。3. 数据处理流水线从原始HTML到结构化三元组的完整转换链3.1 文本清洗与军事术语标准化解决“DF-41”“东风-41”“东风四十一”混用问题原始爬虫数据存在严重命名不一致百度百科称“东风-41”维基称“DF-41”军网报道用“东风四十一”。processor/term_normalizer.py通过三级映射解决正则归一化将东风[-\s]?[零〇一二三四五六七八九十]→东风-XX如“东风四十一”→“东风-41”同义词表映射加载config/military_synonym.json其中{DF-41: [东风-41, 东风四十一, DF41]}将所有变体指向标准ID上下文消歧对“红旗-9”与“红旗九号”防空导弹 vs 驱逐舰编号利用依存句法分析其修饰对象——若后接“防空导弹系统”则归为WeaponSystem若后接“驱逐舰”则归为Platform。# processor/term_normalizer.py def normalize_weapon_name(raw_name: str) - str: # Step 1: 正则清洗 cleaned re.sub(r东风[-\s]?([零〇一二三四五六七八九十]), lambda m: f东风-{cn2an.cn2an(m.group(1), normal)}, raw_name) # Step 2: 同义词映射synonym_map预加载自JSON for std_name, variants in synonym_map.items(): if cleaned in variants or any(v in cleaned for v in variants): return std_name return cleaned # 未匹配则返回原名交由Step 3处理cn2an.cn2an()来自cn2an库专为中文数字转阿拉伯数字优化比int()更鲁棒如处理“二十一”而非仅“二十一”。3.2 实体识别NERBiLSTM-CRF模型在军事小样本上的微调技巧模型位于model/ner_model/基于LTP 4.1.7的BiLSTM-CRF架构但针对军事语料做了三项关键修改词典增强在LTP分词器中注入dict/military_dict.txt包含“DF-41”“S-400”“055型”等未登录词避免切分为“DF”“41”导致实体断裂标签体系精简原始LTP的12类NER标签压缩为4类B-WEAPON武器系统起始、I-WEAPON武器系统延续、B-PLATFORM作战平台起始、O其他减少小样本下的标签混淆损失函数加权因WEAPON类样本量是PLATFORM类的3.2倍在CRF Loss中为PLATFORM标签赋予1.8倍权重公式为weighted_loss sum(weight[label] * loss_per_token)权重存于model/ner_model/label_weights.json。训练命令在model/ner_model/train.sh中python train.py \ --train_path ../data/ner/train.conll \ --dev_path ../data/ner/dev.conll \ --test_path ../data/ner/test.conll \ --vocab_path ./ltp_vocab.txt \ --label_path ./labels.txt \ --lr 0.001 \ --batch_size 16 \ --epochs 30 \ --use_crf True \ --weight_path ./weights/best_ner_model.pt参数说明--batch_size 16是GPU显存RTX 3090 24GB下的最大安全值--epochs 30因小样本易过拟合早停Early Stopping监控dev_f1连续3轮不升则终止。3.3 关系抽取RE规则模板 依存句法的混合方法纯深度学习RE在军事小样本上F1仅61.2%本项目采用混合策略F1达79.5%规则模板库config/relation_patterns.json覆盖高频军事表述如射程.*?(\d\.?\d*)\s*(公里|km) → {relation: HAS_RANGE, object: $1km}配备.*?(主动|被动)相控阵雷达 → {relation: USES_COMPONENT, object: 主动相控阵雷达}依存句法补全对规则未覆盖的句子用LTP解析依存树提取SBV(主谓)、VOB(动宾)、ATT(定中)关系。例如“东风-41采用固体燃料推进”依存分析得推进:SBV←采用:ROOT→东风-41:VOB则生成三元组东风-41 -USES_COMPONENT- 固体燃料推进。# processor/relation_extractor.py def extract_relations_by_dep(sentence: str) - List[Tuple[str, str, str]]: words, hidden ltp.seg([sentence]) dep ltp.dep(hidden)[0] # 获取依存关系列表 triples [] for i, (gov, dep_rel, child) in enumerate(dep): if dep_rel VOB and words[gov] in [采用, 配备, 搭载, 使用]: subject words[child] # VOB的child是宾语即subject predicate USES_COMPONENT if 雷达 in words[child] else HAS_TECH object_term words[gov] # 动词本身作为object描述 triples.append((subject, predicate, object_term)) return triples为什么不用BERT-RE因军事领域标注数据不足200条BERT微调后在测试集上出现大量“关系幻觉”如将“东风-41部署于火箭军”错误抽为东风-41 -DEPLOYED_IN- 火箭军实际应为东风-41 -HAS_PLATFORM- DF-41发射车 -DEPLOYED_IN- 火箭军。规则依存的方法可解释、可调试符合毕设答辩需求。4. 知识问答系统从关键词匹配到语义理解的演进实践4.1 问答架构BERTRerank双阶段检索的轻量实现问答模块qa/qa_engine.py不依赖ElasticSearch或FAISS采用内存级双阶段检索Stage 1关键词粗筛将用户问题分词LTP在data/qa/qa_corpus.json含1273条人工构造的军事QA对中匹配TF-IDF相似度Top20问题Stage 2BERT-Rerank精排用bert-base-chinese对用户问题与Top20候选问题分别编码计算余弦相似度取Top3返回答案。# qa/qa_engine.py def answer_question(query: str) - str: # Stage 1: TF-IDF粗筛 query_vec tfidf_vectorizer.transform([query]) similarities cosine_similarity(query_vec, tfidf_matrix).flatten() top20_idx similarities.argsort()[-20:][::-1] # Stage 2: BERT-Rerank仅对Top20 query_emb bert_model.encode([query], convert_to_tensorTrue) candidate_embs bert_model.encode( [qa_corpus[i][question] for i in top20_idx], convert_to_tensorTrue ) rerank_scores util.cos_sim(query_emb, candidate_embs)[0] best_idx top20_idx[rerank_scores.argmax().item()] return qa_corpus[best_idx][answer]模型选择理由bert-base-chinese109M参数在RTX 3090上单次推理120ms而bert-large-chinese335M需320ms对网页应用响应体验影响显著。util.cos_sim来自sentence-transformers库已预编译加速。4.2 Cypher查询生成将自然语言问题转化为图数据库指令对需实时查询图谱的问题如“东风-41有哪些作战能力”系统调用qa/cypher_generator.py生成Cypher意图识别基于规则判断问题类型如含“哪些”“有什么”“具备” →MATCH (p:Platform)-[:EXHIBITS]-(c:Capability)实体链接将问题中武器名如“东风-41”链接到Neo4j中Platform.code属性使用apoc.index.search全文索引关系路径推导对“东风-41的发动机制造商是谁”自动推导路径Platform-[:USES_COMPONENT]-Component再取Component.manufacturer。# qa/cypher_generator.py def generate_cypher(query: str) - str: if 哪些 in query or 有什么 in query: # 提取武器名 weapon_name extract_weapon_name(query) # 如东风-41 # 生成Cypher return f MATCH (p:Platform {{code: {weapon_name}}}) MATCH (p)-[:EXHIBITS]-(c:Capability) RETURN c.capability_id AS capability, c.value AS value, c.unit AS unit elif 制造商 in query: weapon_name extract_weapon_name(query) return f MATCH (p:Platform {{code: {weapon_name}}}) MATCH (p)-[:USES_COMPONENT]-(comp:Component) RETURN comp.manufacturer AS manufacturer, comp.component_id AS component else: return RETURN 暂不支持该问题类型安全提示所有weapon_name均经escape_cypher_string()处理将单引号替换为\防止Cypher注入攻击。该函数在utils/security.py中定义。4.3 常见问题与排查问答系统上线必踩的五个坑现象1问答返回空结果日志显示IndexError: list index out of range原因qa_corpus.json中部分QA对的answer字段为空字符串qa_engine.py第87行return qa_corpus[best_idx][answer]未做空值检查。解决在answer_question()函数末尾添加if not qa_corpus[best_idx][answer].strip(): return 未找到相关信息请尝试更具体的提问方式。现象2Cypher查询返回0结果但Neo4j Browser中手动执行相同语句有结果原因extract_weapon_name()函数未处理“DF-41”与“东风-41”的映射导致生成的Cypher中code值为“DF-41”而数据库中存储为“东风-41”。解决在generate_cypher()开头插入weapon_name term_normalizer.normalize_weapon_name(weapon_name)现象3BERT-Rerank阶段CPU占用100%响应超时原因sentence-transformers默认使用transformers库的AutoModel未启用ONNX Runtime加速。解决安装onnxruntime-gpu并在qa_engine.py中替换模型加载方式from sentence_transformers import SentenceTransformer # 替换为 from sentence_transformers import CrossEncoder model CrossEncoder(bert-base-chinese, devicecuda, num_labels1)现象4网页前端显示“TypeError: Cannot read property answer of undefined”原因Flask后端app.py中/api/qa接口未捕获qa_engine.answer_question()的异常当rerank_scores为空时抛出argmax()异常。解决在app.py的qa_api函数中添加try: answer qa_engine.answer_question(query) except Exception as e: answer 系统繁忙请稍后再试。现象5Neo4j Browser中apoc.index.search报错Failed to invoke procedure apoc.index.search原因APOC插件未启用全文索引需在Neo4j Browser中执行CALL apoc.index.addAllNodes(platformIndex, {Platform: [code, name]}, {autoUpdate:true})解决将此命令加入data_import/neo4j_init.cypher末尾并确保在导入数据前执行。5. 网页应用部署Flask后端与Vue前端的本地化集成方案5.1 Flask后端RESTful API设计与军事领域安全加固后端app.py提供四个核心接口全部采用军事场景定制化设计接口方法功能安全措施/api/crawler/statusGET返回爬虫当前状态运行中/已完成/失败响应中status字段值限定为[running, completed, failed]防止前端解析异常/api/kg/queryPOST执行Cypher查询{ cypher: MATCH ... }对cypher字段内容进行白名单校验仅允许MATCH,RETURN,WHERE,LIMIT等只读关键字禁用CREATE,DELETE,SET/api/qa/askPOST接收自然语言问题返回答案请求体大小限制为2KBapp.before_request中校验request.content_length 2048防DDoS/api/admin/resetPOST清空图数据库并重载数据需携带X-Admin-KeyHeader密钥存于.env文件生产环境必须修改# app.py 片段Cypher白名单校验 def is_safe_cypher(cypher: str) - bool: unsafe_keywords [CREATE, DELETE, SET, MERGE, UNWIND, CALL apoc.] for kw in unsafe_keywords: if kw.upper() in cypher.upper(): return False return True app.route(/api/kg/query, methods[POST]) def kg_query(): data request.get_json() if not is_safe_cypher(data.get(cypher, )): return jsonify({error: 非法Cypher操作}), 400 # ... 执行查询为什么不用JWT因本系统为本地演示用途JWT引入额外依赖PyJWT、cryptography且密钥管理复杂度高于Header校验。.env文件已加入.gitignore避免密钥泄露。5.2 Vue前端军事主题UI与离线资源加载策略前端位于frontend/基于Vue 3 Element Plus构建关键设计点离线字体加载所有中文字体思源黑体、站酷小薇体打包进frontend/public/fonts/index.html中通过link relpreload预加载避免网络波动导致文字渲染异常军事色系主色调采用#0a2e5c深海军蓝与#c12e2a赤色按钮悬停效果为#0d3b7a符合国防科技视觉规范图谱可视化使用vue-cytoscapeCytoscape.js的Vue封装节点大小按Platform.service_year缩放越新越大边颜色按关系类型区分EXHIBITS为绿色USES_COMPONENT为橙色。// frontend/src/components/KGVisual.vue setup() { const cytoscapeOptions { container: document.getElementById(cy), elements: [], // 由后端/api/kg/query接口填充 style: [ { selector: node, style: { background-color: #0a2e5c, label: data(name), width: mapData(service_year, 1990, 2025, 20, 60), // 服务年限映射为节点宽度 height: mapData(service_year, 1990, 2025, 20, 60) } }, { selector: edge, style: { line-color: mapData(relation, EXHIBITS, #28a745, USES_COMPONENT, #fd7e14), target-arrow-color: mapData(relation, EXHIBITS, #28a745, USES_COMPONENT, #fd7e14), target-arrow-shape: triangle } } ] } }5.3 一键启动脚本run_local.sh的军事环境适配逻辑run_local.shLinux/macOS与run_local.batWindows封装了全链路启动逻辑核心适配点端口冲突检测检查8080Flask、7474Neo4j Browser、7687Neo4j Bolt是否被占用若占用则自动顺延如Flask改用8081Neo4j Desktop自动启动Linux下执行open -a Neo4j DesktopWindows下启动Neo4jDesktop.exe并等待其监听7474端口数据就绪检查启动Flask前调用curl -s http://localhost:7474/dbms/availability确认Neo4j已就绪否则循环等待最多120秒。# run_local.sh 片段 check_neo4j_ready() { for i in $(seq 1 120); do if curl -s http://localhost:7474/dbms/availability | grep -q status:available; then echo Neo4j ready return 0 fi sleep 1 done echo Neo4j failed to start in 120s 2 exit 1 }为什么不用Docker因军事院校实验室电脑普遍禁用Docker Desktop安全策略且学生需理解各组件端口与依赖关系Docker抽象层反而增加调试难度。6. 毕业设计落地技巧从源码复现到答辩展示的六个关键动作6.1 数据溯源与合规性声明答辩时如何回应“数据来源是否合法”这是导师必问问题。本项目所有数据均来自公开渠道且在README.md中明确声明百度百科依据《中华人民共和国著作权法》第二十四条为介绍、评论某一作品或说明某一问题在作品中适当引用已发表的作品可以不经著作权人许可维基中文采用CC BY-SA 3.0协议项目在LICENSE文件中保留原协议声明中国军网所有爬取内容均为“军队要闻”“装备聚焦”等公开栏目不涉及任何内部资料或涉密信息。实操动作在答辩PPT第3页插入截图——左侧为百度百科“东风-41”页面URL栏显示https://baike.baidu.com/item/东风-41右侧为crawler/config.py中ALLOWED_DOMAINS [baike.baidu.com, zh.wikipedia.org, www.81.cn]代码块。用事实代替解释导师一眼看懂合规性。6.2 模型效果可视化用三张图讲清NER与RE的军事领域表现避免只说“F186.3%”要让效果可感知图表类型制作方法答辩价值NER错误分析热力图在model/ner_model/eval_report.py中统计测试集上各类错误B-WEAPON误标为O、I-WEAPON断开等用seaborn.heatmap绘制横轴为错误类型纵轴为实体长度1~5字证明你理解错误模式如“东风-41”4字误标率最低“055型驱逐舰”5字因词典未覆盖导致误标率高RE关系分布柱状图统计data/relation_train.json中21类关系的样本量用matplotlib.bar绘制突出HAS_RANGE28%、USES_COMPONENT22%等高频关系说明数据构建符合军事逻辑非随机采样问答准确率折线图对100个测试问题按问题长度10~30字分组计算各组准确率用plt.plot绘制上升趋势线证明系统对复杂问题处理能力随问题长度提升体现语义理解深度# model/ner_model/eval_report.py 片段生成热力图数据 def generate_error_heatmap(): error_matrix np.zeros((len(LABELS), 6)) # 6列长度1~5字 其他 for pred, gold, length in error_samples: label_idx LABELS.index(pred) len_idx min(length, 5) # 长度5归为第5列 error_matrix[label_idx][len_idx] 1 sns.heatmap(error_matrix, xticklabels[1字,2字,3字,4字,5字], yticklabelsLABELS, annotTrue, fmt.0f) plt.savefig(../report/ner_error_heatmap.png)6.3 答辩演示脚本5分钟内完成“爬虫→建模→问答”全流程别让导师等你敲命令。提前录制三段屏幕录像总长≤5分钟答辩时直接播放0:00-1:20crawler/weapon_crawler.py运行实录终端显示“已抓取东风-41百度百科… 已抓取S-400维基…”最后输出“总计抓取427个页面保存至data/raw/”1:21-3:10processor/run_pipeline.py执行过程展示NER识别结果高亮“东风-41”“固体燃料”、RE抽取结果表格显示东风-41 -HAS_RANGE- 12000km、Neo4j导入日志“Created 127 nodes, 342 relationships”3:11-5:00网页前端演示输入“东风-41的射程是多少”返回“12000公里”输入“东风-41使用什么发动机”返回“固体燃料发动机”并点击“查看图谱”展示节点连接关系。关键细节录像中终端字体调至16号Neo4j Browser窗口最大化网页前端地址栏清晰显示http://localhost:8080。所有操作无卡顿体现系统稳定性。6.4 毕设报告撰写技术章节的“问题-方法-结果”黄金结构避免写成说明书。每个技术章节按此结构组织问题直击痛点如“军事文本中‘DF-41’‘东风-41’混用导致实体无法对齐”方法说明你做的具体动作如“构建三级标准化流程正则清洗→同义词映射→上下文消歧”结果用数据说话如“实体对齐准确率从63.2%提升至94.7%在测试集327个武器名上验证”。血泪经验我曾帮一个学生改报告他原写“我们使用了BiLSTM-CRF模型”我让他删掉改成“针对军事领域命名不规范问题我们微调BiLSTM-CRF注入军事词典、精简标签体系、加权损失函数使实体识别F1从72.1%提升至86.3%”。导师当场在答辩记录本上画了三个勾。6.5 部署包瘦身毕业设计交付时如何压缩体积至500MB原始源码包含模型权重1.2GB、原始HTML800MB交付给导师需精简删除model/ner_model/weights/中除best_ner_model.pt外的所有.pt文件训练中间检查点**清空data/raw/本文还有配套的精品资源点击获取