Christopher-Orellana/cyber_threat_nlp
GitHub: Christopher-Orellana/cyber_threat_nlp
基于NLP的网络安全威胁情报分析工具
Stars: 0 | Forks: 0
# 网络威胁NLP
## 网络安全威胁报告的自动分类
CyberThreatNLP是一个自然语言处理项目,它将网络安全新闻文章分类到威胁类别,例如勒索软件、数据泄露、软件漏洞和其他安全相关事件。
该项目将传统的NLP方法与基于transformer的建模进行比较。它从使用TF-IDF特征的经典机器学习基线开始,然后评估DeBERTa-v3 transformer模型以改进威胁类别的分类。
目标是不仅训练一个模型,还要评估NLP方法是否可以通过帮助安全团队更有效地对大量非结构化网络安全文本进行分类来支持威胁分级工作流程。
## 项目动机
威胁情报平台和安全运营团队接收大量非结构化的报告、文章和警报。手动审查和分类这些信息可能很慢且不一致。
该项目探讨了机器学习是否可以帮助自动化威胁类别分类,减少手动审查时间,并支持更快地将网络安全报告路由到适当的分级工作流程。
## 技术范围
* 使用NLTK和基于regex的清理进行文本预处理
* 对网络安全文章文本和标签进行探索性数据分析
* 使用LDA进行主题建模
* 使用TF-IDF和安全相关词汇进行特征工程
* 经典机器学习基线建模
* 使用DeBERTa-v3 transformer建模进行比较
* 使用Optuna进行超参数调整
* 对威胁分级进行精度/召回权衡分析
* 将工作流程从笔记本转换为模块化Python脚本
## 仓库结构
```
cyber_threat_nlp/
├── data/
│ ├── TheHackerNews_Dataset.xlsx # ignored: raw local dataset
│ └── README.md
├── models/ # ignored: trained model outputs
│ ├── DeBERTa_model/
│ ├── DeBERTa_production/
│ ├── DeBERTa_tuned/
│ └── tuning_outputs/
├── notebooks/
│ ├── 01_EDA.ipynb
│ ├── 02_LDA.ipynb
│ ├── 03_ml_modeling_evaluation.ipynb
│ ├── 04_DeBERTa_modeling.ipynb
│ └── 05_hyperparam_tuning_DeBERTa.ipynb
├── processed/
│ ├── tokenized_DeBERTa_ds/
│ │ ├── test/ # ignored: tokenized test split
│ │ ├── train/ # ignored: tokenized train split
│ │ ├── validation/ # ignored: tokenized validation split
│ │ └── dataset_dict.json # ignored: dataset metadata
│ ├── id2label.json # maps numeric IDs to threat labels
│ └── label2id.json # maps threat labels to numeric IDs
├── .gitignore
├── README.md
└── requirements.txt
```
## 数据
原始数据集不包括在本仓库中。
预期本地文件路径:
```
data/TheHackerNews_Dataset.xlsx
```
数据集包含用于NLP分类的网络安全文章文本和威胁类别标签。
原始数据文件不包括在版本控制中,以避免上传原始或可能受版权保护的数据。
## 笔记本工作流程
该项目以笔记本为基础的工作流程组织:
1. **01_EDA.ipynb**
探索数据集、标签分布、文本长度模式以及初始数据质量问题。
2. **02_LDA.ipynb**
应用主题建模来检查网络安全文本中的常见主题。
3. **03_ml_modeling_evaluation.ipynb**
使用TF-IDF和工程化特征构建和评估经典机器学习模型。
4. **04_DeBERTa_modeling.ipynb**
训练和评估DeBERTa-v3 transformer分类器。
5. **05_hyperparam_tuning_DeBERTa.ipynb**
使用Optuna调整DeBERTa模型超参数并评估性能改进。
## 建模方法
### 经典NLP基线
经典的建模方法使用TF-IDF特征和机器学习分类器来建立基线。这提供了一个在使用transformer模型之前的可解释比较点。
### Transformer模型
transformer建模阶段使用DeBERTa-v3进行网络安全威胁类别分类。该模型与经典基线进行比较,以比较性能,特别是在与安全分级相关的分类指标上。
## 评估重点
使用分类指标评估模型性能,例如:
* 准确率
* 精度
* 召回率
* F1分数
* 混淆矩阵分析
由于威胁分类可能涉及运营风险,因此该项目还考虑了精度/召回权衡。在安全分级背景下,假阴性可能特别昂贵,因为遗漏的威胁可能会延迟响应。
## 设置
创建并激活虚拟环境:
```
python -m venv .venv
.venv\Scripts\activate
```
安装依赖项:
```
pip install -r requirements.txt
```
下载spaCy英语模型:
```
python -m spacy download en_core_web_sm
```
一些笔记本还需要NLTK资源:
```
import nltk
nltk.download("punkt")
nltk.download("stopwords")
nltk.download("wordnet")
nltk.download("averaged_perceptron_tagger")
```
## 工具
主要使用的工具:
* Python
* pandas / NumPy
* scikit-learn
* NLTK / spaCy
* Matplotlib / Seaborn
* PyTorch
* Hugging Face Transformers / Datasets
* DeBERTa-v3
* Optuna
完整的依赖项列在`requirements.txt`中
## 当前状态
该项目目前基于笔记本。下一个改进是将工作流程转换为预处理、训练、评估和推理的模块化Python脚本。
计划改进:
* 添加可重复的训练脚本
* 添加保存的评估报告
* 添加轻量级推理脚本
* 添加更清晰的模型比较表
* 改进有关数据集创建和标记的文档
## 许可证
MIT许可证 © 2025
标签:Apex, BSD, DeBERTa, LDA, Optuna, TF-IDF, Transformer, 人工智能, 信息提取, 凭据扫描, 威胁分类, 威胁情报, 安全事件, 安全响应, 安全团队支持, 安全威胁, 安全态势感知, 安全情报平台, 安全报告, 安全流程优化, 安全漏洞, 安全运营, 安全防护, 开发者工具, 扫描框架, 数据挖掘, 数据科学, 数据预处理, 文本分析, 文本分类, 文本挖掘, 文本标注, 机器学习, 模型评估, 深度学习, 特征工程, 用户模式Hook绕过, 网络安全, 网络调试, 自动化, 资源验证, 超参数调优, 逆向工具, 隐私保护