1import
jieba
2import
gensim
3from gensim import
corpora
4from gensim import
models
5from gensim import
similarities
67 l1 = ["
你的名字是什麼
" ,"
你今年多少歲
","你今年幾歲了
" ,"
你有多高你胸多大
", "
你胸多大"]
8 a = "
你今年多大了"9
10 all_doc_list =
11for doc in
l1:12 doc_list = [word for word in
jieba.cut(doc)]
1314
(all_doc_list)
1516 doc_test_list = [word for word in
jieba.cut(a)]
17print
(doc_test_list)
181920#
製作語料庫
21 dictionary = corpora.dictionary(all_doc_list) #
製作詞袋22#
詞袋的理解23#
詞袋就是將很多很多的詞,進行排列形成乙個 詞(key) 與乙個 標誌位(value) 的字典24#
例如: 25#
至於它是做什麼用的,帶著問題往下看
2627
print("
token2id
", dictionary.token2id)
28print("
dictionary
", dictionary, type(dictionary))
2930 corpus = [dictionary.doc2bow(doc) for doc in
all_doc_list]31#
語料庫:32#
這裡是將all_doc_list 中的每乙個列表中的詞語 與 dictionary 中的key進行匹配33#
得到乙個匹配後的結果,例如['你', '今年', '幾歲', '了']34#
就可以得到 [(1, 1), (5, 1), (6, 1), (7, 1)]35#
1代表的的是 你 1代表出現一次, 5代表的是 了 1代表出現了一次, 以此類推 6 = 今年 , 7 = 幾歲
36print("
corpus
", corpus, type(corpus))
3738
#將需要尋找相似度的分詞列表 做成 語料庫 doc_test_vec
39 doc_test_vec =dictionary.doc2bow(doc_test_list)
40print("
doc_test_vec
", doc_test_vec, type(doc_test_vec))
4142
#將corpus語料庫(初識語料庫) 使用lsi模型進行訓練
43 lsi =models.lsimodel(corpus)44#
這裡的只是需要學習lsi模型來了解的,這裡不做闡述
45print("
lsi"
, lsi, type(lsi))46#
語料庫corpus的訓練結果
47print("
lsi[corpus]
", lsi[corpus])48#
獲得語料庫doc_test_vec 在 語料庫corpus的訓練結果 中的 向量表示
49print("
lsi[doc_test_vec]
", lsi[doc_test_vec])
5051
#文字相似度52#
稀疏矩陣相似度 將 主 語料庫corpus的訓練結果 作為初始值
53 index = similarities.sparsematrixsimilarity(lsi[corpus], num_features=len(dictionary.keys()))
54print("
index
", index, type(index))
5556
#將 語料庫doc_test_vec 在 語料庫corpus的訓練結果 中的 向量表示 與 語料庫corpus的 向量表示 做矩陣相似度計算
57 sim =index[lsi[doc_test_vec]]
5859
print("
sim"
, sim, type(sim))
6061
#對下標和相似度結果進行乙個排序,拿出相似度最高的結果62#
cc = sorted(enumerate(sim), key=lambda item: item[1],reverse=true)
63 cc = sorted(enumerate(sim), key=lambda item: -item[1])
64print
(cc)
6566 text =l1[cc[0][0]]
6768
print(a,text)
可用於機器學習,進行相似度比對,問題庫越豐富,機器學習效果越準確
gensim學習筆記
1 詞向量建模的word2vec模型和用於長文字向量建模的doc2vec模型 在gensim中實現word2vec模型非常簡單。首先,我們需要將原始的訓練語料轉化成乙個sentence的迭代器 每一次迭代返回的sentence是乙個word utf8格式 的列表 class mysentences ...
機器學習必知必會 交叉驗證
當我們根據資料訓練出乙個機器學習模型時,我們希望它在新的資料上也保持較高的準備率,這就需要我們對學習到的不同模型有乙個模型評估準則。為了評估模型的泛化效能 指模型在未知資料上的 能力 防止模型落入 過擬合 的陷進。我們人為地將原始資料劃分為訓練集和測試集,前者用於訓練模型,後者用於評估模型的泛化效能...
機器學習工具彙總
從機器學習談起 介紹工具是機器學習的重要組成部分,選擇合適的工具與使用最好的演算法同等重要。在這篇文章中,你將會見識到各種機器學習工具。了解它們為什麼重要,以及可供選擇的工具型別。機器學習工具使得應用機器學習更快,更簡單,更有趣。你不希望為學習 使用機器學習工具而學習 使用機器學習工具。必須有目的地...