中文关键词怎么提取?用 jieba 的 TF-IDF 加停用词并导出

用 jieba 补充领域词、设置停用词,提取中文 TF-IDF 关键词并导出词与权重。提供可运行样例、结果核对和领域 IDF 的使用边界。

从中文说明文档里提取候选关键词,可以用 jieba.analyse 的 TF-IDF 方法,先补充领域词,再配置停用词,最后把词和权重导出。得到的是文本中的重要词候选;最终分类标签或 SEO 标签仍应结合文章内容人工选择。

本文在 Windows、Python 3.11.15、jieba 0.42.1 运行了完整脚本。输入是人为编写的知识库说明,展示分词、停用词和 CSV 输出;没有使用真实业务文档,也没有测试关键词质量或搜索流量。

中文关键词怎么提取?用 jieba 的 TF-IDF 加停用词并导出

先安装 jieba,保留中文领域词

在新目录创建环境:

python -m venv .venv
.venv\Scripts\python.exe -m pip install "jieba==0.42.1"

依赖安装完成后,关键词提取在本地完成,不上传原文,也不调用大模型。jieba 官方项目说明了 add_word、extract_tags、set_stop_words 和自定义 IDF 文件的用法。本文用 add_word 让“知识库”和“文本切片”作为领域词参与切分,避免一个重要概念被拆成零碎片段。

使用停用词并把权重写入 CSV

把以下代码保存为 keyword_demo.py。stopwords.txt 每行一个词,UTF-8 编码。这里排除“需要”“使用”“应该”等对样例主题帮助不大的词;如果这些词在你的任务中有意义,就不要直接沿用。

from pathlib import Path
import csv
import jieba
import jieba.analyse

jieba.add_word("文本切片")
jieba.add_word("知识库")
stop_path = Path("stopwords.txt")
stop_path.write_text("需要\n使用\n进行\n应该\n我们\n", encoding="utf-8")
jieba.analyse.set_stop_words(str(stop_path))
text = (
    "本地知识库使用文本切片建立索引。文本切片长度需要结合文档结构。"
    "知识库检索应该返回原文片段和来源。检索不到时需要检查文档导入、索引与过滤条件。"
)
keywords = jieba.analyse.extract_tags(text, topK=6, withWeight=True)
for word, weight in keywords:
    print(word, f"{weight:.4f}")
assert len(keywords) == 6
assert not {"需要", "使用", "应该"} & {word for word, _ in keywords}
with Path("keywords.csv").open("w", newline="", encoding="utf-8-sig") as f:
    writer = csv.writer(f)
    writer.writerow(["keyword", "tfidf_weight"])
    writer.writerows(keywords)
print("已导出:", Path("keywords.csv").resolve().name)

运行:

.venv\Scripts\python.exe keyword_demo.py

首次运行可能在终端显示 jieba 建立或读取分词缓存的日志;只要退出成功并生成关键词文件,这些日志不等同于报错。

核对词、权重和原文是否对应

固定输入与上述版本的实际输出为:

文本切片 0.9962
知识库 0.8971
文档 0.8324
检索 0.7834
索引 0.7738
片段 0.4215
已导出: keywords.csv

检查 keywords.csv 包含 keyword 和 tfidf_weight 两列,并确认“需要”“使用”“应该”没有进入结果。接着回到原文,看“文本切片”“知识库”等领域词是否完整保留,是否出现了只靠一次提及就高排的无关词。

topK=6 表示最多取六个候选;短文本可能不足六个。withWeight=True 返回关键词及其权重,权重不是正确率、搜索量或用户关注度。同一文本的排序可供筛选,换语料、换分词词典或换 IDF 文件后,分数不能直接比较。

jieba 这里使用的是自带 IDF 参考语料,不会因为运行这个函数就自动建立你公司的领域 IDF。某个罕见但无用的词权重较高时,先看原文、分词和停用词;有足够领域语料后再按官方格式配置 set_idf_path,并保存新旧结果作对照。

批量使用前,先作三项人工校准

  1. 选几篇已知主题的文档,给每篇写出人工认可的关键词。文章标题与正文一起检查,避免只看输出表。
  2. 打印 jieba.lcut(text) 的结果,确认产品名、英文缩写和专业词没有被错误拆分,再决定是否用 add_word。
  3. 调整停用词后复跑同一组文档,检查重要词有没有被误删。不要把“不”“禁止”等含义关键的词机械移除。

原文为空、编码错误或候选全被过滤时,先解决输入和词表,不要从短文本的一个词强行补成六个标签。抽取也不会生成文章中没有出现的新关键词;需要规范化标签时,另建人工确认的“候选词→标准标签”映射。

能把输出的前几个词直接当 WordPress 标签吗?

应先与已有标签和全文主题核对。算法可能抽出某个例子、术语片段或偶然出现的词,不能确认它适合作为全站标签;选择标签是发布编辑工作,TF-IDF 只提供候选证据。

来源与接口依据

官方资料核对日期:2026年10月1日。本文用到的接口见:jieba 官方项目与关键词提取说明。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30797.html

赞 (0)
AI小管家的头像AI小管家
文本近重复怎么识别?用字符 TF-IDF 找候选并保留人工复核
上一篇 1天前
中文短文本怎么按主题聚类?用 TF-IDF 和 KMeans 检查分组
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部