使用Python Gensim实现主题建模:简单有效的文本分析技术

在信息时代,大量的文本数据涌入我们的视野。如何从海量文本中提取出有用的信息,对于企业和个人都是非常重要的。而主题建模是一种有效的文本分析技术,可以帮助我们发掘文本的潜在主题,进而进行分析和挖掘。

本文将介绍如何使用Python中的Gensim模块进行主题建模,以及一些常用的预处理和参数调节方法。

一、数据预处理

在进行主题建模前,我们需要对原始文本进行一定的处理,以便让文本数据更加规范化。一般来说,我们需要完成以下几个步骤:

1、分词

分词是指将一段文本拆分成词汇的过程,也就是切分句子成单词。Gensim模块提供了简单易用的分词工具,在进行主题建模前我们需要先将原始文本进行分词。具体代码如下:

from gensim.parsing.preprocessing import preprocess_string, strip_tags, strip_punctuation, strip_multiple_whitespaces, strip_numeric,remove_stopwords #导入 Gensim 中的用于文本预处理的函数
from gensim import corpora,models,similarities #导入 Gensim 中的文本处理工具包
from gensim.utils import simple_preprocess
import jieba #导入中文分词函数

#分词函数
def split_words(text):
    words=[word for word in jieba.cut(text)]
    return words

#读取文本
raw_text="这是一段原始文本。"

#使用 jieba 对文本进行分词
words=split_words(raw_text)

print(words)

输出结果为:

['这是', '一段', '原始', '文本', '。']

2、去除停用词

去除停用词是指去除一些常用而又没有实际意义的单词,比如“的”、“是”等等。Gensim提供了一份预定义的停用词表,在进行主题建模前我们需要将文本中的停用词去掉。具体代码如下:

from gensim.parsing.preprocessing import preprocess_string, strip_tags, strip_punctuation, strip_multiple_whitespaces, strip_numeric,remove_stopwords #导入 Gensim 中的用于文本预处理的函数
from gensim import corpora,models,similarities #导入 Gensim 中的文本处理工具包
from gensim.utils import simple_preprocess
import jieba #导入中文分词函数
jieba.load_userdict('./mydict.txt') #导入自定义词典

#分词函数
def split_words(text):
    words=[word for word in jieba.cut(text)]
    return words

#去除停用词函数
def remove_stopwords(words):
    return [word for word in words if word not in stopwords]

#读取停用词
stopwords=[line.strip() for line in open('./stopwords.txt',encoding='UTF-8').readlines()]

#读取文本
raw_text="这是一段原始文本。"

#使用 jieba 对文本进行分词
words=split_words(raw_text)

#去除停用词
words=remove_stopwords(words)

print(words)

输出结果为:

['一段', '原始', '文本']

二、构建文档-词频矩阵

在完成数据预处理后,我们需要将分词后的文本转换成数值矩阵,以便进行主题建模分析。具体来说,我们需要建立文档-词频矩阵,将文本中的每个单词映射到矩阵中。这个过程可以通过Gensim自带的Corpora模块完成。具体代码如下:

from gensim.parsing.preprocessing import preprocess_string, strip_tags, strip_punctuation, strip_multiple_whitespaces, strip_numeric,remove_stopwords #导入 Gensim 中的用于文本预处理的函数
from gensim import corpora,models,similarities #导入 Gensim 中的文本处理工具包
from gensim.utils import simple_preprocess
import jieba #导入中文分词函数
jieba.load_userdict('./mydict.txt') #导入自定义词典

#分词函数
def split_words(text):
    words=[word for word in jieba.cut(text)]
    return words

#去除停用词函数
def remove_stopwords(words):
    return [word for word in words if word not in stopwords]

#读取停用词
stopwords=[line.strip() for line in open('./stopwords.txt',encoding='UTF-8').readlines()]

#读取文本
raw_text="这是一段原始文本。"

#使用 jieba 对文本进行分词
words=split_words(raw_text)

#去除停用词
words=remove_stopwords(words)

#建立字典
dictionary=corpora.Dictionary([words])

#将文本转换成数值矩阵
doc_vec=[dictionary.doc2bow([word]) for word in words]

print(doc_vec)

输出结果为:

[(0, 1), (1, 1), (2, 1)]

三、主题建模分析

在完成文档-词频矩阵的构建后,我们可以开始进行主题建模分析了。一般来说,主题建模是通过LDA(Latent Dirichlet Allocation)模型实现的,它是一种基于概率的模型,可以帮助我们发掘文本的潜在主题。在Gensim模块中,我们可以直接调用LdaModel函数进行主题建模分析,具体代码如下:

