Program2:
Use dimensionality reduction (e.g., PCA or t-SNE) to visualize word embeddings for Q
1. Select 10 words from a specific domain (e.g., sports, technology) and visualize their
embeddings. Analyze clusters and relationships. Generate contextually rich outputs
using embeddings. Write a program to generate 5 semantically similar words for a
given input.
# Install required libraries (Run only once)
!pip install gensim scikit-learn matplotlib
# Import libraries
import [Link] as api
import numpy as np
import [Link] as plt
from [Link] import PCA
from [Link] import TSNE
# Load pre-trained word vectors
print("Loading pre-trained word vectors...")
word_vectors = [Link]("word2vec-google-news-300")
# Select 10 words from technology domain
domain_words = [
"computer", "software", "hardware", "algorithm",
"data", "network", "programming",
"machine", "learning", "artificial"
]
# Get vectors for selected words
domain_vectors = [Link]([word_vectors[word] for word in domain_words])
# Function to visualize word embeddings
def visualize_word_embeddings(words, vectors, method='pca', perplexity=5):
if method == 'pca':
reducer = PCA(n_components=2)
elif method == 'tsne':
reducer = TSNE(n_components=2, random_state=42, perplexity=perplexity)
else:
raise ValueError("Method must be 'pca' or 'tsne'.")
reduced_vectors = reducer.fit_transform(vectors)
[Link](figsize=(10, 8))
for i, word in enumerate(words):
[Link](reduced_vectors[i, 0], reduced_vectors[i, 1])
[Link](reduced_vectors[i, 0] + 0.02,
reduced_vectors[i, 1] + 0.02,
word)
[Link](f"Word Embeddings Visualization using {[Link]()}")
[Link]("Component 1")
[Link]("Component 2")
[Link](True)
[Link]()
# Visualize using PCA
visualize_word_embeddings(domain_words, domain_vectors, method='pca')
# Visualize using t-SNE
visualize_word_embeddings(domain_words, domain_vectors, method='tsne', perplexity=3)
# Function to generate 5 semantically similar words
def generate_similar_words(word):
try:
similar_words = word_vectors.most_similar(word, topn=5)
print(f"\nTop 5 semantically similar words to '{word}':")
for similar_word, similarity in similar_words:
print(f"{similar_word}: {similarity:.4f}")
except KeyError:
print(f"Error: '{word}' not found in the vocabulary.")
# Example usage
generate_similar_words("computer")
generate_similar_words("learning")
OUTPUT:
Loading pre-trained word vectors...
Top 5 semantically similar words to 'computer':
computers: 0.7979
laptop: 0.6640
laptop_computer: 0.6549
Computer: 0.6473
com_puter: 0.6082
Top 5 semantically similar words to 'learning':
teaching: 0.6602
learn: 0.6365
Learning: 0.6208
reteaching: 0.5810
learner_centered: 0.5739