#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 本次使用清華源進行安裝 離線安裝第三方庫 一鍵安裝整個...