# ner_nio_data **Repository Path**: rymaker/ner_nio_data ## Basic Information - **Project Name**: ner_nio_data - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-10 - **Last Updated**: 2026-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CSV 实体标注处理工具 处理 CSV 文件,提取 HTML 格式的实体标注信息,并转换为 NER 训练所需的 BIO 格式。 ## 功能 1. **CSV 转 JSON** — 解析 CSV 中的嵌套 JSON 字段 2. **提取 HTML** — 从 `entity_tag_html` 字段提取标注片段 3. **实体提取** — 从 HTML 中解析实体(支持嵌套标签) 4. **类型统计** — 统计实体类型分布 5. **BIO 转换** — 生成 NER 训练用的 BIO 格式数据 6. **数据集切分** — 按比例切分为训练集/测试集 ## 快速开始 ```bash # 安装依赖 pip install -r requirements.txt # 默认处理(输出HTML、实体、类型统计、BIO;不生成完整CSV JSON) python process_csv.py data/raw/your_file.csv # 输出完整CSV解析JSON(大文件慎用) python process_csv.py data/raw/your_file.csv --json # 仅输出 BIO 格式,使用 flat 策略处理嵌套实体 python process_csv.py data/raw/your_file.csv --bio --entity-strategy flat # 输出 BIO 并切分 80% 训练集 / 20% 测试集 python process_csv.py data/raw/your_file.csv --bio --split 0.8 ``` ## 嵌套实体策略 | 策略 | 说明 | |------|------| | `nested` | 保持原样,BIO 按覆盖处理 | | `nested-inner` | 保留最内层实体(短实体优先,默认) | | `nested-outer` | 保留最外层实体(长实体优先) | | `flat` | 按长度降序选取,丢弃任何重叠 | ## 项目结构 ``` . ├── data/ │ ├── raw/ # 原始 CSV 输入 │ └── output/ # 处理结果输出(已加入 .gitignore) ├── process_csv.py # 主处理脚本 ├── requirements.txt # Python 依赖 └── README.md # 本文件 ``` ## 输出文件 运行后会在 `data/output/` 目录下生成: | 文件 | 说明 | |------|------| | `1_csv_parsed.json` | CSV 解析后的完整 JSON(仅使用 `--json` 时输出,32GB级大文件慎用) | | `2_html_extracted.txt` | 提取的 HTML 片段 | | `3_entities.json` | 提取的实体信息 | | `4_type_stats.json` | 实体类型统计(JSON) | | `4_type_stats.txt` | 实体类型统计(文本) | | `5_bio.txt` | BIO 格式数据 | | `5_bio_train.txt` | 训练集(如使用 `--split`) | | `5_bio_test.txt` | 测试集(如使用 `--split`) |