Gensim Tutorials(一)

2024-01-19 22:58
文章标签 gensim tutorials

本文主要是介绍Gensim Tutorials(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近一直在看文本方面的东西,虽然好理解,但是总感觉缺了点什么,意外中发现了一个不错的开源工具包gensim,它是基于python的文本挖掘工具,主要是topic model的实现,粗看了一下,感觉非常方便,所以就想学习一下这个工具,本文档主要是对Tutorials中的代码进行了注释,以备以后使用。

From Strings to Vectors

#文档内容,每一行就是一篇文档
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"]
#停用词列表
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]
#collections是内建模块,defaultdict是封装之后的dict,区别在于defaultdict在key不存在时并不报错
from collections import defaultdictfrequency = defaultdict(int)    #表示所有的value都是int类型
for text in texts:for token in text:frequency[token] += 1
#过滤掉次数<=1的单词
texts = [[word for word in text if frequency[word] > 1] for text in texts]
#pprint是pythonn内建模块,提供了打印各种数据结构的方法
from pprint import pprint
pprint(texts)
'''
Dictionary是dict的一个实现,是word与word_ids的映射
主要方法   doc2bow  将文档转化为词袋模型,即list (word_ids,word_frequency)<---二元组,不设置allow_update,就不会更新原有的list
token2id,{word1:word_ids1, word2:word_ids2,……},这里的ids就是下面矩阵的列
'''
dictionary = corpora.Dictionary(texts)
dictionary.save("deerwester.dict")
print(dictionary)
print(dictionary.token2id)new_doc = "Human computer interaction"
new_vec = dictionary.doc2bow(new_doc.lower().split())
print(new_vec)corpus = [dictionary.doc2bow(text) for text in texts]
'''
MmCorpus是一种语料格式,每一个列表表示一篇文档,(word_id,word_frequency)
%%MatrixMarket matrix coordinate real general
m n frequency        
m:行(即第m篇文档)   n:词的ids,  frequency:出现次数
表示第m篇文章dic中ids为n的词出现了frequency次
'''
corpora.MmCorpus.serialize('deerwester.mm',corpus)
print(corpus)

Corpus Streaming – One Document at a Time

'''
定义了一个类来读取语料mycorpus.txt,使用yield保证每次只读一行进入内存
'''
class MyCorpus(object):def __iter__(self):for line in open('mycorpus.txt'):yield dictionary.doc2bow(line.lower().split())corpus_memory_friendly = MyCorpus()
print(corpus_memory_friendly)
#每次循环时,执行一次MyCorpus的__iter__函数
for vector in corpus_memory_friendly:print(vector)
#同样可以起到分批读进内存的效果
dictionary = corpora.Dictionary(line.lower().split() for line in open('mycorpus.txt'))
#得到所有停用词的ids
stop_ids = [dictionary.token2id[stopword] for stopword in stoplist if stopword in dictionary.token2id]
#dictionary.dfs-->{(tokenId,docFreq),……}  tokenId对应的词在几篇文档中出现过
once_ids = [tokenid for tokenid, docfreq in dictionary.dfs.iteritems() if docfreq == 1]
#过滤掉stop_ids与once_ids集合所对应的所有mapping
dictionary.filter_tokens(stop_ids+once_ids)
#重新分配所有单词的ids,减小矩阵稀疏
dictionary.compactify()
print(dictionary)

Corpus Formats

#创建一个python原生列表,表征两个文档
corpus = [[(1,1)],[(2,2)],[(2,3),(5,2),(9,2)],[(8,3)]]
#Matrix Market格式,具体见上
corpora.MmCorpus.serialize('corpus.mm', corpus)
'''
SVM^light数据格式
#-1 1:0.43 3:0.12 9284:0.2    #abcdef  
#-1为分类标识,可取(+1、-1、0),m:n表示第m个特征的值为0.43,#abcdef表示额外的信息
'''
corpora.SvmLightCorpus.serialize('corpus.svmlight', corpus)
'''
Blei的LDA主题模型c语言版本格式
N fieldId1:fieldValue1 fieldId2:fieldValue2 ... fieldIdN:fieldValueN
N代表个数,id:value
其存在一个单词表,每个单词一行,行号就是单词的id
'''
corpora.BleiCorpus.serialize('corpus.lda-c', corpus)
'''
[M]      文档个数
[document1]
[document2]
...
[documentM]  
[documenti] = [wordi1] [wordi2] ... [wordiNi]
真正的词袋子,不统计个数,每一行相当于单词集
'''
corpora.LowCorpus.serialize('corpus.low', corpus)
#加载格式文件到stream中
corpus = corpora.MmCorpus("corpus.mm")
print(list(corpus))
for doc in corpus:
    print(doc)

Compatibility with NumPy and SciPy

