1つの解決策は、モデルをCベースのword2vec形式で保存し、元の単語をawk
を使用して新しい単語のマッピングに置き換えることです。
は、我々は、フォームのファイルマッピングがあるとします。
$ cat map.txt
foo:bar
...
私たちは、経由モデルを再作成することができます:さておき、私のマッピングは、実際に私が上で訓練された配列であったので
import subprocess as sp
import shlex
from gensim.models import Word2Vec
model.save_word2vec_format('embeddings.txt', binary=False)
CMD = r"""
awk -F'[ ]|:' 'FNR==NR {a[$1]=$2; next} FNR==1{print $0} FNR!=1{$1=a[$1]; print $0}' map.txt embeddings.txt
"""
with open('new_embeddings.txt', 'w') as f:
p = sp.Popen(shlex.split(CMD), stdout=f)
new_model = Word2Vec.load_word2vec_format('new_embeddings.txt')
new_model.create_binary_tree()
いくつかの配列の単語のインデックスarr
。 numpyを使ってマップファイルを作成しました:
import numpy as np
np.savetxt('map.txt', np.c_[np.arange(arr.size), arr], '%d:%s')