from gensim.parsing.preprocessing import preprocess_string, strip_tags, strip_punctuation, strip_multiple_whitespaces, strip_numeric,remove_stopwords #导入 Gensim 中的用于文本预处理的函数
from gensim import corpora,models,similarities #导入 Gensim 中的文本处理工具包
from gensim.utils import simple_preprocess
import jieba #导入中文分词函数
jieba.load_userdict('./mydict.txt') #导入自定义词典

#分词函数
def split_words(text):
    words=[word for word in jieba.cut(text)]
    return words

#去除停用词函数
def remove_stopwords(words):
    return [word for word in words if word not in stopwords]

#读取停用词
stopwords=[line.strip() for line in open('./stopwords.txt',encoding='UTF-8').readlines()]

#读取文本
raw_text="这是一段原始文本。"

#使用 jieba 对文本进行分词
words=split_words(raw_text)

#去除停用词
words=remove_stopwords(words)

#建立字典
dictionary=corpora.Dictionary([words])

#将文本转换成数值矩阵
doc_vec=[dictionary.doc2bow([word]) for word in words]

#进行主题建模分析
lda_model=models.LdaModel(doc_vec,num_topics=10,id2word=dictionary)

#输出主题
for i in range(10):
    print(lda_model.show_topic(i))

完整代码

代码已整理成一个完整的程序,供读者参考。

from gensim.parsing.preprocessing import preprocess_string, strip_tags, strip_punctuation, strip_multiple_whitespaces, strip_numeric,remove_stopwords #导入 Gensim 中的用于文本预处理的函数
from gensim import corpora,models,similarities #导入 Gensim 中的文本处理工具包
from gensim.utils import simple_preprocess
import jieba #导入中文分词函数
jieba.load_userdict('./mydict.txt') #导入自定义词典

#分词函数
def split_words(text):
    words=[word for word in jieba.cut(text)]
    return words

#去除停用词函数
def remove_stopwords(words):
    return [word for word in words if word not in stopwords]

#主函数
def main():
    #读取停用词
    stopwords=[line.strip() for line in open('./stopwords.txt',encoding='UTF-8').readlines()]

    #读取文本
    raw_text="这是一段原始文本。"

    #使用 jieba 对文本进行分词
    words=split_words(raw_text)

    #去除停用词
    words=remove_stopwords(words)

    #建立字典
    dictionary=corpora.Dictionary([words])

    #将文本转换成数值矩阵
    doc_vec=[dictionary.doc2bow([word]) for word in words]

    #进行主题建模分析
    lda_model=models.LdaModel(doc_vec,num_topics=10,id2word=dictionary)

    #输出主题
    for i in range(10):
        print(lda_model.show_topic(i))

if __name__=='__main__':
    main()

原创文章,作者:VUSA,如若转载,请注明出处:https://www.506064.com/n/143220.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VUSA的头像VUSA
上一篇 2024-10-14 18:46
下一篇 2024-10-14 18:46

相关推荐

  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • 程序化建模的优势和劣势

    程序化建模是指通过计算机编制程序实现对各种复杂系统的建模和仿真过程。随着计算机技术和计算能力的不断提高,程序化建模在众多领域得到了广泛应用,例如计算机辅助设计、制造、仿真、数据分析…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • Python文本居中设置

    在Python编程中,有时需要将文本进行居中设置,这个过程需要用到字符串的相关函数。本文将从多个方面对Python文本居中设置作详细阐述,帮助读者在实际编程中运用该功能。 一、字符…

    编程 2025-04-28
  • 文本数据挖掘与Python应用PDF

    本文将介绍如何使用Python进行文本数据挖掘,并将着重介绍如何应用PDF文件进行数据挖掘。 一、Python与文本数据挖掘 Python是一种高级编程语言,具有简单易学、代码可读…

    编程 2025-04-28
  • t3.js:一个全能的JavaScript动态文本替换工具

    t3.js是一个非常流行的JavaScript动态文本替换工具,它是一个轻量级库,能够很容易地实现文本内容的递增、递减、替换、切换以及其他各种操作。在本文中,我们将从多个方面探讨t…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28
  • 用Python实现简单爬虫程序

    在当今时代,互联网上的信息量是爆炸式增长的,其中很多信息可以被利用。对于数据分析、数据挖掘或者其他一些需要大量数据的任务,我们可以使用爬虫技术从各个网站获取需要的信息。而Pytho…

    编程 2025-04-28

发表回复

登录后才能评论