技术博客
文本关键词抽取:TextRank 算法原理与 num 参数调优

文本关键词抽取:TextRank 算法原理与 num 参数调优

作者: 万维易源
2026-08-31
文本关键词抽取TextRank算法原理参数调优
# 文本关键词抽取:TextRank 算法原理与 num 参数调优 - **接口 / 接入点**:文本关键词抽取(apiCode 941)· 接入点 `941-1` - **是否免费**:是 | **请求方式**:POST / GET | **返回格式**:JSON - **适用人群**:中高级开发者、对算法好奇的工程师 - **阅读时间**:约 9 分钟 ## 核心要点 - TextRank 把「词」当图节点,靠共现关系反复投票,重要的词被更多重要词指向。 - `num` 决定返回关键词个数;长文可增大,但靠后词相关性通常更低。 - 调用前做停用词清理与长文切片,能提升关键词质量。 ## Why:别把接口当黑盒 知道关键词「为什么」被抽出来,你才能调好 `num`、写好预处理,并在结果不理想时知道改哪。本文用大白话讲清 TextRank,并给出可调优点。 ## What:TextRank 一句话原理 把正文分词后得到一系列候选词,构建一张「词共现图」:两个词在滑动窗口内相邻,就连一条边。然后像 PageRank 一样迭代投票——被很多词(尤其重要词)指向的词,得分更高,最终得分高的词就是关键词。 ``` 词 A ──共现──> 词 B 词 B ──共现──> 词 C 词 C ──共现──> 词 A (形成互相推荐的「重要词圈」) ``` 所以它不是简单数频率,而是看「谁被重要的词提到」,这正是 TextRank 比纯词频更稳的原因。 ## How:num 与预处理调优 ### 步骤 1 · 调 num `num` 控制返回个数(默认 10)。短文本取小、长文本取大: ```python import requests def kw(text, appkey, num=10): r = requests.post("https://route.showapi.com/941-1", data={"appKey": appkey, "text": text, "num": str(num)}, timeout=10) body = r.json().get("showapi_res_body", {}) return body.get("list", []) if str(body.get("ret_code")) == "0" else [] ``` ### 步骤 2 · 调用前清理停用词(提升质量) ```python STOP = {"的","了","是","在","和","也","我","你","他","就","都","很","与","及"} def clean_words(text): # 简化:实际用分词库(jieba 等)效果更好 return "".join(ch for ch in text if ch not in STOP) ``` ### 步骤 3 · 长文切片 超长正文按段落切片分别抽取再合并去重,降低单段噪声: ```python def kw_long(text, appkey, num=10, limit=500): parts = [text[i:i+limit] for i in range(0, len(text), limit)] out = [] for p in parts: out += kw(p, appkey, num) # 去重保序 seen, res = set(), [] for w in out: if w not in seen: seen.add(w); res.append(w) return res[:num] ``` ## 返回示例与解析 返回 `list` 即按重要性排序的关键词数组;靠前词权重更高、更代表主题。 ## 进阶 / 边界 - `num` 越大,覆盖越广但尾部词越可能是噪声,生产建议取前 5~10 个高质量词。 - 停用词前置是锦上添花,接口内部已做词频处理;是否做取决于你的文本质量。 - 切片注意:窗口过小会割裂语义,建议按自然段落而不是硬字符数切。 ## FAQ **Q1:TextRank 和纯词频有什么区别?** A1:纯词频只看出现次数;TextRank 还看词与词的关系,被重要词共现的词得分更高,更能反映主题。 **Q2:num 最大能传多少?** A2:文档未给出上限数值,默认 10。按业务需要取,过大意义有限;具体以官方档位/说明为准。 **Q3:为什么有时抽出的词不像关键词?** A3:可能是短文本、噪声大或未去停用词;尝试清理停用词、长文切片,或调大 num 后取头部。 **Q4:接口内部用的就是 TextRank 吗?** A4:官方描述为本接口运用 TextRank 词频算法,具体实现以官方为准;本文原理用于帮助理解与调参。 **Q5:num 调大后顺序会变吗?** A5:通常头部稳定、尾部变化更明显;关键主题词一般靠前,不受 num 小幅波动影响。 ## 相关能力 / 下一步阅读 - [文本关键词抽取:新闻摘要与热点提取实战](https://www.showapi.com/guides/text-keyword-news-summary-941) —— 调好 num 直接用于生产 - [文本关键词抽取:5 分钟快速接入指南(Python / cURL / JS)](https://www.showapi.com/guides/text-keyword-quickstart-941) —— 先跑通再调参 - **本系列共 10 篇**:查看[文本关键词抽取指南总目录](https://www.showapi.com/guides/text-keyword-guides-941)