問題文
問題の概要
言語処理100本ノック 2020「63. 加法構成性によるアナロジー」 - u++の備忘録 の処理を繰り返すのみです。for 文で回しても良いですが、ここでは pandas の progress_apply を使いました。時間がかかるので、tqdm で実行時間も表示しています。
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)