How to use tensorboard(Embedding Projector) to visualize/project word2vec model?
word2vec 的應用已經相當的的普及,但是該模型為向量組成,充滿了一般人腦袋不可理解的維度與空間,在應用解釋時(給老闆、業務、行銷與客戶)其實蠻困擾的。此文章將利用 Tensorboard(Embedding Projector) 將模型的向量投射到多維空間中,可以清晰地看得出詞與詞之間的相依關係,來解決上述問題。
在本範例你會學到:
- 如何使用 tensorboard
- 將 word2vec 詞向量視覺化
在本範例你需要先準備好:
- word2vec model (本篇不贅述該如何產生一個 word2vec model,若有需要的留言讓我知道)
- 注意:本範例會有一點
Tensorflow的用法,不懂也不會影響使用。
1.套件準備
在自己喜歡的環境內使用安裝以下套件,基本上就是 tensorflow、gensim、numpy,版本之間的衝突問題請依照自己環境選擇版本,網路上相關範本已經很多了:
numpy==1.17.3 |
2.載入 word2vec 模型
log_dir: Log 要存擋的地方model_dir: word2vec model 放置的地方(已經提前將模型放到該路徑下med250.model.bin、med250.model.bin.trainables.syn1neg.npy、med250.model.bin.wv.vectors.npy)metadata_name: 要存下模型中的字詞對照model_file: med250.model.bin 所在位置
import numpy as np |
3.處理向量與原對應字詞
- 第一部分
embedding: 依順序存下向量 - 第二部分 : 存下每個向量原始的字詞意思(label),存入先前的
metadata_name
# create a list of vectors |
4.建立 Tensorboard
- 第一部分:設置 session
- 這部分如果已經對
TensorFlow有初步的瞭解,可以再細部微調更多的東西,如果不懂也沒關係,照抄就好。
- 這部分如果已經對
- 第二部分 : 為
projector投射/視覺化做準備- 同上,不懂就先照貼就好,名稱與前面的參數一致就行。
# setup a TensorFlow session |
5.存擋
- 將前面處理好的
session存擋,以利多次使用。
# save the model |
6.啟動 Tensorboard
最後一步就要大功告成了,請開啟 terminal 輸入下方指令(不是在python環境喔),將 logdir 指到前面指定的位置。(可以自己的環境需求加上 --port)
tensorboard --logdir='/home/word2vec_model/embedding_log_demo/' |
Tensorboard 畫面展示
等待一下就會出現要輸入的 url,畫面為我自己設定了port 1234 的url,請自行更改 host。

一開始會進入我們程式建立的 graphic 畫面

選擇右上方下拉選單,點擊 projector

系統將會開始載入,這會花一些時間,如果是在本機嘗試這個專案的朋友們請注意自己機器的 memory 大小,若不夠用可以將自己的 model 切小一點來嘗試

看到一坨藍藍的點點就是成功了

維度太多其實很難看到什麼,所以可以利用右側的篩選像是 zoom in 的功能。
EX:我在 Search 輸入 新北市且選擇 by label後,再點擊 isolate xx point,就可以看到新北市其相關的字詞的距離

其他相關的按鈕與功能我認為蠻直覺的,我就不特別說明了,但如果有需要解釋也請讓我知道!
參考資料
https://eliyar.biz/using-pre-trained-gensim-word2vector-in-a-keras-model-and-visualizing/
以上為簡略的說明,若有疑問請在留言區發問,若是文章有幫助到你也可以讓我知道。