NLP Lab 02

Pasted Sep 26, 2026, 7:29 PM1 file98 lines

Scan to open on your phone

Point a camera at the QR code - it opens this exact paste, no app needed.

https://codepastes.com/nlp-lab-02-nutech
lab-02
!wget -q https://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz
!tar -xzf aclImdb_v1.tar.gz

import os

def read_reviews(path):
    reviews = []
    for file in os.listdir(path):
        with open(os.path.join(path, file), encoding='utf-8') as f:
            reviews.append(f.read())
    return reviews

positive_reviews = read_reviews('aclImdb/train/pos')
negative_reviews = read_reviews('aclImdb/train/neg')

print("Positive Reviews:", len(positive_reviews))
print("Negative Reviews:", len(negative_reviews))

lengths = [len(r.split()) for r in positive_reviews + negative_reviews]
print("Average Review Length (words):", sum(lengths) / len(lengths))

import re
import nltk
import string
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import LancasterStemmer

nltk.download('punkt_tab')
nltk.download('stopwords')

stop_words = set(stopwords.words('english'))
stemmer = LancasterStemmer()

def preprocess(text):
    text = re.sub(r'<br />', ' ', text)
    text = text.lower()
    text = re.sub(r'\d+', '', text)
    text = text.translate(str.maketrans('', '', string.punctuation))
    tokens = word_tokenize(text)
    tokens = [w for w in tokens if w not in stop_words]
    tokens = [stemmer.stem(w) for w in tokens]
    return tokens

for review in positive_reviews[:3]:
    print(preprocess(review)[:10])
    
love_phrases = []
hate_phrases = []

for review in positive_reviews + negative_reviews:
    love_phrases += re.findall(r'I love (.*)', review, re.IGNORECASE)
    hate_phrases += re.findall(r'I hate (.*)', review, re.IGNORECASE)

print("First five I love phrases:")
for i in range (5):
  print(f"{i + 1}: {love_phrases[i]}")

print("\nFirst five I hate phrases:")
for i in range (5):
  print(f"{i + 1}: {hate_phrases[i]}")
  
  
def chatbot_response(text):
    text = text.lower()

    if re.search(r'\bhi\b|\bhello\b', text):
        return "Hello! How are you?"

    match = re.search(r'i love (.*)', text)
    if match:
        return "Why do you love " + match.group(1) + "?"

    match = re.search(r'i hate (.*)', text)
    if match:
        return "Why do you hate " + match.group(1) + "?"

    match = re.search(r'i feel (.*)', text)
    if match:
        return "Why do you feel " + match.group(1) + "?"

    match = re.search(r'i need (.*)', text)
    if match:
        return "Why do you need " + match.group(1) + "?"

    if re.search(r'sorry', text):
        return "No need to apologize."

    if re.search(r'bye', text):
        return "Goodbye!"

    return "Tell me more."

while True:
    user_input = input("You: ")
    print("Chatbot:", chatbot_response(user_input))
    if re.search(r'bye', user_input.lower()):
        break

2,709 chars · codepastes.com