TensorFlow word2vec tutorial을 기반으로하는 코드를 사용하고 있습니다.word2vec의 모든 요소간에 유사도 행렬 가져 오기
데이터 집합의 각 요소와 해당 단어 레이블 사이에 유사성 값의 행렬이 포함 된 텍스트 파일을 작성하고 싶습니다.
sim = similarity.eval()
등 :
# Compute the cosine similarity between minibatch examples and all embeddings.
norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
normalized_embeddings = embeddings/norm
valid_embeddings = tf.nn.embedding_lookup(
normalized_embeddings, valid_dataset)
similarity = tf.matmul(
valid_embeddings, normalized_embeddings, transpose_b=True)
시뮬레이션은 기본적으로 유사성 값을 모두 표시하는 unique_data_length의 X의 unique_data_length 개체입니다 내 생각
상점이 유사성 값을 '심'. 큰.
각각의 유사도 값에 대한 레이블을 얻고 싶습니다.
예컨대 내가받는다면 :
sim[i][j]
그러면 내가 무엇이고 j는 무엇입니까? 내가 할 수있는 일은 : reverse_dictionary [i] 진정한 가치를 얻으려면? 그런 식으로 실제로 저장되어 있습니까?
sim = similarity.eval()
for i in xrange(valid_size):
valid_word = reverse_dictionary[valid_examples[i]]
top_k = 8 # number of nearest neighbors
nearest = (-sim[i, :]).argsort()[1:top_k + 1]
log_str = "Nearest to %s:" % valid_word
for k in xrange(top_k):
close_word = reverse_dictionary[nearest[k]]
log_str = "%s %s," % (log_str, close_word)
print(log_str)
정말 날 여기 혼란 인 행 :
nearest = (-sim[i, :]).argsort()[1:top_k + 1]
이유는 무엇입니까가 출력하는 인코딩 된 값 튜토리얼에서
, 그들은 검증 세트의 폐쇄는 X 단어 수 유사성 값 대신에?