2017-05-03 10 views
0

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 단어 수 유사성 값 대신에?

답변

0

내 지식에 따르면 sim 위치 i (및 j)는 i 요소를 나타내며 reverse_dictionary [i]로 식별 할 수 있습니다.