あなたはcs20siからの最初の割り当てを行っているので、私はそれを取っています。 任意の次元(たとえば、1000,1000)の共出現行列を形成します。あなたは言葉(リスト)とインデックスに単語をマッピングした辞書を持っていたら、それだけでテンソルを取るようあなただけの直接tf.svd使用することができた後
cooccurrence_matrix = np.zeros((VOCAB_SIZE, VOCAB_SIZE))
n_words = len(words)
for i, current_word in enumerate(words):
if current_word not in dictionary:
current_word = 'UNK'
if i != 0:
left_word = words[i-1]
if left_word not in dictionary:
left_word = 'UNK'
cooccurrence_matrix[dictionary[current_word]][dictionary[left_word]] += 1
if i < n_words-1:
right_word = words[i+1]
if right_word not in dictionary:
right_word = 'UNK'
cooccurrence_matrix[dictionary[current_word]][dictionary[right_word]] += 1
print cooccurrence_matrix.shape
のような同時マトリックスを形成するためにndarray使用することができます。
tf_svd = tf.svd(matrix, compute_uv=True)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
svd, u, v = sess.run(tf_svd, feed_dict={matrix:cooccurrence_matrix})
tf.svdの出力には、tf.svdのマニュアルに記載されている3つの値があります。私は辞書の大きさ100から始まって、事がうまくいっているかどうかを見ていきます。