news 2026/5/1 6:26:41

自然语言处理容易混淆知识点(一)c-TF-IDF和TF-IDF的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自然语言处理容易混淆知识点(一)c-TF-IDF和TF-IDF的区别

c-TF-IDF 和 TF-IDF

    • 什么是 c-TF-IDF?
      • 传统 TF-IDF
      • c-TF-IDF(基于类的 TF-IDF)
    • c-TF-IDF 的计算公式
    • 直观理解
    • 在 BERTopic 中的工作流程
    • 代码示例:使用 c-TF-IDF
    • 与传统 TF-IDF 对比
    • c-TF-IDF 的优势
    • 自定义 c-TF-IDF 参数
    • 可视化 c-TF-IDF 权重
    • 总结

BERTopic 中一个非常核心的概念——c-TF-IDF(class-based TF-IDF)。这是 BERTopic 区别于其他主题模型的关键创新点。

什么是 c-TF-IDF?

传统 TF-IDF

  • TF(词频):一个词在单个文档中出现的频率
  • IDF(逆文档频率):衡量一个词在所有文档中的普遍性
  • 应用对象:单个文档

c-TF-IDF(基于类的 TF-IDF)

  • 每个主题视为一个"文档类"
  • 计算时:一个主题(类)vs所有其他主题(类)
  • 应用对象:整个主题/类别

c-TF-IDF 的计算公式

c-TF-IDF(w, c) = tf(w, c) × log(1 + N / df(w))
  • tf(w, c):词 w 在主题 c 的所有文档中出现的总次数
  • N:主题总数
  • df(w):包含词 w 的主题数量

直观理解

假设我们有 3 个主题:科技、体育、政治

科技主题体育主题政治主题是否适合做主题词
“算法”高频几乎无偶尔出现✅ 优秀(区分度高)
“比赛”低频高频低频✅ 优秀
“政策”低频低频高频✅ 优秀
“非常”中频中频高频❌ 差(普遍性高)
“重要”高频高频高频❌ 差(无区分度)

在 BERTopic 中的工作流程

frombertopicimportBERTopicfrombertopic.vectorizersimportClassTfidfTransformer# 1. 文档聚类(使用嵌入和聚类算法)# docs → 文档嵌入 → 聚类 → 得到主题标签# 2. 为每个主题创建词袋表示# 同一主题的所有文档合并 → 统计词频# 3. 应用 c-TF-IDFctfidf_model=ClassTfidfTransformer(reduce_frequent_words=True,# 降低过于频繁的词的权重bm25_weighting=True,# 使用 BM25 风格的权重(可选))# 4. 得到每个主题的 top N 关键词topic_keywords=ctfidf_model.transform(topic_word_frequencies)

代码示例:使用 c-TF-IDF

frombertopicimportBERTopicfrombertopic.vectorizersimportClassTfidfTransformerimportnumpyasnp# 示例文档docs=["机器学习算法需要大量数据","深度学习是机器学习的一个分支","篮球比赛需要团队合作","足球运动员需要良好的体能","政府发布了新的经济政策","外交关系对国家发展很重要"]# 1. 创建 BERTopic 模型,自定义 c-TF-IDF 参数ctfidf_model=ClassTfidfTransformer(bm25_weighting=True,# 使用 BM25 而非传统 TF-IDFreduce_frequent_words=True,# 降低常见词的权重diversity=0.5# 增加多样性(可选))topic_model=BERTopic(ctfidf_model=ctfidf_model,# 使用自定义的 c-TF-IDFmin_topic_size=2,# 每个主题最少文档数verbose=True)# 2. 训练模型topics,probabilities=topic_model.fit_transform(docs)# 3. 查看主题关键词(基于 c-TF-IDF 排序)print("主题和关键词:")fortopic_numinset(topics):iftopic_num!=-1:# 跳过异常值(-1 表示未聚类)topic_info=topic_model.get_topic(topic_num)print(f"\n主题{topic_num}:")forword,scoreintopic_info[:5]:# 前5个关键词print(f"{word}:{score:.4f}")# 4. 查看 c-TF-IDF 矩阵print("\n=== c-TF-IDF 矩阵形状 ===")ifhasattr(topic_model,'c_tf_idf_'):print(f"矩阵形状:{topic_model.c_tf_idf_.shape}")print(f"(主题数 × 词汇表大小)")

与传统 TF-IDF 对比

fromsklearn.feature_extraction.textimportTfidfVectorizerimportpandasaspd# 传统 TF-IDF(文档级别)vectorizer=TfidfVectorizer()X_tfidf=vectorizer.fit_transform(docs)print("传统 TF-IDF 矩阵形状:",X_tfidf.shape)# (6个文档 × 词汇表大小)# c-TF-IDF(主题级别)# 假设我们已经有主题标签:[0, 0, 1, 1, 2, 2]# BERTopic 内部会合并同一主题的文档# 得到矩阵形状: (3个主题 × 词汇表大小)

