关于 keyword-extractor
keyword-extractor 是一款从文本中提取关键词和短语并排序的 Python 工具,提供 TF-IDF、RAKE 和词频分析,也支持可视化、批处理与导出。
主要功能
- 01TF-IDF、RAKE 和词频分析
- 02提取多词短语
- 03相关性评分和 n-gram
- 04内置及自定义停用词
- 05词云和关键词图表
- 06批处理与文件导出
适用场景
- 01查找文章或文档中的重要词语
- 02比较多份文档中的关键词
- 03分析网页内容中的短语
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill keyword-extractor安装后在 Claude Code 中输入/keyword-extractor确认已加载。
附带文件scripts/keyword_extractor.pyscripts/requirements.txt
详细介绍
关键词提取器
使用多种算法从文本文件中提取重要关键词和关键短语。支持 TF-IDF、RAKE 和简单的词频分析,并提供词云可视化。
快速开始
from scripts.keyword_extractor import KeywordExtractor
# Extract keywords
extractor = KeywordExtractor()
keywords = extractor.extract("Your long text document here...")
print(keywords[:10]) # Top 10 keywords
# From file
keywords = extractor.extract_from_file("document.txt")
extractor.to_wordcloud("keywords.png")
功能
- 多种算法:TF-IDF、RAKE、基于词频的算法
- 关键短语:提取多词短语,而不只是单个词
- 评分:为相关性评分并排序
- 停用词过滤:内置停用词和自定义停用词
- N 元语法支持:一元、二元和三元语法
- 词云:可视化关键词重要性
- 批处理:处理多个文档
API 参考
初始化
extractor = KeywordExtractor(
method="tfidf", # tfidf, rake, frequency
max_keywords=20, # Maximum keywords to return
min_word_length=3, # Minimum word length
ngram_range=(1, 3) # Unigrams to trigrams
)
提取方法
# TF-IDF (best for comparing documents)
keywords = extractor.extract(text, method="tfidf")
# RAKE (best for key phrases)
keywords = extractor.extract(text, method="rake")
# Frequency (simple word counts)
keywords = extractor.extract(text, method="frequency")
结果格式
keywords = extractor.extract(text)
# Returns list of tuples: [(keyword, score), ...]
# [('machine learning', 0.85), ('data science', 0.72), ...]
# Get just keywords
keyword_list = extractor.get_keywords(text)
# ['machine learning', 'data science', ...]
自定义
# Add custom stopwords
extractor.add_stopwords(['company', 'product', 'service'])
# Set minimum frequency
extractor.min_frequency = 2
# Filter by part of speech (nouns only)
extractor.pos_filter = ['NN', 'NNS', 'NNP']
可视化
# Generate word cloud
extractor.to_wordcloud("wordcloud.png", colormap="viridis")
# Bar chart of top keywords
extractor.plot_keywords("keywords.png", top_n=15)
导出
# To JSON
extractor.to_json("keywords.json")
# To CSV
extractor.to_csv("keywords.csv")
# To plain text
extractor.to_text("keywords.txt")
CLI 用法
# Extract from text
python keyword_extractor.py --text "Your text here" --top 10
# Extract from file
python keyword_extractor.py --input document.txt --method tfidf --output keywords.json
# Generate word cloud
python keyword_extractor.py --input document.txt --wordcloud cloud.png
# Batch process directory
python keyword_extractor.py --input-dir ./docs --output keywords_all.csv
CLI 参数
| 参数 | 说明 | 默认值 |
|---|---|---|
--text | 要分析的文本 | - |
--input | 输入文件路径 | - |
--input-dir | 文件目录 | - |
--output | 输出文件 | - |
--method | 算法(tfidf、rake、frequency) | tfidf |
--top | 关键词数量 | 20 |
--ngrams | N 元语法范围(例如 "1,2") | 1,3 |
--wordcloud | 生成词云 | - |
--stopwords | 自定义停用词文件 | - |
示例
文章关键词提取
extractor = KeywordExtractor(method="tfidf")
article = """
Machine learning is transforming data science. Deep learning models
are achieving state-of-the-art results in natural language processing
and computer vision. Neural networks continue to advance...
"""
keywords = extractor.extract(article, top_n=10)
for keyword, score in keywords:
print(f"{score:.3f}: {keyword}")
比较多个文档
extractor = KeywordExtractor(method="tfidf")
docs = [
open("doc1.txt").read(),
open("doc2.txt").read(),
open("doc3.txt").read()
]
# Extract keywords from each
for i, doc in enumerate(docs):
keywords = extractor.extract(doc, top_n=5)
print(f"\nDocument {i+1}:")
for kw, score in keywords:
print(f" {kw}: {score:.3f}")
SEO 关键词研究
extractor = KeywordExtractor(
method="rake",
ngram_range=(2, 4), # Focus on phrases
max_keywords=30
)
webpage_content = open("page.html").read()
keywords = extractor.extract(webpage_content)
# Filter by score threshold
high_value = [(kw, s) for kw, s in keywords if s > 0.5]
print("High-value keywords for SEO:")
for kw, score in high_value:
print(f" {kw}")
算法比较
| 算法 | 适用场景 | 优势 |
|---|---|---|
| TF-IDF | 文档比较 | 找出独特词项,适合搜索 |
| RAKE | 关键短语 | 提取多词概念 |
| Frequency | 快速概览 | 简单、快速、易于理解 |
依赖项
scikit-learn>=1.2.0
nltk>=3.8.0
pandas>=2.0.0
matplotlib>=3.7.0
wordcloud>=1.9.0
局限性
- 针对英语优化(其他语言需要使用特定语言的停用词)
- 非常短的文本可能没有足够的数据用于 TF-IDF
- 特定领域的行话可能需要自定义停用词处理
评论
支持 Markdown