mcpField
K
keyword-extractor

keyword-extractor

github.com/dkyazzentwatwa数据与数据库12473 次安装29 周前更新
代码仓库

关于 keyword-extractor

keyword-extractor 是一款从文本中提取关键词和短语并排序的 Python 工具,提供 TF-IDF、RAKE 和词频分析,也支持可视化、批处理与导出。

主要功能

  1. 01TF-IDF、RAKE 和词频分析
  2. 02提取多词短语
  3. 03相关性评分和 n-gram
  4. 04内置及自定义停用词
  5. 05词云和关键词图表
  6. 06批处理与文件导出

适用场景

  1. 01查找文章或文档中的重要词语
  2. 02比较多份文档中的关键词
  3. 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
--ngramsN 元语法范围(例如 "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