c-TF-IDF 的优势

  1. 主题导向:为整个主题选择最具代表性的词
  2. 去噪能力:自动降低常见词(如"的"、“是”)和停用词的权重
  3. 可解释性:每个主题的关键词都是基于统计的,容易理解
  4. 效率高:只在主题级别计算,而非文档级别

自定义 c-TF-IDF 参数

frombertopic.vectorizersimportClassTfidfTransformer# 配置选项ctfidf_config={# BM25 参数"bm25_weighting":True,# 使用 BM25(更好的长文档处理)"k1":1.2,# BM25 k1 参数(控制词频饱和度)"b":0.75,# BM25 b 参数(控制文档长度归一化)# 传统 TF-IDF 参数"reduce_frequent_words":True,# 降低过于频繁的词的权重"diversity":None,# 可选:0-1,增加关键词多样性}ctfidf_model=ClassTfidfTransformer(**ctfidf_config)# 或者在创建 BERTopic 时直接传递topic_model=BERTopic(ctfidf_model=ctfidf_model,# ... 其他参数)

可视化 c-TF-IDF 权重

importmatplotlib.pyplotasplt# 获取特定主题的关键词和权重topic_num=0topic_words=topic_model.get_topic(topic_num)# 提取词和权重words=[wordforword,scoreintopic_words[:10]]scores=[scoreforword,scoreintopic_words[:10]]# 绘制条形图plt.figure(figsize=(10,6))plt.barh(words,scores)plt.xlabel('c-TF-IDF 权重')plt.title(f'主题{topic_num}的关键词权重')plt.gca().invert_yaxis()# 最高权重在顶部plt.show()

总结

c-TF-IDF 是 BERTopic 的"大脑",它:

  • 将传统 TF-IDF 从文档级别提升到主题级别
  • 自动识别每个主题最具有区分度的关键词
  • 配合嵌入模型,既考虑语义相似度,又考虑统计显著性
  • 使得生成的主题标签既准确又可解释

这就是为什么 BERTopic 既能处理海量文档,又能生成高质量、易理解的主题!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 15:16:15

AI时代裁员潮真相:是AI夺走了工作,还是企业转型的必然?

简介 文章探讨了科技行业裁员潮中AI的真实角色。AI虽提高效率降低成本,但经济下行、过度扩张和市场竞争也是重要因素。企业正进行战略转型,将资源从传统业务转向AI领域,这不仅是成本削减,更是人才结构重构。AI带来的是劳动力转型&…

作者头像 李华
网站建设 2026/4/25 15:42:10

GEO 3小问:一文搞懂 AI 搜索时代的 “品牌曝光关键”

1. 问:到底什么是 GEO?和传统搜索优化不一样吗?答:GEO 全称 “AI 搜索优化”,核心是让品牌精准出现在用户用 AI 提问的答案里 —— 比如用户问 AI “北京靠谱的装修公司”“国产好口碑奶粉”,GEO 能让你的品…

作者头像 李华
网站建设 2026/4/28 4:16:25

5、VXLAN与BGP EVPN的融合:数据中心网络的优化方案

VXLAN与BGP EVPN的融合:数据中心网络的优化方案1. VXLAN的优势与不足在当今的数据中心环境中,支持软件和硬件VTEP(虚拟隧道端点)的混合环境已成为常态。VXLAN(虚拟可扩展局域网)为解决网络扩展性差、增强网…

作者头像 李华
网站建设 2026/4/18 4:11:37

11、数据中心网络底层路由与多播流量处理解析

数据中心网络底层路由与多播流量处理解析1. 网络维护时的隔离操作在网络维护或其他可能造成干扰的操作期间,可通过关闭与网络虚拟边缘(NVE)或虚拟隧道端点(VTEP)关联的第一个环回接口,从底层路由的角度隔离…

作者头像 李华
网站建设 2026/5/1 6:25:21

前端项目打包详细,零基础入门到精通,收藏这篇就够了

项目打包命令为:npm run build 打包后会文件夹中自动生成一个dist文件 这个文件就是最终上传服务器的文件(或者将这个dist给后端) dist中的index打开是本地看不见什么的。如果想查看项目 ---- 1.在config目录中找到index。js build: { // …

作者头像 李华
网站建设 2026/4/6 18:11:43

2026趋势展望:DSL模型能力将成为AI数据分析可用性的关键

结合过去几年我们对前沿趋势的关注,以及从服务客户的一线获取的一手信息,我们展望了2026年数据分析的十大趋势,并将逐一展开解读。 趋势一:Data Agent开始规模化兑现价值 趋势二:AI数据分析迎来多智能体(…

作者头像 李华