第二章 标注环境搭建:Python环境、标注工具安装(LabelStudio)、依赖库配置
好,咱们直接进入正题。做法律数据标注,第一步就是把环境搭好。这活儿看着简单,但我在项目里见过太多人卡在这一步——不是Python版本冲突,就是LabelStudio死活起不来。今天我把踩过的坑都摊开讲,你跟着走一遍,基本不会出问题。
2.1 Python环境配置
我个人习惯用Python 3.9或3.10。为什么?因为LabelStudio和大部分NLP库在这两个版本上最稳。Python 3.11以上有些依赖还没完全跟上,容易报错。
具体操作分三步:
- 安装Python:去官网下载3.9.x或3.10.x,安装时勾选“Add Python to PATH”。
- 创建虚拟环境:
# 打开终端(Windows用cmd或PowerShell,Mac/Linux用bash)
python -m venv legal_annotation_env
# 激活环境
# Windows:
legal_annotation_env\Scripts\activate
# Mac/Linux:
source legal_annotation_env/bin/activate
# 看到终端前面出现 (legal_annotation_env) 就对了
- 升级pip:
pip install --upgrade pip
嗯,这里要注意:如果你在公司内网,可能需要配置镜像源。我曾经在客户现场折腾了两小时,才发现是网络代理的问题。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
2.2 LabelStudio安装与配置
LabelStudio是目前法律标注领域最顺手的工具。它支持文本分类、序列标注、多轮对话标注,而且可以自定义模板。说白了,你需要的功能它基本都有。
2.2.1 安装方式
有两种方式:pip安装和Docker安装。我推荐pip,因为更轻量,调试也方便。
# 在刚才激活的虚拟环境中执行
pip install label-studio
# 验证安装
label-studio --version
# 如果输出版本号,比如 1.11.0,就说明装好了
Docker方式适合团队部署:
docker pull heartexlabs/label-studio:latest
docker run -it -p 8080:8080 heartexlabs/label-studio
2.2.2 启动与初始化
# 启动LabelStudio
label-studio start
# 默认会在 http://localhost:8080 启动
# 第一次访问会让你创建管理员账号
启动后,你会看到这样的界面:
✓ Label Studio is running on http://localhost:8080
✓ Check out the documentation at http://localhost:8080/docs
打开浏览器,注册一个账号。嗯,这里有个坑——密码要求至少8位,包含大小写字母和数字。我上次给客户演示时,随手输了个“123456”,结果被拒绝了,场面一度很尴尬。
2.2.3 创建法律标注项目
登录后,点击“Create Project”。项目名称我建议用“法律合同实体标注_2024”这种格式,方便后续管理。
在“Labeling Setup”中,选择“Named Entity Recognition”。然后添加标签:
- 当事人(甲方、乙方、第三方)
- 金额(合同金额、违约金、赔偿金)
- 日期(签订日期、履行期限、生效日期)
- 条款编号(第一条、第2.1款)
- 法律术语(不可抗力、违约责任、知识产权)
这些标签是法律标注的基础。我在实际项目中,还会根据具体合同类型增加“管辖法院”、“争议解决方式”等标签。
2.3 依赖库配置
光有LabelStudio还不够,我们还需要一些辅助库来处理数据、做预标注、导出结果。
2.3.1 核心依赖
| 库名 | 用途 | 安装命令 |
|---|---|---|
| label-studio-sdk | Python调用LabelStudio API | pip install label-studio-sdk |
| pandas | 数据处理与导出 | pip install pandas |
| spacy | 预标注与实体识别 | pip install spacy |
| transformers | 法律大模型推理 | pip install transformers |
| openpyxl | Excel格式导出 | pip install openpyxl |
2.3.2 一键安装脚本
我习惯把依赖写到一个文件里,方便复现:
# requirements.txt
label-studio==1.11.0
label-studio-sdk==1.0.3
pandas==2.1.0
spacy==3.7.2
transformers==4.36.0
openpyxl==3.1.2
然后执行:
pip install -r requirements.txt
pip freeze > requirements_frozen.txt 锁定版本。这样换机器部署时,不会因为版本差异出问题。
2.3.3 验证环境
写个简单的测试脚本,确认所有组件都能正常工作:
# test_env.py
import label_studio
import label_studio_sdk
import pandas as pd
import spacy
import transformers
print("✅ LabelStudio 版本:", label_studio.__version__)
print("✅ LabelStudio SDK 版本:", label_studio_sdk.__version__)
print("✅ Pandas 版本:", pd.__version__)
print("✅ SpaCy 版本:", spacy.__version__)
print("✅ Transformers 版本:", transformers.__version__)
# 测试LabelStudio连接
from label_studio_sdk import Client
ls = Client(url='http://localhost:8080', api_key='你的API密钥')
print("✅ LabelStudio 连接成功")
运行 python test_env.py,如果全部输出绿色勾,说明环境搭建完成。
2.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你跟着这个流程走,不会迷路:
2.5 避坑指南
最后,分享几个我实际项目中遇到的坑:
- 端口被占用:如果8080端口被其他程序占了,用
label-studio start -p 8081换个端口。 - API密钥找不到:在LabelStudio界面右上角,点你的头像 → Account → Access Token,复制即可。
- 中文乱码:导入数据时,确保文件编码是UTF-8。我曾经用GBK编码导入,结果所有中文都变成了乱码,重新标注了两天的工作量。
- 内存不足:如果法律文档特别大(比如几百页的合同),LabelStudio可能会卡。建议先拆分文档,每份不超过50页。
好了,环境搭建就到这里。你跟着操作一遍,应该半小时内就能跑起来。如果遇到问题,检查一下虚拟环境是否激活、pip版本是否够新——80%的问题都出在这两个地方。