Я смотрю на официальный пример Tensorflow для Word2Vec.Они создали словарь для всех слов, а затем создали обратный словарь, а обратный словарь в основном использовался в остальной части кода.
Обсуждаемая строка:
reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys()))
Полный блок кода
vocabulary_size = 50000
def build_dataset(words):
count = [['UNK', -1]]
count.extend(collections.Counter(words).most_common(vocabulary_size - 1))
dictionary = dict()
for word, _ in count:
dictionary[word] = len(dictionary)
data = list()
unk_count = 0
for word in words:
if word in dictionary:
index = dictionary[word]
else:
index = 0 # dictionary['UNK']
unk_count = unk_count + 1
data.append(index)
count[0][1] = unk_count
reverse_dictionary = dict(zip(dictionary.values(), dictionary.keys()))
return data, count, dictionary, reverse_dictionary
data, count, dictionary, reverse_dictionary = build_dataset(words)
Полная официальная реализация.
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/5_word2vec.ipynb
Это официальная реализация от Tensorflow, поэтому должна быть веская причина, почему они сделали это