A portfolio of assignments covering the modern NLP stack, from classical text classification to causal language model internals and LLM agents.

Quick Facts

  • Context: CS584 Natural Language Processing Coursework (Spring 2026)
  • Tech Stack: Python, PyTorch, HuggingFace Transformers, scikit-learn, OpenAI API, Optuna
  • Links: None available

Overview and Problem

This repository contains four major projects exploring the evolution of NLP. The work transitions from TF-IDF baselines to dense word embeddings, and culminates in implementing from-scratch decoding algorithms and multi-turn LLM agents.

What I Built

  • Developed baseline sentiment classifiers using TF-IDF with scikit-learn and PyTorch MLPs, optimized via Optuna.
  • Implemented nearest-neighbor search, word analogy tasks, and CNN-based sentiment classifiers using pre-trained GloVe and Cohere embeddings.
  • Engineered greedy decoding and beam search algorithms from scratch for the Llama-3.2-1B model.
  • Designed a multi-turn LLM-powered conversational agent from scratch with persistent memory, branching capabilities, and custom tool-use (regex-based calculator interception).

Key Results and Impact

  • Replicated WEAT bias statistics to quantify gendered associations in GloVe embeddings.
  • Boosted sentiment classification validation accuracy from ~60% (TF-IDF) to ~91.6% using Cohere embeddings and 1D Convolutions.
  • Successfully visualized the divergence between greedy and beam-search paths during causal language model generation.
  • Demonstrated reliable tool invocation by prompting the custom agent to intercept and compute arithmetic expressions before generating final responses.

Related: Projects MOC