gensim中文处理
生活随笔
收集整理的這篇文章主要介紹了
gensim中文处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding: UTF-8 -*-
from gensim import corpora, similarities, models
import jiebaquestion='馬致遠是元代領袖群英的散曲作家'
# 訓練樣本
raw_documents = ['0內容提要 馬致遠是元代領袖群英的散曲作家。他的散曲飄逸、奔放、老辣、清雋,被后世推為散曲第一家。他拓展了散曲的題材范圍,提','高了散曲的意境,在散曲史上享有很高的地位。他的散曲思想內容豐富,元散曲詠史、嘆世、歸隱、寫景、閨情、敘事諸題材他都涉及,并各具','成就。他制曲藝術精湛,風格典雅清麗,本色自然。他的散曲意境高妙,充滿畫意,語言清麗本色,人物栩栩如生,他長于心理刻劃,善于運用','各種修辭手法,達到很高的藝術境界,將元散曲推向高潮。']
corpora_documents = []
# 分詞處理
for item_text in raw_documents:item_seg = list(jieba.cut(item_text))corpora_documents.append(item_seg)# 生成字典和向量語料
dictionary = corpora.Dictionary(corpora_documents)
# print(dictionary)
# dictionary.save('dict.txt') #保存生成的詞典
# dictionary=Dictionary.load('dict.txt')#加載# 通過下面一句得到語料中每一篇文檔對應的稀疏向量(這里是bow向量)
corpus = [dictionary.doc2bow(text) for text in corpora_documents]
# 向量的每一個元素代表了一個word在這篇文檔中出現的次數
# print(corpus)
# corpora.MmCorpus.serialize('corpuse.mm',corpus)#保存生成的語料
# corpus=corpora.MmCorpus('corpuse.mm')#加載# corpus是一個返回bow向量的迭代器。下面代碼將完成對corpus中出現的每一個特征的IDF值的統計工作
tfidf_model = models.TfidfModel(corpus)
corpus_tfidf = tfidf_model[corpus]'''''
#查看model中的內容
for item in corpus_tfidf: print(item)
# tfidf.save("data.tfidf")
# tfidf = models.TfidfModel.load("data.tfidf")
# print(tfidf_model.dfs)
'''
print("-------------------下面是tfidf模型(第1個提問)----------------------------------------------------")similarity = similarities.Similarity('Similarity-tfidf-index', corpus_tfidf, num_features=600)
test_data_1 = question
test_cut_raw_1 = list(jieba.cut(test_data_1)) # ['北京', '霧', '霾', '紅色', '預警']
test_corpus_1 = dictionary.doc2bow(test_cut_raw_1) # [(51, 1), (59, 1)],即在字典的56和60的地方出現重復的字段,這個值可能會變化
similarity.num_best = 5
test_corpus_tfidf_1 = tfidf_model[test_corpus_1] # 根據之前訓練生成的model,生成query的IFIDF值,然后進行相似度計算
# [(51, 0.7071067811865475), (59, 0.7071067811865475)]
print(similarity[test_corpus_tfidf_1]) # 返回最相似的樣本材料,(index_of_document, similarity) tuplesprint("-------------------下面是tfidf模型(第2個提問)----------------------------------------------------")
test_data_2 = question
test_cut_raw_2 = list(jieba.cut(test_data_2))
test_corpus_2 = dictionary.doc2bow(test_cut_raw_2)
test_corpus_tfidf_2 = tfidf_model[test_corpus_2]
similarity.num_best = 3
print(similarity[test_corpus_tfidf_2]) # 返回最相似的樣本材料,(index_of_document, similarity) tuples
print("-------------------下面是LSI模型-----------------------------------")
# 使用LSI模型進行相似度計算
lsi = models.LsiModel(corpus_tfidf)
corpus_lsi = lsi[corpus_tfidf]
similarity_lsi = similarities.Similarity('Similarity-LSI-index', corpus_lsi, num_features=400, num_best=2)
# save
# LsiModel.load(fname, mmap='r')#加載
test_data_3 = question
test_cut_raw_3 = list(jieba.cut(test_data_3)) # 1.分詞
test_corpus_3 = dictionary.doc2bow(test_cut_raw_3) # 2.轉換成bow向量
test_corpus_tfidf_3 = tfidf_model[test_corpus_3] # 3.計算tfidf值
test_corpus_lsi_3 = lsi[test_corpus_tfidf_3] # 4.計算lsi值
# lsi.add_documents(test_corpus_lsi_3) #更新LSI的值
print(similarity_lsi[test_corpus_lsi_3])
總結
以上是生活随笔為你收集整理的gensim中文处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ValueError: cannot i
- 下一篇: python socket.error: