主题模型三大基石:Unigram、LSA、PLSA详解与对比

news2025/7/16 2:17:08

🌟 主题模型演进图谱

文本建模三阶段
词袋模型 → 潜在语义 → 概率生成
Unigram → LSA → PLSA → LDA

📦 基础模型:Unigram模型

核心假设

  • 文档中每个词独立生成(词袋假设)

  • 忽略词语顺序和语义关联

  • 文档生成概率:P(d)=∏w∈dP(w)P(d)=∏w∈d​P(w)

数学表示

P(d)=∏i=1NP(wi)P(d)=∏i=1N​P(wi​)
其中:

  • NN为文档词数

  • P(wi)P(wi​)为词wiwi​的全局出现概率

🔍 潜在语义分析:LSA/LSI模型

核心思想

  • 通过矩阵分解发现潜在语义维度

  • 使用SVD分解词-文档矩阵

  • 降维消除噪声,捕捉高阶关联

算法步骤

  1. 构建词-文档矩阵Xm×nXm×n​

  2. 奇异值分解:X=UΣVTX=UΣVT

  3. 选择前kk个奇异值:X~=UkΣkVkTX~=Uk​Σk​VkT​

数学表示

文档向量:dj=ΣkVkT[:,j]dj​=Σk​VkT​[:,j]
词向量:wi=UkΣk[i,:]wi​=Uk​Σk​[i,:]

参数设置

from sklearn.decomposition import TruncatedSVD

svd = TruncatedSVD(n_components=100)  # 选择潜在维度k=100
lsa_matrix = svd.fit_transform(tfidf_matrix)

优缺点对比

优势局限
有效缓解一词多义问题无法处理新文档(冷启动)
数学理论严谨可解释性较差
计算效率较高负值语义解释困难

🎲 概率突破:PLSA模型

核心创新

  • 引入隐变量z表示主题

  • 概率框架建模文档生成过程

  • 联合概率分解:
    P(d,w)=P(d)∑zP(z∣d)P(w∣z)P(d,w)=P(d)∑z​P(z∣d)P(w∣z)

生成过程

  1. 以概率P(d)P(d)选择文档

  2. 根据P(z∣d)P(z∣d)选择主题

  3. 根据P(w∣z)P(w∣z)生成词语

EM算法求解

E-Step:计算主题后验概率
P(z∣d,w)=P(z∣d)P(w∣z)∑z′P(z′∣d)P(w∣z′)P(z∣d,w)=∑z′​P(z′∣d)P(w∣z′)P(z∣d)P(w∣z)​

M-Step:更新参数
P(w∣z)∝∑dn(d,w)P(z∣d,w)P(w∣z)∝∑d​n(d,w)P(z∣d,w)
P(z∣d)∝∑wn(d,w)P(z∣d,w)P(z∣d)∝∑w​n(d,w)P(z∣d,w)

代码实现概览

class PLSA:
    def __init__(self, n_topics=10, max_iter=50):
        self.n_topics = n_topics
        self.max_iter = max_iter
    
    def fit(self, doc_word_matrix):
        # 初始化参数
        self.P_z_d = np.random.rand(n_docs, n_topics)
        self.P_w_z = np.random.rand(n_topics, n_words)
        
        for _ in range(self.max_iter):
            # E-step
            gamma = self.P_z_d[:, None] * self.P_w_z.T[None, :]
            gamma /= gamma.sum(axis=2, keepdims=True)
            
            # M-step
            self.P_w_z = (doc_word_matrix[:, None] * gamma).sum(axis=0)
            self.P_w_z /= self.P_w_z.sum(axis=1, keepdims=True)
            
            self.P_z_d = (doc_word_matrix * gamma).sum(axis=2)
            self.P_z_d /= self.P_z_d.sum(axis=1, keepdims=True)

优缺点分析

突破性优势现存问题
概率框架可解释性强参数数量随文档线性增长
解决一词多义、一义多词问题容易过拟合
支持软聚类缺乏文档生成概率模型

📊 三大模型对比全景图

维度UnigramLSAPLSA
模型类型统计语言模型线性代数模型概率生成模型
核心思想词频独立潜在语义空间主题隐变量
数学工具极大似然估计SVD分解EM算法
可解释性
处理新文档直接计算需重新投影无法处理
参数复杂度O(V)O(k×(V+D))O(D×K + K×V)
主要应用文本分类基线语义检索主题发现

(V: 词表大小, D: 文档数, K: 主题数)

💡 工程应用建议

