From bb15d0f3cf57cd27ea76f6469c2c7371b4a2aae7 Mon Sep 17 00:00:00 2001 From: Jason Park Date: Sat, 5 Apr 2025 20:23:48 -0400 Subject: [PATCH 1/3] Completed Assignment 2 --- Figure_1.png | Bin 0 -> 78208 bytes README.md | 9 ++- reddit.py | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 Figure_1.png create mode 100644 reddit.py diff --git a/Figure_1.png b/Figure_1.png new file mode 100644 index 0000000000000000000000000000000000000000..886944e6e762f503b8034fccdf394a1f170548ee GIT binary patch literal 78208 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 05aa109..4d7567c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ -# Text-Analysis-Project +This project explores text data from the subreddit r/marvelstudios to find which Marvel movies are currently generating the most discussion. Using Python and different text analysis techniques, I worked to analyze post titles for mention frequencies of popular Marvel movies, commonly used non-stop words, overall community sentiment, and clustering patterns of the content. The goal was to gain insights into what Marvel content is trending and how fans are reacting to it. +The script is organized around a main workflow defined in reddit.py, broken into components that include data collection, keyword frequency analysis, word frequency analysis, sentiment analysis, and clustering. Reddit post titles were collected using the praw API from the details from the .env file. A list of Marvel-related keywords generated by ChatGPT were compared against titles to count movie mentions. Non-stop words were extracted using NLTK and analyzed with Python's counter. VADER sentiment scoring from NLTK was used to classify post tone as positive, neutral, or negative. Cosine similarity between post vectors was computed, reduced using MDS, and plotted with matplotlib where each point was color-coded by Marvel movie mentions. +ChatGPT was used to assist with the cosine similarity and dimensionality reduction logic, integration of sentiment analysis, code structure and modularization, and documentation. These parts were more complex, and GenAI assistance helped accelerate development and clarify implementation decisions. +From the results, Daredevil was the most mentioned topic (77), followed by Avengers (49), Doomsday (48), Thunderbolts (33), and Spider-Man (29). Other frequently discussed titles included Endgame, Iron Man, Loki, Black Panther, and Thor. The most common non-stop words were "daredevil" (75), "mcu" (72), "born" (60), "new" (54), "avengers" (49), "marvel" (49), "doomsday" (46), and "spiderman" (30), among others. These suggest a blend of excitement for character returns and broader MCU narratives. Sentiment analysis showed that 45.0% of titles were positive, 30.6% neutral, and 24.4% negative. +The clustering visualization revealed that mentions of Daredevil, Thunderbolts, and Doomsday were fairly distinct and tightly grouped, indicating a more focused discussion. Meanwhile, Spider-Man and Avengers related posts were more spread out, suggesting varied conversation contexts. A cluster of gray (non-movie-specific) posts highlighted the general discussions and speculation happening within the community. +!(./Figure_1.png) +Overall, the project went smoothly. The Reddit API was reliable, and modular code made the script easier to manage. ChatGPT significantly sped up the development of clustering and sentiment analysis, especially where I encountered difficulties with cosine similarity, vectorization, and plot generation using MDS. I also relied on ChatGPT to help structure the entire script, from separating functions, implementing environment-based credential loading, and making the script run from a single main() entry point. Some challenges included balancing keyword matching to avoid undercounting or overcounting and interpreting MDS projections. Through this project, I improved my understanding of text vectorization, sentiment analysis, and visualization techniques. The process reinforced how GenAI tools can support complex tasks while still requiring thoughtful oversight. -Please read the [instructions](instructions.md). diff --git a/reddit.py b/reddit.py new file mode 100644 index 0000000..e2a9e96 --- /dev/null +++ b/reddit.py @@ -0,0 +1,191 @@ +import os +import re +import nltk +import praw +import numpy as np +import matplotlib.pyplot as plt + +from dotenv import load_dotenv +from collections import Counter +from nltk.corpus import stopwords +from nltk.sentiment.vader import SentimentIntensityAnalyzer +from sklearn.feature_extraction.text import CountVectorizer +from sklearn.metrics.pairwise import cosine_similarity +from sklearn.manifold import MDS + +nltk.download('stopwords') +nltk.download('vader_lexicon') + +def load_reddit_instance(): + """ + Loads Reddit credentials from .env and returns an authenticated Reddit instance. + """ + load_dotenv() + return praw.Reddit( + client_id=os.getenv("CLIENT_ID"), + client_secret=os.getenv("CLIENT_SECRET"), + username=os.getenv("REDDIT_USERNAME"), + password=os.getenv("REDDIT_PASSWORD"), + user_agent=os.getenv("USER_AGENT") + ) + + +def fetch_titles(subreddit_name="marvelstudios", limit=500, time_filter="month"): + """ + Fetches post titles from the specified subreddit + """ + reddit = load_reddit_instance() + subreddit = reddit.subreddit(subreddit_name) + posts = subreddit.top(time_filter=time_filter, limit=limit) + return [post.title for post in posts] + + +def analyze_mentions(titles, keywords): + """ + Counts how many times each Marvel-related keyword appears in the collected titles + """ + combined_text = " ".join(titles).lower() #Text combination assisted by ChatGPT + counts = Counter() + for keyword in keywords: + if keyword in combined_text: + counts[keyword] = combined_text.count(keyword) + return counts + + +def get_word_frequencies(titles): + """ + Extracts non-stop words from titles and returns a frequency count + """ + stop_words = set(stopwords.words('english')) + words = [] + + for title in titles: + cleaned = re.sub(r"[^\w\s]", "", title.lower()) #Cleaning process assisted by ChatGPT + for word in cleaned.split(): + if word not in stop_words: + words.append(word) + + return Counter(words) + + +def analyze_sentiments(titles): + """ + Performs sentiment analysis on Reddit titles using VADER. + + This section was developed with assistance from ChatGPT. + """ + sia = SentimentIntensityAnalyzer() + sentiment_scores = { + "positive": 0, + "neutral": 0, + "negative": 0 + } + + for title in titles: + score = sia.polarity_scores(title) + if score["compound"] >= 0.05: + sentiment_scores["positive"] += 1 + elif score["compound"] <= -0.05: + sentiment_scores["negative"] += 1 + else: + sentiment_scores["neutral"] += 1 + + total = len(titles) + print("\nSentiment analysis of Reddit post titles:\n") + for label, count in sentiment_scores.items(): + pct = round(100 * count / total, 2) + print(f"{label.title()}: {count} posts ({pct}%)") + + +def cluster_titles(titles, keywords): + """ + Uses cosine similarity and MDS to cluster Reddit post titles in 2D space. + + The clustering and color-coded visualization were built with assistance from ChatGPT + """ + stop_words = set(stopwords.words('english')) + cleaned_titles = [] + labels = [] + + # Clean titles and assign labels based on Marvel keyword matches + for title in titles: + lower_title = title.lower() + words = re.sub(r"[^\w\s]", "", lower_title).split() + filtered = [w for w in words if w not in stop_words] + cleaned_titles.append(" ".join(filtered)) + + movie_label = "None" + for keyword in keywords: + if keyword in lower_title: + movie_label = keyword.title() + break + labels.append(movie_label) + + # Vectorize text and compute cosine similarity + vectorizer = CountVectorizer() + X = vectorizer.fit_transform(cleaned_titles) + sim_matrix = cosine_similarity(X) + + # Use Multi-Dimensional Scaling (MDS) for dimensionality reduction + coords = MDS(dissimilarity='precomputed', random_state=42).fit_transform(1 - sim_matrix) + + # Assign colors per movie label + unique_labels = list(sorted(set(labels))) + cmap = plt.cm.get_cmap("tab20", len(unique_labels)) + label_to_color = {label: cmap(i) for i, label in enumerate(unique_labels)} + colors = [label_to_color[label] for label in labels] + + # Plot the clustered points + plt.figure(figsize=(12, 8)) + plt.scatter(coords[:, 0], coords[:, 1], c=colors, alpha=0.7, edgecolor='k', linewidth=0.2) + + # Legend for colored labels (skip "None") + handles = [plt.Line2D([0], [0], marker='o', color='w', label=label, + markerfacecolor=color, markersize=8) + for label, color in label_to_color.items() if label != "None"] + + plt.legend(handles=handles, title="Movie Mentions", bbox_to_anchor=(1.05, 1), loc='upper left') + plt.title("Clustering of r/marvelstudios Post Titles (Color-Coded by Movie Mention)") + plt.xlabel("MDS Dimension 1") + plt.ylabel("MDS Dimension 2") + plt.grid(True) + plt.tight_layout() + plt.show() + + +def main(): + """ + Main section compiled with the aid of ChatGPT + """ + movie_keywords = [ #Generated by ChatGPT + "endgame", "infinity war", "iron man", "black panther", "captain marvel", + "ant-man", "quantumania", "no way home", "multiverse of madness", + "shang-chi", "eternals", "thor", "love and thunder", "wakanda forever", + "guardians", "avengers", "deadpool", "spider-man", "loki", "wandavision", + "daredevil", "thunderbolts", "secret invasion", "kang", "doomsday" + ] + + print("Fetching Reddit post titles") + titles = fetch_titles() + + print("\nTop Marvel mentions in r/marvelstudios this month:\n") + mentions = analyze_mentions(titles, movie_keywords) + for movie, count in mentions.most_common(): + print(f"{movie.title()}: {count}") #Listing aided by ChatGPT + + print("\nTop individual non-stop words in post titles:\n") + word_freqs = get_word_frequencies(titles) + for word, count in word_freqs.most_common(15): + print(f"{word}: {count}") #Listing aided by ChatGPT + + print("\nAnalyzing sentiment of post titles") + analyze_sentiments(titles) + + print("\nClustering post titles (color-coded by movie mentions)\n") + cluster_titles(titles, movie_keywords) + + +if __name__ == "__main__": + main() + +#Overall structure and debugging done using the help of ChatGPT \ No newline at end of file From 8675a98632651fba8a63294aca8f90526bcd2598 Mon Sep 17 00:00:00 2001 From: Jason Park Date: Sat, 5 Apr 2025 20:25:25 -0400 Subject: [PATCH 2/3] Edited readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4d7567c..39173a8 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,6 @@ The script is organized around a main workflow defined in reddit.py, broken into ChatGPT was used to assist with the cosine similarity and dimensionality reduction logic, integration of sentiment analysis, code structure and modularization, and documentation. These parts were more complex, and GenAI assistance helped accelerate development and clarify implementation decisions. From the results, Daredevil was the most mentioned topic (77), followed by Avengers (49), Doomsday (48), Thunderbolts (33), and Spider-Man (29). Other frequently discussed titles included Endgame, Iron Man, Loki, Black Panther, and Thor. The most common non-stop words were "daredevil" (75), "mcu" (72), "born" (60), "new" (54), "avengers" (49), "marvel" (49), "doomsday" (46), and "spiderman" (30), among others. These suggest a blend of excitement for character returns and broader MCU narratives. Sentiment analysis showed that 45.0% of titles were positive, 30.6% neutral, and 24.4% negative. The clustering visualization revealed that mentions of Daredevil, Thunderbolts, and Doomsday were fairly distinct and tightly grouped, indicating a more focused discussion. Meanwhile, Spider-Man and Avengers related posts were more spread out, suggesting varied conversation contexts. A cluster of gray (non-movie-specific) posts highlighted the general discussions and speculation happening within the community. -!(./Figure_1.png) +![Clustering of Marvel Post Titles](./Figure_1.png) Overall, the project went smoothly. The Reddit API was reliable, and modular code made the script easier to manage. ChatGPT significantly sped up the development of clustering and sentiment analysis, especially where I encountered difficulties with cosine similarity, vectorization, and plot generation using MDS. I also relied on ChatGPT to help structure the entire script, from separating functions, implementing environment-based credential loading, and making the script run from a single main() entry point. Some challenges included balancing keyword matching to avoid undercounting or overcounting and interpreting MDS projections. Through this project, I improved my understanding of text vectorization, sentiment analysis, and visualization techniques. The process reinforced how GenAI tools can support complex tasks while still requiring thoughtful oversight. From fad9f0cd10cc29addc36b925aa6c702c8d16161a Mon Sep 17 00:00:00 2001 From: Jason Park Date: Sat, 5 Apr 2025 20:25:53 -0400 Subject: [PATCH 3/3] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 39173a8..b60a2e1 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,13 @@ This project explores text data from the subreddit r/marvelstudios to find which Marvel movies are currently generating the most discussion. Using Python and different text analysis techniques, I worked to analyze post titles for mention frequencies of popular Marvel movies, commonly used non-stop words, overall community sentiment, and clustering patterns of the content. The goal was to gain insights into what Marvel content is trending and how fans are reacting to it. + The script is organized around a main workflow defined in reddit.py, broken into components that include data collection, keyword frequency analysis, word frequency analysis, sentiment analysis, and clustering. Reddit post titles were collected using the praw API from the details from the .env file. A list of Marvel-related keywords generated by ChatGPT were compared against titles to count movie mentions. Non-stop words were extracted using NLTK and analyzed with Python's counter. VADER sentiment scoring from NLTK was used to classify post tone as positive, neutral, or negative. Cosine similarity between post vectors was computed, reduced using MDS, and plotted with matplotlib where each point was color-coded by Marvel movie mentions. + ChatGPT was used to assist with the cosine similarity and dimensionality reduction logic, integration of sentiment analysis, code structure and modularization, and documentation. These parts were more complex, and GenAI assistance helped accelerate development and clarify implementation decisions. + From the results, Daredevil was the most mentioned topic (77), followed by Avengers (49), Doomsday (48), Thunderbolts (33), and Spider-Man (29). Other frequently discussed titles included Endgame, Iron Man, Loki, Black Panther, and Thor. The most common non-stop words were "daredevil" (75), "mcu" (72), "born" (60), "new" (54), "avengers" (49), "marvel" (49), "doomsday" (46), and "spiderman" (30), among others. These suggest a blend of excitement for character returns and broader MCU narratives. Sentiment analysis showed that 45.0% of titles were positive, 30.6% neutral, and 24.4% negative. + The clustering visualization revealed that mentions of Daredevil, Thunderbolts, and Doomsday were fairly distinct and tightly grouped, indicating a more focused discussion. Meanwhile, Spider-Man and Avengers related posts were more spread out, suggesting varied conversation contexts. A cluster of gray (non-movie-specific) posts highlighted the general discussions and speculation happening within the community. ![Clustering of Marvel Post Titles](./Figure_1.png) + Overall, the project went smoothly. The Reddit API was reliable, and modular code made the script easier to manage. ChatGPT significantly sped up the development of clustering and sentiment analysis, especially where I encountered difficulties with cosine similarity, vectorization, and plot generation using MDS. I also relied on ChatGPT to help structure the entire script, from separating functions, implementing environment-based credential loading, and making the script run from a single main() entry point. Some challenges included balancing keyword matching to avoid undercounting or overcounting and interpreting MDS projections. Through this project, I improved my understanding of text vectorization, sentiment analysis, and visualization techniques. The process reinforced how GenAI tools can support complex tasks while still requiring thoughtful oversight.