中文分词接口:如何用分词结果做关键词提取与文本标签
chinese-segmentation-keyword-extraction-269 # 中文分词接口:如何用分词结果做关键词提取与文本标签
> 接口:中文分词接口(269-1) · 免费 · POST/GET · JSON · 适用人群:开发者、内容运营 · 阅读时间:8 分钟
## 核心要点
- 分词得到 `list` 后,做词频统计即可提取高频词;配合停用词表去噪,得到可用于标签/摘要的关键词。
- 单篇用内存统计即可;多篇章用同一套逻辑批量跑,结果可沉淀为文章标签。
- 这是"词义分析"场景最直接的落地:不用训练模型,调用即出词。
## Why:分词之后能干嘛
拿到一串词只是第一步。真正有用的是基于词频判断"这篇在讲什么"。新闻摘要、商品标签、知识库归类,底层都依赖这一步。中文分词接口把"断词"这事外包出去,你只需专注"数词、排序、过滤"的业务逻辑。
## What:前置条件与接口速览
| 项 | 说明 |
|----|------|
| 输入 | 任意中文文本(如文章正文、商品描述) |
| 处理 | 调用 269-1 拿 `list` → 过滤停用词 → 词频统计 → 取 Top-K |
| 输出 | 关键词列表 + 词频 |
| 依赖 | 仅本接口 + 一份停用词表(如"的/了/是/在"等) |
## How:关键词提取实现
**Python(含停用词过滤与词频排序)**
```python
import urllib.request, urllib.parse, json
from collections import Counter
APP_KEY = "YOUR_APPKEY"
STOPWORDS = set("的 了 是 在 和 与 及 也 都 就 而 及 一个 我们 你们 他们".split())
def segment(text):
url = f"https://route.showapi.com/269-1?appKey={APP_KEY}"
data = urllib.parse.urlencode({"text": text}).encode("utf-8")
req = urllib.request.Request(url, data=data,
headers={"content-type": "application/x-www-form-urlencoded"})
with urllib.request.urlopen(req, timeout=10) as resp:
res = json.loads(resp.read().decode("utf-8"))
body = res.get("showapi_res_body", {})
if body.get("ret_code") == 0:
return body.get("list", [])
return []
def extract_keywords(text, top_k=5):
words = [w for w in segment(text) if w not in STOPWORDS and len(w) > 1]
counter = Counter(words)
return counter.most_common(top_k)
text = "中文分词接口可以把一长段中文切成一个个词,方便做关键词提取和文本标签。"
print(extract_keywords(text, top_k=5))
# 示例输出:[('中文分词', 1), ('接口', 1), ('切', 1), ('一个个', 1), ('关键词', 1)]
```
**cURL**
```bash
curl -X POST "https://route.showapi.com/269-1?appKey=YOUR_APPKEY" \
--data-urlencode "text=中文分词接口可以把一长段中文切成一个个词"
```
**Node.js**
```js
const STOP = new Set(["的","了","是","在","和","与","及","也","都","就","而"]);
async function extractKeywords(text, topK = 5) {
const res = await fetch(`https://route.showapi.com/269-1?appKey=YOUR_APPKEY`, {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ text }).toString()
}).then(r => r.json());
const list = (res.showapi_res_body || {}).list || [];
const cnt = {};
list.filter(w => !STOP.has(w) && w.length > 1)
.forEach(w => cnt[w] = (cnt[w] || 0) + 1);
return Object.entries(cnt).sort((a,b)=>b[1]-a[1]).slice(0, topK);
}
```
## 返回示例与解析
传入 `"中文分词接口可以把一长段中文切成一个个词"` → `list` 含 `["中文","分词","接口","可以","把","一长段","中文","切成","一个个","词"]` → 过滤停用词 + 排序后取 Top-K 作为标签。
## 进阶 / 边界
- 词频是"无监督"的最简关键词方案,适合冷启动;要更准可叠加 TF-IDF(需语料统计 IDF)或接专业关键词模型。
- 停用词表质量直接影响结果;建议按业务补充领域停用词(如电商里的"包邮""新品")。
- 免费接口有档位限制,批量跑长文本注意[限流与缓存](https://www.showapi.com/guides/chinese-segmentation-free-tier-269)。
## FAQ
**Q:分词粒度能调吗?**
A:本接口返回粒度固定,无法在请求参数中调节。详见[常见问题与避坑指南](https://www.showapi.com/guides/chinese-segmentation-faq-269)。
**Q:为什么有些词被拆得很碎?**
A:分词算法对未登录词(新词、专有名词)可能切得偏细;可结合业务词典做后处理合并。
**Q:英文单词也算一个词吗?**
A:是的,中英文混排时英文/数字作为独立词出现在 `list` 中。
**Q:能直接当摘要用吗?**
A:Top-K 关键词适合做标签,完整摘要还需结合句子抽取;关键词是摘要的第一步。
## 相关能力 / 下一步阅读
- [中文分词接口返回字段全解:list 分词数组与 ret_code 一文读懂](https://www.showapi.com/guides/chinese-segmentation-response-fields-269)
- [中文分词接口:营销推广与用户消费意图捕捉的落地实践](https://www.showapi.com/guides/chinese-segmentation-marketing-269)
- [中文分词接口:免费档位下的限流与调用策略](https://www.showapi.com/guides/chinese-segmentation-free-tier-269)
- **本系列共 11 篇**:查看[中文分词接口指南总目录](https://www.showapi.com/guides/chinese-segmentation-guides-269)