nlp-project / utils /text_cleaning.py
Julseb42's picture
Test deploy
8e83170
Raw
History Blame Contribute Delete
1.04 kB
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
# Download required data once
nltk.download('punkt_tab')
nltk.download("punkt")
nltk.download("stopwords")
nltk.download("wordnet")
stop_words = set(stopwords.words("english"))
lemmatizer = WordNetLemmatizer()
def clean_text(text):
"""
Cleans a single text string:
- Lowercase, remove punctuation/numbers
- Tokenize, remove stopwords, lemmatize
"""
import re
text = text.lower()
text = re.sub(r"[^\w\s]", "", text)
text = re.sub(r"\d+", "", text)
tokens = word_tokenize(text)
tokens = [word for word in tokens if word not in stop_words]
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
return " ".join(lemmatized)
def preprocess_reviews(df, column="reviews.text"):
"""
Cleans a column of reviews in a DataFrame using clean_text().
"""
df = df.dropna(subset=[column])
df[column] = df[column].apply(clean_text)
return df