场景选择指南

  • 短文本快速处理 → Unigram + TF-IDF

  • 语义搜索/推荐系统 → LSA/LSI

  • 主题挖掘/内容分析 → PLSA

参数调优技巧

  1. 累计方差贡献率 > 80%

  2. svd.explained_variance_ratio_.cumsum()[:k]

    PLSA主题数确定

    • 困惑度(Perplexity)最小化

    • 人工评估主题一致性

  3. 防止过拟合

    • 增加平滑项

    • 使用贝叶斯变种(如LDA)

🚀 演进到LDA

PLSA的贝叶斯升级版:

最新进展

掌握这些基础模型,是理解现代NLP技术的必经之路!

  • 引入Dirichlet先验分布

  • 解决过拟合问题

  • 支持新文档推理

    总结与展望

    从Unigram到PLSA的发展历程,体现了文本建模的三大进步:

  • 从独立到关联:打破词袋独立性假设

  • 从显式到潜在:发现隐藏语义结构

  • 从确定到概率:建立生成式模型框架

  • 神经网络主题模型(NTM)

  • 结合预训练语言模型(BERTopic)

    • 动态主题模型(DTM)

  1. 延伸阅读

  2. PLSA原始论文

  3. 主题模型可视化工具

  4. 剑桥大学主题模型讲义

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基准指数选股策略思路

一种基于Python和聚宽平台的量化交易策略,主要包含以下内容: 1. 导入必要的库 - 导入jqdata和jqfactor库用于数据获取和因子计算。 - 导入numpy和pandas库用于数据处理。 2. 初始化函数 - 设置基准指数为沪深300指数。 - 配置交易参数,如使用…

SAP接口超时:对 FOR ALL ENTRIES IN 的优化

SAP接口超时 经分析要10多分钟以上才出结果,且是这个语句耗时较长: SELECTaufnrmatnrbdmnglgortmeinschargFROM resbINTO CORRESPONDING FIELDS OF TABLE lt_lylcddxhFOR ALL ENTRIES IN lt_lylcddWHERE aufnr IN r_aufnr发现RESB有420万条记录&#xf…

Shell 脚本入门:从零开始写自动化脚本

目录 一、Shell 、Shell 命令、Shell 脚本 二、常用 Shell 命令与注释写法 三、echo 命令的使用 四、Shell 变量类型 五、变量与参数使用 六、读取用户输入 七、算术运算 八、条件判断与流程控制 九、循环结构 十、函数定义与调用 一、Shell 、Shell 命令、Shell 脚本…

【最新版】西陆健身系统源码全开源+uniapp前端

一.系统介绍 一款基于UniappThinkPHP开发健身系统,支持多城市、多门店,包含用户端、教练端、门店端、平台端四个身份。有团课、私教、训练营三种课程类型,支持在线排课。私教可以通过上课获得收益,在线申请提现功能,无…

常见移动机器人底盘模型对比(附图)

1. 概述 底盘模型驱动场景优势劣势双轮差速两轮驱动室内AGV结构简单、成本低转弯半径大,易打滑四轮差速四轮独立驱动复杂地形无人车全方位转向,机动性强控制复杂,能耗高阿克曼模型前轮转向后驱户外无人驾驶车高速稳定性好转弯半径大&#xf…

【MongoDB】windows安装、配置、启动

🪟 一、下载 MongoDB 安装包 打开官方地址: 👉 https://www.mongodb.com/try/download/community 配置下载选项: 选项设置Version最新(默认就好)OSWindowsPackageMSI(推荐) 点击【D…

GitLab_密钥生成(SSH-key)

