NER Service
命名实体识别(NER)服务,提供实体提取和关系抽取功能。
功能特性
- 实体提取:从文本中识别人名、机构、地点、日期、数值、设备等实体
- 关系抽取:从实体间抽取语义关系
- 多模式支持:
- rule:基于规则的简单 NER(开发测试用,速度快但准确率低)
- ollama:使用本地 Ollama LLM(推荐生产环境,准确率高)
- api:使用远程 API(如百炼、DeepSeek)
- 长文本自动分块处理
快速开始
1. 安装依赖
cd python-services/ner-service
pip install -r requirements.txt
2. 配置环境
# 复制配置文件
cp .env.example .env
# 编辑配置(选择 NER 模式)
vim .env
3. 启动服务
# 规则模式(默认,用于开发测试)
NER_MODEL=rule uvicorn app.main:app --host 0.0.0.0 --port 8001
# Ollama LLM 模式(推荐生产环境)
NER_MODEL=ollama OLLAMA_MODEL=qwen2.5:7b uvicorn app.main:app --host 0.0.0.0 --port 8001
4. 确保 Ollama 服务可用(如使用 ollama 模式)
# 安装 Ollama(如未安装)
curl -fsSL https://ollama.com/install.sh | sh
# 拉取推荐模型
ollama pull qwen2.5:7b
# 确认服务运行
curl http://localhost:11434/api/tags
API 接口
健康检查
GET /health
实体提取
POST /ner/extract
Content-Type: application/json
{
"documentId": "doc-001",
"text": "待提取的文本内容...",
"entityTypes": ["PERSON", "ORG", "LOC"], // 可选
"extractRelations": true
}
关系抽取
POST /ner/relations
Content-Type: application/json
{
"documentId": "doc-001",
"text": "原始文本",
"entities": [...] // 已提取的实体列表
}
实体类型
| 类型 |
说明 |
示例 |
| PERSON |
人名 |
张三、李经理 |
| ORG |
机构 |
成都检测公司 |
| LOC |
地点 |
成都市高新区 |
| DATE |
日期 |
2024年5月15日 |
| NUMBER |
数值 |
100万元、50分贝 |
| DEVICE |
设备 |
噪音检测设备 |
| PROJECT |
项目 |
环境监测项目 |
| TERM |
专业术语 |
- |
关系类型
| 类型 |
说明 |
| 负责 |
主体负责某事 |
| 属于 |
隶属关系 |
| 位于 |
位置关系 |
| 包含 |
包含关系 |
| 使用 |
使用关系 |
| 检测 |
检测关系 |
| 合作 |
合作关系 |
配置说明
基础配置
| 配置项 |
说明 |
默认值 |
| NER_MODEL |
NER 模型类型 (rule/ollama/api) |
rule |
| LOG_LEVEL |
日志级别 |
INFO |
| MAX_TEXT_LENGTH |
最大文本长度 |
50000 |
Ollama 模式配置
| 配置项 |
说明 |
默认值 |
| OLLAMA_URL |
Ollama 服务地址 |
http://localhost:11434 |
| OLLAMA_MODEL |
使用的模型 |
qwen2.5:7b |
| OLLAMA_TIMEOUT |
请求超时(秒) |
120 |
| CHUNK_SIZE |
分块大小(字符) |
2000 |
| CHUNK_OVERLAP |
分块重叠(字符) |
200 |
推荐模型
| 模型 |
大小 |
中文能力 |
推荐场景 |
| qwen2.5:7b |
~4.7GB |
⭐⭐⭐⭐⭐ |
推荐,中文最强 |
| qwen2.5:14b |
~9GB |
⭐⭐⭐⭐⭐ |
显存充足时 |
| llama3.1:8b |
~4.7GB |
⭐⭐⭐ |
英文为主 |
测试
# 运行测试
pytest tests/ -v
# 手动测试 NER
curl -X POST http://localhost:8001/ner/extract \
-H "Content-Type: application/json" \
-d '{"documentId":"test", "text":"2024年5月15日,成都检测公司完成了环境监测项目", "extractRelations": true}'
开发计划