# data_clean **Repository Path**: hephec321/data_clean ## Basic Information - **Project Name**: data_clean - **Description**: data_clean - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-14 - **Last Updated**: 2026-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网络评论数据清洗工具 一个通用性强的网络评论数据清洗工具,能够自动识别并提取CSV/JSON数据中的纯文本评论字段,删除其他无关字段,并执行全面的文本清洗操作。 ## ✨ 特性 - 🔄 **多格式支持**: 支持CSV和JSON格式数据文件 - 🤖 **智能识别**: 自动检测评论字段(支持中英文字段名) - 🧹 **全面清洗**: HTML标签、URL、邮箱、表情符号、特殊字符等 - 📊 **数据分析**: 自动显示数据摘要和清洗统计 - 🎯 **灵活配置**: 可自定义各种清洗选项 - 💾 **批量处理**: 自动去重、去空值 - 📝 **详细日志**: 每一步操作都有清晰的输出 ## 🚀 快速开始 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 基本使用 ```bash # 处理CSV文件(自动检测字段) python src/main.py examples/sample_data.csv # 处理JSON文件 python src/main.py examples/sample_data.json # 指定输出路径 python src/main.py input.csv -o output.csv # 指定评论字段 python src/main.py input.csv --field review_text ``` ## 📖 使用教程 ### 1. 命令行使用 #### 基本命令格式 ```bash python src/main.py <输入文件> [选项] ``` #### 参数说明 **必需参数:** - `input`: 输入文件路径(支持.csv或.json格式) **可选参数:** - `-o, --output`: 输出文件路径(默认保存在output目录) - `--field`: 手动指定评论字段名(默认自动检测) **清洗选项(默认启用,使用--keep-xxx保留):** - `--keep-html`: 保留HTML标签 - `--keep-urls`: 保留URL链接 - `--keep-emails`: 保留邮箱地址 - `--keep-emoticons`: 保留表情符号 - `--keep-special`: 保留特殊字符 - `--keep-empty`: 保留空值 - `--keep-duplicates`: 保留重复值 #### 使用示例 **示例1: 标准清洗(推荐)** ```bash python src/main.py examples/sample_data.csv ``` 输出: ``` ============================================================ 加载数据文件: examples/sample_data.csv ============================================================ 成功加载CSV文件 (编码: utf-8) ✓ 数据加载成功 ============================================================ 数据分析 ============================================================ 总记录数: 100 总字段数: 8 字段详情: -------------------------------------------------------------------------------- 字段名 数据类型 非空数量 -------------------------------------------------------------------------------- id int64 100 username object 100 comment object 98 rating float64 100 date object 100 product_id int64 100 helpful int64 85 verified bool 100 -------------------------------------------------------------------------------- 推荐的评论字段: comment ============================================================ 开始数据清洗 ============================================================ 精确匹配到评论字段: comment ✓ 评论字段: comment ✓ 提取评论字段,删除其他列 清洗选项: - 移除HTML标签: True - 移除URL: True - 移除邮箱: True - 移除表情符号: True - 移除特殊字符: True - 规范化空格: True ✓ 文本清洗完成 ✓ 移除空值: 100 -> 98 (删除 2 条) ✓ 移除重复: 98 -> 95 (删除 3 条) ============================================================ 数据清洗完成! 最终记录数: 95 ============================================================ ============================================================ 保存数据 ============================================================ 数据已保存到: output/cleaned_sample_data.csv ``` **示例2: 指定字段和输出路径** ```bash python src/main.py examples/sample_data.json --field review -o output.csv ``` **示例3: 保留某些内容** ```bash # 保留HTML和表情符号 python src/main.py input.csv --keep-html --keep-emoticons ``` **示例4: 只提取不清洗** ```bash # 只提取字段,不做任何清洗 python src/main.py input.csv --keep-html --keep-urls --keep-emails --keep-emoticons --keep-special ``` ### 2. Python代码使用 ```python from src.main import CommentCleaner # 创建清洗器实例 cleaner = CommentCleaner('input.csv', 'output.csv') # 运行完整流程 cleaner.run() # 或分步执行 cleaner.load_data() # 加载数据 cleaner.analyze_data() # 分析数据 cleaner.clean() # 清洗数据 cleaner.preview(n=10) # 预览前10条 cleaner.save() # 保存数据 ``` ### 3. 自定义清洗选项 ```python from src.main import CommentCleaner cleaner = CommentCleaner('input.csv') # 自定义清洗选项 cleaner.clean( comment_field='review_text', # 指定字段 remove_html=True, # 移除HTML remove_urls=True, # 移除URL remove_emails=True, # 移除邮箱 remove_emoticons=False, # 保留表情 remove_special_chars=True, # 移除特殊字符 remove_empty=True, # 移除空值 remove_duplicates=True # 移除重复 ) cleaner.save() ``` ### 4. 使用独立模块 ```python from src.data_loader import DataLoader from src.field_detector import FieldDetector from src.text_cleaner import TextCleaner import pandas as pd # 1. 加载数据 df = DataLoader.load('input.csv') # 2. 检测评论字段 comment_field = FieldDetector.detect_comment_field(df) print(f"评论字段: {comment_field}") # 3. 提取并清洗文本 cleaned_text = df[comment_field].apply(TextCleaner.clean_text) # 4. 创建新的数据框 result = pd.DataFrame({'comment': cleaned_text}) result = result[result['comment'].str.len() > 0] # 移除空值 result = result.drop_duplicates() # 移除重复 # 5. 保存结果 result.to_csv('output.csv', index=False) ``` ## 🎯 字段检测规则 工具会按以下优先级检测评论字段: 1. **精确匹配**: comment, review, text, content, message, 反馈, 评论, 评价 等 2. **包含匹配**: 包含上述关键词的字段名 3. **类型判断**: 选择字符串类型的字段 4. **默认选择**: 选择第一列字段 支持的常见字段名示例: - 英文: `comment`, `review`, `text`, `content`, `message`, `description` - 中文: `评论`, `评价`, `反馈`, `心得`, `意见`, `建议` - 组合: `user_comment`, `review_text`, `product_review`, `评论内容`, `用户评价` ## 🧹 清洗功能详解 | 功能 | 说明 | 默认 | |------|------|------| | 移除HTML标签 | 清除所有HTML标签和实体 | ✓ | | 移除URL | 清除http/https链接 | ✓ | | 移除邮箱 | 清除邮箱地址 | ✓ | | 移除表情符号 | 清除emoji和ASCII表情 | ✓ | | 移除特殊字符 | 只保留中英文和空格 | ✓ | | 规范化空格 | 将多个空格合并为一个 | ✓ | | 移除空值 | 删除空字符串和NaN | ✓ | | 移除重复值 | 删除完全相同的评论 | ✓ | ## 📁 项目结构 ``` comment-cleaner/ ├── README.md # 使用教程 ├── requirements.txt # 依赖包 ├── examples/ # 示例数据 │ ├── sample_data.csv │ └── sample_data.json ├── src/ │ ├── __init__.py │ ├── data_loader.py # 数据加载器 │ ├── field_detector.py # 字段识别器 │ ├── text_cleaner.py # 文本清洗器 │ └── main.py # 主程序 └── output/ # 输出目录 ``` ## 🔧 技术细节 ### 模块说明 #### 1. DataLoader(数据加载器) - 支持CSV和JSON文件 - 自动检测编码(utf-8, gbk, gb2312, latin-1) - 处理多种JSON结构(数组、对象、嵌套数据) #### 2. FieldDetector(字段识别器) - 基于正则表达式的智能字段匹配 - 支持中英文字段名 - 字段类型和内容分析 - 提供数据摘要信息 #### 3. TextCleaner(文本清洗器) - 正则表达式模式匹配 - 顺序清洗管道 - 批量处理优化 - 清洗统计信息 #### 4. CommentCleaner(主程序) - 整合所有模块 - 命令行接口 - 完整流程控制 - 详细的日志输出 ## 💡 最佳实践 ### 1. 数据准备 - 确保数据文件包含评论文本字段 - 检查文件编码(建议UTF-8) - 验证数据格式是否正确 ### 2. 使用建议 - 首次运行使用默认选项查看效果 - 根据实际需求调整清洗选项 - 预览结果后再保存 - 保留原始数据备份 ### 3. 性能优化 - 大文件建议分批处理 - 可以调整去重逻辑 - 根据需要禁用部分清洗功能 ## 🐛 常见问题 **Q: 为什么没有识别到评论字段?** A: 检查字段名是否包含常见关键词,或使用--field手动指定。 **Q: CSV文件乱码怎么办?** A: 工具会自动尝试多种编码,如仍有问题,建议另存为UTF-8格式。 **Q: 如何保留某些特殊字符?** A: 使用--keep-special选项保留所有字符,或修改text_cleaner.py中的正则表达式。 **Q: 清洗后数据变少很多?** A: 可能是移除了空值或重复数据,使用--keep-empty和--keep-duplicates保留。 **Q: 支持哪些文件大小?** A: 基于pandas,理论上支持任意大小,建议大文件分批处理。 ## 📊 示例数据 ### CSV格式 ```csv id,username,comment,rating,date,product_id 1,user1,这个产品非常好!我很满意,5.0,2024-01-01,1001 2,user2,https://example.com 有问题,3.0,2024-01-02,1001 3,user3,
还行吧
可以接受,4.0,2024-01-03,1002 ``` ### JSON格式 ```json { "data": [ { "id": 1, "review": "这个产品非常好!我很满意", "score": 5, "user": "张三" }, { "id": 2, "review": "有问题,不太满意", "score": 3, "user": "李四" } ] } ``` 清洗后输出(CSV): ```csv comment 这个产品非常好 我很满意 有问题 不太满意 还行吧 可以接受 ``` ## 📝 更新日志 ### v1.0.0 - 初始版本发布 - 支持CSV和JSON格式 - 智能字段识别 - 全面的文本清洗功能 - 命令行和Python API ## 📄 许可证 MIT License ## 🤝 贡献 欢迎提交Issue和Pull Request! ## 📧 联系方式 如有问题或建议,请提交Issue。 --- **享受简洁高效的评论数据清洗体验!** 🎉