使用Label Studio集成Hugging Face NER模型
该项目使用自定义机器学习后端模型进行命名实体识别(NER),结合了Hugging Face的transformers和Label Studio工具。
该模型实例化了Hugging Face transformers库中的AutoModelForTokenClassification
,并在NER任务上进行了微调。
- 如果只想在推理模式下使用该模型,它会基于预训练模型提供预测结果。
- 如果想微调模型,可以使用Label Studio界面提供训练数据并训练模型。
了解更多兼容模型的信息,请参阅Hugging Face官方文档。
开始之前
在开始之前,您必须安装Label Studio ML后端。
本教程使用huggingface_ner
示例。
标注配置
该机器学习后端与Label Studio的默认NER模板配合使用。在配置标注界面时,您可以通过选择Label Studio预构建的NER模板找到它。该模板位于自然语言处理 > 命名实体识别分类下:
<View>
<Labels name="label" toName="text">
<Label value="PER" background="red"/>
<Label value="ORG" background="darkorange"/>
<Label value="LOC" background="orange"/>
<Label value="MISC" background="green"/>
</Labels>
<Text name="text" value="$text"/>
</View>
然后您可以根据需要自定义模板(例如修改标签名称)。但请注意模型输出的兼容性:
如果您计划仅将模型用于推理,请确保输出标签名称与XML标注配置中列出的内容兼容。如果您计划训练模型,则必须提供可进行微调的基准预训练模型(即可以训练最后一层的模型,例如
distilbert/distilbert-base-uncased
)。否则,在训练过程中可能会遇到关于张量尺寸不匹配的错误。
使用Docker运行(推荐)
- 使用预构建的镜像在
http://localhost:9090
上启动机器学习后端:
docker-compose up
- 验证后端是否正在运行
$ curl http://localhost:9090/
{"status":"UP"}
- 在Label Studio中创建一个项目。然后从项目设置的模型页面,连接模型。默认URL是
http://localhost:9090
。
从源码构建(高级)
要从源代码构建ML后端,您需要克隆代码仓库并构建Docker镜像:
docker-compose build
不使用Docker运行(高级)
要在不使用Docker的情况下运行ML后端,您需要克隆代码库并使用pip安装所有依赖项:
python -m venv ml-backend
source ml-backend/bin/activate
pip install -r requirements.txt
然后你可以启动ML后端:
label-studio-ml start ./huggingface_ner
配置
在运行容器之前,可以在docker-compose.yml
中设置参数。
以下通用参数可用:
BASIC_AUTH_USER
- 指定模型服务器的基础认证用户BASIC_AUTH_PASS
- 指定模型服务器的基础认证密码LOG_LEVEL
- 设置模型服务器的日志级别WORKERS
- 指定模型服务器的工作线程数量THREADS
- 指定模型服务器的线程数BASELINE_MODEL_NAME
: 使用的基线模型名称。默认为dslim/bert-base-NER
。FINETUNED_MODEL_NAME
: 微调模型的名称。默认为finetuned_model
。LABEL_STUDIO_HOST
: Label Studio实例的主机地址。默认为‘http://localhost:8080‘。LABEL_STUDIO_API_KEY
: Label Studio实例的API密钥。START_TRAINING_EACH_N_UPDATES
: 开始训练前的更新次数。默认为10
。LEARNING_RATE
: 模型的学习率。默认为1e-3
。NUM_TRAIN_EPOCHS
: 训练轮数。默认为10
。WEIGHT_DECAY
: 模型的权重衰减率。默认为0.01
。MODEL_DIR
: 模型存储的目录。默认为'./results'
。
注意:训练模型需要
LABEL_STUDIO_API_KEY
。您可以通过登录Label Studio并访问账户与设置页面找到该密钥。
自定义
可以通过在./huggingface_ner/model.py
中添加自定义模型和逻辑来定制ML后端。
修改 predict()
和 fit()
方法以实现您自己的逻辑。