Python數據分析及可視化實例之文本處理文本相似度(29)

系列文章總目錄:Python數據分析及可視化實例目錄


1.項目背景:

接上一期Python數據分析之文本處理詞頻向量轉換前奏詞袋word2bow

PS趁熱打鐵

2.分析步驟:

(1)讀取詞典和文檔;

(2)計算tf idf 和 lsi;

(3)生成相似度矩陣;

(4)計算相似度。

參考資料:基於tfidf 以及 lsi 的文本相似度分析

3.源碼(公眾號:海豹戰隊):

# coding: utf-8nn# 親,轉載即同意幫推公眾號:海豹戰隊,嘿嘿......n# 數據源可關注公眾號:海報戰隊,後留言:數據nn# In[1]:nnfrom gensim import corpora, models, similaritiesnfrom pprint import pprintnnn# 讀取詞典和文檔,計算tf idf 和 lsi 的表達方式,並生成相似度矩陣ndictionary = corpora.Dictionary.load(../../tmp/deerwester.dict)ncorpus = corpora.MmCorpus(../../tmp/deerwester.mm) # 上一示例中生成的數據ntfidf_model = models.TfidfModel(corpus)ncorpus_tfidf = tfidf_model[corpus] # TIDIF 逆文檔頻率nlsi_model = models.LsiModel(corpus_tfidf,id2word=dictionary,num_topics=2)ncorpus_lsi = lsi_model[corpus_tfidf] # LSI 潛在語義索引ncorpus_simi_matrix = similarities.MatrixSimilarity(corpus_lsi)ncorpus_simi_matrix.save(../../tmp/deerwester.index)nsimilarities.MatrixSimilarity.load(../../tmp/deerwester.index) # 下次調用nnn# In[5]:nn# 基於tfidf的文本相似度分析 nindex = similarities.MatrixSimilarity(corpus_tfidf) nvec_bow =[dictionary.doc2bow(text) for text in raw_data] #把用戶raw_data語料轉為詞包nall_reult_sims = []ntimes_v2 = 0 nn###對每個用戶預料與標準預料計算相似度nnfor i in vec_bow: n #直接使用上面得出的tf-idf 模型即可得出商品描述的tf-idf 值n sims = index[tfidf_model[i]]n sims = sorted(enumerate(sims), key=lambda item: -item[1])n result_sims = [] n for i,j in sims:n result_sims.append([map_value_user[times_v2],map_value[i],j])n times_v2 += 1n all_reult_sims.append(result_sims[:20])nprint(all_reult_sims) # 查看前20條顯示相似文本nnn# In[7]:nn# 基於lsi的文本相似度分析 nindex = similarities.MatrixSimilarity(corpus_lsi) nvec_bow =[dictionary.doc2bow(text) for text in raw_data] #把用戶語料raw_data轉為詞包nall_reult_sims = []ntimes_v2 = 0 nfor i in vec_bow: n #直接使用上面得出的tf-idf 模型即可得出商品描述的tf-idf 值n sims = index[lsi[tfidf_model[i]]]n sims = sorted(enumerate(sims), key=lambda item: -item[1])n result_sims = [] n for i,j in sims:n result_sims.append([map_value_user[times_v2],map_value[i],j])n times_v2 += 1n all_reult_sims.append(result_sims[:20])nprint(all_reult_sims) # 查看前20條顯示相似文本n

膠水語言博大精深,

本主只得一二為新人帶路,

老鳥可去另一專欄:Python中文社區

新手可查閱歷史目錄:

Python數據分析及可視化實例目錄


最後,別只收藏不關注哈

推薦閱讀:

玩點好玩的--知乎全部話題關係可視化(Docker+Flask+Bootstrap+echarts+uWSGI+Nginx)
Python安全工具開發(一) :分散式爬蟲初探
跟黃哥學python序列文章之python二分查找演算法

TAG:Python | 数据分析 | 自然语言处理 |