# 4 Word2Vec Embeddings
sentences = [
    ["artificial","intelligence","is","cool"],
    ["machine","learning","is","fun"],
    ["ai","learning","uses","neural","networks"]
]

try:
    from gensim.models import Word2Vec
    model = Word2Vec(sentences, vector_size=10, window=2, min_count=1, sg=1)
    print("Vector (gensim):", model.wv["learning"])
    print("Similar (gensim):", model.wv.most_similar("learning")[:3])

except ImportError:
    import spacy, subprocess, sys
    try:
        nlp = spacy.load("en_core_web_md")
    except OSError:  # auto-download if missing
        subprocess.run([sys.executable, "-m", "spacy", "download", "en_core_web_md"])
        nlp = spacy.load("en_core_web_md")

    word = nlp("learning")[0]
    print("Vector (spacy):", word.vector[:10])  # preview first 10 dims
    words = ["artificial","intelligence","ai","fun","cool","networks"]
    sims = {w: word.similarity(nlp(w)[0]) for w in words}
    print("Similar (spacy):", sorted(sims.items(), key=lambda x: -x[1])[:3])
