""" 初始化示例数据脚本 创建一个标准的文本标注项目和任务,用于测试标注功能。 """ import requests import json # API 基础 URL BASE_URL = "http://localhost:8000" # 文本分类标注配置(LabelStudio XML 格式) TEXT_CLASSIFICATION_CONFIG = """
""" # 命名实体识别标注配置 NER_CONFIG = """
""" # 文本标注配置(高亮标注) TEXT_HIGHLIGHT_CONFIG = """
""" # 示例任务数据 SAMPLE_TASKS = [ { "name": "文本分类任务-1", "data": { "text": "这家餐厅的服务态度非常好,菜品也很美味,环境优雅,强烈推荐!" } }, { "name": "文本分类任务-2", "data": { "text": "产品质量太差了,用了不到一周就坏了,客服态度也很恶劣,非常失望。" } }, { "name": "文本分类任务-3", "data": { "text": "这款手机性能一般,价格适中,适合日常使用。" } }, { "name": "命名实体识别任务-1", "data": { "text": "2024年1月15日,张三在北京大学参加了人工智能研讨会。" } }, { "name": "命名实体识别任务-2", "data": { "text": "李明是清华大学的教授,他在上海交通大学获得了博士学位。" } }, { "name": "文本高亮任务-1", "data": { "text": "机器学习是人工智能的一个重要分支,它使计算机能够从数据中学习并做出决策。深度学习是机器学习的一个子领域,使用神经网络来模拟人脑的工作方式。" } } ] def create_project(name, description, config): """创建项目""" url = f"{BASE_URL}/api/projects" data = { "name": name, "description": description, "config": config } response = requests.post(url, json=data) if response.status_code == 201: project = response.json() print(f"✓ 创建项目成功: {project['name']} (ID: {project['id']})") return project else: print(f"✗ 创建项目失败: {response.status_code} - {response.text}") return None def create_task(project_id, task_name, task_data): """创建任务""" url = f"{BASE_URL}/api/tasks" data = { "project_id": project_id, "name": task_name, "data": task_data } response = requests.post(url, json=data) if response.status_code == 201: task = response.json() print(f" ✓ 创建任务: {task['name']} (ID: {task['id']})") return task else: print(f" ✗ 创建任务失败: {response.status_code} - {response.text}") return None def main(): """主函数""" print("=" * 60) print("初始化标注平台示例数据") print("=" * 60) print() # 1. 创建文本分类项目 print("1. 创建文本分类项目...") classification_project = create_project( name="情感分析标注项目", description="对用户评论进行情感分类(正面/负面/中性)", config=TEXT_CLASSIFICATION_CONFIG ) if classification_project: print(" 创建文本分类任务...") for i in range(3): create_task( classification_project['id'], SAMPLE_TASKS[i]['name'], SAMPLE_TASKS[i]['data'] ) print() # 2. 创建命名实体识别项目 print("2. 创建命名实体识别项目...") ner_project = create_project( name="命名实体识别项目", description="识别文本中的人名、地名、机构名和时间等实体", config=NER_CONFIG ) if ner_project: print(" 创建命名实体识别任务...") for i in range(3, 5): create_task( ner_project['id'], SAMPLE_TASKS[i]['name'], SAMPLE_TASKS[i]['data'] ) print() # 3. 创建文本高亮项目 print("3. 创建文本高亮标注项目...") highlight_project = create_project( name="文本高亮标注项目", description="标记文本中的重要信息、关键词和问题", config=TEXT_HIGHLIGHT_CONFIG ) if highlight_project: print(" 创建文本高亮任务...") create_task( highlight_project['id'], SAMPLE_TASKS[5]['name'], SAMPLE_TASKS[5]['data'] ) print() print("=" * 60) print("示例数据初始化完成!") print("=" * 60) print() print("你现在可以:") print("1. 访问 http://localhost:4200/projects 查看项目列表") print("2. 点击项目查看详情和任务") print("3. 点击'开始标注'按钮进行标注") print() if __name__ == "__main__": try: main() except requests.exceptions.ConnectionError: print("✗ 错误: 无法连接到后端服务器") print(" 请确保后端服务器正在运行: python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000") except Exception as e: print(f"✗ 发生错误: {e}")