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-nutechlab-02Python
!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()):
break2,709 chars · codepastes.com