{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "import numpy as np \n", "import pandas as pd \n", "import simple_twitter_learning as stl\n", "import re\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* download data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dataset already downloaded\n" ] } ], "source": [ "%%bash\n", "\n", "if [ ! -e 'dataset_sentiment.csv' ]\n", "then\n", " echo \"downloading dataset\"\n", " wget https://raw.githubusercontent.com/SmartDataAnalytics/MA-INF-4222-NLP-Lab/master/2018_SoSe/exercises/dataset_sentiment.csv\n", "else\n", " echo \"dataset already downloaded\"\n", "fi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* plot function:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "def sentiment_score(s):\n", " #(pos, neg, neu)^T\n", " return s[0] - s[1]\n", "\n", "def plot_sentiment_space(predicted_sentiment_vectors_list, top_sentiments, top_emojis, style=['bo']):\n", " # sentiment score axis\n", " top_X = np.array([sentiment_score(x) for x in top_sentiments])\n", " \n", "\n", " # neutral axis:\n", " top_Y = np.array([x[2] for x in top_sentiments])\n", " \n", "\n", " fig_1, ax_1 = plt.subplots(figsize=(15,10))\n", " plt.title(\"sentiment-score-plot\")\n", " plt.xlabel(\"sentiment score\")\n", " plt.ylabel(\"neutrality\")\n", " plt.xlim([-1,1])\n", " plt.ylim([0,1])\n", " for i in range(len(top_X)):\n", " plt.text(top_X[i], top_Y[i], top_emojis[i])\n", " for i in range(len(predicted_sentiment_vectors_list)):\n", " pred_X = np.array([sentiment_score(x) for x in predicted_sentiment_vectors_list[i]])\n", " pred_Y = np.array([x[2] for x in predicted_sentiment_vectors_list[i]])\n", " plt.plot(pred_X, pred_Y, style[i], alpha=0.5)\n", " #plt.savefig(\"val-error_sentiment-plot\" + str(datetime.datetime.now()) + \".png\", bbox_inches='tight')\n", "\n", " # sentiment score axis\n", " top_X = np.array([x[0] for x in top_sentiments])\n", " \n", "\n", " # neutral axis:\n", " top_Y = np.array([x[1] for x in top_sentiments])\n", " \n", "\n", " fig_2, ax_2 = plt.subplots(figsize=(15,10))\n", " plt.title(\"positive-negative-plot\")\n", " plt.xlabel(\"positive\")\n", " plt.ylabel(\"negative\")\n", " plt.xlim([0,1])\n", " plt.ylim([0,1])\n", " for i in range(len(top_X)):\n", " plt.text(top_X[i], top_Y[i], top_emojis[i])\n", " for i in range(len(predicted_sentiment_vectors_list)):\n", " pred_X = np.array([x[0] for x in predicted_sentiment_vectors_list[i]])\n", " pred_Y = np.array([x[1] for x in predicted_sentiment_vectors_list[i]])\n", " plt.plot(pred_X, pred_Y, style[i], alpha=0.5)\n", " #'plt.savefig(\"val-error_positive-negative-plot\" + str(datetime.datetime.now()) + \".png\", bbox_inches='tight')\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* read data:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('dataset_sentiment.csv')\n", "df = df[['text','sentiment']]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | text | \n", "sentiment | \n", "
---|---|---|
0 | \n", "nancyleegrahn how did everyone feel about th... | \n", "Neutral | \n", "
1 | \n", "scottwalker didnt catch the full gopdebate l... | \n", "Positive | \n", "
2 | \n", "tjmshow no mention of tamir rice and the gop... | \n", "Neutral | \n", "
3 | \n", "robgeorge that carly fiorina is trending ho... | \n", "Positive | \n", "
4 | \n", "danscavino gopdebate w realdonaldtrump deliv... | \n", "Positive | \n", "