Gensim 是一个用于主题建模、文档相似度计算和向量空间模型的 Python 库。其中,TF-IDF 是 Gensim 中一个非常实用的文本处理技术。

什么是 TF-IDF?

TF-IDF(Term Frequency-Inverse Document Frequency)是一种统计方法,用以评估一个词语对于一个文件集或一个语料库中的其中一份文件的重要程度。TF-IDF 加权考虑了词频(Term Frequency, TF)和逆文档频率(Inverse Document Frequency, IDF)。

  • 词频(TF):一个词在文档中出现的次数与文档总词数的比值。
  • 逆文档频率(IDF):一个词在整个语料库中出现的文档数与语料库总文档数的比值。

TF-IDF 的作用

TF-IDF 主要用于以下场景:

  • 文本分类:通过计算文档中每个词的 TF-IDF 值,可以判断文档的主题。
  • 文本聚类:将具有相似主题的文档聚在一起。
  • 关键词提取:找出文档中最重要的词语。

Gensim 中的 TF-IDF

Gensim 提供了 TfidfModel 类来计算 TF-IDF 值。

from gensim import corpora, models

# 假设 documents 是一个包含多个文档的列表
corpus = corpora.Dictionary(documents)
corpus = [corpus.doc2bow(doc) for doc in documents]

tfidf_model = models.TfidfModel(corpus)

示例

以下是一个简单的 TF-IDF 示例:

# 假设我们有以下文档
documents = [['Gensim', 'is', 'good'], ['Gensim', 'is', 'very', 'good']]

# 创建词典和语料库
corpus = corpora.Dictionary(documents)
corpus = [corpus.doc2bow(doc) for doc in documents]

# 计算 TF-IDF
tfidf_model = models.TfidfModel(corpus)

# 获取文档的 TF-IDF 向量
doc_bow = corpus[0]
doc_tfidf = tfidf_model[doc_bow]

# 打印 TF-IDF 值
for word_id, tfidf in doc_tfidf:
    print(word_id, corpus.get(word_id), tfidf)

扩展阅读

想要了解更多关于 Gensim 和 TF-IDF 的知识,可以参考以下链接:

Gensim Logo