import numpy as np
numpy_matrix = np.mat([[1,5],[3,4]])
corpus = gensim.matutils.Dense2Corpus(numpy_matrix)
print("----------------numpy mat 2 gensim corpus --------------------")
print(list(corpus))
#num_terms是特征的维数,即转化成matrix的行
numpy_matrix = gensim.matutils.corpus2dense(corpus, num_terms=2)
print("----------------gensim corpus 2 numpy mat--------------------")
print(numpy_matrix)from scipy.sparse import coo_matrix
scipy_matrix = coo_matrix([[1,2,0],[2,2,1],[3,4,3]])
corpus = gensim.matutils.Sparse2Corpus(scipy_matrix)
print("----------------scipy mat 2 gensim corpus--------------------")
print(list(corpus))
scipy_matrix = gensim.matutils.corpus2csc(corpus)
print("----------------gensim corpus 2 scipy mat--------------------")
print(scipy_matrix)

后续

Tutorials后面还有几篇,继续进行注释,注释结束后会对gensim整个工具包的使用得心应手。

这篇关于Gensim Tutorials(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/623969

相关文章

代码报错: cannot import name ‘triu‘ from ‘scipy.linalg‘“ when importing Gensim

参考:https://stackoverflow.com/questions/78279136/importerror-cannot-import-name-triu-from-scipy-linalg-when-importing-gens 将使用的scipy降级即可: pip install scipy==1.10.1 或者 pip install scipy==1.12 使

【Python已解决】“ModuleNotFoundError: No module named ‘gensim‘”

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言:一、问题描述1.1 报错示例:当我们尝试导入gensim库时,可能会看到以下错误信息。1.2 报错分析:1.3 解决思路: 二、解决方法2.1 方法一:使用pip安装gensim2.2 步骤二:使用conda安装ge

第22周:调用Gensim库训练Word2Vec模型

目录 前言 一、Word2vec基本知识 1.1 Word2Vec是什么 1.2 Word2Vec两种主要模型架构 1.2.1 CBOW模型 1.2.2 Skip-gram模型 1.3 实例说明 1.4 调用方法 二、准备工作 2.1 安装Gensim库 2.2 对原始语料分词 2.2 添加自定义停用词 三、训练Word2Vec模型 四、模型应用 4.1 计算词汇相似

TextRank:Gensim使用的文本摘要算法

Gensim是Python的一个无监督主题模型与自然语言处理的开源库,它有许多高效易用的自然语言处理函数。其中有一个文本摘要函数summarize,可以从大量的文本中提取重要的信息。下面简要介绍一下Gensim中的summarize函数的算法。 文章目录 文本摘要与TextRankPageRankTextRankGensim中的TextRank具体摘要算法 文本摘要与TextR

主题模型Gensim入门系列之四:文本相似度查询

系列目录: (1)主题模型Gensim入门系列之一:核心概念 (2)主题模型Gensim入门系列之二:语料和向量空间 (3)主题模型Gensim入门系列之三:主题和变换 (4)主题模型Gensim入门系列之四:文本相似度查询 ————————————————————————————   本文主要介绍如何从一个语料库中,查询一个指定文本的相似文本。   1、创建语料 创建语料和之

主题模型Gensim入门系列之三:主题和变换

系列目录: (1)主题模型Gensim入门系列之一:核心概念 (2)主题模型Gensim入门系列之二:语料和向量空间 (3)主题模型Gensim入门系列之三:主题和变换 (4)主题模型Gensim入门系列之四:文本相似度查询 ————————————————————————————   本节主要介绍Gensim中从一个向量空间转换到另外一个向量空间的变换的概念,通过一个简单的语料加以

主题模型Gensim入门系列之二:语料和向量空间

系列目录: (1)主题模型Gensim入门系列之一:核心概念 (2)主题模型Gensim入门系列之二:语料和向量空间 (3)主题模型Gensim入门系列之三:主题和变换 (4)主题模型Gensim入门系列之四:文本相似度查询 ————————————————————————————   本文主要介绍将文档(Document)转换为向量空间,同时介绍语料流(corpus streami

主题模型Gensim入门系列之一:核心概念

本系列主要介绍 Gensim的基本概念,以及通过Gensim实现词向量训练、主题模型训练、文本相似度计算等常见任务。本系列不定时更新。 系列目录: (1)主题模型Gensim入门系列之一:核心概念 (2)主题模型Gensim入门系列之二:语料和向量空间 (3)主题模型Gensim入门系列之三:主题和变换 (4)主题模型Gensim入门系列之四:文本相似度查询 —————————————

主题模型Gensim入门系列

Gensim是一个开源的python工具包,主要实现自然语言的词向量模型和主题模型,可以实现词向量转换、文本相似性计算和文本分类等应用,其官网的简介为:topic modelling for humans。   在该工具包中,实现了word2vec,fastext词向量模型,LSA和LDA主题模型等。   Gensim的官网为:https://radimrehurek.com/gensim

linux下安装gensim的方法。

1.首先确保机子上安装的python>=2.6 2.确保NumPy >= 1.3 3.确保 SciPy >= 0.7 NumPy 安装语句 sudo apt-get install python-numpy SciPy安装语句 sudo apt-get install python-scipy 接着就可以安装gensim了,安装语句 sudo easy_install -U gensi