本镜像用于构建LinTO平台的命名实体识别(NER)NLP服务,基于https://github.com/linto-ai/linto-platform-nlp-core%E5%BC%80%E5%8F%91%EF%BC%8C%E5%8F%AF%E4%B8%8Ehttps://github.com/linto-ai/linto-platform-stack%E4%B8%80%E8%B5%B7%E9%83%A8%E7%BD%B2%EF%BC%8C%E4%B9%9F%E5%8F%AF%E7%8B%AC%E7%AB%8B%E9%83%A8%E7%BD%B2%EF%BC%88%E8%AF%A6%E8%A7%81%E5%BC%80%E5%8F%91%E9%83%A8%E5%88%86%EF%BC%89%E3%80%82
LinTO的NLP服务采用spaCy的核心设计理念:组件与管道。组件(位于components/目录下)与服务解耦,可轻松复用至其他spaCy项目,组件通过组织成管道实现特定NLP任务。本服务支持REST API和Celery任务两种启动方式,并提供GPU/CPU支持。
下载模型:将模型下载到主机的./assets目录(也可指定其他位置)
bashcd linto-platform-nlp-named-entity-recognition/ bash scripts/download_models.sh
配置环境变量:复制默认环境变量文件并修改
bashcp .envdefault .env
| 环境变量 | 描述 | 默认值 |
|---|---|---|
APP_LANG | 应用支持的语言列表(空格分隔) | fr en |
ASSETS_PATH_ON_HOST | 主机上资产文件夹路径 | ./assets |
ASSETS_PATH_IN_CONTAINER | 容器内模型卷挂载点 | /app/assets |
LM_MAP | 语言到对应模型的JSON映射字符串 | {"fr":"spacy/xx_ent_wiki_sm-3.2.0/xx_ent_wiki_sm/xx_ent_wiki_sm-3.2.0","en":"spacy/xx_ent_wiki_sm-3.2.0/xx_ent_wiki_sm/xx_ent_wiki_sm-3.2.0"} |
SERVICE_MODE | 服务模式,可选"http"(REST API)或"task"(Celery任务) | "http" |
CONCURRENCY | 最大并发请求数 | 1 |
USE_GPU | 是否使用GPU,可选"True"或"False" | True |
SERVICE_NAME | 微服务名称 | ner |
SERVICES_BROKER | 微服务间通信的消息代理URL | "redis://localhost:6379" |
BROKER_PASS | 消息代理访问密码 | None |
bashsudo docker build --tag lintoai/linto-platform-nlp-named-entity-recognition:latest .
或使用docker-compose构建:
bashsudo docker-compose build
GPU支持模式
确保已安装NVIDIA Container Toolkit和GPU驱动:
bashsudo docker run --gpus all \ --rm -p 80:80 \ -v $PWD/assets:/app/assets:ro \ --env-file .env \ lintoai/linto-platform-nlp-named-entity-recognition:latest
CPU模式
--gpus all参数.env文件中设置USE_GPU=False或使用docker-compose运行:
bashsudo docker-compose up
docker-compose.yml中移除runtime: nvidia配置.env文件中设置USE_GPU=False当SERVICE_MODE=http时,访问http://localhost/docs可查看交互式API文档。
API端点:http://localhost/ner/{lang}
支持的语言
| {lang} | 模型 | NER标签 | 大小 |
|---|---|---|---|
en | https://github.com/explosion/spacy-models/releases/tag/xx_ent_wiki_sm-3.2.0 | LOC, MISC, ORG, PER | 11 MB |
fr | https://github.com/explosion/spacy-models/releases/tag/xx_ent_wiki_sm-3.2.0 | LOC, MISC, ORG, PER | 11 MB |
请求示例
json{ "articles": [ { "text": "Apple Inc. is an American multinational technology company that specializes in consumer electronics, computer software and online services." }, { "text": "Apple was founded in 1976 by Steve Jobs, Steve Wozniak and Ronald Wayne to develop and sell Wozniak's Apple I personal computer." } ] }
响应示例
json{ "ner": [ { "text": "Apple Inc. is an American multinational technology company that specializes in consumer electronics, computer software and online services.", "ents": [ { "text": "Apple Inc", "label": "ORG", "start": 0, "end": 9 }, { "text": "American", "label": "MISC", "start": 17, "end": 25 } ] }, { "text": "Apple was founded in 1976 by Steve Jobs, Steve Wozniak and Ronald Wayne to develop and sell Wozniak's Apple I personal computer.", "ents": [ { "text": "Apple", "label": "ORG", "start": 0, "end": 5 }, { "text": "Steve Jobs", "label": "PER", "start": 29, "end": 39 }, { "text": "Steve Wozniak", "label": "PER", "start": 41, "end": 54 }, { "text": "Ronald Wayne", "label": "PER", "start": 59, "end": 71 }, { "text": "Wozniak", "label": "PER", "start": 92, "end": 99 }, { "text": "Apple I", "label": "MISC", "start": 102, "end": 109 } ] } ] }
启动Redis:在本地安装并运行Redis
bashredis-server --protected-mode no --bind 0.0.0.0 --loglevel debug
配置环境变量:确保.env中设置
SERVICE_MODE=task SERVICES_BROKER=redis://172.17.0.1:6379
启动容器:使用前述docker run或docker-compose up命令启动服务
测试任务:运行以下Python脚本
pythonfrom celery import Celery celery = Celery(broker='redis://localhost:6379/0', backend='redis://localhost:6379/1') r = celery.send_task( 'ner_task', ( 'en', [ "Apple Inc. is an American multinational technology company that specializes in consumer electronics, computer software and online services.", "Apple was founded in 1976 by Steve Jobs, Steve Wozniak and Ronald Wayne to develop and sell Wozniak's Apple I personal computer." ], {"ner": {"top_n": 3}} ), queue='ner') r.get()
推荐通过https://github.com/linto-ai/linto-platform-stack%E8%BF%9B%E8%A1%8C%E9%83%A8%E7%BD%B2%EF%BC%8C%E4%BB%A5%E8%8E%B7%E5%BE%97%E5%AE%8C%E6%95%B4%E7%9A%84%E5%B9%B3%E5%8F%B0%E5%8A%9F%E8%83%BD%E6%94%AF%E6%8C%81%E3%80%82%E7%8B%AC%E7%AB%8B%E9%83%A8%E7%BD%B2%E6%97%B6%E9%9C%80%E7%A1%AE%E4%BF%9D%E6%B6%88%E6%81%AF%E4%BB%A3%E7%90%86%EF%BC%88%E5%A6%82Redis%EF%BC%89%E5%92%8C%E6%A8%A1%E5%9E%8B%E6%96%87%E4%BB%B6%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%E3%80%82
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务