File size: 2,518 Bytes
aa3f235
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# NER API 接口文档

Base URL: `http://localhost:4000`

---

## GET /health

健康检查。

**响应**

```json
{"status": "ok"}
```

---

## POST /extract

从文本中抽取命名实体。

**请求体**

| 字段        | 类型           | 必填 | 默认值 | 说明                         |
|-------------|----------------|------|--------|------------------------------|
| `text`      | string         | 是   | —      | 待抽取的文本                 |
| `labels`    | array[string]  | 是   | —      | 期望识别的实体类型列表       |
| `threshold` | float [0, 1]   | 否   | `0.5`  | 置信度阈值,低于此值的结果过滤掉 |

**请求示例**

```json
{
  "text": "Elon Musk founded SpaceX in Hawthorne, California.",
  "labels": ["person", "organization", "location"],
  "threshold": 0.5
}
```

**响应体**

| 字段               | 类型          | 说明                         |
|--------------------|---------------|------------------------------|
| `entities`         | array[Entity] | 抽取到的实体列表             |
| `entities[].text`  | string        | 实体原文                     |
| `entities[].label` | string        | 实体类型(与请求 labels 对应)|
| `entities[].score` | float         | 置信度分数,范围 [0, 1]      |
| `entities[].start` | int           | 实体在原文中的起始字符偏移   |
| `entities[].end`   | int           | 实体在原文中的结束字符偏移   |

**响应示例**

```json
{
  "entities": [
    {"text": "Elon Musk",   "label": "person",       "score": 0.98, "start": 0,  "end": 9 },
    {"text": "SpaceX",      "label": "organization", "score": 0.97, "start": 18, "end": 24},
    {"text": "Hawthorne",   "label": "location",     "score": 0.91, "start": 28, "end": 37},
    {"text": "California",  "label": "location",     "score": 0.95, "start": 39, "end": 49}
  ]
}
```

**错误码**

| HTTP 状态码 | 说明                                      |
|-------------|-------------------------------------------|
| `200`       | 成功,`entities` 为空列表表示未抽取到结果 |
| `422`       | 请求参数校验失败(如 threshold 超出范围) |

---

## 说明

- 模型支持 **zero-shot** 识别,`labels` 可传入任意自定义类型,无需预定义。
- 服务启动时加载一次模型,所有请求复用同一实例。
- 在线文档(服务运行时可访问):
  - Swagger UI:`http://localhost:4000/docs`
  - ReDoc:`http://localhost:4000/redoc`