gensim的使用方法 備忘

2021-07-29 01:43:11 字數 4071 閱讀 7232

#coding:utf-8

texts = [['human', 'inte***ce', 'computer'],

['survey', 'user', 'computer', 'system', 'response', 'time'],

['eps', 'user', 'inte***ce', 'system'],

['system', 'human', 'system', 'eps'],

['user', 'response', 'time'],

['trees'],

['graph', 'trees'],

['graph', 'minors', 'trees'],

['graph', 'minors', 'survey']]

from gensim import corpora,models,similarities

#將文字的原始特徵轉化為詞袋模型對應的向量表達

dictionary = corpora.dictionary(texts)

corpus = [dictionary.doc2bow(text) for text in texts]

#輸出的向量代表了每個單詞在這個文件中出現的次數

print corpus

#支援流式處理,使用協程

class

mycorpus

(object):

def__init__

(self,texts):

self.texts = texts

def__iter__

(self):

for text in texts:

yield text

#新建物件並傳入dictionary中

corpus = mycorpus(texts)

dictionary = corpora.dictionary(corpus)

#dictionary的doc2bow能將給定的文字向量化

corpus = [dictionary.doc2bow(text) for text in texts]

print corpus

#對向量化後的文字建立tf-idf模型,對corpus中出現的所有特徵計算idf值

tfidf = models.tfidfmodel(corpus)

#給定的乙個文件向量,計算出對應的tf-idf的向量

doc_bow = [(0,1),(1,1)]

print tfidf[doc_bow]

#變換doc_ = ["graph","minors","trees"]

doc_vec = dictionary.doc2bow(doc_)

print tfidf

print tfidf[doc_vec]

#備註#gensim內建的lda,rp,hdp是以bow向量或者tf-idf向量的語料作為輸入,生成對應的主題向量

#使用lsi計算文件相似度

#注意這裡輸入的corpus必須是bow向量

lsi_model = models.lsimodel(corpus,id2word=dictionary,num_topics=2)

documents = lsi_model[corpus]

print documents

query_vec = lsi_model[doc_vec]

#dictionary只是將doc自然語言的文字==>bow向量,這是模型支援的格式

#lsi_model 將查詢的bow向量==>lsi向量

#初始的語料庫成為了bow向量後也被lsi_model轉化為了lsi向量

print doc_vec

print query_vec

#待檢索的文件向量初始化乙個相似度計算的物件

index = similarities.matrixsimilarity(documents)

#用index計算相似度,傳入需要比較的文字的lsi型別的向量

#返回查詢的文件和所有文件的相似度

print index[query_vec]

#coding:utf-8

from gensim.models.word2vec import word2vec

texts = [['human', 'inte***ce', 'computer'],

['survey', 'user', 'computer', 'system', 'response', 'time'],

['eps', 'user', 'inte***ce', 'system'],

['system', 'human', 'system', 'eps'],

['user', 'response', 'time'],

['trees'],

['graph', 'trees'],

['graph', 'minors', 'trees'],

['graph', 'minors', 'survey']]

class

mysentences

(object):

def__init__

(self,filename):

self.filename = filename

def__iter__

(self):

f = open(self.filename)

for line in f.readlines():

yield line.strip().split(" ")

#建立乙個物件後傳入到word2vec訓練得到乙個模型

#預設條件下的min_count=5,小於5的詞會被全部刪除

sentences = mysentences("e:\\nltkbase\\mycorpus.txt")

model = word2vec(sentences,min_count=1)

print model

print model["computer"]

#由於api中的labeledsentence每次只能針對乙個句子加上標籤,所以我們新建乙個類批量轉換

from gensim.models.doc2vec import labeledsentence

class

labeledlinesentence

(object):

def__init__

(self, filename):

self.filename = filename

def__iter__

(self):

labels = 0

f = open(self.filename)

for line in f.readlines():

labels =+ 1

yield labeledsentence(line.split(" "),["label_" + str(labels)])

sents = labeledlinesentence("e:\\nltkbase\\mycorpus.txt")

senlst = [sent for sent in sents]

'''建立詞典的時候要向build_vocab方法傳入乙個list,list中的每個元素都是labeledsentences的結果

在訓練的時候為了隨機性,每次都要將list打亂

'''import random

from gensim.models import doc2vec

model = doc2vec(dm=1,size=100,window=5,negative=5,hs=0,min_count=1,workers=4)

model.build_vocab(senlst)

for epoch in range(10):

random.shuffle(senlst)

model.train(senlst)

print model.most_similar("computer")

print model["human"]

參考文獻:

關於doc2vec:

關於lsi和lda

關於word2vec

dhtmltree的一些使用方法(備忘錄)

最近要用到dhtmltree生成的一些人員,部門列表,為了防止以後忘記。還是記一下吧 tree.enablecheckboxes 0 設定成0的時候不需要勾選框,設定成1的時候需要。tree.setondbclickhandler 雙擊觸發事件 tree.setonclickhandler 單擊觸發...

檔案新增git的基本使用方法 備忘 檔案新增

新手發帖,很多方面都是剛入門,有錯誤的地方請大家見諒,歡迎批評指正 明天於終下定決心學習git,用git來管理目項。這裡我僅僅使用了git最簡略和基本的功能,步調如下 1.在github上建創乙個repository.2.轉殖碼代庫。用git clone 該庫倉的位址。3.新增乙個檔案,將其提交並且...

pythonpip使用方法 pip使用方法整理

匯出專案已安裝的pip包 pip list 檢視專案中安裝的包 pip freeze requirements.txt 將專案中所用到的第三方庫輸出到requirements.txt中 pip install 版本號 pip install i 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...