From 70baaeb4e78d12c329a03e929fd30d41730ed2b1 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Sun, 28 Aug 2022 05:39:44 +0200 Subject: Moved statis assets and converted all CSS to Tailwind --- .../sentiment-analysis/sentiment-analysis.ipynb | 170 +++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 static/assets/sentiment-analysis/sentiment-analysis.ipynb (limited to 'static/assets/sentiment-analysis/sentiment-analysis.ipynb') diff --git a/static/assets/sentiment-analysis/sentiment-analysis.ipynb b/static/assets/sentiment-analysis/sentiment-analysis.ipynb new file mode 100644 index 0000000..2c0934c --- /dev/null +++ b/static/assets/sentiment-analysis/sentiment-analysis.ipynb @@ -0,0 +1,170 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Sentiment analysis of Guardian World News articles" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get articles from a website" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Install rss parser dependency" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip3 install feedparser" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Parsing RSS feed for world news" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import feedparser\n", + "feed_url = \"https://www.theguardian.com/world/rss\"\n", + "feed = feedparser.parse(feed_url)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "for item in feed.entries:\n", + " # sanitize html\n", + " item.description = re.sub('<[^<]+?>', '', item.description)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Install Vader Sentiment library and perform sentiment analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip3 install vaderSentiment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer\n", + "analyser = SentimentIntensityAnalyzer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sentiment_results = []\n", + "for item in feed.entries:\n", + " sentiment_title = analyser.polarity_scores(item.title)\n", + " sentiment_description = analyser.polarity_scores(item.description)\n", + " sentiment_results.append([sentiment_title['compound'], sentiment_description['compound']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Install Matplotlib and visualize compound score" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip3 install matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (15, 3)\n", + "plt.plot(sentiment_results, drawstyle='steps')\n", + "plt.title('Sentiment analysis relationship between title and description (Guardian World News)')\n", + "plt.legend(['title', 'description'])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- cgit v1.2.3