# GenAI Program g1 - Word2Vec word similarity & arithmetic (Google News)
!pip install gensim
import gensim.downloader as api

print("Loading model... (This may take a while)")
model = api.load("word2vec-google-news-300")
print("Model loaded!")

def find_similar(word):
    try:
        print(f"\nWords similar to '{word}':")
        for w, score in model.most_similar(word)[:5]:
            print(f"  {w}: {score:.4f}")
    except KeyError:
        print(f"'{word}' not found in vocabulary.")

def word_arithmetic(word1, word2, word3):
    try:
        result = model.most_similar(positive=[word1, word2], negative=[word3])
        print(f"\n'{word1}' - '{word3}' + '{word2}' = '{result[0][0]}'")
    except KeyError as e:
        print(f"Error: {e}")

def check_similarity(word1, word2):
    try:
        print(f"\nSimilarity between '{word1}' and '{word2}': {model.similarity(word1, word2):.4f}")
    except KeyError as e:
        print(f"Error: {e}")

def odd_one_out(words):
    try:
        print(f"\nOdd one out from {words}: {model.doesnt_match(words)}")
    except KeyError as e:
        print(f"Error: {e}")

find_similar("king")
word_arithmetic("king", "woman", "man")   # Expected: queen
check_similarity("king", "queen")
odd_one_out(["apple", "banana", "grape", "car"])
