Look at pre-trained glove embeddings
import csv
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torchtext
import numpy as np
import matplotlib.pyplot as plt
Embedding
glove = torchtext.vocab.GloVe(name="6B", dim=100)
def print_closest_words(vec, n=5):
diff = np.linalg.norm(glove.vectors.numpy() - vec.numpy(), axis=1)
lst = sorted(list(enumerate(diff)), key=lambda x:x[1])
for idx, difference in lst[:n]:
print(glove.itos[idx], difference)
vec = glove['him'] - glove['man'] + glove['woman']
print_closest_words(vec)
vec = glove['police'] - glove['africa'] + glove['america']
print_closest_words(vec)
vec = glove['king'] - glove['man'] + glove['woman']
print_closest_words(vec)
vec = glove['king'] - glove['prince'] + glove['princess']
print_closest_words(vec)
vec = glove['uncle'] - glove['man'] + glove['woman']
print_closest_words(vec)
vec = glove['grandmother'] - glove['mother'] + glove['father']
print_closest_words(vec)
print_closest_words(glove['old'] - glove['young'] + glove['father'])
vec = glove['prince'] - glove['man'] + glove['woman']
print_closest_words(vec)
print_closest_words(glove['doctor'] - glove['man'] + glove['woman'])
print_closest_words(glove['doctor'] - glove['woman'] + glove['man'])
vec = glove['doctor'] - glove['woman'] + glove['man']
print_closest_words(vec)
vec = glove['programmer'] - glove['man'] + glove['woman']
print_closest_words(vec)
vec = glove['programmer'] - glove['woman'] + glove['man']
print_closest_words(vec)
vec = glove['programmer'] - glove['man'] + glove['woman']
print_closest_words(vec)
vec = glove['engineer'] - glove['man'] + glove['woman']
print_closest_words(vec)
print_closest_words(glove['engineer'] - glove['woman'] + glove['man'])
print_closest_words(glove['sales'] - glove['woman'] + glove['man'])
print_closest_words(glove['sales'] - glove['man'] + glove['woman'])