目录 1.密钥命令 2.自定义路径 3.输2次密码 4.查看公钥:(打开文件) 5. 把公钥,放到GitLab上面 6.填写公钥标题 7.点击 Add key 按钮 8. 验证添加是否成功 9. 测试 SSH 连接 10.彩蛋(把ssh-key添加到python文…

【视频时刻检索】Text-Video Retrieval via Multi-Modal Hypergraph Networks 论文阅读

Text-Video Retrieval via Multi-Modal Hypergraph Networks 论文阅读 ABSTRACT1 INTRODUCTION2 PRELIMINARIES3 OUR FRAMEWORK3.1 Multi-Modal Hypergraph Networks3.2 Variational Inference 4 EXPERIMENT6 CONCLUSION 文章信息: 发表于:WSDM 24 原文…

BUUCTF-[GWCTF 2019]re3

[GWCTF 2019]re3 查壳,64位无壳 然后进去发现主函数也比较简单,主要是一个长度校验,然后有一个mprotect函数,说明应该又是Smc,然后我们用脚本还原sub_402219函数处的代码 import idc addr0x00402219 size224 for …

C++入侵检测与网络攻防之暴力破解

目录 1.nessus扫描任务 2.漏洞信息共享平台 3.nessus扫描结果 4.漏扫报告的查看 5.暴力破解以及hydra的使用 6.crunch命令生成字典 7.其他方式获取字典 8.复习 9.关于暴力破解的防御的讨论 10.pam配置的讲解 11.pam弱密码保护 12.pam锁定账户 13.shadow文件的解析 …

管理100个小程序-很难吗

20公里的徒步-真难 群里的伙伴发起了一场天目山20公里徒步的活动,想着14公里都轻松拿捏了,思考了30秒后,就借着春风带着老婆孩子就出发了。一开始溪流清澈见底,小桥流水没有人家;青山郁郁葱葱,枯藤老树没有…

如何在Linux用libevent写一个聊天服务器

废话少说,先看看思路 因为libevent的回调机制,我们可以借助这个机制来创建bufferevent来实现用户和用户进行通信 如果成功连接后我们可以直接在listener回调函数里创建一个bufferevent缓冲区,并为每个缓冲区设置相应的读回调和事件回调&…

马浩棋:产通链CT-Chain 破局不动产 RWA,引领数智金融新变革

全球不动产 RWA 数智金融高峰论坛上马浩棋先生致辞 在全球不动产 RWA 数智金融高峰论坛暨产通链 CT-Chain 上链首发会的现场,犀牛世纪集团(香港)有限公司董事会主席马浩棋成为众人瞩目的焦点。此次盛会汇聚了全球金融、区块链及不动产领域的…

学习整理在centos7上安装mysql8.0版本教程

学习整理在centos7上安装mysql8.0版本教程 查看linux系统版本下载mysql数据库安装环境检查解压mysql安装包创建MySQL需要的目录及授权新增用户组新增组用户配置mysql环境变量编写MySQL配置文件初始化数据库初始化msyql服务启动mysql修改初始化密码配置Linux 系统服务工具,使My…

SIEMENS PLC程序解读 -BLKMOV (指定长度数据批量传输)

1、程序代码 2、程序解读 这段西门子 PLC 程序&#xff08;程序段 10&#xff09;实现了基于条件的数据块移动功能&#xff0c;具体解释如下&#xff1a; 条件触点&#xff1a; %M0.1 Always<>(TRUE)&#xff08;注释为 AT<>1&#xff09;&#xff1a;当 M0.1 的值…

初识HashMap

HashMap&#xff1a;无序&#xff0c;不重复&#xff0c;无索引 HashMap小练习&#xff1a; import java.text.ParseException; import java.util.*; import java.util.function.BiConsumer; import java.util.function.Consumer;import static java.lang.Math.abs;public cla…

隧道高清晰广播如何提升行车安全体验?

在隧道中行驶时&#xff0c;驾驶员常面临回声干扰、语音模糊、信息过载等问题&#xff0c;传统广播系统可能不仅未能提供有效信息&#xff0c;反而因噪音增加驾驶压力。高清晰广播通过数字降噪、动态音效优化等技术&#xff0c;显著改善驾驶员的听觉体验&#xff0c;进而提升行…

从0开始搭建一套工具函数库,发布npm,支持commonjs模块es模块和script引入使用

文章目录 文章目标技术选型工程搭建1. 初始化项目2. 安装开发依赖3. 项目结构4. 配置文件tsconfig.json.eslintrc.jseslint.config.prettierrc.jsrollup.config.cjs创建 .gitignore文件 设置 Git 钩子创建示例工具函数8. 版本管理和发布9 工具函数测试方案1. 安装测试依赖2. 配…

Cadence学习笔记之---原理图设计基本操作

目录 01 | 引 言 02 | 环境描述 03 | 原理图工具介绍 04 | 原理图设计基本操作 05 | 生成页间引用 06 | 元件自动编号 07 | 结 尾 01 | 引 言 书接上回&#xff0c;在前文中讲述了怎样制作常用的库元件&#xff0c;如电阻、二极管&#xff0c;IC器件&#xff0c;以及怎…

进行性核上性麻痹饮食指南:科学膳食助力对抗疾病

进行性核上性麻痹是一种进展性神经退行性疾病&#xff0c;常导致患者出现吞咽困难、运动障碍等症状。科学合理的饮食不仅能为患者提供必要的营养支持&#xff0c;还能降低并发症风险&#xff0c;改善生活质量。 蛋白质是维持身体机能的关键&#xff0c;患者应注重优质蛋白的摄取…