import pandas as pd
from gensim.models import KeyedVectors
from tqdm import tqdm


def culcSim(row):
    global model
    return pd.Series(list(model.most_similar(positive=[row['v2'], row['v3']], negative=[row['v1']])[0]))


tqdm.pandas()
df = pd.read_csv('ch07/questions-words.txt', sep=' ')
df = df.reset_index()
df.columns = ['v1', 'v2', 'v3', 'v4']
df.dropna(inplace=True)

model = KeyedVectors.load_word2vec_format('ch07/GoogleNews-vectors-negative300.bin', binary=True)
df[['simWord', 'simScore']] = df.progress_apply(culcSim, axis=1)
df.to_csv('ch07/ans64.txt', sep=' ', index=False, header=None)
pythonを用いて、単語アナロジーの評価データをダウンロードし、vec(2列目の単語) - vec(1列目の単語) + vec(3列目の単語)を計算し、そのベクトルと類似度が最も高い単語と、その類似度を求めよ。求めた単語と類似度は、各事例の末尾に追記せよ。