KnowledgeGraph Project
项目概述
本项目是一个知识图谱构建与应用探索的实践项目,旨在通过集成多种深度学习模型,实现从非结构化文本中进行实体抽取(Named Entity Recognition, NER)和关系抽取(Relation Extraction, RE),从而构建结构化的知识。项目中包含了不同模型(如BiLSTM-Attention、CasRel、LSTM-CRF)的实现与尝试,以对比和学习不同技术在知识抽取任务中的应用。
知识点总结
1. 知识图谱基础
- 定义: 知识图谱是一种用图结构来描述知识的语义网络,其基本组成单位是“实体-关系-实体”三元组。
- 构建流程: 通常包括信息抽取(实体抽取、关系抽取)、知识融合、知识存储、知识推理等步骤。本项目主要聚焦于信息抽取部分。
2. 实体抽取 (Named Entity Recognition, NER)
- 目标: 从文本中识别出具有特定意义的实体,如人名、地名、组织名、时间等。
- 常用模型:
- BiLSTM-CRF: 结合双向长短时记忆网络(BiLSTM)和条件随机场(CRF),BiLSTM用于捕捉上下文信息,CRF用于学习标签之间的依赖关系,是序列标注任务的经典模型。
3. 关系抽取 (Relation Extraction, RE)
- 目标: 识别文本中实体之间的语义关系,如“出生于”、“工作在”等。
- 常用模型:
- BiLSTM-Attention: 在BiLSTM的基础上引入注意力机制,使得模型在处理长文本时能够关注到与关系判断更相关的词语。
- CasRel (Cascading Relational Extraction): 一种联合抽取模型,将实体抽取和关系抽取视为一个级联任务。首先识别主语,然后针对每个主语,识别其所有可能的关系和对应的宾语。这种方法能够有效解决重叠三元组问题。
4. 深度学习框架与工具
- PyTorch: 流行的深度学习框架,提供灵活的张量操作和神经网络模块。
- Hugging Face Transformers: 提供了大量预训练的Transformer模型(如BERT)及其配套的分词器,极大地简化了NLP任务的开发。
- tqdm: 进度条库,用于可视化循环进度。
- pandas: 数据分析库,用于处理和展示评估结果。
项目结果
本项目通过实现和对比不同的模型,旨在:
- 验证不同模型在实体抽取和关系抽取任务上的性能差异。
- 探索联合抽取模型(如CasRel)在处理复杂关系时的优势。
- 为后续更复杂的知识图谱构建和应用奠定基础。
具体模型结果请参考各子目录下的README.md文件。
逻辑流程
1. 项目结构
run.py: 项目的入口脚本,根据命令行参数动态加载并运行指定模型的训练或预测任务。
path_utils.py: 路径管理工具,用于统一获取模型保存路径等。
Bilstm_Attention_RE/: 包含BiLSTM-Attention关系抽取模型的实现。
CasRel_RE/: 包含CasRel联合抽取模型的实现。
LSTM_CRF/: 包含LSTM-CRF实体抽取模型的实现。
- 各模型目录下通常包含:
config.py: 模型特定的配置参数。
train.py: 模型训练脚本。
predict.py: 模型预测脚本。
model/: 模型定义文件。
utils/: 数据处理和评估工具。
data/: 存放数据集。
save/ 或 save_model/: 存放训练好的模型。
2. 运行流程
- 配置: 在各模型的
config.py中配置模型超参数、BERT路径和数据集路径。
- 数据准备: 确保
data/目录下有正确格式的数据集。
- 训练:
- 通过
run.py脚本启动训练,例如:python run.py CasRel_RE。
- 训练过程中会进行周期性验证,并保存最佳模型。
- 引入了早停机制,以防止过拟合和节省计算资源。
- 预测:
- 训练完成后,可以使用
predict.py脚本加载训练好的模型进行预测。
3. 核心模块交互
run.py: 作为总调度器,根据用户输入决定运行哪个模型的训练或预测。
config.py: 定义了模型运行所需的所有静态参数,如学习率、批次大小、模型路径等。
data_loader.py (在各模型utils目录下): 负责将原始数据加载并转换为模型可处理的格式,包括分词、ID化、padding等。
model/ (在各模型目录下): 定义了具体的神经网络模型结构。
train.py: 实现了模型的训练循环,包括前向传播、损失计算、反向传播、参数更新、验证和模型保存。
process.py (在casrel_datautils目录下): 包含了数据预处理和标签生成的具体逻辑,特别是针对CasRel模型的复杂标签构建。