# 标注平台快速开始指南 ## 🚀 快速开始 ### 1. 启动服务 **启动后端服务器:** ```bash cd backend python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` **启动前端服务器:** ```bash cd web yarn nx serve lq_label ``` ### 2. 初始化示例数据 ```bash cd backend python init_sample_data.py ``` 这将创建 3 个示例项目和 6 个示例任务: 1. **情感分析标注项目** - 3 个文本分类任务 2. **命名实体识别项目** - 2 个 NER 任务 3. **文本高亮标注项目** - 1 个文本高亮任务 ### 3. 访问应用 打开浏览器访问:http://localhost:4200 ## 📝 标注流程演示 ### 步骤 1:查看项目列表 1. 访问 http://localhost:4200/projects 2. 你会看到 3 个示例项目 ### 步骤 2:查看项目详情 1. 点击"情感分析标注项目" 2. 查看项目信息和关联的任务列表 3. 你会看到 3 个待标注的任务 ### 步骤 3:开始标注 1. 在任务列表中找到"文本分类任务-1" 2. 点击"开始标注"按钮 3. LabelStudio 编辑器将加载 ### 步骤 4:进行标注 **文本分类示例:** - 文本:这家餐厅的服务态度非常好,菜品也很美味,环境优雅,强烈推荐! - 操作:选择"正面"选项 - 点击"保存"按钮 **命名实体识别示例:** - 文本:2024年1月15日,张三在北京大学参加了人工智能研讨会。 - 操作: 1. 选中"2024年1月15日",标记为"时间" 2. 选中"张三",标记为"人名" 3. 选中"北京大学",标记为"机构名" - 点击"保存"按钮 ### 步骤 5:查看结果 1. 返回任务列表 2. 查看任务状态已更新为"进行中" 3. 进度已增加 ## 🎯 示例项目详情 ### 1. 情感分析标注项目 **目标:** 对用户评论进行情感分类 **标注类型:** 单选分类 **类别:** - 正面 - 负面 - 中性 **示例任务:** | 任务名称 | 文本内容 | 预期标注 | |---------|---------|---------| | 文本分类任务-1 | 这家餐厅的服务态度非常好... | 正面 | | 文本分类任务-2 | 产品质量太差了... | 负面 | | 文本分类任务-3 | 这款手机性能一般... | 中性 | ### 2. 命名实体识别项目 **目标:** 识别文本中的实体 **标注类型:** 文本高亮标注 **实体类型:** - 人名(红色) - 地名(蓝色) - 机构名(绿色) - 时间(橙色) **示例任务:** | 任务名称 | 文本内容 | 预期实体 | |---------|---------|---------| | 命名实体识别任务-1 | 2024年1月15日,张三在北京大学... | 时间、人名、机构名 | | 命名实体识别任务-2 | 李明是清华大学的教授... | 人名、机构名 | ### 3. 文本高亮标注项目 **目标:** 标记文本中的关键信息 **标注类型:** 文本高亮标注 **标签类型:** - 重要信息(黄色) - 关键词(浅蓝色) - 问题(粉色) ## 🔧 测试工具 ### 检查示例数据 ```bash cd backend python test_annotation.py check ``` ### 测试完整工作流程 ```bash cd backend python test_annotation.py ``` 这将自动测试: 1. 创建项目 2. 创建任务 3. 创建标注 4. 查询标注 5. 更新任务状态 6. 清理测试数据 ## 📊 数据库查询 ### 查看项目数量 ```bash cd backend python -c "import sqlite3; conn = sqlite3.connect('annotation_platform.db'); cursor = conn.cursor(); cursor.execute('SELECT COUNT(*) FROM projects'); print(f'Projects: {cursor.fetchone()[0]}'); conn.close()" ``` ### 查看任务数量 ```bash cd backend python -c "import sqlite3; conn = sqlite3.connect('annotation_platform.db'); cursor = conn.cursor(); cursor.execute('SELECT COUNT(*) FROM tasks'); print(f'Tasks: {cursor.fetchone()[0]}'); conn.close()" ``` ### 查看标注数量 ```bash cd backend python -c "import sqlite3; conn = sqlite3.connect('annotation_platform.db'); cursor = conn.cursor(); cursor.execute('SELECT COUNT(*) FROM annotations'); print(f'Annotations: {cursor.fetchone()[0]}'); conn.close()" ``` ## 🎨 LabelStudio 编辑器使用技巧 ### 文本分类 1. 阅读文本内容 2. 点击对应的分类选项 3. 点击"保存"按钮 ### 命名实体识别 1. 用鼠标选中要标注的文本 2. 在弹出的标签列表中选择实体类型 3. 重复步骤 1-2 标注所有实体 4. 点击"保存"按钮 ### 文本高亮 1. 用鼠标选中要标注的文本 2. 在弹出的标签列表中选择标签类型 3. 重复步骤 1-2 标注所有需要的文本 4. 点击"保存"按钮 ## ❓ 常见问题 ### Q: 编辑器无法加载? **A:** 检查以下几点: 1. 前端服务器是否正在运行(等待编译完成,看到 "webpack compiled" 消息) 2. 浏览器控制台是否有 JavaScript 错误(不是 webpack 警告) 3. 项目配置是否正确(XML 格式) 4. 等待编辑器初始化完成(可能需要几秒钟) ### Q: 前端编译有很多警告? **A:** 这是正常的: 1. Sass 弃用警告(@import 规则)是来自 UI 库的,不影响功能 2. Source map 警告也不影响功能 3. 只要看到 "webpack compiled with X warnings" 就表示编译成功 4. 首次编译可能需要 30-60 秒,请耐心等待 ### Q: 保存标注时提示错误? **A:** 检查以下几点: 1. 是否完成了标注(标注结果不能为空) 2. 后端 API 是否正常工作 3. 查看浏览器控制台的错误信息 ### Q: 如何清理示例数据? **A:** 删除数据库文件: ```bash cd backend rm annotation_platform.db ``` 然后重启后端服务器。 ## 📚 更多资源 - **LabelStudio 文档:** https://labelstud.io/guide/ - **LabelStudio 配置标签:** https://labelstud.io/tags/ - **项目 GitHub:** https://github.com/HumanSignal/label-studio ## 🎉 下一步 现在你已经了解了基本的标注流程,可以: 1. 创建自己的项目和任务 2. 自定义标注配置 3. 邀请团队成员进行标注 4. 导出标注结果进行分析 祝标注愉快!🚀