news 2026/8/18 19:45:50

第七章 文本表示:主题表示(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第七章 文本表示:主题表示(二)

目录

前置案例——文本的表示与应用

一、概念介绍

二、向量空间模型

三、主题模型LDA

四、词嵌入模型Embding

五、 哈希模型--Simhash

三、主题模型LDA

传统的向量空间模型是一种显式的文本表示方法,无法深入捕获文本中隐含的语义关系。以潜在语义分析(latent semantic analysis,LSA)、概率潜在语义分析(probabilistic latent semantic analysis,PLSA)和潜在狄利克雷分布(latent Dirich-let allocation,LDA)为代表的主题模型,旨在挖掘文本中隐含的主题(topic)或概念(concept),可以在一定程度上捕获多义性(polysemy)和同义性(synonyms),从而部分地解决一词多义和一义多词问题。同时,主题提供了一种高维文本数据维数的约减方法,将传统的向量空间模型中的高维稀疏向量转化为低维稠密向量,以缓解维数灾难问题。

LDA是一种生成式概率主题模型,广泛用于文本主题挖掘,其核心思想是将文档视为多个主题的混合,而每个主题则由特定词汇的概率分布表示。LDA是一种典型的词袋模型,即它认为一篇文档是由一组词构成的一个集合,词与词之间没有顺序以及先后的关系。一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。所谓词袋模型,是将一篇文档,我们仅考虑一个词汇是否出现,而不考虑其出现的顺序。在词袋模型中,“我喜欢你”和“你喜欢我”是等价的。与词袋模型相反的一个模型是n-gram,n-gram考虑了词汇出现的先后顺序。

LDA对文本数据有以下几个基本假设:

词袋假设:文档中的词序无关,单词的顺序不会影响主题建模。

主题生成假设:每个文档由若干主题混合生成,每个单词对应于某个主题。

主题分布与词分布:每篇文档的主题分布服从一个狄利克雷分布;每个主题的词分布也服从一个狄利克雷分布。

实现过程详解

(1)输入准备

输入:一组未标注的文本文档(语料库)。

预处理:分词、去停用词、词干化(如使用NLTK或jieba)。

(2)模型参数设定

K:预设的主题数量(需人工指定,可通过困惑度或一致性评分调优)。

α(alpha):文档-主题分布的先验参数,控制文档中主题的稀疏性。

β(beta):主题-词语分布的先验参数,控制主题中词语的稀疏性。

(3)生成过程(简化版)

LDA认为文档是按如下方式“生成”的:

1)对所有预设主题,分别从狄利克雷分布中采样得到每个主题的词分布(全局共享)。

2)为每篇文档从狄利克雷分布中采样,得到该文档专属的主题分布(如 [0.6, 0.3, 0.1])。

3)对文档中的每个词:

从当前文档的主题分布中随机选择一个主题;

从该主题对应的词分布中随机选择一个词输出

实际训练时,LDA 使用反向推断(如Gibbs采样或变分推断)从已有文本中还原这些分布。

(4)输出结果

文档-主题矩阵:每篇文档在K个主题上的概率分布。

主题-词语矩阵:每个主题下Top-N高概率词语列表,用于解释主题含义。

代码如下:

from gensim import corpora, models texts = [ ['人工智能', '学习', '机器', '算法'], ['猫', '宠物', '狗', '动物'], ['机器', '学习', '模型', '训练'], ['水果', '苹果', '香蕉', '营养'] ] dictionary = corpora.Dictionary(texts) corpus = [dictionary.doc2bow(text) for text in texts] lda_model = models.LdaModel( corpus, id2word=dictionary, num_topics=2, passes=20, random_state=42, # 固定随机种子 alpha='auto', # 自动学习α eta='auto' # 自动学习β ) # 打印主题-词语分布 print("主题-词语分布:") for topic_id, topic in lda_model.print_topics(num_words=4): print(f"主题 {topic_id}: {topic}") # 查看文档-主题分布 print("\n文档-主题分布:") for i, doc in enumerate(corpus): doc_topics = lda_model.get_document_topics(doc) print(f"文档 {i}: {doc_topics}")

运行结果如下:

主题-词语分布: 主题 0: 0.136*"宠物" + 0.136*"猫" + 0.136*"动物" + 0.136*"狗" 主题 1: 0.132*"学习" + 0.131*"机器" + 0.079*"训练" + 0.079*"水果" 文档-主题分布: 文档 0: [(0, np.float32(0.02778941)), (1, np.float32(0.9722106))] 文档 1: [(0, np.float32(0.92947286)), (1, np.float32(0.07052716))] 文档 2: [(0, np.float32(0.027789496)), (1, np.float32(0.97221047))] 文档 3: [(0, np.float32(0.027792636)), (1, np.float32(0.97220737))]

优点:可解释性强,主题可通过Top词直观命名;适合文档聚类、内容推荐等宏观分析任务。

局限:依赖词频统计,无法捕捉上下文语义;对一词多义处理能力有限(如“苹果”手机 vs 水果);对短文本效果差,因统计信号不足。

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

保时捷日内瓦新车解析:电动性能与燃油精粹的平行进化

1. 从日内瓦到赛道:保时捷如何定义“纯正运动本色” 每年三月的日内瓦,空气里都弥漫着一种特殊的兴奋感。对于车迷和从业者而言,日内瓦车展(Geneva International Motor Show)远不止是一个新车发布会,它更像…

作者头像 李华
网站建设 2026/8/18 19:43:40

NCM转MP3只需一次拖拽:ncmdump让加密歌曲重获自由

NCM转MP3只需一次拖拽:ncmdump让加密歌曲重获自由 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 把网易云下载的歌拷进车载U盘,结果一路静音——这种尴尬,我上周刚经历完。原因很简单&#xff1a…

作者头像 李华
网站建设 2026/8/18 19:37:31

基于计算机视觉的体感控制器Quaddle:零硬件门槛实现机器人控制

这次我们来看一个把摄像头变成体感控制器的开源项目——Quaddle。它的核心玩法很简单:打开你的电脑摄像头,你就能通过身体动作来控制一个四足机器人(或者游戏里的角色)进行移动、转向甚至跳跃。这听起来像是科幻电影里的场景&…

作者头像 李华
网站建设 2026/8/18 19:35:52

Qwen3.8-Max 开源超大杯正式发布,如何让 AI 无感切换新模型

2026 年 8 月 3 日,阿里通义千问团队正式发布了 Qwen3.8-Max。这是千问家族迄今为止规模最大、能力最强的模型,也是千问首次将 Max 级别的超大杯模型进行开源。开源权重预计将在 8 月 10 日当周通过 Hugging Face 和 ModelScope 公开下载。 Qwen3.8-Max …

作者头像 李华
网站建设 2026/8/18 19:28:08

基于Minimax官方Skill的导演Skill开发:从编排思维到工程实践

1. 先搞清楚“基于官方Skill的Minimax导演Skill”到底是什么 如果你最近在关注AI应用开发,特别是围绕Minimax这类大模型做自动化工作流,可能会频繁看到“Skill”这个词。它听起来很酷,但具体指什么,很多人其实没弄明白。简单来说&…

作者头像 李华
网站建设 2026/8/18 19:27:17

大模型产品评估,别把调用量当成效果

大模型产品评估,别把调用量当成效果1. 实验室评测偏差与真实生产环境的工程痛点 在大模型应用的产品化落地过程中,离线评估指标与在线生产表现之间常常存在偏差。例如在离线测试中,意图识别准确率或 RAG 检索匹配度达到较高指标,但…

作者头像 李华