這次改進打算使用中文的word2vec代替原本**裡的隨機生成。第一次弄,問題記錄如下:
使用別人訓練好的模型載入
model = gensim.models.keyedvectors.load_word2vec_format('d:\\work\\word2vec訓練好的模型\\維基百科語料5.7g+訓練模型\\zhwiki_2017_03.sg_50dutf8.word2vec', binary=false)
model = word2vec.word2vec.load("d:\\work\\word2vec訓練好的模型\\本機訓練好的模型\\200萬標訊標題\\200萬標訊標題測試.model")
model = gensim.models.keyedvectors.load_word2vec_format("d:\\work\\word2vec訓練好的模型\\synonyms\\模型\\words.vector",binary=true, unicode_errors='ignore')
以上這幾種載入方式就是之前對網上的模型載入,全部都載入成功了
使用的是268g+訓練好的word2vec模型(中文詞向量),是128維
模型格式有兩種bin和model,使用方式:
a. bin模式:model = gensim.models.keyedvectors.load_word2vec_format(model_path, binary=true)
b. model模式:model = gensim.models.word2vec.load(model_path)
gensim.models.keyedvectors.load_word2vec_format('word2vec_model/baike_26g_news_13g_novel_229g.bin', binary=true)
未改進前
# emb_dims: 8 (1*8)
zero_embedding = tf.zeros(shape=[1, self.n_emb_dims], dtype=tf.float32)
# voc_size: 12000,emb_dims: 8 ,(12000*8)
# 現在這個要從訓練的詞表裡讀取了!!!
none_zero_embedding = tf.variable(tf.truncated_normal([self.n_voc_size, self.n_emb_dims], stddev=0.1, dtype=tf.float32), name="embedding_w", dtype=tf.float32)
# embeddings shape: (12001*8)
embeddings = tf.concat([zero_embedding, none_zero_embedding], axis=0, name="embedding_vec")
# 查詢embeddings張量中值為x的元素,這些元素組成乙個tensor返回
# 網路裡需要先把詞的id轉換成對應的向量
# x_input(240*8) 240應該是self.n_item_num * self.n_query_len
# 向量可以是word2vec預訓練好的,也可以是在網路裡訓練的,在網路裡需要先把詞的id轉換成對應的向量,這個函式就是做這件事的
x_input = tf.nn.embedding_lookup(embeddings, self.x) # 240*8
# self.x是字的id
# word_dict['公'] = 1
改進後
在keras的embedding層中使用預訓練的word2vec詞向量(講的最清楚的一篇)
embedding_file = r'embeddings-100d.txt'
embedding_file = os.path.join(data_path, embedding_file)
max_features = len(word_vocab)
# print(max_features)
#########prepare embeddings
embeddings_index = {}
f = open(embedding_file)
ii = 0
for line in f:
if ii == 0:
ii += 1
continue
values = line.split()
word = values[0]
coefs = np.asarray(values[1:], dtype='float32')
# embeddings_index[word] = coefs
embeddings_index[ii - 1] = coefs
ii += 1
f.close()
# print('found %s word vectors.' % len(embeddings_index))
##word_index: 詞表
##embedding_matrix: 變數
##embedding_matrix的長度多一行,是的不存在embedding的詞的值都為0
embedding_matrix = np.zeros((max_features + 1, embedding_dims))
i = 0
for word in word_vocab:
# embedding_vector = embeddings_index.get(word)
embedding_vector = embeddings_index.get(i)
if embedding_vector is not none:
# words not found in embedding index will be all-zeros.
embedding_matrix[i] = embedding_vector
i += 1
在用tensorflow程式設計的過程中,我們經常遇到這樣的問題:資料型別不對 typeerror,遇到這種問題,一般情況下,我採用的辦法是:
wanted_data = tf.cast(origin_data, tf.float32)
這句**的意思是將原來的資料(origin_data)轉化為你想要的資料(wanted_data),裡面的 tf.float32 是新資料的資料型別
參考:word2vec的一些總結
基於gensim的word2vec實戰
金融風控模型
工作中暫時未涉及。此處為有幸得到的ppt。記錄學習內容,還有些心得,有錯誤請指出,感激 什麼是欺詐風險 網路借款人是否是本人 網路借款人提交的資料是否真實 什麼是信用風險 網路借款人是否有還款的能力 是否是沒有還款意願的老賴,多次違約 貸款公司如何防範以上兩種風險 針對乙個p2p借款的流程來說,借款...
徵信路漫漫 ,「類」金控平台的徵信現狀 例項
1.金控平台的產生 時下國內金控平台的成立用 忽如一夜春風來,千樹萬數梨花開 來形容絕不為過。民營的 央企的 網際網路的 產業的,紛紛高舉 普惠金融 一帶一路 大資料創新 產融結合 等理念大旗殺入金融領域。難怪有人說,當今再牛的實業大佬也抵擋不住金融 究其原因,可以講出 幾本書 的大道理,諸如經濟週...
風控策略和模型的區別 風控策略概述
風控策略定義 信貸風控策略 主要是根據不同業務場景,針對目標客群,通過一系列規則,對客戶進行篩選和分 類,發現風險點 包括 信用卡欺詐 團夥窩案 高危使用者等 降低風險,同時降低成本 提公升效 率,實現反欺詐,授信,風險定價,催收等各階段目標。個人理解 風控經常與政策 策略 規則 模型 演算法這五個...