全新Gensim4.0代码实战(02)-主题模型和文档表示

简介: 全新Gensim4.0代码实战(02)-主题模型和文档表示

介绍转换并在一个demo语料库上演示它们的使用。

import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)


在本教程中,将展示如何将文档从一种矢量表示转换为另一种矢量表示。 此过程有两个

目标:

  • 要找出语料库中的隐藏结构,请发现单词之间的关系,并使用它们以一种新颖的(希望)更具语义的方式描述文档。
  • 使文档表示更加紧凑。 这既提高了效率(新的表示消耗了更少的资源)又提高了效率(忽略了边际数据趋势,降低了噪声)。


创建语料库


首先,我们需要创建一个语料库。此步骤与上一教程中的步骤相同。如果完成了,请随时跳到下一部分。

from collections import defaultdict
from gensim import corpora
documents = [
    "Human machine interface for lab abc computer applications",
    "A survey of user opinion of computer system response time",
    "The EPS user interface management system",
    "System and human system engineering testing of EPS",
    "Relation of user perceived response time to error measurement",
    "The generation of random binary unordered trees",
    "The intersection graph of paths in trees",
    "Graph minors IV Widths of trees and well quasi ordering",
    "Graph minors A survey",
]
# remove common words and tokenize
stoplist = set('for a of the and to in'.split())
texts = [
    [word for word in document.lower().split() if word not in stoplist]
    for document in documents
]
# remove words that appear only once
frequency = defaultdict(int)
33for text in texts:
    for token in text:
        frequency[token] += 1
texts = [
    [token for token in text if frequency[token] > 1]
    for text in texts
]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]


创建转换模型


转换是标准的Python对象,通常通过训练语料库进行初始化:

from gensim import models
tfidf = models.TfidfModel(corpus)  # step 1 -- initialize a model


我们使用了教程1中的旧语料库来初始化(训练)转换模型。 不同的转换可能需要不同的初始化参数。 在TfIdf模型的情况下,“训练”仅包括一次遍历提供的语料库并计算其所有特征的文档频率。 训练其他模型(例如潜在语义分析或潜在狄利克雷分配)的工作量更大,因此需要花费更多时间。


转换向量


从现在开始,tfidf被视为只读对象,可用于将任何矢量从旧表示形式(单词袋整数计数)转换为新表示形式(TfIdf实值权重):

doc_bow = [(0, 1), (1, 1)]
print(tfidf[doc_bow])  # step 2 -- use the model to transform vectors


输出

[(0, 0.7071067811865476), (1, 0.7071067811865476)]


或者:

corpus_tfidf = tfidf[corpus]
for doc in corpus_tfidf:
    print(doc)

[(0, 0.5773502691896257), (1, 0.5773502691896257), (2, 0.5773502691896257)]
[(0, 0.44424552527467476), (3, 0.44424552527467476), (4, 0.44424552527467476), (5, 0.3244870206138555), (6, 0.44424552527467476), (7, 0.3244870206138555)]
[(2, 0.5710059809418182), (5, 0.4170757362022777), (7, 0.4170757362022777), (8, 0.5710059809418182)]
[(1, 0.49182558987264147), (5, 0.7184811607083769), (8, 0.49182558987264147)]
[(3, 0.6282580468670046), (6, 0.6282580468670046), (7, 0.45889394536615247)]
[(9, 1.0)]
[(9, 0.7071067811865475), (10, 0.7071067811865475)]
[(9, 0.5080429008916749), (10, 0.5080429008916749), (11, 0.695546419520037)]
[(4, 0.6282580468670046), (10, 0.45889394536615247), (11, 0.6282580468670046)]


https://radimrehurek.com/gensim/auto_examples/core/run_topics_and_transformations.html

相关文章
|
7月前
|
数据采集 自然语言处理 Python
如何使用Gensim库进行情感分析?
使用Gensim进行情感分析,需安装Gensim库,导入相关模块(Word2Vec, KeyedVectors, nltk等)。数据预处理涉及分词和去除停用词,然后用Word2Vec训练词向量模型。已训练的模型可加载用于计算句子情感分数,通过平均词向量表示句子情感。代码提供了一个基础的情感分析流程,可按需求调整。
151 1
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
【Python机器学习】文本特征提取及文本向量化讲解和实战(图文解释 附源码)
448 0
|
4月前
|
数据采集 自然语言处理
ARTIST的中文文图生成模型问题之核心代码实现的问题如何解决
ARTIST的中文文图生成模型问题之核心代码实现的问题如何解决
|
4月前
|
自然语言处理 数据可视化 搜索推荐
基于python直播平台数据的文本分析,包括LDA主题分析、分词以及网络语义分析,生成网络图
本文探讨了基于Python的直播平台数据文本分析方法,包括LDA主题分析、分词和网络语义分析,旨在揭示用户观点和需求,优化用户体验,并辅助运营方制定改进策略,同时通过生成词云图和网络图提供数据驱动的决策支持。
基于python直播平台数据的文本分析,包括LDA主题分析、分词以及网络语义分析,生成网络图
|
7月前
|
Python
在PYTHON中进行主题模型LDA分析
在PYTHON中进行主题模型LDA分析
|
7月前
|
存储 算法 Ubuntu
Python之LDA主题模型算法应用
Python之LDA主题模型算法应用
|
7月前
|
数据采集 机器学习/深度学习 自然语言处理
Python实现文本分类的方法详解
本文详细介绍了Python实现文本分类的方法,包括数据清洗、特征提取、模型训练和预测等步骤。通过代码示例和实际案例,帮助读者快速掌握文本分类的基本原理和实现方法。
135 1
|
7月前
|
自然语言处理 数据可视化 编译器
基于Tomotopy构建LDA主题模型(附案例实战)
基于Tomotopy构建LDA主题模型(附案例实战)
244 0
|
7月前
|
机器学习/深度学习 数据挖掘 Python
【Python机器学习】标注任务与序列问题讲解(图文解释)
【Python机器学习】标注任务与序列问题讲解(图文解释)
75 0
|
7月前
|
机器学习/深度学习 自然语言处理 C++
【Python机器学习】条件随机场模型CRF及在中文分词中实战(附源码和数据集)
【Python机器学习】条件随机场模型CRF及在中文分词中实战(附源码和数据集)
147 0