From 4f3fdf6b1bc2c55d300541741662be0de41dad3d Mon Sep 17 00:00:00 2001 From: dthoanhust204974 Date: Sat, 5 Aug 2023 14:57:20 +0700 Subject: [PATCH 1/7] Logistic Regression --- .../Week 1/Learn.ipynb | 458 ++++++++++++++++++ 1 file changed, 458 insertions(+) create mode 100644 Natural Language Processing with Classification and Vector Spaces/Week 1/Learn.ipynb diff --git a/Natural Language Processing with Classification and Vector Spaces/Week 1/Learn.ipynb b/Natural Language Processing with Classification and Vector Spaces/Week 1/Learn.ipynb new file mode 100644 index 0000000..efff43b --- /dev/null +++ b/Natural Language Processing with Classification and Vector Spaces/Week 1/Learn.ipynb @@ -0,0 +1,458 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# run this cell to import nltk\n", + "import nltk\n", + "from os import getcwd" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package twitter_samples to C:\\Users\\Dao Trong\n", + "[nltk_data] Hoan\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package twitter_samples is already up-to-date!\n", + "[nltk_data] Downloading package stopwords to C:\\Users\\Dao Trong\n", + "[nltk_data] Hoan\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nltk.download('twitter_samples')\n", + "nltk.download('stopwords')" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# add folder, tmp2, from our local workspace containing pre-downloaded corpora files to nltk's data path\n", + "# this enables importing of these files without downloading it again when we refresh our workspace\n", + "\n", + "filePath = f\"{getcwd()}/../tmp2/\"\n", + "nltk.data.path.append(filePath)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from nltk.corpus import twitter_samples \n", + "\n", + "from utils import process_tweet, build_freqs" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# select the set of positive and negative tweets\n", + "all_positive_tweets = twitter_samples.strings('positive_tweets.json')\n", + "all_negative_tweets = twitter_samples.strings('negative_tweets.json')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# split the data into two pieces, one for training and one for testing (validation set) \n", + "test_pos = all_positive_tweets[4000:]\n", + "train_pos = all_positive_tweets[:4000]\n", + "test_neg = all_negative_tweets[4000:]\n", + "train_neg = all_negative_tweets[:4000]\n", + "\n", + "train_x = train_pos + train_neg \n", + "test_x = test_pos + test_neg" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "train_y = np.append(np.ones((len(train_pos), 1)),\n", + " np.zeros((len(train_neg), 1)), axis=0)\n", + "test_y = np.append(np.ones((len(test_pos), 1)),\n", + " np.zeros((len(test_neg), 1)), axis=0)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "train_y.shape = (8000, 1)\n", + "test_y.shape = (2000, 1)\n" + ] + } + ], + "source": [ + "# Print the shape train and test sets\n", + "print(\"train_y.shape = \" + str(train_y.shape))\n", + "print(\"test_y.shape = \" + str(test_y.shape))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "type(freqs) = \n", + "len(freqs) = 11337\n" + ] + } + ], + "source": [ + "freqs = build_freqs(train_x, train_y)\n", + "print(\"type(freqs) = \" + str(type(freqs)))\n", + "print(\"len(freqs) = \" + str(len(freqs.keys())))" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " h = 1/(1+np.exp(-z))\n", + " return h" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def gradientDescent(x, y, theta, alpha, num_iters):\n", + " '''\n", + " Input:\n", + " x: matrix of features which is (m,n+1)\n", + " y: corresponding labels of the input matrix x, dimensions (m,1)\n", + " theta: weight vector of dimension (n+1,1)\n", + " alpha: learning rate\n", + " num_iters: number of iterations you want to train your model for\n", + " Output:\n", + " J: the final cost\n", + " theta: your final weight vector\n", + " Hint: you might want to print the cost to make sure that it is going down.\n", + " '''\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " # get 'm', the number of rows in matrix x\n", + " m = num_iters\n", + "\n", + " for i in range(0, num_iters):\n", + "\n", + " # get z, the dot product of x and theta\n", + " z = np.dot(x, theta)\n", + "\n", + " # get the sigmoid of z\n", + " h = sigmoid(z)\n", + "\n", + " # calculate the cost function\n", + " J = -1/m*(np.dot(y.T, np.log(h)) + np.dot((1-y).T, np.log(1-h)))\n", + "\n", + " # update the weights theta\n", + " theta = theta - (alpha/m)*np.dot(x.T, (h-y))\n", + "\n", + " ### END CODE HERE ###\n", + " J = float(J)\n", + " return J, theta\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The cost after training is 0.00988918.\n", + "The resulting vector of weights is [1e-08, 7.57e-06, 5.77e-06]\n" + ] + } + ], + "source": [ + "# Check the function\n", + "# Construct a synthetic test case using numpy PRNG functions\n", + "np.random.seed(1)\n", + "# X input is 10 x 3 with ones for the bias terms\n", + "tmp_X = np.append(np.ones((10, 1)), np.random.rand(10, 2) * 2000, axis=1)\n", + "# Y Labels are 10 x 1\n", + "tmp_Y = (np.random.rand(10, 1) > 0.35).astype(float)\n", + "\n", + "# Apply gradient descent\n", + "tmp_J, tmp_theta = gradientDescent(tmp_X, tmp_Y, np.zeros((3, 1)), 1e-8, 700)\n", + "print(f\"The cost after training is {tmp_J:.8f}.\")\n", + "print(f\"The resulting vector of weights is {[round(t, 8) for t in np.squeeze(tmp_theta)]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def extract_features(tweet, freqs):\n", + " '''\n", + " Input: \n", + " tweet: a list of words for one tweet\n", + " freqs: a dictionary corresponding to the frequencies of each tuple (word, label)\n", + " Output: \n", + " x: a feature vector of dimension (1,3)\n", + " '''\n", + " # process_tweet tokenizes, stems, and removes stopwords\n", + " word_l = process_tweet(tweet)\n", + "\n", + " # 3 elements in the form of a 1 x 3 vector\n", + " x = np.zeros((1, 3))\n", + "\n", + " # bias term is set to 1\n", + " x[0, 0] = 1\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " # loop through each word in the list of words\n", + " for word in word_l:\n", + " # increment the word count for the positive label 1\n", + " x[0, 1] += freqs.get((word, 1), 0)\n", + " # increment the word count for the negative label 0\n", + " x[0, 2] += freqs.get((word, 0), 0)\n", + "\n", + " ### END CODE HERE ###\n", + " assert (x.shape == (1, 3))\n", + " return x\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1.00e+00 3.02e+03 6.10e+01]]\n" + ] + } + ], + "source": [ + "# Check your function\n", + "\n", + "# test 1\n", + "# test on training data\n", + "tmp1 = extract_features(train_x[0], freqs)\n", + "print(tmp1)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The cost after training is 0.65378165.\n", + "The resulting vector of weights is [3.3e-07, 0.00118041, -0.00103136]\n" + ] + } + ], + "source": [ + "X = np.zeros((len(train_x), 3))\n", + "for i in range(len(train_x)):\n", + " X[i] = extract_features(train_x[i], freqs)\n", + "Y = train_y\n", + "\n", + "# Apply gradient descent\n", + "J, theta = gradientDescent(X, Y, np.zeros((3, 1)), 1e-9, 1500)\n", + "print(f\"The cost after training is {J:.8f}.\")\n", + "print(f\"The resulting vector of weights is {[round(t, 8) for t in np.squeeze(theta)]}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C4 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def predict_tweet(tweet, freqs, theta):\n", + " '''\n", + " Input: \n", + " tweet: a string\n", + " freqs: a dictionary corresponding to the frequencies of each tuple (word, label)\n", + " theta: (3,1) vector of weights\n", + " Output: \n", + " y_pred: the probability of a tweet being positive or negative\n", + " '''\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " \n", + " # extract the features of the tweet and store it into x\n", + " x = extract_features(tweet,freqs)\n", + " \n", + " # make the prediction using x and theta\n", + " y_pred = sigmoid(np.dot(x, theta))\n", + " \n", + " ### END CODE HERE ###\n", + " \n", + " return y_pred" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "I am sad -> 0.475711\n", + "I am bad -> 0.490209\n", + "this movie should have been great. -> 0.536246\n", + "great -> 0.535616\n", + "great great -> 0.570872\n", + "great great great -> 0.605424\n", + "great great great great -> 0.638953\n" + ] + } + ], + "source": [ + "# Run this cell to test your function\n", + "for tweet in ['I am', 'I am bad', 'this movie should have been great.', 'great', 'great great', 'great great great', 'great great great great']:\n", + " print( '%s -> %f' % (tweet, predict_tweet(tweet, freqs, theta)))" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C5 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def test_logistic_regression(test_x, test_y, freqs, theta):\n", + " \"\"\"\n", + " Input: \n", + " test_x: a list of tweets\n", + " test_y: (m, 1) vector with the corresponding labels for the list of tweets\n", + " freqs: a dictionary with the frequency of each pair (or tuple)\n", + " theta: weight vector of dimension (3, 1)\n", + " Output: \n", + " accuracy: (# of tweets classified correctly) / (total # of tweets)\n", + " \"\"\"\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + "\n", + " # the list for storing predictions\n", + " y_hat = []\n", + "\n", + " for tweet in test_x:\n", + " # get the label prediction for the tweet\n", + " y_pred = predict_tweet(tweet, freqs, theta)\n", + "\n", + " if y_pred > 0.5:\n", + " # append 1.0 to the list\n", + " y_hat.append(1)\n", + " else:\n", + " # append 0 to the list\n", + " y_hat.append(0)\n", + "\n", + " # With the above implementation, y_hat is a list, but test_y is (m,1) array\n", + " # convert both to one-dimensional arrays in order to compare them using the '==' operator\n", + " accuracy = (y_hat == np.squeeze(test_y)).sum()/len(test_y)\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return accuracy\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Logistic regression model's accuracy = 0.9950\n" + ] + } + ], + "source": [ + "tmp_accuracy = test_logistic_regression(test_x, test_y, freqs, theta)\n", + "print(f\"Logistic regression model's accuracy = {tmp_accuracy:.4f}\")" + ] + } + ], + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From cc2bd135cfd3e85965f4cfed6c3dab889a4dd0f4 Mon Sep 17 00:00:00 2001 From: dthoanhust204974 Date: Sun, 6 Aug 2023 23:54:24 +0700 Subject: [PATCH 2/7] Naive Bayes --- .../Week 2/Learn.ipynb | 611 ++++++++++++++++++ 1 file changed, 611 insertions(+) create mode 100644 Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb diff --git a/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb b/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb new file mode 100644 index 0000000..7ffa7c6 --- /dev/null +++ b/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb @@ -0,0 +1,611 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from utils import process_tweet, lookup\n", + "import pdb\n", + "from nltk.corpus import stopwords, twitter_samples\n", + "import numpy as np\n", + "import pandas as pd\n", + "import nltk\n", + "import string\n", + "from nltk.tokenize import TweetTokenizer\n", + "from os import getcwd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# add folder, tmp2, from our local workspace containing pre-downloaded corpora files to nltk's data path\n", + "filePath = f\"{getcwd()}/../tmp2/\"\n", + "nltk.data.path.append(filePath)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "# get the sets of positive and negative tweets\n", + "all_positive_tweets = twitter_samples.strings('positive_tweets.json')\n", + "all_negative_tweets = twitter_samples.strings('negative_tweets.json')\n", + "\n", + "# split the data into two pieces, one for training and one for testing (validation set)\n", + "test_pos = all_positive_tweets[4000:]\n", + "train_pos = all_positive_tweets[:4000]\n", + "test_neg = all_negative_tweets[4000:]\n", + "train_neg = all_negative_tweets[:4000]\n", + "\n", + "train_x = train_pos + train_neg\n", + "test_x = test_pos + test_neg\n", + "\n", + "# avoid assumptions about the length of all_positive_tweets\n", + "train_y = np.append(np.ones(len(train_pos)), np.zeros(len(train_neg)))\n", + "test_y = np.append(np.ones(len(test_pos)), np.zeros(len(test_neg)))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def count_tweets(result, tweets, ys):\n", + " '''\n", + " Input:\n", + " result: a dictionary that will be used to map each pair to its frequency\n", + " tweets: a list of tweets\n", + " ys: a list corresponding to the sentiment of each tweet (either 0 or 1)\n", + " Output:\n", + " result: a dictionary mapping each pair to its frequency\n", + " '''\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " for y, tweet in zip(ys, tweets):\n", + " for word in process_tweet(tweet):\n", + " # define the key, which is the word and label tuple\n", + " pair = (word,y)\n", + "\n", + " # if the key exists in the dictionary, increment the count\n", + " if pair in result:\n", + " result[pair] += 1\n", + "\n", + " # else, if the key is new, add it to the dictionary and set the count to 1\n", + " else:\n", + " result[pair] = 1\n", + " ### END CODE HERE ###\n", + "\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{('happi', 1): 1, ('trick', 0): 1, ('sad', 0): 1, ('tire', 0): 2}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Testing your function\n", + "\n", + "\n", + "result = {}\n", + "tweets = ['i am happy', 'i am tricked', 'i am sad', 'i am tired', 'i am tired']\n", + "ys = [1, 0, 0, 0, 0]\n", + "count_tweets(result, tweets, ys)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "freqs = count_tweets({}, train_x, train_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def train_naive_bayes(freqs, train_x, train_y):\n", + " '''\n", + " Input:\n", + " freqs: dictionary from (word, label) to how often the word appears\n", + " train_x: a list of tweets\n", + " train_y: a list of labels correponding to the tweets (0,1)\n", + " Output:\n", + " logprior: the log prior. (equation 3 above)\n", + " loglikelihood: the log likelihood of you Naive bayes equation. (equation 6 above)\n", + " '''\n", + " loglikelihood = {}\n", + " logprior = 0\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + "\n", + " # calculate V, the number of unique words in the vocabulary\n", + " vocab = set([pair[0] for pair in freqs.keys()])\n", + " V = len(vocab)\n", + "\n", + " # calculate N_pos and N_neg\n", + " N_pos = N_neg = 0\n", + " for pair in freqs.keys():\n", + " # if the label is positive (greater than zero)\n", + " if pair[1] > 0:\n", + "\n", + " # Increment the number of positive words by the count for this (word, label) pair\n", + " N_pos += freqs[pair]\n", + "\n", + " # else, the label is negative\n", + " else:\n", + "\n", + " # increment the number of negative words by the count for this (word,label) pair\n", + " N_neg += freqs[pair]\n", + " # Calculate D, the number of documents\n", + " D = len(train_y)\n", + "\n", + " # Calculate D_pos, the number of positive documents (*hint: use sum())\n", + " D_pos = (len(list(filter(lambda x: x > 0, train_y))))\n", + "\n", + " # Calculate D_neg, the number of negative documents (*hint: compute using D and D_pos)\n", + " D_neg = (len(list(filter(lambda x: x <= 0, train_y))))\n", + "\n", + " # Calculate logprior\n", + " logprior = np.log(D_pos)-np.log(D_neg)\n", + "\n", + " # For each word in the vocabulary...\n", + " for word in vocab:\n", + " # get the positive and negative frequency of the word\n", + " freq_pos = lookup(freqs, word, 1)\n", + " freq_neg = lookup(freqs, word, 0)\n", + "\n", + " # calculate the probability that each word is positive, and negative\n", + " p_w_pos = (freq_pos+1)/(N_pos+V)\n", + " p_w_neg = (freq_neg+1)/(N_neg+V)\n", + "\n", + " # calculate the log likelihood of the word\n", + " loglikelihood[word] = np.log(p_w_pos/p_w_neg)\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return logprior, loglikelihood\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n", + "9085\n" + ] + } + ], + "source": [ + "# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# You do not have to input any code in this cell, but it is relevant to grading, so please do not change anything\n", + "logprior, loglikelihood = train_naive_bayes(freqs, train_x, train_y)\n", + "print(logprior)\n", + "print(len(loglikelihood))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C4 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def naive_bayes_predict(tweet, logprior, loglikelihood):\n", + " '''\n", + " Input:\n", + " tweet: a string\n", + " logprior: a number\n", + " loglikelihood: a dictionary of words mapping to numbers\n", + " Output:\n", + " p: the sum of all the logliklihoods of each word in the tweet (if found in the dictionary) + logprior (a number)\n", + "\n", + " '''\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " # process the tweet to get a list of words\n", + " word_l = process_tweet(tweet)\n", + "\n", + " # initialize probability to zero\n", + " p = 0\n", + "\n", + " # add the logprior\n", + " p += logprior\n", + "\n", + " for word in word_l:\n", + "\n", + " # check if the word exists in the loglikelihood dictionary\n", + " if word in loglikelihood:\n", + " # add the log likelihood of that word to the probability\n", + " p += loglikelihood[word]\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The expected output is 1.5737244858565678\n" + ] + } + ], + "source": [ + "# UNQ_C5 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# You do not have to input any code in this cell, but it is relevant to grading, so please do not change anything\n", + "\n", + "# Experiment with your own tweet.\n", + "my_tweet = 'She smiled.'\n", + "p = naive_bayes_predict(my_tweet, logprior, loglikelihood)\n", + "print('The expected output is', p)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C6 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def test_naive_bayes(test_x, test_y, logprior, loglikelihood):\n", + " \"\"\"\n", + " Input:\n", + " test_x: A list of tweets\n", + " test_y: the corresponding labels for the list of tweets\n", + " logprior: the logprior\n", + " loglikelihood: a dictionary with the loglikelihoods for each word\n", + " Output:\n", + " accuracy: (# of tweets classified correctly)/(total # of tweets)\n", + " \"\"\"\n", + " accuracy = 0 # return this properly\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " y_hats = []\n", + " for tweet in test_x:\n", + " # if the prediction is > 0\n", + " if naive_bayes_predict(tweet, logprior, loglikelihood) > 0:\n", + " # the predicted class is 1\n", + " y_hat_i = 1\n", + " else:\n", + " # otherwise the predicted class is 0\n", + " y_hat_i = 0\n", + "\n", + " # append the predicted class to the list y_hats\n", + " y_hats.append(y_hat_i)\n", + "\n", + " # error is the average of the absolute values of the differences between y_hats and test_y\n", + " accuracy = (y_hats == np.squeeze(test_y)).sum()/len(test_y)\n", + " error = error = np.mean(np.absolute(y_hats-test_y))\n", + "\n", + " # Accuracy is 1 minus the error\n", + " # accuracy = 1-error\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return accuracy\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Naive Bayes accuracy = 0.9940\n" + ] + } + ], + "source": [ + "print(\"Naive Bayes accuracy = %0.4f\" %\n", + " (test_naive_bayes(test_x, test_y, logprior, loglikelihood)))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C8 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def get_ratio(freqs, word):\n", + " '''\n", + " Input:\n", + " freqs: dictionary containing the words\n", + " word: string to lookup\n", + "\n", + " Output: a dictionary with keys 'positive', 'negative', and 'ratio'.\n", + " Example: {'positive': 10, 'negative': 20, 'ratio': 0.5}\n", + " '''\n", + " pos_neg_ratio = {'positive': 0, 'negative': 0, 'ratio': 0.0}\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " # use lookup() to find positive counts for the word (denoted by the integer 1)\n", + " pos_neg_ratio['positive'] = lookup(freqs, word, 1)\n", + "\n", + " # use lookup() to find negative counts for the word (denoted by integer 0)\n", + " pos_neg_ratio['negative'] = lookup(freqs, word, 0)\n", + "\n", + " # calculate the ratio of positive to negative counts for the word\n", + " pos_neg_ratio['ratio'] = (\n", + " pos_neg_ratio['positive'] + 1)/(pos_neg_ratio['negative'] + 1)\n", + " ### END CODE HERE ###\n", + " return pos_neg_ratio\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'positive': 5, 'negative': 100, 'ratio': 0.0594059405940594}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_ratio(freqs, 'sad')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C9 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def get_words_by_threshold(freqs, label, threshold):\n", + " '''\n", + " Input:\n", + " freqs: dictionary of words\n", + " label: 1 for positive, 0 for negative\n", + " threshold: ratio that will be used as the cutoff for including a word in the returned dictionary\n", + " Output:\n", + " word_set: dictionary containing the word and information on its positive count, negative count, and ratio of positive to negative counts.\n", + " example of a key value pair:\n", + " {'happi':\n", + " {'positive': 10, 'negative': 20, 'ratio': 0.5}\n", + " }\n", + " '''\n", + " word_list = {}\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " for key in freqs.keys():\n", + " word, _ = key\n", + "\n", + " # get the positive/negative ratio for a word\n", + " pos_neg_ratio = get_ratio(freqs, word)\n", + "\n", + " # if the label is 1 and the ratio is greater than or equal to the threshold...\n", + " if label == 1 and pos_neg_ratio['ratio'] >= threshold:\n", + "\n", + " # Add the pos_neg_ratio to the dictionary\n", + " word_list[word] = pos_neg_ratio\n", + "\n", + " # If the label is 0 and the pos_neg_ratio is less than or equal to the threshold...\n", + " elif label == 0 and pos_neg_ratio['ratio'] <= threshold:\n", + "\n", + " # Add the pos_neg_ratio to the dictionary\n", + " word_list[word] = pos_neg_ratio\n", + " # otherwise, do not include this word in the list (do nothing)\n", + "\n", + " ### END CODE HERE ###\n", + " return word_list\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{':(': {'positive': 1, 'negative': 3663, 'ratio': 0.0005458515283842794},\n", + " ':-(': {'positive': 0, 'negative': 378, 'ratio': 0.002638522427440633},\n", + " 'zayniscomingbackonjuli': {'positive': 0, 'negative': 19, 'ratio': 0.05},\n", + " '26': {'positive': 0, 'negative': 20, 'ratio': 0.047619047619047616},\n", + " '>:(': {'positive': 0, 'negative': 43, 'ratio': 0.022727272727272728},\n", + " 'lost': {'positive': 0, 'negative': 19, 'ratio': 0.05},\n", + " '♛': {'positive': 0, 'negative': 210, 'ratio': 0.004739336492890996},\n", + " '》': {'positive': 0, 'negative': 210, 'ratio': 0.004739336492890996},\n", + " 'beli̇ev': {'positive': 0, 'negative': 35, 'ratio': 0.027777777777777776},\n", + " 'wi̇ll': {'positive': 0, 'negative': 35, 'ratio': 0.027777777777777776},\n", + " 'justi̇n': {'positive': 0, 'negative': 35, 'ratio': 0.027777777777777776},\n", + " 'see': {'positive': 0, 'negative': 35, 'ratio': 0.027777777777777776},\n", + " 'me': {'positive': 0, 'negative': 35, 'ratio': 0.027777777777777776}}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test your function: find negative words at or below a threshold\n", + "get_words_by_threshold(freqs, label=0, threshold=0.05)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'followfriday': {'positive': 23, 'negative': 0, 'ratio': 24.0},\n", + " 'commun': {'positive': 27, 'negative': 1, 'ratio': 14.0},\n", + " ':)': {'positive': 2847, 'negative': 2, 'ratio': 949.3333333333334},\n", + " 'flipkartfashionfriday': {'positive': 16, 'negative': 0, 'ratio': 17.0},\n", + " ':d': {'positive': 498, 'negative': 0, 'ratio': 499.0},\n", + " ':p': {'positive': 104, 'negative': 0, 'ratio': 105.0},\n", + " 'influenc': {'positive': 16, 'negative': 0, 'ratio': 17.0},\n", + " ':-)': {'positive': 543, 'negative': 0, 'ratio': 544.0},\n", + " \"here'\": {'positive': 20, 'negative': 0, 'ratio': 21.0},\n", + " 'youth': {'positive': 14, 'negative': 0, 'ratio': 15.0},\n", + " 'bam': {'positive': 44, 'negative': 0, 'ratio': 45.0},\n", + " 'warsaw': {'positive': 44, 'negative': 0, 'ratio': 45.0},\n", + " 'shout': {'positive': 11, 'negative': 0, 'ratio': 12.0},\n", + " ';)': {'positive': 22, 'negative': 0, 'ratio': 23.0},\n", + " 'stat': {'positive': 51, 'negative': 0, 'ratio': 52.0},\n", + " 'arriv': {'positive': 57, 'negative': 4, 'ratio': 11.6},\n", + " 'via': {'positive': 60, 'negative': 1, 'ratio': 30.5},\n", + " 'glad': {'positive': 41, 'negative': 2, 'ratio': 14.0},\n", + " 'blog': {'positive': 27, 'negative': 0, 'ratio': 28.0},\n", + " 'fav': {'positive': 11, 'negative': 0, 'ratio': 12.0},\n", + " 'fback': {'positive': 26, 'negative': 0, 'ratio': 27.0},\n", + " 'pleasur': {'positive': 10, 'negative': 0, 'ratio': 11.0}}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test your function; find positive words at or above a threshold\n", + "get_words_by_threshold(freqs, label=1, threshold=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Truth Predicted Tweet\n", + "1\t0.00\tb''\n", + "1\t0.00\tb'truli later move know queen bee upward bound movingonup'\n", + "1\t0.00\tb'new report talk burn calori cold work harder warm feel better weather :p'\n", + "1\t0.00\tb'harri niall 94 harri born ik stupid wanna chang :d'\n", + "1\t0.00\tb''\n", + "1\t0.00\tb''\n", + "1\t0.00\tb'park get sunlight'\n", + "1\t0.00\tb'uff itna miss karhi thi ap :p'\n", + "0\t1.00\tb'hello info possibl interest jonatha close join beti :( great'\n", + "0\t1.00\tb'u prob fun david'\n", + "0\t1.00\tb'pat jay'\n", + "0\t1.00\tb'whatev stil l young >:-('\n" + ] + } + ], + "source": [ + "# Some error analysis done for you\n", + "print('Truth Predicted Tweet')\n", + "for x, y in zip(test_x, test_y):\n", + " y_hat = naive_bayes_predict(x, logprior, loglikelihood)\n", + " if y != (np.sign(y_hat) > 0):\n", + " print('%d\\t%0.2f\\t%s' % (y, np.sign(y_hat) > 0, ' '.join(\n", + " process_tweet(x)).encode('ascii', 'ignore')))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "9.009134475815145\n" + ] + } + ], + "source": [ + "# Test with your own tweet - feel free to modify `my_tweet`\n", + "my_tweet = 'I am happy :)'\n", + "\n", + "p = naive_bayes_predict(my_tweet, logprior, loglikelihood)\n", + "print(p)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['hopeless for tmr :(', \"Everything in the kids section of IKEA is so cute. Shame I'm nearly 19 in 2 months :(\", '@Hegelbon That heart sliding into the waste basket. :(', '“@ketchBurning: I hate Japanese call him \"bani\" :( :(”\\n\\nMe too', 'Dang starting next week I have \"work\" :(', \"oh god, my babies' faces :( https://t.co/9fcwGvaki0\", '@RileyMcDonough make me smile :((', '@f0ggstar @stuartthull work neighbour on motors. Asked why and he said hates the updates on search :( http://t.co/XvmTUikWln', 'why?:(\"@tahuodyy: sialan:( https://t.co/Hv1i0xcrL2\"', 'Athabasca glacier was there in #1948 :-( #athabasca #glacier #jasper #jaspernationalpark #alberta #explorealberta #… http://t.co/dZZdqmf7Cz', \"I have a really good m&g idea but I'm never going to meet them :(((\", '@Rampageinthebox mare ivan :(', '@SophiaMascardo happy trip, keep safe. see you soon :* :(', \"I'm so tired hahahah :(\", '@GrumpyCockney With knee replacements they get you up & about the same day. :-( Ouch.', 'relate to the \"sweet n\\' sour\" kind of \"bi-polar\" people in your life... cuz my life... is FULL of them... :(', '@aysegul_k pleasse :(', '@SexyKalamo im not sure tho :(', \"I feel stupid\\nI just can't seem to grasp the basics of digital painting and nothing I've been researching is helping any :(\", 'Good Lord. :( https://t.co/nC9LkYUUvO', 'I feel lonely someone talk to me guys and girls :(\\n\\n@TheOnlyRazzYT @imarieuda @EiroZPegasus @AMYSQUEE @UdotV', 'No Assignment, but we have Project. :( really? 😩', 'just want to play video games/watch movies with someone :(', 'choreographing is hard : (', \"@xo_raaaaayyy_xo what the email link? Still says that it's no longer available :( http://t.co/iuiaIOynnx\", 'cries bc i miss mingming so much :-(', 'Sorry :( https://t.co/Q5TAYjrQ8K', '@Giannivnni mom so far away :(', \"We're truly sorry @chrisbrown :( have a safe flight.\", 'and my friends :(', '@bbygjrlmgc oh :( i hate when that happens i get so sad over it too', 'Oh. Dog has pee’d in my @Kneewax bag. :-( So I can’t take it to #NewWine15', '@YM_Dish98 doushite :( ?', '@Charliescoco @reeceftcharliie @SimonCowell too late :(', 'It sucks so much been sick i was plan to start work on my first gundam to night but nope. :(', 'MY $$$$2 DOLLAR :( 😭😭😭😭😭😭 http://t.co/oI0pYGUsDi', \"@martylog Listening back to old @DaveGorman shows (I know, I'm weird). Just got to u leaving: might give up. It was pale imitation after :-(\", \"i went in the sea and now have a massive fucking rash all over my body and it's the most painful thing ever i want to go home :((\", '@dethronedlwt hi. Why are you absent? :(', \"My Gran tho !!! She knew but didn't care to tell me :((\", \"@rowysoIjp SAME IT'S SO CUTE I LOVE IT SO MUCH I WISH THERE WOULD BE A SEQUEL :(\", '@imallyssagail busy sa school :( next time love yah! xx', 'Ouucchhh one of my wisdom teeth are coming through :(', '@StevenLDN frightening case. It really gets to you :(', 'pret :(( wkwkw\"@WLK_Jhope: Verfied @WLK_Hyemi91 be active, don\\'t forget to follow all member. Thanks for join. Goodbye\"', 'You´ve got me in chains for your love :´( — a sentir-se incompleta', \"it's okay.. but.. :((\", \"@njhftbiebs why didn't you go on Wednesday :(\", '@radicalj Marvellous - not. How very thwarting :-(', \"@ceeels95 Awh what's the chances 😩 when u off to Zante? We need to do something :-( x\", \"@s0ulfl0wr When's your birthday ? :(\", '@brittleyouth @Tom_J_Allen @AndrewFairbairn @batemanesque @Hegelbon @jameswheeler that was the worst part and I still feel bad about it :(', 'audraesar: All these sushi pics on my tl are driving me craaaazzyy :(', 'Really want this :( http://t.co/36tSy81iMi', 'Popped like a helium balloon.. :-(', \"#ClimateChange #CC California's powerful and influential air pollution watchdog.: Califor... http://t.co/OVU4p2qWfH #UniteBlue #Tcot :-(\", '@itsNotMirna I was so sad because Elhaida was robbed by the juries :( she came 10th in the televoting', '#ClimateChange #CC Idaho will not restrict fishing despite regional drought-linked die-of... http://t.co/jJboDo6LYZ #UniteBlue #Tcot :-(', '#ClimateChange #CC Abrupt climate change may have doomed mammoths and other megafauna, sc... http://t.co/taVMCz37E7 #UniteBlue #Tcot :-(', \"#ClimateChange #CC Australia's 'dirtiest' power station considers 'clean energy' biomass ... http://t.co/YeQABq6tsL #UniteBlue #Tcot :-(\", \"#ClimateChange #CC It ain't easy being green if you're a golf course in California.: Ulti... http://t.co/La82RXzTs2 #UniteBlue #Tcot :-(\", '@Mess0019 Well I am sure your work day is over before mine :(', '@keikopotato IM GONNA MISS U SEXY PREXY :(((((((((', 'i miss my kindergarten kids :(', 'HUNGRY :-(', 'cant find the only book that keeps me sane :((', \"Literally there are three lounge events why :-( So much turn up I'm sad\", '@carliot23 Miss you Boss :(', 'I love hozier :-(', \"@IzzyTailford that's true, I just want it soooooooner :(\", 'Ahh Fam @MeekMill :( #RespectLost http://t.co/NT25MYnGYd', \"@shokako1104 I'm sorry :( ! What is hypercholesteloremia ? Are you ok ?\", 'Baby still looks tired :(', 'Can someone gift me calibraska :(', \"@Rico_Shabbir the massive shame about it is we would actually be genuine contenders but it won't happen :(\", 'My head always hurts if I stay up late lmao :(', '@ErnestLozoya how are u older than me :(', 'Backed out :(', 'u sound upset :( https://t.co/JZBFBKld8Q', 'So much misses :-( https://t.co/pn2HvGdnFT', 'I MISS INFINITE :-(', \"@DiscoQing AoS doesn't do it for me but I don't want to stick with 8th either. :(\", '@madrigalandreaa its too much serious yun eh :(', 'My room is way too hot :-(', 'I still havent found my Handsome Jack drawing :((((', '@twcxmina shit :(', 'But cut encore :(((( #bad4thwin', 'I wish I had my own Baymax :(', 'Sick :(', '@LittleMix French mixers miss you so much :( 💜', \"Wft.. can't watch the awesome replay!! :-( https://t.co/ChzrqtelPh\", '@Viiiiiiiiev what happened?? :(((', 'Party promotions are over :(', 'Music bank encore always so short :(', 'BABY BOY :((((', \"@flipkartsupport my order has been received at the hub nearest but doesn't look like it will be delivered today :( (1/2)\", 'Why is my mum playing music out loud :(', 'The finale of Parasyte fucked my feelings alllllll the way up :(', 'i wish :( #ZaynIsComingBackOnJuly26', 'Good bye Party era :(', '@amedefu Me too。。。_:(´ω`」 ∠):_', '@Concept_Nathan nathann💕 I never got a chance to take a pic with you :( got a hug tho! Pic next time I see you?😊', 'some girl came up to me and was like \"you are so beautiful :-(\" I want to dieididieieiei she\\'s so cute', 'Party goodbye stage :( but this means Hello to Lion Heart and You Think', \"@MsDanneh @Obey_Ervin15 Tell her to screw herself. I'm gonna have a netflix and chill on my own. Y u do dis ervin :(\", '@subharrie ohh no :(( and yeah i hope she comes back soon too', \"@MadniTahir I am. I've accepted the offer..but im desperate to take the year out. :(\", 'Come back :(', 'Snapchat me - AmargoLonnard #snapchat #snapchat #kikhorny #snapme #tagsforlikes #batalladelosgallos #webcamsex :( http://t.co/3S9LHaFrsU', 'UGH I CANT STREAM TMR I HAVE DUTY :(', \"@madrigalandreaa u've gone too far :(\", '@uhhAileeny What about her alien thing :(((', \"@Ni_All_Is_Bae aww I don't really wanna get my hopes up but I wish that he would :((\", '@malikm0ney sorka no :((', '@fxnno_ i knew u would be sad :( were having a funeral i was gonna text u but i have no phone', 'Sunny :( i feel so bad.... http://t.co/17tca0uhKp', 'So nonexistent wowza :(', \"@izgzb @aishahyussofff back off fah she's mine :-(\", '@DIMPLEDJAI taylor why did you crop yourself out :(((((((((((((((', '@nickjdrake Boo on both counts :-(', 'new guitar :(', '@PinkCloud_RP so when will i get my jonghyun hyung? :( please predict it :(', 'I hope SJ will be nominated soon but no SJ vs INFINITE pls :(((((', 'Yeah dudes, keep calm and brace yourselves :-( https://t.co/ZnOjT3v9Gq', '@Mr_FRML sir plus 4 please :((', 'THEY LOOKED SO SHOCK OMGGGG :((( YALL DESERVE IT :((((', 'Whenever I would spend the night we would smoke and watch a movie but he would always end up falling asleep on me :(', 'We were 1 point close to grand finals! :( whyyy', \"@muhammadskates :( that's a long time\", '@evanquick Oh, that must be so annoying Evan :( Do the texts give the option to opt out?', \"Who's doing giveaways for muster goods? :( or any merchs\", '@wendyykid ah too bad :(', \"People are looking at me funny because I'm drinking savanna with a straw :(\", 'Good bye stage :((((', '@ameliahartin AND WHY DID YOU IGNORE ME YESTER AFTERNOON :(', \"I can't sleep :( someone talk to me\", 'yeah :(', '@_Birexus yes sadly :(.', '@ClaireClaire05 Very :(', '@The_Strypes whens the album coming? :(', 'The last of my chocolate has been consumed. :(', 'ugh i have werk in the morning too :-(', '@Deedee_50Fly foreals :( a wesen uwesiti mj 😂😩', \"@crazynovely I will if I catch him online long enough - haha! He's being very annoying!! :(\", 'Bosen :(', 'Dying for some egg benny :(', '@Michael5SOS Sometimes I hate you :((', '@Mark23Baracael baby followback huhu :(', '@fkluca but no ones as cute as u so :(', \"@Tinkkza You're gonna watch this shit and understand how badly you scared me! >:( https://t.co/YcGudITQgx\", 'I miss Al, Katie, Zaz and Amy a lot :((', 'I liked a @YouTube video http://t.co/2JcBiswDW9 More subs plz :(', \"@LittleMix @SonyMusicNL Can u make a diary while you're all there please :((\", '@neikmat Sorry :(', \"@twyodor @gkjohn :-( I don't read most of these rehash websites that have mushroomed. A good piece may be by exception & reaches one anyway.\", '@daddyksoo and yes its been a while vicky omg :-(((((', '@megsyfoxie WTF LIKE YOUR LIPS STILL A VIRGIN OMG MOM GET A LIFE YOURE 45 \\n\\nHahah : (', '@pastelwolfxx @CHA_NNNNN niNASTY tsktsk oppa wont like u call his dick kawaii he is manly >:( http://t.co/83cUgt7qQ3', 'So Lonely :( http://t.co/VM4N0n8Bkw', \"can't go back to sleep :((\", 'i wanna go on xbox for netflix but am already too comfy in bed :(', '@baileymac02 miss youu :(', 'sigh i feel bad for our girls :(', '@oH_So_EhmTee lol! I love sweet potato fries :(', \"@_Birexus guess y'all ugly asf HUH :(\", '@Dsitando eish ive been quit i know...i lost my twitter mojo shame...n i dont know how to get it back :( mara im sure you can help me neh', \"aww i've got a fever :( but #bad4thwin <3\", 'Poor bb :(', \"@UrsulaWJ @OwenWinterMYP I'm not able to go! :( It's the Association of Green Councillors conference this weekend...\", \"My skype account is out of order. I think it's been hacked. So if you were in my contacts I'm sorry :( I'm creating a new one soon.\", '@selenagomez i miss your tweet spree oh :(', 'Yes na! As sholong reject my proposal :( \"@elzzika: Gee U don fly go gidi? \"@Gatlinho: The way i\\'m being pampered in this lagos ehn....\"\"', '@isxbe i guess im arresting my girlfriend :((', '@prophdog_ @attepate hes such a nice person idk why anybody would say that to him :(', \"You know when a song just disappears from your phone and iTunes? I've lost Dazed and Confused :(\", 'FEVER. :-(', '\"Do you think they survived???\"\\n\"Well, they did find all the missing bodies in fragments, so no. But it would\\'ve been nice if they did.\" :(', '@DareToAttar im being forced to go :-(', 'Horrible weather to be going to work in :(', '@okayshesaid wish that both of us could change this :(', 'walao kbs never show encore :(', 'Sending. Finally!!!!!!!!!!!!!! :(', 'Being ill is the worst :(((', 'its not the same. :(((((', 'Hope #DJDerek is found safe & well had many fun times at his gigs, absolute legend :(', \"@qtbatooty_ yeah and it's like why do you need to wait till saturday to give us homework pa :((((((( WHAT IF U MADE PLANS 4 DA WEEKEND????\", 'Greek Tragedy is such a cute song :((((', '@bammyxoxo @stffnkthx @breeyanuh16 same :(', 'Raining on me today :( \\n\\nGym it is then 💪🏻🐒', '@cutelilawley whats wrong? :(', \"Oh god!!! I'm strucked by the pain... Cant take it anymore!!! :(\", '@LittleMix come to Belgium :(', 'Fabian Delph has fallen :(\\n@BLUEARMY_IND @MCFC', '@rosicky1987 WHERE U BEEN HIDING BABY :((', \"I'm draking silently so they can't hear it :(\", 'Rest in peace mo :(', '@MHSScho not much chance of game tonight :( #t20blast', \"@OL_EYY ahhh u see? U wouldn't wake up :(\", 'Mumma! Im on 7% :( @LMCDark_Angel', '@sarahhardman8 I hope so :(', \"I'm gonna be dead tomorrow :(:\", \"@_Dedox :( I'll do high you do low\", '@hanbined sad pray for me :(((', '@BritishSignBSL how very appropriate! :(', '@RedsOrDead poor him. . . :(', \"I'm still awake :(\", 'woke upp now i cant sleep :(', 'No one is up to help me :(', \"@curlsharryxoxo i don't know :(( just be happy for him :(\", '@blvsamx hi, can you do me some dms with luke please ?:(', '@KanchuDarling @VidyutJammwal hey babe i just came across this pic..what is this about? I cant read hindi :(', 'their reactions :(((((', \"@junghoseoks 5s :( i think it's bc im running out of space tbh\", '@rustyrockets I wish I could come and see you but on Disability pension with PTSD makes it impossible both physically and financially :(', 'Why does it have to rain :(', '@Foooer_Hungary @FoooerSG nooo why they broke up!!! They were soo amazing togheter!! :(', '@MystikGunn suck for me which mean I have to watch you play it around 1 p.m. my time :(', \"Don't be like that :( https://t.co/gaWf0bsr6A\", '@derekklahn You cant hold another week? September 21st. :-((', 'why they cut the encore i wanna see snsd infinite interaction :(', 'i miss watching anna akana videos :(', \"@tokyato askip t'existes pas :(\", '@9_Moore Sadly not :( - the channel owner decides which regions it broadcasts to. Thanks, Kei. Please rate our se... https://t.co/EzfeHMTT5S', 'i dont think @camerondallas or @JackAndJackReal will ever notice me :( I STILL EXIST', 'The traffic is terrible :(', \"@joaannelopez I've been eyeing on a small kate spade bag too! Pero walang maganda :(\", \"@mermaid_bl00d haha aw, I miss you too! Haven't seen you for agessss :(((\", '@energybiebers Sigh... :(', 'Add me on Snapchat - CorineHurleigh #snapchat #snapchatme #instagram #addmeonsnapchat #sfs #quote #kiksexting :( http://t.co/8bk7ptaqaR', 'I have no bum in Zara trousers :(', 'All these sushi pics on my tl are driving me craaaazzyy :(', 'My after effects not spanish :(', \"Aww the poor thing :( Hope it'okay and in good health. luckely it has been freed from those Rocks #orcalove https://t.co/tOSZMOafv6\", '@Techverse_in first i tried this http://t.co/XTSzpi9fQW but no result :(', 'I want my braces back! :(', \"I need a big cuddle from Lew and kisses on my face :(((( I don't want to go through this again\", '@xcrazy90skidx @kowtsnatinito @_patnicolexx ems haha :(', 'Craving for Banana Crumble McFlurry and Fries :(', \"We're not going on the cable cars now because my brother got scared and doesn't want to :(((\", \"i miss hello venus's old concepts tbh i rly like do you want some tea :(\", 'tagal :(', \"We've lost in album and broadcast points :( http://t.co/QDSVS5Q9SR\", \"i have this awful appointment tomorrow and i'd like to feel OK going in to it, since I won't be after it >:(\", 'This sucks I want to go home :(', \"There's no milk left for my cereal :(\", '@shahrukh9899 @IamMansoorKhan Huh :( yes', 'we lost at the album and broadcast :((((', 'So sad :( http://t.co/fVV9Y3WX2o via @EvokeToday', 'Everything and all :(', '@RealLiamPaynePH follow me :((', '@sainsburys yeah, I tried to film the date at the start. At the time of filming it had 4 days left. :(', '@namwngr no, because you will get more than one and i think its not the same from the previous one :(', \"I can't smile :(\", \"I'm following 73 users who aren't following me back. :(\", 'when will got7 : (', '@craigyboi seems to be everywhere today :(', '@OliviaKaparang @BTS_twt for the fansign and take photo is more expensive :(', \"Zzzzzz.....please don't let the sun come up yet.... :(\", \"When your bff's extremely stressed and you can't do anything but pray... \\n\\n:(\", 'ahh no win for the goodbye stage :(', \"@st3cav @MCFC @sterling31 @YayaToure True, deosn't help that Liverpool were here last week, most have never been to Pool though :(\", '@ArunbuddyAP yes bro..lost many too :(', '@JindalDaily praying for you all. So sorry this happened : (', '@jackshilling Great news, thanks for letting us know :( We hope you have a good weekend!', \"@peachyIauren it's so fucked :(\", '@LocoTaii - My self esteem was on the lowest :(', \"@RyanBitchTits they feel and look better where people can't see tbh\\nThey look so tacky :((\", '@fabssulli taken say :(', '@ASVPxGABE man all I got is lucky charms :((((', '#Haaretz #Israel :-( Syria continues to develop chemical weapons, officials tell WSJ: WSJ rep... http://t.co/3c5PRCHKqw #UniteBlue #Tcot', 'i want all these bts merchs :(((', 'Only one more day :(', 'Should have taken a pic before mrs wong confiscated my art work :(', '#Bad4thWin you guys omg :((((((', \"@mustntgrumble I hadn't thought of an icepack. Big doses of pain killers on board. But it is feeling very very painful already :( *whimpers*\", \"it's okay :(\", '@ABeezyGMT says the Man U fan :(', '@BIBBYUPDATES :(( I wish I could be there to say a final goodbye to them', '@_awkwardraven Will do Senpai >:( -looks up on all of buttsex-', \".@sabal_abla @tanha_messiah But I was joking on the headline. So aren't we friends? :( Pls dn't brk my heart. :'(\", 'When someone hits a head voice and I\\'m like \"I would sound amazing if I could do that too.\" But no... I can only do falsettos :(', '@Patrickcf26 NOTICE ME :(((', '@versacelopez I hate our time zone :(', 'MY snapchat - LeanneRiner19 #snapchat #hornykik #loveofmylife #dmme #pussy #newmusic #sexo :( http://t.co/TyhwG534Ng', '@DominionSyfy when will S2 be aired in Spain?? The delay is killing us... :(', '@TheOnion @ChoKyungHoon82 not a single untruth here :(', \"My last cross country in IJ was amazing!!!!!!!💥✨💫 Can't bear to leave :-( https://t.co/VkVOxIaEQn\", \"@_lizzy_kay I can't drive so :(\", 'when I have my own little apartment can like someone come live with me :-(', 'soshi didnt win :(( buttt congrats infinite!! #bad4thwin', \"@rickygervais I'm working Saturday and Sunday so Friday is a bad day for me :(:(\", 'going home soon :(', \"I shoulda moved away w my boys when I had the chance cause they're the only people I want at times like this :(\", 'Heyyyyy i wanted to see yeols solo danceeeeee :((((((((((((((', \"Inter offer Nemanja Vidic to Roma...but they don't want him either :( http://t.co/Ksdgy0lTpF http://t.co/FplKjpXNQN\", \"My mom's a linguist. My dad's a computer scientist. And I am the dumbest one in the family :-(\", '@GizmodoUK broken for me :( I really wanted my morning ice cream in the pouring rain... http://t.co/y9waxvQKpg', \"@hankgreen would you ever consider creating crash course videos about computer science? There aren't many resources at my school :(\", '@Uber all ice cream vehicles are busy :(', 'ate ayex what do you eat? youre sexy :((( — I swear I eat a lot. No chill lamon haha http://t.co/CfOxw5wljZ', 'This weather has me scrolling through my contacts of people I\\'ve curved on some \"hey you 😉\" sigh* :(', \"so i'll be getting my cement cast tomorrow :(\", 'Shit 10.3k???? :(((((', '*sign out* :(((((( https://t.co/y45q9GAJ5j', '@zaynmalik zayn :((', \"(bot) If you follow me, plz send to me mention. Because I can't notice :(\", 'these JMU camps are such a tease bc I just wanna be here now :(', \"@mizznhee that's one of the sweetest things I've ever said, awuna mbulelo :(\", \"This fucking bad link isn't working and I can't watch the match! :(\", \"Oh no Mr I Pigs not turning on :( although there's a weird crackling noise when I plug him in coming from the plug ,I'm thinking fuse?\", '@TitusOReily dammit I tipped Carlton :( #AFLBluesHawks', '@baileymac02 miss you :(', '@jiministic go to bed :(', \"Am want to go Alex's house :(\", '@MotorsportCntrl @GP2_Official so true! This was part of a motorsport series (all on one disc) :(', \"All I want right now is the A, followed by the D and a cheeky J after that\\n\\nInstead I've got some SEO and some NLs to be getting on with :(\", '@BOYBANDSFTCARA sure!!! Sorry :( x', \"@talkingsimpsons hey bud! Christy is really sick so I can't leave these 2 at home :( xo thanks man\", 'My niece is having a better summer then me :(', 'I just wanted a bloody sandwhich :(', '@Whorgeee :( it is', 'Buset :( https://t.co/hQ4y4FKniZ', '#Discrimination :-( Five things we learned about pregnancy discrimination today | Left Foot F... http://t.co/Ey9MmaSmsd #UniteBlue #Tcot', '#Discrimination :-( Maternity discrimination: When I needed my boss, he kicked me in teeth - ... http://t.co/2WT4YyMNWz #UniteBlue #Tcot', '#DomesticViolence :( Proposed New Law Will Help Domestic Violence Victims - 98FM: Victims ... http://t.co/eoISmrzLpo #UniteBlue #VAW :-(', '@nnoonlight i missed you :( it was okay. lol. I did nothing. 😂', '@hamzaabasiali exactly but unfortunately :(', 'Such a stressful and upsetting day yesterday, the UK government sucks :(', \"Ugh, well I could still say that I'm lucky because I am Sapiosexual. :((((\", 'Aww too bad :(', 'Ive been trying to play the damn beta for like 12 hours now :(', \"I don't want to be in a world where Hulk Hogan has been scrubbed from WWE history :-(\", 'im so tired! :(', \"This weather isn't making me want to go to the gym at all..... :-(\", \"@katjturgoose @artsjobs Link doesn't work! :(\", 'Irene seemed so sad after making that mistake :(', \"@ItssssKelseyyyy Naa unfortunately, I didn't have my phone on me :(\", '@bmthofficial ITS SOLD OUT :((((((((((((((((((((((((((((((((((((((((((((((((((((((((((', 'i hate u >.< >:( #H_My_King', 'we lose again :(', \"Valentine et al found r'ships btwn homo/biphobic comments & certain disciplines - incl. European langs, lit, education :( #fresherstofinals\", \"when will you notice me :( i'm so hopeless 💔 @SeaveyDaniel\", 'my dreams are gettin too realistic for my liking thx !!! cant tell whats real n what isnt :((((', \"@SidebySide either or but would prefer Benzema! We won't get any though :(\", '@dontvexmysoul hahahahahaah i donno korean language :( only few russian ) waaaaa', '@Grofers what about me? :( #EidWithGrofers', \"Someone talk to me I'm boreddd :(\", \"don't you just hate it when you get called a mug \\npisses me off >:(\", '\"@MgaPinoyPatama: I miss you, but I know you don’t care.\" :((', \"@alexmcgraaa no I can't do it, don't have the option on my phone :(\", '@CelestialSinn I love Tiddler, but that was really silly :( but at least we’ll be getting real new cards in like 1 hour..', ':( well this sucks', 'Infinite win :(', \"@SBS_MTV Are you sure that Chorong is the leader? #에이핑크 #더쇼 I can't be sure anymore :(\", '@ClashWithCam when will the clan slots be open :((', 'Pffff doing a private @Bugcrowd #bugbounty and only finding self-XSS and host header poisoning :( Need some code execution #ktksbye', \"When your connect leaves a company and they don't alert you :(\", '.@uberuk you cancelled my ice cream uber order. Everyone else in the office got it but me. :(', '@Nebula2592 ahahah i consider it petite, i have a love hate relationship with my height :(', '@therp_stefan @Therp_BV will cost you 600 k£ to get security alerts on odoo 8 if you are an Odoo partner. Far from community spirit. :-(', 'jgh :( im so effin tired', 'facebook, y u no work ? y u do this facebook ? :(', 'No ones up :((', '@TheNameIsJase No unfortunately :( Sorry!', \"Anyone else's show box not working?!?!?:(:(:(:(:(\", \"AP won't be the same anymore :-(\", \"@llymlrs story of my life...!! Love London and can't imagine living elsewhere but it's gonna have to happen someday :( I have NO space!\", '@benrwms Oh no Ben :-( That is terrible, please provide us with the name of the branch you visited. We would like to address your concern.', 'Poor guy :( http://t.co/aSq9NN4AXR', \"@elninakauser I feel your pain, It's like the Welsh Pod all over again :(\", \"@buterasfredo i can't wait for the movie to come out :(\", \"@littlejules14 Hi Julie, I'm sorry you feel this way :( Whats happened? ^Laura\", '@maknaekookie i cant :-( im still inside the train station waiting for the person ;_; home is another hour away D;', '@vegemitegrier not anymore :(', '@wendykims @Joix05 @GiladMillo some people need not to talk-kama hawako around :( :( \\nWaa Kimaaaaaani prisssss!', 'Baggage claim. The final goodbye to all your new plane friends :(', 'i miss niamh i havent seen her in forever :(', 'Yeah I screwed up again :-( and this time I thought I did something good good', '@lifeboatsupport I have! :(', \"@CherylWalmsley hmmm, they always have so much sugar in them, I rarely make them. Sorry I couldn't help. :(\", 'I literally have no time to watch paper towns :((', \"@donhutch4 what's the score don I'm stuck at work :(\", 'Agh @UPCIreland keeps cutting out in the middle of #undercoverboss :-(', '@CMPunk @MattJackson13 please please come back to wwe :( تكفى', \"@cosplayamerica I'll be there around 10. My train was delayed. :(\", 'Having a full time job means you only gonna have part time fun :(', 'My cats have forgotten who I am and they hate me :(', \"@vaxwell I know it's long and I played for 15 hours. :(\", '@NewBreed_Next u already have most of them :(', '@Kryaotic117 @TritanArmyv2 @MoreConsole yep again :(', 'WHY MUST THE VIDEO STOP THO :(', 'wisdom teeth giving me so much ache :((', 'Y is no one up :-(', 'my wrists feel so naked bc i forgot my watch & bracelet :((', '@diamaziing Did you ligo na? :(', 'The Day A Dozen Parents And Children Killed A Baby Shark For A Selfie :( https://t.co/S8cq6c91ni', 'So this is Heartache? :(', \"I don't think so :( #zayniscomingback\", \"little mix are coming to sweden tomorrow and i can't see them :-( im sad\", \"my heart is breathing for this moment in time, i'll find the words to say before you leave me today :(\", \"Elmhurst FC are over :-( I'll always be #ETID\", \"Miss chillin'with you :( @PrincessReeev\", \"Forget to my Job. \\nI'm sorry my father. :(\", '@Scruffbucket IsTanya going2supply all d EXTRA infrastructure,teachers,doctors,nurses,paramedics&other countless things2cope with it all?>:(', 'I liked a @YouTube video http://t.co/93Z6WOVOs9 PASHA IS CRYING AFTER TERRIBLE DONATE :(', \"i'm so bored!!! pleas can 1 Arianator talk to me? :(\", '@Hydrojeon lmao hahahaha slr jgh from school :((', 'My live streaming sucks or is it just me :(', \"Kendall and Kylie are killing me on Kylie's snapchat :(((((\", '@MaayanGean absolute world to me I was so close to seeing him but he did not show up in manila :( i cried so fucking hard that time', '@jmcefalas Jeebus. Reabsorbtion of tooth, abscess, threatening to affect my lovely front crown :( and OOOOOOOOUCH!!!', 'oh barney :((', 'Awh why :( were nice https://t.co/5zAwc5Z37J', \"Sometimes it be's like that, yo. Follow someone and then a few days later realise they're problematic as fuck. Life :(\", 'THEY DIDNT EXPECT THAT OMG THEIR FACES :((((( IM SO PROUD OF YOU INFINITE', 'This day is such a mess! :(', \"I miss you maa :( why didn't you ever tell me its going to be like this without you?\", 'Help me :(', '@TheHinduTheatre @evam_entd Why no Bangalore? :(', '@NotRedbutBlue awww :(\\nat least u never got called luis manzano tho', '@bebeshaaa thanks shaaaa! Miss u super :(', \"WE DIDN'T GET THE 7TH WIN :(\", 'Meeting with the convener at 2:30pm :( not looking forward to it!', \"@tweetseamus how was the party last night? Shame I couldn't go :( would of been lovely to have seen you again x\", '@SynergyFlying No!!! Why did you delete me?:(', '#TURKEY ARE NOW #BOMBING #ISIS IN #SYRIA,AND ALLOW THE #USA TO USE ONE OF IT #AIRFIELDS FOR THEIR #JETS :()', \"I want Jack's follow so bad, but I don't want to be annoying by spamming him :( sooo @jackgilinsky follow me please? ☺💜\", \"mommy's in manila and I've only seen her once :(\", \"The reason why I'm always, always overweight... sigeg habhab :( masud pa kaha kos akong un… http://t.co/RZ52EUtzMD http://t.co/Nvx057PFZp\", \"@samayanyan yes thank u!! Oh damn that hella sucks :-( but at least u had a really good time that's all that matters\", '@mollehgarcia no pala omg hahaha i have driving lessons :(', 'aW i wanna go and see dolphins again :( so cute xxx http://t.co/RJBAFfSMbh', '@brighteyedmgc hoLY FUCK are u okay / text me if u need anythin !!! :-(', '@xband__loverx I miss you :(', '#ZaynIsComingBackOnJuly26\\nI See this trend an in radio the next sing is See you again...:(', 'Beware: agonising thought experiment ahead :( https://t.co/B8Ttz1wbkG', 'Last time I was here, was a funeral and a again funeral. Modimo ho tseba wena fela. :( — feeling emotional at... http://t.co/mQYsswdot7', \"what's wrong with me :(\", '@lh_JM88 and now me too :( hubby will be delighted to return home lol', \"SO SAD FOR THE GIRLS OH WHY DIDN'T THEY WIN :((((\", '@burloutray4 I want something new too, damn you bills!! :(', '@someboysjumper @apriloumay Nowt worse than a sad looking willy :(', '@Tonynamly sad moment when you gon vomit all this out :(', 'or a famous bowl :(', \"She's so cute :( http://t.co/5gRpttMX8k\", 'Devastating to find out last night that Titan AE was never actually any good :-( http://t.co/zzwd8HDcOI', '@Mark23Baracael mark followback :(', \"@Latoyasilmon omg...you're so beautiful... miss you soooooooo much...: (\", '@itstishh miss you so much :( xxxxxx', \"i used to have such nice hair :(( look at it it's all shiny and long and wavy im emo http://t.co/qX7XO8x5Zq\", \"@LittleMix have fun in Germany :( I can't be there 😭\", 'I was about to make tea but load shedding was like Ha.a bheyps not now ! Ayemso Hacked :(((( http://t.co/ZudfTknvCM', 'my left ear is swelling :(', 'read sm quotes on fb which remind me abt sm 1 and am missing him so much now :(', 'everyone is going to womad but me :(', \"wut the hell i can't sleep >:(\", \"@CorCor84 It is a vicious circle isn't it :( x\", '@eydiespi there is no surprise :(', 'Win tickets to Cody Simpson concert in Singapore on August 10! http://t.co/6t9XKgtwTm #SpinorBinMusicXCodySimpson pls pls :(', '@joyce_gleek Sorry poooo. :(', 'Sorry na bh3s :( @alrakakire', \"Project I want to enter into #PitchWars may not work. :( Only first chap? Mine's a phone call transcript. #ugh\", \"@5SOSTumblrx the APMA's :(\", \"this is bad. my shoulder has started to hurt like a bitch :( and we're just a day away from competition! hope it'll be fine in time\", \"@shuaijerks it's okay I feel you it happens all the timw :(\", \"@HeyyLawley don't make the other accs feel bad :( that's just rude\", '@meowkenzi :(( that sucks. Try vitamin e oil massage everyday for a while and it should make them healthier and easier to stretch', \"What the hell is going wrong :( I don't understand why people choose to hurt each other https://t.co/hIBjz4fC2r\", \"I don't know what I'm doing for #BlockJam at all since my schedule's just whacked right now :(\", '@tymoss wish I could have been there :(', 'GUYS add my KIK - thelock76 #kik #kiksexting #sex #omegle #couple #travel #hotgirls :( http://t.co/Dn6agZcPhd', 'Valentine et al (2009) found relationships between homo/biphobic comments & certain disciplines- incl. European languages, lit, education :(', '3 ghantay say light nai hay :(', \"@hereisjoshhiles I have it still won't work :(\", 'Rejection is the reason why people deny what they really feel.\\n:( @maryjan71973628', 'this weather is ruining everything :(', '@krysseners No, I was in Laguna :((((', 'Feeling sick :(', ':( exit gomen', \"@sustinsantos what the heck that's not fair 😂 I grew half an inch in two years :(\", 'Woke up feeling so sick :(', 'I wish you cut your hair like this again :( http://t.co/Oyt8wMo7w9', \"@NerfThorn problem is 1. I'm from UK so it's £ not $ and 2. I don't have $25 :(\", 'Suuuuuuuper sick :( fever got way worse :(', 'Me right Now :( http://t.co/hoVZi9wQnx', '65% digital sales.. having a bad feeling :(', 'can I use anyones netflix my account is inactive and I wanna watch orphan black :(((', 'havent seen you earlier :(', '@FairyFunFwee whaaat? what is this :((', \"@margauxxemm yes baby kaya i'm so sorry :(((((\", 'NAAAAAN PAS GOODBYE STAGE :(', \"@AppleMusic why does my music keep pausing randomly? It's the only app open :(\", '3:30am walk down Inglewood ummm bad idea :( ugh stupid anxiety', \"And it's not easy to be me :(\", '@LittleMix Belgium :(', '@randomdavemcc1 This one was ready in 3 weeks and is also Charcoal, but the other one wont be ready til mid-end Aug :-(', \"NOOoo @PTTBath I've just heard the news :(\", '@Rodnerbroo rip rodFanta :-(', 'I wish I was better with words :-(', '@Wapaseeto yes, all wasp stings have been averted. Those bugs are mean :(', 'Can u feel it? :((:( #exo http://t.co/ghsa262ORm', \"@zoellaftmendes please don't leave :(\", \"I'm feel so seekly...:(\", 'Shocking News!!! :( #RIPTito', \"@Charalanahzard I can't see it! I'm sorry. Call me a manbearpig, but I cannot see it. Sorry :(\", 'Can i grow shorter pls :(', '@NimrodYEle Academics :-(((((', 'I want my free @UberUK ice cream! :-( http://t.co/2BHfR9BU26', '\"Exclusive to Germany\" how unfair is that? :( Esp. regarding the current bleak german charts situation, still no entry even @ top 100. Pfft.', '@kwangqiiii later I feel out of place :((', '@borapls it was white washed dude to the Polaroid effect :-(', 'I feel bad for talking to you... :(', \"#newbethvideo i love you sooo much! But... I live in Greece so I dont think I'm gonna win :( But always hope!!!! <3\", '@courtneypink07 Haha I know right :( He needs a good talking to that Xur does!', '@GorobaoElisha Imy too :(', \"@Emmalaalaaa I don't even know what's going on :( fill me in please? !\\n\\n#soon babe... ♡♥♡♥\\n\\nXoxoxo\", \"@for1rose it's raining here :( but I will make sure I get a picture of him soon\", \"|| I want cereal.\\n\\nToo bad we doN'T HAVE ANY. >:(\", 'just got home. lost one of my stud earrings :(', 'I miss his massages :(', 'KIK me guys : hunde6 #kik #kikhorny #tagsforlikes #skype #kikchat #amazon #kikhorny :( http://t.co/jGB5W5ct7t', 'i lost my 3.4k :(', 'Yach.. telat.. huvvft..., :( https://t.co/nrzfh7Roja', \"@junhuiass IT'S BEEN YEARS SINCE I HAVE BEEN IN A ZOO AND IT'S ONLY ON FIELDTRIPS SO NO TIME TO TOUCH :(((\", '@attepate I wanted to hug him after watching this :(', '@JackAndJackReal I missed the following spree :( next time though x', 'Still hoping :( #ZaynIsComingBackOnJuly26', '@EdeLabayog awww :(( kaya yan! Think positive!', 'i miss my king,future,boss, and RAIN :( http://t.co/RZTM0VKIlM', \"I want to watch a movie, listen to Sizwe, eat and write my assignments at the same time.... But I can't do that :(\", '@strawberrybon i miss you :(', \"this time in 20 days i'll have my results kms :(\", 'I have four shifts left with @taylorchurchman my heart has broken :(', 'AAAAAHHHHHHHH :( It Is Only 3 pm And I Feel Like Dying Of Boredom....', '@HouseOfPoitiers @nurseneddy @Peteski40 \\n\\nOn me birthday en all :(', 'Stop playing with my feelings man :( i aint got no time for that. *still hoping* ♡\\n #ZaynIsComingBackOnJuly26 http://t.co/Nu0PMyGKU9', '@zedxgarcia u started it :(', 'Am I the one whos dont see sinse to trend something like thats? :( #ZaynIsComingBackOnJuly26', \"Good thing I got those free earrings, as I've somehow lost one of the tiny screw on ball things from one of my barbells :(\", \"@JonnyMalee owww I'm only about this weekend, I'm on the course next week so won't be able to get into Amsterdam :(\", \"@rainymondays luv u 💖 ps. We haven't talked in a looooong time :-( why??\", '@gclliva home? but my eyes aint apartement : (', '@JackJcnes text: :( why', '@enikotsz @pooj_ @UberUK @walls With this rain though? :(', '@ollgbroxei sc, longe :(', \"@AmeAmeSakura especially when you don't like it :( I can't do the same song over and over again :/\", 'Cat on the lap. I have to go out now! :( http://t.co/wN3169K7Kb', \"@ellierowexo :((( & I'm litro gonna be on my own that weekend\", '@GiannePeqs shit good shepherd is lami :( 3', '@hawkerclaw thank you. Maybe because of late sleep. :(', 'I need relax.:-( ...#lungomare #Pesaro #giachietittiwedding #igersoftheday #summertime #summer… https://t.co/IHFceHoxl3', 'my nose is bruised a lil :( :(', 'Fuck those snake things in Journey. Always went for me, never my partner. Had a beautiful scarf and he ate it :(', \"@jaredlovesjen i'm hoping that if he comes back to aus i can afford to go again but i dont think i'll be able to :(\", 'It just ruins your #FridayFeeling when you know next day you have to wake up early in the morning....:(', \"I'll be so sad if there's nothing tonight :(\", 'I want a bad bitch but I aint got no money :(', \"but i can't fry chicken, woe is me my nigga :(\", '#MOTN though lighting is not doing my make-up any justice :( http://t.co/nkzA8S687N', \"That one person. Is still very important to me...and I don't want her gone any longer...yet I just sit here scared out of my mind. :(...\", 'i rly wanna buy the limited ver as well as the normal edition. huhuhu what to choose? :(', \"@axolotl74 @sp1305 Stack is on M'Lady J8 to J11 M20 :-(\", 'jk im so bored :(( acads scheduled @ 8 what to do nowwww', \"@HAMEZR10 couldn't watch cops :( how was James?\", 'i need to clean my window at some point today bc hugh keeps pawing at them and leaving muddy marks everywhere :(', \"But I don't know what song to sing :(\", '@xcliffordpizza my mom called me up :(((( i got distracted', '@YseIcedTey heyy i miss you :(', \"Please be nice tomorrow weather! Otherwise our picnic is cancelled and I've got 24 cupcakes to eat :-( https://t.co/LGQRwfFTiO\", '@Benzyyyyy with you talaga the best. :-( 😂', 'the only female i wanna get it poppin with is Joc.... but she be playin :(', '@taekookfever SO CUTE :(', '@NinaSarto pm me :(', 'When I saw #ZaynIsComingBackOnJuly26 \"FIX YOU\" by Coldplay plays in my Windows Media Player :( 😭 http://t.co/rGnNYzc31c', '@_ferdelicious I think I just failed one subj :-( sobrang bv 😭 pls pray for me huhu', 'zamn the line up for afropunk fest brooklyn :(', \"@lightmytorch I'm not there anymore!! Would have signed if I saw you! :( thank you for coming\", 'wish id put more than £50 on real madrid #shithouse :(', 'Cutest dance ever :((', '@Kimwoobin89__ oppa............./hug ur arm/ why am I like this :(', '@jasonbarnard86 @stefgingerball I asked my boss for a raise once, he handed me a ladder and told me to climb the ladder to success. :-(', '@jenandmish @wittykrushnic to get by, to get by :(', 'Nerve wracking test. Booset. :(', \"@mythor aw sad :( it's very very long though. Maybe a little longer & you'd love it? I restarted assassins creed II heaps, then fell in love\", \"@cragdoo I don't know why the hell it's playing the next one, I can find no way of turning that off :(\", 'Bored :(', \"i'm such a terrible daughter :-(\", 'Finally got some time to catch up on games..Wish i could say \"Let the games begin\"...sigh*..PS3 isn\\'t working :( http://t.co/nwriRgSq8v', 'my ankle :(', \"I just stepped in a puddle :-( & I'm wearing slippers!!\", 'Good eve. :(', 'wake up bby, imy :(', 'I will cry :(', 'Video: sararocs: I am so angry at the world :( http://t.co/eGuM20hTok', 'pretty hairs :(', 'fnaf 4 coming after my holiday now :(', '@1q4h_ cheer up!! :-( 😘💖', '@ThisIsTheBrooks maybe a tweet? :(', \"@AnnieAppelle and @nutriculum is this today but you're not here :( #anywayhedidanicejob\", '@bethisbest01 @styleswavy same same 😞 :(', 'this match history :(', \"It's 3am and I can't sleep :(\", '@JagexAlfred the green one is ugly :( the others are awesome tho', 'Local legend :( https://t.co/VVLTlmOsQ0', \"@CruiseLineUK @AzamaraVoyages can't tell you how sad I am we booked on another cruise line and could have done this. Double wail. :-(\", 'When things go wrong they go wrong I have broken my manual wheelchair checked if I can get one that fits from NHS and its 26weeks wait :(', \"Poor SBENU :< SaSin wasn't happy at all... As the best player on his team.. :(\\nBut Anarchy~~~ :3 <3\", '@jenxmish rude af, im gonna put my candle away :(', '@wydbaylee im sure anyone would kiss ur forehead & give u medicine if u asked :( but ur welcome :(', '@Marsaliath Oops :(', 'Hoya mah always good looking :(\\nNo comment aing :(', '@JKottak without you just miss you :(', 'Nobody said it was easy :(', \"I'm so sorry I didn't give you enough hugs awhile ago b I was just so tired :( But it was so nice seeing you again luv @nicoooootine\", '@Jaxonoys aw I miss you :(', '@GoodieNuff now hush gurly and bring your purty mouth closer\\n\\nThat made me shiver :(', \"@MojangSupport the website doesn't have the solution, is there anything I can do, I paid for this and I can't even play it properly :(\", 'Dont know why I try anymore. Getting tired of this. :(', '@RyanSugandi gol pea :(', '@SPObabbby I hate myself for not knowing English :(', 'Physically, emotionally, mentally, #TIERD :(', \"My third eye's getting active again :(\", '@EggNiGreg thnkyouuuuuuuuu :(', \"@simonshieldcars Hi Caroline no we didn't :( Neither did @MotorMistress or @GlynHopkinShop I think - we figured out it was in US lol\", '@hotsootaff my mirror is more beautiful than me :(', \"@nuttyxander didn't make it to the highlights then :-( They seem to have stopped talking about 'climbing on pure courage' - bit too fishy\", \"I didn't even do anything to it idek :(\", 'did I missed apink performance? :(', 'Bulet gendut :(', '#PARTY goodbye stage :(', '@subharrie noo :( do you know why?', '@lollypng :( *hugs* I hope you can rest soon.', '@ovo4fev Looks awesome! I miss the days of racing hotwheels cars around my house. :( ^MS', 'Patch :(', '@andytude typically we had a power cut last night and I missed it!:( was it good?', \"@ellegowers ahaha I'm laying on my bed like WHYYYYYY. The pretty wine glasses sucked me in :(\", \"@Akon @Tyrese where's your album akon :(\", '@sulliyahh sorry i didnt update you i went somewhere :(', 'The never ending nightmare is still never ending :(', '@hugeboysmh YA! YA SONG MINO! WHERE ARE YOU? :(', 'crazyyyy thooo zz from airport straight away to soundcheck and concert :(', '@obscurro hmm is this tweet antagonistic? I literally do sing the obs song :(', 'PHANTASY STAR ONLINE 2 IP Issue\\ni was so happy i could finally play the game then this... so sad :(\\nhttp://t.co/du7Z6cjYVm @Asiasoft_Live', \"Bruce just won't smile :( http://t.co/UwldCQkcoq\", \"Its 2:30 in the morning\\n#SleepDeprived\\n#TiredAsHell\\n#Looking4ASpot\\nEven #Kinara's Closed.. :(\\nWe then Chill at #Awami http://t.co/T47BRjzsz5\", 'Of course :( :( .. I don\\'t understand >>>\"@khalila_: Y\\'all gonna ignore @Calvin_Muca questions huh? Niqqa is desperate need of answers lol\"', '@Sibulela_M why must you be so tiny :(', 'so after 2 weeks only mockingjay was left well that was slow :(', '@jenxmish @wittykrushnic you are the only thing that i need :(', '@DrishyamTheFilm @Team_AjayDevgn @ajaydevgn Not fair with us from Pb.contestants our dreams not comes true this time :(', '@CraziestMocha I wish :(', '@laurenecurrann snakes on you??:(', 'My cycle is coming soon :(. Woe is me.', '@Shrimp_89 @KianEganWL Aarww...I wish I could be there too :( xx', 'Lol the person i want to hug i cant :( lmbo dangit i miss people to much , cant help it though', \"I can't sleep now what the heck :(\", '@_eMCeeeee ohmygod worst case scenario na tooooooo :((((', 'Nice weather if ur a fucking duck :(', '@pieterebersohn where are you watching the game? :(', \"Awwww Baechyyy it's okayyyy :( Lol it's cute actually haha http://t.co/dN83gHOw3y\", 'did noone live for my drag drawing ok :(', 'This started with a picture :(( seriously #ZaynIsComingBackOnJuly26', '@YHMFans @TheKaranPatel #Misundersranding days chal raha hai #YHM me :(', 'Edsa y u do dis 2 me\\n\\nSo tired. Just wanna go home :(', 'My SNAPCHAT - JasminGarrick #snapchat #kikmeguys #snapchat #webcam #milf #nakamaforever #kiksex :( http://t.co/j0GGCcW3Dg', \"@leesasana @Francesca092391 tried tweeting UNICEF's accounts but no answer from them :(\", '@kristinexvilla @larssycutiee fu all :(((((', 'Home alone :(', \"@Uber has anyone managed to get ice cream? I've been on my app from 1 Stephen Street for last 35 mins and no free vehicles have appeared :-(\", 'So Much New Music that I cant record yet coz my voice is gone :( #Frustration', '@NathanSykes I think you could do with a hug right now more than me. :( Poor thing! Sent you DM if interested. Hope you get better soon!', \"@Tsholo_Mapz I don't like you :(\", 'Woza @Pale_Entle2 Please take me with you :-( https://t.co/YJ6NgRL5AD …', '@kaisoography very good read promise :(', 'MY kik : senight468 #kik #kikmeboys #gay #teens #amateur #travel #hotscratch :( http://t.co/1KmYuz66RN', \"Should I still sell socks? It's too expensive :-( 150-160 pesos is so expensive + you gotta pay for the sf :-( http://t.co/JYLqWawIog\", \"I don't think I can watch degrassi for about 4-6 nights :((\", '@khushirkd @dpcrazen1001 no bcz kat rejected! i like their chem onscreen tho...ofscreen,he kinda ignores her:(:(', 'Pak saturday classes, pak monthly test :(', '\"Please don\\'t put your life in the hands of a rock n roll band who throw it all away\" oh the irony :(', 'GUYS add my KIK : rhisfor500 #kik #hornykik #bestoftheday #chat #snapme #summer #camsex :( http://t.co/ldbydFruxA', '@ApparentlyShane Why did you unfollow me :(', '@GothicFrog Sad to see you go\\xa0:( Was there a particular issue? The support team can help: http://t.co/MCvOjHPVLv #fxhelp', 'Really missing my family, friends, bae and Poopie :(((', '@GazetteBoro @often_partisan ? Have we been pipped to the post do you think? :-(', 'Life never felt so good :(', \"Uff, don't feeling too well today tbh :(\", '@nba2kmobile @MyNBA2KRT @mynba2k15credit I would but have only 1.300 credits :(', \"@KumonePina_bot Just for that, you won't get a cupcake!! >:(\", '@davygus Glue factory for Kuchar :-(', '@jenandmish @wittykrushnic please stay, with me :(', '@nathan3205 OMG THAT CAME FAST! You graduate at the end of the year?! I know :( catch ups are a definite (what we did best at uni anyways)', \"@Silverio_Lanzzz @ObeeyRainbow same..i don't know why :((\", 'thinking about @StereoKicks again :(', \"my EE account still isn't working :(\", \"@crosseyesmiley I didn't see you :(\", 'Tommy and Georgia are so cute they actually hurt my heart :( :( :(', '@21oclock :((( bout to instant transmission', '@daiIysolos zayn malik please :((', '@angelhairhes i dont know what to dm you :((', '@FatinYzd sigh orang suma no time for me :-(', \"It's not the off shouldeeerr outfit sad :(\", \"@OloapZurc damn. Hopefully! We deserve one since it's been ages since our last repack (i wont mention how boy groups gets repacks always) :(\", '@charleybilton little charles all grown up :( remember when we dyed your hair and it went rihanna red hahahaha that aint no ginge xxx', 'without you :(', 'it scared me :(', '@BootsAndSneaks no boots like that as such! The closest thing I have to boots are my high top nikes and Adidas haha :(', '@lilaclarents Oh no sorry to hear this :( please can you email the information to pro@illamasqua.com instead and they can manually set up? x', '@xojustineeox same! :(', '@benedicksawal ifeelyou :(', \"Training felt harder today..that's what happens going to bed too late n waking up earlier than usual :( #RatBagLater\", \"@Vanessauhhh he doesn't win any :(\", 'who wants to watch paper towns with me tomorrow :(', 'Did badly in the second semester :-(', 'never drinking gin again :(', '@KittyKatPK I hope so :(💜', 'Gutted for Reynold. The kind of desserts he has done this season :(', \"@LeeEvansBirding @pennystocksusa That's a village thing everywhere in the world. It's different in big cities, unfortunately :(\", '@Craig_J_Hastie @MassDeception1 uniting oppressed masses can take forever :( look wat happened n afghanistn,war tore it & it ended n s**t.', \"did sunggyu injure his hand yesterday there's a plaster on his hand?? :(\", \"Sad bc I had a dream that all the boys rtd me, Louis & harry followed me but then I woke up & it wasn't true. :(\", '5sos hated our crowd :-(', 'Please take me with you :-( https://t.co/0foUNK2onJ', '@lorenzosilves omg hi!! I miss you guys so much :(', \"I should be working on that stadium, I'm a boss welder :(\", 'omg I wanna hear ghost stories :(', '@WordOfTheFree ago hogo vishaya all adu. BJP madatte anta vishwas ne illa. :(', 'summer weather wua :-(((', 'I tried to sleep but I noticed my picky finger started to swell up and :( ugh omg', 'one of my favourite mutuals just unfollowed me :((', \"I said gn along time ago my ass can't fall asleep :(\", \"I can't sleep :( http://t.co/7IiyoPYtXl\", 'kik - thenting423 #kik #kiksex #omegle #skype #amateur #sabadodeganarseguidores #sexual :( http://t.co/VcRhaDOqPt', \"@ApplePieQueen_ I haven't even watched any it just syncs from plug.dj :(\", 'My nose and forehead are peeling :(', '@NaakiiChan my mum :(', 'Car & suspemsion cant cope with all these offroading adventures now theres harvest machinery left in inapropriate places to weave around :((', '@WinterJeff hahahaha were going nowhere fast. Not without some decent investment. Scottish football is dire at the moment :( #nomoney', '@touchdamendes are you ok :( Im here if you want to talk', '@_yungthot ur not in the nawf :(', '@larriii7 do sum :( .', '@xcorben_ Bechos. :(', 'danny :( @TheScript_Danny', '@nekrotizan sorry :(', \"♥ [ENG] ♥ - Let's talk, since can't stream games :(: http://t.co/Br36TjVYNd\", '@Tsholo_Mapz OVERLY please do my lab for me :(', '@zappygolucky OMG LOVE IT TY ZAP :((((((', '@lawandsexuality that makes really distressing reading :-(', \"Don't wanna live in the world where people get shot when going to cinema #LouisianaShooting :((\", '@nws1886 Yeah ... I got this shit in a bag. \"Laughing in the face of anxiety\" har har har. I think ! :( how\\'s it go, chum? Out this weekend?', 'just ended ncc and now heading to training. gonna be late :-(', '@1DInfectionMNL I miss them :( I hope they will come back here in PH :(( balik naman kayo oh @onedirection', 'Itong shirt oh! :( I want thaaaat!!! :(( (ctto) http://t.co/YILATtPk6W', 'Expired and I used BIS money now I\\'m broke ):(\"@TheActualKing: @portiatearsbee you got BB where is your BIS?\"', '@ObeeyRainbow this makes me feel bad :(', \"@thomsk93 @KnucklePuckIL @CantSeeColour will listen tonight, it's tough having a full time job :-(\", 'Leave me alone :(', 'started reading at 11 and now its 3:33 :( jfc time flies by', \"Goodbye stage :( you'll be miss\", 'New bio. Bodo amat :-(', '@KadiDiallo4 thats it! Watch it go by quick though.. :(', 'All of my friends are asleep :(:(:(', '@triassy yelaaaaaaa :(', 'Sooooooooooo tired :(', '@espresso_based is that you? what happened? :(', 'want to sleep but not tired :((', 'Home time today for me and @ASTownley :( #dublin http://t.co/EZRfqqlzXc', 'Someone have a harry potter marathon with me :((', 'tbh i miss you :(', \"I don't know how to find a balance :((((\", '@THESCORCHCRANKS WHY DO YOU HAVE TO UNFOLLOW ME?:(', \"Want a big hug.\\nWant a sweet smile.\\nWant a warm eyes.\\nSince this moment I can't have it.\\n:(\", \"@ForbiddenPlanet @ValiantComics @MyZombies Would so love to win! Can't afford to buy comics at the moment and I'm pining for them! :(\", \"@teamkins Oh this isn't good to hear :( What have you been asked to provide exactly?\", \"@lancepriebe Is there any chance you could add a keybind feature to Wild Warfare? Because I can't change my controlls so I can't play.. :(\", \"Been diagnosed wiv Scheuermann's disease.......back bone rlyhurts howdo u do it georgesampson cant stand da pain can't do P.E :( x\", '@ManasRM @AnjariaSameer @Airtel_Presence where is #voice signal? Not able to make calls :-( http://t.co/iF9jbN3cgm', 'What do we reckon are the chances of me seeing any #T20 action in #Taunton tonight??? *hopeful but realistic face* :-(', '@z1mb0bw4y and 2 weeks of vacation, which I dont have... :(', 'i love you :( http://t.co/1q9EZyGWXI', 'ugh im so excited for made :(((((((((((((((((', \"@kohquette you're good and you should feel good!!! :(\", '#JusticeForSandraBland #SandraBland this is disturbing just shows the poor women was already dead in the mug shot :( https://t.co/K17rqTUbeH', 'sick of this feeling. :( i just wanna be happpy', \"justinbieber can u pls follow me on >daianerufato< i've been trying for too long :( ilysm bae! xx (July 24, 2015 at 07:34AM)\", '@ManLikeSergio Delphy Injured :(', 'weak at dom :( DOM TECHNIQUES?! https://t.co/5WyrdvjzSf', '@jaimelesgyozas ah mince :(', \"@BAP_Bangyongguk I don't feel good :(\", '@LuciHolland I completely forgot about Final Symphony :(\\nNeed to meet up again sometime soon with Joe and co.', 'Tbh me too but they now busy wth their concert schedule :( aisyhhh https://t.co/16pOubmvlX', \"@clunis_96 I haven't been eyed up since I started going bald at the age of 14 :(\", 'Only SeungChan cant get :( Aigooo My Riri', '@iainbruce not good :(', 'My original ticket was £19 :(', \"@Jakers787 depends on when I have a vet visit for sick cat :( I'll let you know?\", \"@jenxmish @wittykrushnic don't leave :(\", \"i don't wanna get up :(((\", \"@elyusia i can find most major people EXCEPT his VA\\n\\ni'm not sure if they just kept it same as luminous but they didn't do that in kms >:(\", '@countrychoiceID min follback :(', '@martinamegia_ its been treating me horribly ugh :( im v happy for u !', \"@kristikay13 Good morning! Hope it's a productive one for you. Time for me to get ready for work. :(\", '\"zayn\" starts with a small letter Z. Why? :( @Real_Liam_Payne', \"@lifelesscurves they're really unique and refreshing :( the popularity was great too. Just why...just why >_>\", 'Once you start loving someone, it’s hard to stop.\\n*Bebeeeee :(', 'CHEM LT WAS NOT NICE :(((', '.@sabal_abla @tanha_messiah Because people who point out inaccuracies in jokes might be inaccurate jokes. I got worried :(', '@DarkSkinnedToni burning rn like this is so tragic :(((', 'I woke up really hungry :(', 'I love Joy :(', 'INFINITE GOT TO WIN >:(', '@PlanetRockRadio Sam I have seen rush 19 times. Would have been 20 in Toronto until my flight was cancelled on day of the show :( stuart', \"Party's goodbye stage :((\", \"Iyalaya to anybody that would laugh at me today. I'd just have to wear my shades round the clock.:(\", 'What is this ??? #ZaynIsComingBackOnJuly26 :( ;(', '@godstalia aw fuck that sucks :((', \"@sianyw As if he wouldn't be happier here running around my house wearing a H&M shirt. :(\", '@Mars_Sum41 noooo :( goodbye fun driving', \"I'm bored :( this one ubusy le fifa -_-\", '@lorrainepalileo @cailaaah i wanna go gymnastics with you guys :(( haha', \"I'm so sick aahhhh i hate this feeling :-(\", 'Ok, back to work :( http://t.co/QFtLZ2Cl0w', 'My poor noggin! Bumped it a few days ago and it still hurts a little. :( #feelslikeanidiot', \"I'm forever eating like Pregnant woman these Days :-(\", 'Ugh :( My head hurts.', 'i dearly miss and love my sunshine @zaynmalik :-(', '@PatelPatelxx @Starbucks can suk ma buttttttt. except their pumpkin scones.... but they havent made those in years :(((', 'love outnumbered so much, wish there were more to watch :(', 'vidcon :(((', '@ErisLovesMovies :( Feel better soon, Eris. #support', 'Hello ;3 geez.. i badly miss my 12 precious stars :( EXO<3', '@Beyfan1981 @HateTheseFools Yes Hive always sucks at voting... that is shit :((', \"They said #GOT7 will back to #VIETNAM this december !!!!! I DUNT THINK SO AWWWWWWWW :(( DON'T KID ME !!!!\", '@marmaisxcz IKR :( lol', 'can you hear my sobbing :((( http://t.co/Daoz0uAQGC', 'so cute :( http://t.co/hhhWQQ1Nh3', \"@sociopathslut @onikashabibi but why don't I have buff legs yet :(\", 'noo toni deactivated too?? :(', \"Bra Shady's kisses though! :-( #Isibaya\", 'this place will forever hold a very special place in my heart :-( ❤️ gonna miss you Germany 😓 http://t.co/fwDwYoVEPV', \"Haven't really slept all night :( I'm in a different place where it's a little colder. Hopefully that will help. Took some meds\", \"Leaving for the airport soon :( don't wanna go home.\", '@clemencycox i want a sausage roll :-(', 'Rain rain go away :(', 'work adios friends :(', 'I have a cold sore :( ew h8 this. Help', \"What's wrong with my fb messenger :((((\", 'I wish my band were shittier so we could get booked on Leno :(', 'Identity crisis :(', '3:33 am and all of my roommates are officially knocked out :( so much for an all nighter', \"A bird just flew into the window and now it's dead :-(\", '@damnkathleen come thru b I miss you :(', '@XxJenniferAmyxX Derek likes to tour & visits Wetherspoons Pubs across the UK. Get Police to contact their H/O. Hope he OK. :(', '@LittleMix PLEASE FOLLOW ME :(', 'Even had a dream that Frank Ocean released his new album ffs pls :((((', 'Snapchat me : LisaHerring19 #snapchat #kikme #kikmeboys #woman #ebony #weloveyounamjoon #sexi :( http://t.co/zVTYSy29uk', \"Don't know why I gave my white dress with small polka dots away :( 😭😭 *sigh* ndi hacked.\", 'I miss my baby :-(', \"@HerFaithness it is & I'm already having a bad day :-(\", '@erinaree It was SO yum but I had to feed 6 so no leftovers :(', \"@dullandwicked @_GrahamPatrick @JohnBoyStyle Has nobody told you about this side of twitter? It's in the T&Cs. He owns you now. Sorry. :(\", 'The last dick pic I got was awful. It ruined walnut whips for me for life :-( \\n\\nI also named him and it turned out his wife followed me.', '@Vicionius Boah! :(', \"Things are hard right now, & I can't even be home with Mady to help me through it. :(\", 'i am so :((((((', '@EpicRaver I know :(', \"@NatalieH__xx aww no but it's my last semester ever!! :( we def have to catch up sometime soon. We always leave it too long\", 'This manga is just too cute and yet made me cry.. :( http://t.co/KB6GswBxMT', '@LouiseMensch Just like that here at the moment....not. :-(', \"I ate all the leftovers of the giant #AmINormalYet cookie for breakfast and now I'm clutching my poorly tummy in my PJs and groaning :(\", '@ghinesaddi miss you :(', '@_stroya nou youre not :-( here have a picture of Adam http://t.co/WEvVpVoAmx', '@sinSALEM this is a very sad moment :(', \"@lukelegs69\\rthat wouldn't be right :((\", 'Ken Saras. Waiting for my sister. She was in accident. So poor :( https://t.co/44TvKaVDCJ', '@Rorington95 did they manage to sort your ticket issue mate? Nobody picked up when i rang the box office :(', 'Fk!!!!! I have no freaking words to describe this.... Eric Prydz How? like how? :( This is out of the world!! http://t.co/W5uDTzdhAi', \"Not 12 hours after my sister-in-law installed that new @DionoUSA seat we bought her she was rear-ended! everyone's fine but seat is trash :(\", \"For the first time in my life I've had to hold my boobs whilst running down stairs, is my no bra life over :(\", '@ljenkins314 @fringenerd @Noin007 I like paper books :(', '@SensodyneIndia we friends love to eat ice cream during childhood. Missing those days :( #Toothsensitivity', '@father me too :-(', '@Belinda_Factor stressful :( you not even my dress size ke shem..', 'Trust me to be no well :( Awell not be long and I will be to drunk to care #weekendofmadness 🍹🍸🍹', 'i really like this cb but not the outfit this time too bad :(', '@lucyreesxo She threatened me :(', 'i wanna be a dancer \\nno\\ni wanna be a choregrapher\\nbut \\nI CANT :(\\nwhyyyyyyyyyyyy is life so unfair', '@KittyKatPK happening anymore :(', \"@curiouskittten didn't even know you still existed on here haha text me :( 626-430-8715\", \"@subharrie @roguefond i've messaged her but she hasn't replied and i dont even think she's active on facebook :(\", \"@MlREU but i'm at work you hoe xD i can't even look at bby in peace :(((\", '@suziepanol WHY DO THAT TO US :(', 'Well it seems like just a dream :(', \"Dream team recording today :((( im sad xiu couldn't make it :(\", 'Nk gi uss on birthday :(', \"@HollieB awwwwww, I'm so sorry to hear that :(\", '@ElisseJoson miss you so much ate elisse :(( do u still remember me? 😭', 'i miss them so much :(', 'ksoo makes me so emo :((((((((((((((((((((((((((((((((', 'Wat a small session tat was :(..but still im little happy bcoz for the first time i heard my name from @rithvik_RD..but still too short..', \"@Doomcrew_Glen awwwww i'm so sorry. :( i bet she's looking down on you<33\", \"no matter how many times i try to sleep... i can't :(\", '“@shakyra_cledera: \"paper town\" :--((((” sm :(((', \"@wittykrushnic don't go :(\", \"I'm going to miss you baby! :(( @ Rancho Imperial de Silang Subdivision https://t.co/b5JvTqpm4N\", 'traffic :-(', 'Twitter Help Center | Why can&#39;t I follow people? https://t.co/LeL2yOp3Iq via @support i really really sorry about following evry one :(', '@franksredhotuk Its not hot in Cornwall! its veritably cold :( great prize xx', '@hancoverdalexo aww :( thanks anyway!!', 'Regular gym workouts are so boring when you could be spinning :(', \"I can't do it anymore. I can't have stress on my body yet my life is based upon stress I just can't do it :(\", \"@ManOfZinc And I don't see a penny of it... :-( DM me your email address; I'll send you the ebook.\", 'Фотосет: addicted-to-analsex: sweetbj: #sweetbj #blowjob Mhhh, want to make a man happy now :( http://t.co/v9ryND7pcs', 'im sed.. :-( the person im meeting is late and im at the other end of sg and i havent taken my dinner yet bless me', '@willing_h I feel left out :(', '@mblaq_seungh0 THEN WHY MENTION MEE OMG /envious/ please oppa eonni stop lovey dovey in front of your poor single dongsaeng :(', \"@ShannonEastwood I'm workin :( got a day off Tuesday tho haha x\", '@ulaaaaa1909 Schade :(', '@CuddlesAri I am gutted! they NEVER do m&g for Belfast :(', '@klentmagsino im so jealous.. :( because you followed each other with Jacob @JacobWhitesides .. follow me too. Jacob :(', 'isco :(', '@ImRefleex my penis is too small :(', 'omg me every fucking month... :( https://t.co/FX0CGVPDMX', 'I wish my dog liked to cuddle :(', 'Come on Carlton :(', '@MOONEMOJAI babe :( can u still read thru the conversation on ur hushed?', \"Sometimes I wonder what went wrong :( guess I'll never know\", 'And more violence... :( ...we are a Soul Sick nation...praying for Louisiana.\\n#Lafayette #matteroftheheart #peace', 'waduh..pantes :( https://t.co/AWS63BItZA', '@keelzy81 you know, I actually got suspended for smoking, can you believe it? Teenage me was such a fucking cliche :(', 'Already miss @mikeyyfontt so much :(', '@BocasSweets I miss youuuu :((((', 'Today #RMA jersey :(', '@ButDinero your so fake I texted you :(', '@Earl_Wolf24 not you :(', \"♥ [ENG] ♥ - Let's talk, since can't stream games :(: http://t.co/bkNxSZfjm6\", '@RuneMagique chance :(', 'Snapchat me - JaclinTiler #snapchat #snapchat #teens #models #likeforlike #mpoints #hotfmnoaidilforariana :( http://t.co/xxuygooKcq', '@superslothjai hi, can you do me some dms with luke please??:(', '@AmandaT_Photo @OandtheFoxes really wanted to but ran out of time :(', 'i hate waking up in the middle of my sleep :(', 'he he he :(', \"@rupexo @LordOfTheMics fuckkk it's a Wednesday :(\", '@PetiteMistress DO IT! I want to start one for making small games, but I feel like I need to get a jump start before asking for support :(', 'Justin where are you ? :( @justinbieber', \":( :( I'm gonna cry\", \"@IanHallard @ArtsTheatreLDN I'm really excited but also really sad because once again I won't be able to see it :(\", \"I can't finish my Sanum today! :(\\n#LLAOLLAO #Dessert but too full\", '@jxstkatie @TheSvante i want foood :((', 'Last day :(', '#UberIceCream was super! But we didnt get the glares :( @Uber_Pune', \"@ffyeahh i don't know how to do vines :(\", \"@selenagomez you was Tweetin earlier this morning & i wasn't here :( sad mood all the day :(\", 'sunggyu has a plaster on his elbow.... is it from the fall? :-(', '@ughimnotsam i am in the middle of figuring out how to choreo :(( next time girl!!', '@Afooo93 😭 this is me thinking she was well offensive, how can you laughing :(', \"@NEEDTOBREATHE love you..sad I wasn't up front :(\", 'YEYY finally but my HD brows kit is broken slightly :(( @cohorted http://t.co/5CNhhfJpnJ', '@alexandraloisee Monday until wednesday, g na girl!!!! :(', 'Babe :(', 'I miss everyone omg :( school sux :(', '@gelcababa enjoy :(', 'Add my KIK : nothaveld765 #kik #hornykik #edm #sexy #likeforfollow #hannibal #camsex :( http://t.co/EHtsuDdRuA', 'new mosquitoe bites :(', '@CRMDKS are you into kinky shit--- we hsould justget married already : (', 'really dont wanna go home today :(', '@Idamelatim you la :(((', 'when nothing like us comes up on shuffle :((', '@notch hmm. I have been thinking about getting one for a while. Might get one inte future. I really miss buckling springs :(', 'Ah Millz askies :( \"@_Millzxy3D: so you come back and awusasho ? :\\'( @Nessa_Mbeki\"', '@sainsburys guys a really unlucky one. The driver and I briefly checked eggs but my other half spotted this : ( http://t.co/WpCqJHhBVk', 'Tired :(', 'im greatful that i can still see u despite of 144p :(', \"@pikaiba I LOVE BROOKE I'm just concerned cause his face is all cracked :(\", '@maverickgamer_\\u3000July 24, 2015 at 07:32PM \\u3000:(', '@maverickgamer_\\u3000July 24, 2015 at 07:25PM \\u3000:(', 'Bored to the max rn :(', '@tudipa Sorry that manage files on external SD card via AirDroid is not supported now (Android 4.4+) :( Google has restricted that.', '@fkluca u are so cute thank u :(', \"@MICHAELC24H it's alright... cramps are killing me. :-(\", \"MAYBE IT'S WRONG TO SAY PLEASE LOVE ME TOO </3 :(\", '@blockedmefat dont unstan tay :( never please', \"@Sibulela_M only white things I have ngeze turn up :( for all white parties I've been to. Have nothing cocktaily and classy 😭😭😭 so stressed.\", '@wbuharryy i love you :(', '@maverickgamer_\\u3000July 24, 2015 at 07:24PM \\u3000:(', \"I don't want to be stuck inside all day :((\", '@cmonlukey all of them :(', '@BeardOfTsu @LucasWeatherby @ChrisJLatimer @Alex_AMS96 it came crashing down and it hurts inside :(', \"✈️2 days and I'm back in rainy UK :-(☔️\", \"@peterpalmer52 Hi Peter, We've not had pens for 2 years now. We just can't get them. There's not even spares in the office anymore either :(\", '@Biblioticaa I got delayed by guests. Sigh :(', \"@riseagainst why you don't come to Barcelona this year? :( won't be able to see you in Madrid or Bilbao...\", 'I hate Japanese call him \"bani\" :( :(', 'wish I had a nice booty :-((((', \"Who was next?? Oh yeah Sharyl! Currently don't got no #Shane ta call my own :( http://t.co/mOZlqwvvq0\", 'all of my favourite people deactivate :(', 'I want to dance rn :(', 'im still giddy over d1 :-(', 'his smile is so beautiful :( https://t.co/OiAHorQJOb', '@heidsbland @asos95 yes, after 11 days. With a broken zipper. Broken beyond repair. :(', \"@seanactual You mean you're not offering? :(\", 'Saturday Classes! :(', \"@EE I'm bad and kind of want an IPhone 6 but account says I can upgrade April 2016 too far :( *cont\", 'You need to come back to England....:( @MacHarmon', 'JAMES wore this in my meet and greet :((( http://t.co/MS60gaiIce', 'tempted to eat this whole pack of oreos. need to find the strength not to do so. :(', \"When there's free Wifi networks available but they ain within range :(\", 'Need ice cream, lolipop, chocolate, kebab, klappertart, cake and need moodboster !!! :(', \"Have a shoot tomorrow and haven't been told where and when because the team are only flying in this evening :( \\nI hate being unprepared.\", '@gala_con Sry i have a question , where does the dresscode count , because i dont want to stand in front of closed doors and iam confused :(', 'Oh my god :(', '@_CaitlinTierney dnt stab meh :(', '@biebzzur wrocilam :(((', 'o otp :( http://t.co/EVislmNp5V', 'Hoping that this is real :(( #ZaynIsComingBackOnJuly26', 'Have work in 5 hours... :(', 'all time looww(:(', \"@Jamie_MARIEbear I've literally just recovered :(\", \"@haywayne Hi Wayne. We're sorry to hear you're looking to leave :( What's happened to make you want to go?\", '@leighannajohns1 Oh no :( Insurance is for loss/stolen or accidentally damaged devices. Warranty repairs are sent to our repair centre.', '😂😂😂\"@Danny_boym: Lol 👌\"@sick_fruits: :( @_kydd_que: LMFAOO..So Accurate!!! http://t.co/k4daapzfUz\"\"', '@angelhairhes Please Fra i am hoping u can pick me :(', 'off to the airport :(', \"Alive and got to spend more time with Harry and got to tell him stories about James :(( I'm really sad :(((\", '@Hayles_101 Dont say that they might steel Otamendi :(', 'goodbye ny :( 🚖🗽🌃 http://t.co/uNorqB0mlK', 'awww, STealth Bastard 2 is named STealth Inc on steam too :(', \"Therapy was so exhausting. \\nI just want to lie down somewhere but I can't. :(\", \"@biobio1993 Don't worry! It's understandable. :( I mean, I totally get why some people block others & that's their choice but sometimes\", \"Finally ! I hate it that Switzerland doesn't have a KFC ! :( http://t.co/U1ZU4OOuxV\", 'the most common lie in th wolrd is..\\ni m fyn :-(\\n...', 'No drop home for me today :(', '@MmeNazty oh no oh no wrong end of the state :(', 'I genuinely keep having nightmares about results day Fam :(((((((((', \"@robinpatrickm why won't he talk to me :(\", '@Cas_Audio noooooooooooooooooo. This cannot be a thing. :-( :-( x', 'ok im going now if i have wifi or 3g ill be on but for now bye :(', 'Good luck :(( https://t.co/39G210gq4y', \"@zoellaftmendes i'm gonna miss your tweet in my tl :( always here if u come back!\", 'I smile to hide the pain (: :(', \"@NotFaulty Christ, what's with the scale on those deck chairs? This art is killing my head, man. :(\", '@Kimberly_171 aw yk i wish i could :( , go to sleep babe you need your resy', 'Pray :( https://t.co/T1OVu6r9wT', '@perfect_st0rms omg nooo you should have said hi! :((((', '@GabyWhittlenew no way!!!! Aww :( such a funny time that', 'My phone is so shit, it always runs out of memory :( ...2 many nudes', '@LimarDotA bruh :(', \"nooo :( I wasn't prepared http://t.co/4sZYb7zFwv\", \"@critalks @batwife sorry :( I'll let you know if I see any ♡\", 'Locked out my own house :(', \"@LaraKBaker Great view! It's a shame about the weather though :-(\", 'sold out :( https://t.co/QtC9tfSPQU', 'I just wanna sleep :(', '@thevinnythepooh @jefflacs been praying that for years, but to no avail :((', 'fbc is messing up :( dm? @blueberryjham', '@daftatonix I thought we were friends :(', 'Add me on KIK - mork873 #kik #kikgirl #kikhorny #snapchat #addmeonsnapchat #premiostumundo #hotspotwithdanris :( http://t.co/r5fMnyWyUf', '@thnksfrdllnwks I KNOW :(', '@IKILLSNOW okay :(((((', '@GuadaSSanchez YOU KILLED IT :(', \"@mz_chocl8bear dude I didn't get the dm :(\", 'At the hospital :(', 'Food poisoning again! :((((', 'Sone produce from my Potager...my tomatoes have blight :-( Big changes for next year.', 'This was in Sheffield :( I miss him so mych http://t.co/kgpUCPTdAx', '@nichotine_ but the dress is pretty :(', '@beigemarauder shiiit :( so sorry', 'IM NOT SCREENSHOTTING IM SO PROUD OF MYSELF :(((', \"most of the prompts being claimed so far are kinda... like i've aready read something similar :( soulmate au, canon... zzz...\", 'How careful do you actually have to be with a black box? :(', \"Well summers over then :( knew it wouldn't last we do live in Britain ☺️😂😁 http://t.co/GKFgw0Khy6\", 'Moodboster :( @febrianadwita mana?', '@trcpqveen i love you, my lil baby :(', '@monaarcmunoz. Please :(', 'Need to finish all hws ugh :(', '@MartinaSancehz Jouch. Por que? :(', 'liceooooo :(', '30 minutes and counting just to pass through the EDSA AYALA tunnel... And am still not completely out. :(', \"Very upset that @Uber promised us free ice cream but didn't mention it's only in city centres #ThatsCold #UberIceCream :(\", \"I'm still awake :( feeling like I need to delete 80% of people on my snap.\", 'my group for Lourdes does not bang:( why :(', \"@eleena_pv @apuchades I'm sorry :(\", \"@choivernope why not? :( yes I'll stream~\", \"Rain like cats and dogs..... Can't go anywhere.. Water on the road everywhere.. :(\", '#Showbox the only thing that works is that naruto cartoon lets keep fingers crossed this isnt the end for our favourite work companion :(', 'My face is so skinny in that picture omg :( why did i get fAt', 'I can barely feel my under boob :(', 'zzzz missed my stop :(', 'Take me back to Dubai :(', '5SOS Calum5SOS Luke5SOS Ashton5SOS I bet $20 to a friend that you will follow ✧。 Chelny 。✧ Do NOT disappoint me. :(', 'The night when everybody starts to remember they have homework that is due tomorrow... :(', 'Bad news My Laribuggy... :( BUT I know one of the top10 was injured & has been on medication, so... https://t.co/iEbaTUv6sW', 'When you have to make do with no nutella :( http://t.co/gm5Q0AProo', \"And he didn't even get to spend much time with him :(( and he loses him, I wish anything could've happened if it mean Sirius could stay +\", \"BECAUSE THAT'S YOUR GOAT MINO : (\", 'didnt took photos with you :-(', '@ARGA_naut frudging cant chill :(:(:(:(', \"@irisharry_ Awww no :( I didn't mean to make you sad! - Mike\", '@wydbaylee i just need to put on some clothes n stuff n then i can be right w u to do stuff for u :(', '@Rhianne_97 can you believe I actually just went home and sat about for half an hour and went work, I lost the numbers to ring anyway bbz :(', 'Aw :/ Angeke sbali! \"@Ami_Khang: Euuuwwww @Andile_SS Lunch. Like a real construction worker :-( http://t.co/1nPlTqukIY\"', 'Can you guys help us reach 1K? \\nIt would mean so much \\nBecause if you do, we will do our best to give Harry Styles solo dm.. :(\\n\\n-Nelle.', '@jasminew0w Ik come take care of me :(', 'i miss you to death :(( @SMtajanlangit http://t.co/7Hal7PTTAN', '@ItsMeCindyE i miss you :(( hahaha', 'I need to sleep... :(', '@ImJoanneT ah jaysus! :(', \"@jimmehy2 @WWESuperCardFAQ Who's jealous? This guy right here! :-(\", '2 people are dead :((((((', 'I no longer like toast :(', '@jenolixx i hate it, insecurities go away pls :(((', '@notakimchi @LexasArmy but.. buti thought ure my poop friend :(', \"@cuffyochickenn 😭 there's just no love anymore :(\", 'Why the most Gorgeous, sexy, hot, amazing angel @angelcandice aren’t still shooting in Rome? @victoriassecret :(', 'Bad throat and now a cold too :(', \"@LanaParrilla because you don't like me :((\", '@_eshaaax I missed youuu too :((', 'Llama, are u sick? :( pls take care of urself #GetWellSoonAmber @llama_ajol', 'i miss you already :-(', '@FercanY @BenjaminHarvey Rip Heath Ledger :(', \"no more of being 'high all the time' :((((((((((( this is v sad\", '@RealKrisTravis it came crashing down and it hurts inside :(', 'Now if only it had an app... Stupid Apple, not giving apps permission to do that >:(', \"i can't be there for you anymore & i'm sorry bc of me , you're not yourself anymore :-(\", '\"@aula_jr: @Jude_Mugabi I\\'m watching it. 2-0 Madrid leads.\"\\nSupersport ain\\'t showing it :-(', '@monifizzle hahah no boys came for my milkshake :(', \"Haven't played Witcher 3 in two months. Exactly! And don't really feel like going back. Wish I'd fallen in love with it. :(\", 'I wanna watch papertown again :(', 'Bale :(', 'k dots. :(', 'i dont want to come home :(', '@mcbride_alex sad times im gettin ready for a 9 hour shift :(', \"I mean i'm drunk in México city. :(\", 'very tired :(', '@roguefond @solarfIarefic i miss her too where is she :(', 'Did you play Bahay Bahayan when you were a kid? If yes what is your... — Yes. Pero magisa ko lang :( #Sadlyf #Bunso http://t.co/On2ijrtaxY', 'someone take me to see inside out please :(', \"Y can't I sleeeeep :-(\", 'babe :( http://t.co/waZjxi7TQa', '@scfcjase sorry I want to write AstonVilla . :( But Berigaud and Bakar are very good choice for your club.', '@roguefond me too :(', '@crazynovely Not today dear :(', 'How sad what happened in Louisiana...:(', '@MissRoosj please do it <3 nobody streams this game for me :(', \"I'll so busy with school :((\", 'I just watched a video about a girl being \"allergic\" to the sun :( that\\'s depressing', 'They playing Blaine\\'s acoustic version of \"Teenage Dream\\' excuse me while I cry :(', '@bowserrh got a hernia :( in pain!', 'IDK how many of us are being \"doctored\" with this toxin. when will we have the freedom to go organic :( https://t.co/LGCx3ifqC7', 'I got in my feels and Ariel body slapped me literally body slammed me :(', 'There were so many bees :(', \"@jlawrencly @homemade @sainsburys I'm not staying home :( I'm going out at 3 my timing so maybe when I'm back?\", 'Unknown Feelings :(', 'so hard to not have contacts and you want to talk to people :(', '@KBedders @guardianmusic oh my goodness this made me so sad :( #finddjderek', 'That guy smells very uuughhhh. Grabe ka power :(', 'Wheres my gf :-(', 'She must be very tired :((', '@DefianceGame Poor bastard :(', 'James_Yammouni I bet $20 that you will follow ✧。 Chelny 。✧ Do NOT disappoint me. :(', 'i smell like you :-(', '@altontowers The Smi.... oh wait... :(\\n\\nJust kidding, Nemesis still rules!', 'I know :( askies \"@Titus3D: @Nessa_Mbeki hai that\\'s what u said last time\"', \"@biobio1993 ohh. :( well, you know where to find me if you change your mind. (but maybe it's not even someone I'm close with so... xD)\", '@feraltwirler \\nDoesnt sound appealing :-(((', 'neeeeeeeeeeeeeeeeein! :(', \"@harryetlou louis' lil smile im so saaaad :((((\", \":( :( :( when pay day doesn't make you any less poor :( :( :(\", 'Not seeing her for 4 weeks :((', 'Like it was hanging up why havent the creases \"falling out\" of it:(:( so sad', \"homed & omg I'm so tanned!!! :-(\", '@kbreeezy__ :( and nope haha she flies out of Dallas', '@Emma_Nichols90 supposed to rain on the weekend too :(', 'ya i did :-( https://t.co/peQqNxkDj0', '*walks infront of beato*\\n\\n* was called \" tim!!! \" 100 times* \\n\\nFAMOUS BROTHER PROBS. :((', 'We had a minha for like a day :(', '@thefreejinn @Blush_Channel deleicious food followed by sound 8 hrs. sleep for which i never get time :(', '@lawrenceispichu yeah :( and always here! 💕', 'at the airport :(( http://t.co/la1iwsZj52', '@court_skinner12 @influenclifford @Arianas_Bliss he blocked her on Twitter :(', 'leaving pcb :-(', 'Final ep of GoT, here we go. :(', 'Seen 2 peregrines today 8.40 one had pigeon in its feet so lucky to see them again! flew over tram stop but didn,t hav phone to take pic :-(', '@jeffer_jen @LloydPfc nope but just had another check today and I have a hernia :(', \"guess who's spent half an hr sitting outside her apt building bc she left her keys at work?\\n\\nI hope someone needs to leave this bldg soon :(\", '@camerondallas too hard to get a notice from youu :((', \"@RichelleMead it's being more than enough since you wrote the dark swan series, won't you ever write a fifth book? I'm dying! 3 years now :(\", \"@theemilygrayxo Mmmmm if i wasn't at work i would babe :( X\", '@imNadies I need my avi dude.. :(', 'so alone :-( http://t.co/R6kMtPHPF4', '@NICKIMINAJ nicki follow me please :(', '@russophobes :( fucjikg disgusting', \"#BuyNotAnApologyOniTunes isn't avalible in Denmark :(... Could someone please gift it to me? im frustrated\", \"@maddylovve_ @kriseldagarza no she's talking about me lmao :(\", 'my throat hurts like hell nw :-((', 'first day of sch and i miss sharing a class w jeslyn already :-(', '72 and counting. :( http://t.co/9xWKegCy6W', '@Techverse_in i was rooting :( kuch nahi hua', \"Terrible day. I've been bitching at newbies trying to get them to think for themselves & search for help. Only one gave me crap about it. :(\", '@byunboobs come back :-(((((', 'I really need a miracle happen today :( \\n4th win please..', \"@mikecom17 Oh that's not good Linda :( Have you tried clicking on the option to change the pin?\", 'Craving chicken wings :(', '@phillyc13 :( love you', '@Uber epic fail on the #UberIceCream page wont even load :-(', '@andylimko thank you sa bracelet. Ang ganda!! :((( 💗💗💗', '@NinaBejar nux hinanap ako! Yes, told ya I have no load :(( uy check fbc grabe my sched anyare', 'Co “@AusiDineo_: I would entertain such tbh \"@ImKhweziN: \"Hey, remember me?\" typa weather :(\"”', 'Any twitter buddies able to do a 5 minute transparency job? I am shit at photoshop :(', \"Still haven't decided how I want my name on my planner :( Please helpppp\", '@DJEternalRefuge I WANNA TAKE A SELFIE CAUSE IM WEARIG DRI BUT GOT ALOT OF PEOPLE INSIDE THE BUS :-(', '@EmperorJepp yeah, they are just the next prey :( poor girls', 'I feel so gross. Like sick. And my tummy hurts. :( I wanna go home. — feeling drained', '@morealtitude #ausfailia haha! I am missing out on snow :( & live footy. But flight gets in day before the game that counts,2nd ye in a row!', \"m&m's and kitkat please :((((\", \"@R_steeez12 really sad I didn't get to see you guys on bday :(\", '@casterogue @KristineMayor :((((( no money 😩😩😩😢', '\"@hallarkd: @haxllaark @hallahup_ @pxleehalla @hallakuma @hallashi guys :( http://t.co/gXI974Xj63\"saoloh -_-', '@AlexandraBjelk suger :(', \"Olivia can't read oh my god :( #b&s\", \"@SeaveyDaniel I've been supporting you since the audition of american idol and until now.. ugh you still don't notice me :(\", '@JoshTheFiend but I am a virgin. :(', \"@Jeyneus I'm used to foot injurys now lol .. My appendix burst a while ago so it's not appendicitis .. They just told me I have a hernia :(\", \"@gotshinee yeahh :(( but it's so hard esp. they're not doing well on digital charts cries\", \"@SWlZZ well ... Fack ... looks like I won't be able to touch NHL 15 ever again :(\", 'Hays :(', '@JamesRussellFFC @Stormzy1 no g i cant afford it :(', 'I really miss you :(', 'praying for you , KHAMIS ... :( ... https://t.co/cX9MmWnRA4 #Kadhafi', \"I wanna go to my favorite spot & watch the sun rise but that's all the way across town :(\", \"ugh I reaaly don't know what to do. :( -ja\", '@thenomimo Sorry for the delay Naomi :(', '@hannah_arias modern contemporary... thats why :(', 'i messed up big time :(', 'Looking for fun? KIK : slacke565 #kik #kikmeguys #blonde #kikchat #sexy #mpoints #kiksexting :( http://t.co/LReixn2h5o', 'Jahat :(', '@Kimberly_171 my poor baby :(', 'I would entertain such tbh \"@ImKhweziN: \"Hey, remember me?\" typa weather :(\"', \"but, i know that i can't :(\", '@iamnonexistent oh dear :( that discount though!', '@harIeyyquinn i cant now bc im going thorpe park 5 days after my bday :(( but now idk what to do instead', ': ( the goats got scared of me', '@_payneourdaddy I miss them :(', '@FluffyBearsPS3 u never call :(', '@neon27164907 i left :(', '@EmmaLK Yeah I guessed as much. :( Hope they decide to play nicely for you.', 'esnho: Why the \"NODE15 - Advanced DirectX11 Shading Workshop P2\" is uploaded and removed? :(', 'Blackberry is such a shitty mobile :( #PovertyYouAreEvil', 'Help God :(', \"i think I'm getting sick :(\", 'Really struggling painting with my finger :(', 'Math test result :((', 'I love you, how but you? @Taecyeon2pm8 did you feel the same? Emm I think not :(', 'Ouch. That hurt :(', '@Red_Doom @Twymaan you lied to me :(\\nYou said you could t drink :(', '@Phonemast Ah must have missed that. Still no sign of any data network in #Elgin yet though :-(', \"HAY WAITING GAME AGAIN... WAITING FOR MY VAVA :( I'M HUNGRY NA!! @ebymcpgl\", \"@tinfinities oh no she isn't :(((( but yes makati!!\", 'One day :( 💛 https://t.co/QtJBLWWLhy', '@satabengdagat omg same baon ko for a week was soup and i would soak bread until it was mush?? :(((', \"I'm missing the game :( they'd better show it later\", \"I miss Matt and he's coming home 14 days before I do, so I don't know if he's going to be there when I get back :((\", 'Raining again :(', 'Is it September yet? I need OUAT back :((', \"oh well won't be going the beach :( horrible blinkin weather\", '@ianrobo1 Other than players that is :(', '@moontwink one of the best couples :(', '@StreetFighter Still not working :(', '@RealMichelleW unblock me on Instagram :(', 'headack badly tension eritation :(', '@endohope thanks for your answer! I am feeling so frustrated :( I will try to change my perspective', \"I'm using all my time just to chat with u but u don't seem like u want to chat with me :(\", '@harryetlou harry: \"so we don\\'t forget any of our songs to add to the wedding playlist :(\"\\n*louis endlessly blushing n batting his eyes*', '@prattmouserat poor kiddo :(', 'My Rumbelle feels are just too overwhelming... :((', \"Can't believe I still saw a lot of trash thrown irresponsibly during the Pakighinabi session. :(\", 'why not pinkfinite huhu :( #더쇼 #에이핑크 @SBS_MTV', \"@LBHCRM hi beb : ( i have a really bad migraine. sorry i wasn't on a lot today but i'm in a lot of pain : ( i'm gonna rest more. i love you\", 'so I was driving home rn and I almost ran over a coyote :( shit scared the fuck outta me.', '@ellierowexo in this weather, are you mad? & work :( 😒😒', 'Headache :(', 'oh my head #인피니트 save me :(((((((((((', 'my precious baby baechu :-((((((', 'Emotionally tired :(((', '@kitteninlaces aww, baby :(', 'I never see you @JackJackJohnson @jackgilinsky :( #CalibraskaEP', '@TotTeaOnah what r u talking about I still am :(', '@CyrilleeJeeff i feel yah :(', \"@KEEMSTARx yo dude. Fancy helping a fan out? I wanna grow a yt channel but can't purchase an Elgato :(\", 'no one wants to go to ant man with me :(', 'Expect the UNEXPECT ... :(\\n\\n#BESTFriend', \"@Saurabh_tri I'm okay.. Mom was doing well all this while but day before yesterday she fainted due to low bp and now she is having fever :(\", '@mxszwxrx \"all along it was a fever, \" :(', \"So apparently it's no shower friday at the subway and no one was kind enough to tell me. Not cool guys! :(\", \"Please keep him in your prayers. He's very fragile. I can't even cry, I feel like I've done too much of that this week already. :(\", '@pagodane @HakubiRedwinter I know, right? sure, they will leave a huge gap in comic plots :(', 'last summer vacation with my family im emotional :(', '@DestinyNews_net Bungie not nice to us folk in the rest of the world. :(', 'Well I broke another Raspberry Pi :(', 'New shoes please :(', \"@dumplinghoya I've been wanting to change it to only woohyun one but sunggyu makes me feel guilty :(\", 'monica just went to davao. :( luckyyyy', \"Almost is not enough. Confidence is not enough. I'm not enough. Good night. :(\", '@Jae0409 cuz I thought we could ask team snapchat to make live for the concert since its last concert for EUNHAE :(', 'Crap!! I misplaced my phone. :(', 'i miss you too den :((( https://t.co/sIvKwcomiZ', 'I miss my baby dae and bap so much :-(', \"@yokotaso_modoki \\nI'm not good at Japanese likewise, either :(\", \"@_irwinstagram I'll give you Liam solo DM for Dylan :(( pls?:(\", '@BellsIsMine what happened? :(', 'will u follow me back again? :((( huehue @SeaveyDaniel', \"also u can't make rice krispy treats without marshmallows >:((\", '@seungwannabe take care of urself :((((', \"My body is srsly so tired but I can't sleep :-(\", '@jenalive11 @TonightAlive and me :(', '#Birmingham #m5m6junction heading to #soulsurvivor15 #stafford slow progress :-( http://t.co/seHTxVttAe', 'idk why I think my follow is a gift :(', \"@practicallyhaz same :(. now it's a mixture of being so proud of them for how far they've come but also missing those days :(\", 'Ang inactive ko. Shems :((', '@TheOGB @plasticniki @iggigg @J4PE5 dude, watch the language :(', 'The state of my hair :( http://t.co/wnODE8EZzI', 'i miss someone :(', 'I wanna watch Paper Towns!! :((', '@glennlondey @CarltonFC looking that way :(', 'Practice sad lage :(', 'GUYS add my KIK - ramd #kik #kikme #talk #lesbian #oralsex #video #sexual :( http://t.co/Ty5Uar0Rmy', '@VMilas dont really know sorry.:( try opening in paint and save as.', '@CatWormstein Youre getting famous :(', \"It's my last day working with the munchkin today...:(...bought her a little parting gift...so far… https://t.co/0xSWksXs2t\", '@Aimeemuthoni I miss you :( Still in Juja?', 'Short Talk! Last Day Of Beach :(: http://t.co/sStJosDrNZ via @YouTube', '@rinshilah i asked Mr Murugan, i hope he handles the trip this year. If dia reply i bgtau. Yeah i wanna go too :( i harap my mom bagi! Aminn', 'I also wanna go to the beach with my best fraand :( I might need a new friend before December so we can go on holiday 😬', 'i am crying here watching bigbang on my tl :((', 'i had steak a lot when i was younger and the fat makes me g*g :(', 'Sian ah where to go now anybody want to meet :-(', '@AndyFales @GustoPizzaDM I wish I could have pizza delivered to me at 5am... :(', 'whats wrong with my nose :(', 'Add me on Snapchat : NicoleaPage #snapchat #kiksex #kikmeboys #makeup #kikmeboys #free #camsex :( http://t.co/iVcyNmm8vP', '@NICKIMINAJ im trying not to fall asleep :(', \"@scottybev I'm not surprised, that sounds hellish! Why would you do such a thing? :(\", \"I'm thirstyyyy :(\", 'Bad dreams :(', 'but it isnt today :(( http://t.co/D0W4ts9l2l', '@loststhewar its kinda true :(', 'I get sad every time I think about it... Now I got chesties :( https://t.co/KcnI2lMB5J', \"Dad says he wanna eat Nando's for dinner tmr :(\", '@holyperrieeele i only gave you 22 because you have the rest???? :( i can give you a solo dm??', '@OhHeyItsAJ Bow down bitches to the queen of the world!!!! :(((', 'No one is brave enough to watch all my snapchat story :(', 'assignments :(', '@toriellis_xo hahah im not even joking :( you going MADE?xx', 'so upset hen is going to leeds and not reading, the RDD is dissipating :(', '@koolaidkiller18 no idea why :(', \"@BMACRM i don't know . . i'm sorry, let me make it up to you ? : (\", 'Getting pumped :( https://t.co/hb7eR51JdX', 'Capeee :(((', '@xjisoobelle no money :(', '@lyjenny_ haha its in Japan :( Sorry love!', '@GrudgeReinhold me too :(', \"@Ohioleh noo. he's a random person in my class :(\", '@chenonceaus @YoMadridismo we are young, we will outlive him >:(', '@katiemac49 Going for x-rays and a dental on Monday to check out her spine...nothing they can do about it though apart from pain relief :(', 'Popol day too :(', 'my stomach is killing me :(((', '@KOVENuk Aww. Poor frog :(', 'these are three of my favourite pictures i took of brad :-( i miss tour so much http://t.co/vlB3nXEDk6', 'LOOKING FOR GEN.AD. BETTER IF THE PRICE CAN BE NEGOTIABLE :(((( CAN SOMEONE HELP ME :((((( , HUHUHUHUHU #BBMADEinManila #FindaVIP', 'Photo: boyirl: :( http://t.co/DphfgsuG1i', 'Yasss. Still dont get paid til August 6th :( lol still got hella clothes though', '@HiddlesSupport So much :(', \"@Kellipage17 I've only been a fan of 5SOS since early June last year :( And I really hate that… I get so upset over it.\\nNot that my parents\", '@leiwaleyn @sophiasam013 miss you too laine :(', \"@ImJoanneT Ahh no what did you get done?? I hope you're okay :(\", \"i'm so tired :(\", 'I have a bad sleep difficiency :(', \"@SkyHelpTeam I have been a customer for 20 years. My Internet is no why near the speed it should be. It's so so slow :(\", 'I want to ESCAPE please :(', \"Yeah guys, don't b mean to rapists!!! They have feelings too :( :( :( :( not like they committed a crime or anything https://t.co/Ifwuz7Wl5j\", 'Bachpan Ki Yaadein :- Missing Old Days :( http://t.co/g3ytUH4nU7', \"@beckyeh sadly no :( i'm flying Finnair from Heathrow this time cos Norwegian was too expensive :\\\\\", 'Car batteries are so expensive :(. I hope I get a new life with it', \"@tyde_mobile @ProductHunt please don't ask for upvotes :( http://t.co/MT1tFymZGU\", '@zaynsart lucky :(', \"@llama_ajol eat and rest well :( you're too tired..\", '@yashatenshi not a fan of dogs but KEENO :(', '@gracegnolo WHATTHEFUCK they r sick. YOU ARE NOT GROTTY OR AN ATTENTION SEEKER. they have no morality.. KEEP FERN AWAY FROM THEM :((', 'Mimi is such a cute name but it feels weird when I use it as my name :((', 'mum left me and went bali for work :((((((\\nshes the only one who i talk to most', '@gunthercollier but i wanna go :(', \"I can't ever listen to @PARTYOMO the same again :(\", 'be back in my life :(', 'Loving someone way tooo much .. :( #whyyy', \"I said i'd fall asleep early today...yesterday??? But now i'm just really hungry :(\", 'SO MUCH EDITING TO DO. SO LITTLE TIME. :-(', 'pleaseeeee. :(', 'Brb \\nlowbat :(\\n#OTWOLGrandTrailer', \"I'm getting back into a funk.\\n:( ugh this sucks.\", \"@Uber the app isn't working :( #wewanticecream\", 'Sweat look omg :((', \"@sabfkhan @tyde_mobile @ProductHunt please don't ask for upvotes :( http://t.co/MT1tFymZGU\", 'Awww i thought it was today :( https://t.co/JK8xRlW6IF', 'Eugh :( not good weather at all! https://t.co/3NaRSAzIL1', \"@feltonbiebs Sara is, i still speak to her occasionally but i think Izzy's left twitter now :(\", 'Bored sa Dorm :((', '@yashatenshi OMG NO :-((((((', '@messiluonel still have one more week ffs :(', 'streams are just awful for me lately.... choppy and terrible. there is no point in my staying up, i have to wait for the YT video anyway :(', \"@howarth_83 Hi Paul, that's not good to hear :( Can you DM some more information about what happened when you contacted us?\", '@tv3midday Aw no.... was just about to switch over :-(', \"i wanted to stay up till infinite's win but it's 5:30am already :(\", '@MartinGarrix CAN YOU FOLLOW ME ALREADY :((', \"And now I can't sleep and I have to be at work in 6 1/2 hours. :(\", '@HeartYorkshire Hi,on our way home from Cayton bay with the kids. Had a great time but home time now :( emma jen darcey connor and Olivia xx', \"@VigourWhizzard we haven't spoke in ages :(\", \"Still can't believe I ripped off my nail :-(\", '@sachapeebles_ sorry it was just closest to the door :(', \"The biggest blue bottle ever has come into my room...it's his room now :( #roommateexperience\", \"he's so cute :(\", '@OloapZurc yup. i think so too. gotta avoid BB and IC. I really hope they have a repack :(', \"@5sos_solo PLEASE PICK ME IF U WANT MAKE ME HAPPY BC TODAY I'M SICK :(\", \"@motaspopsicle i don't know :(((((\", 'Could you please te the members to auto-followback me ? :( thanks @Junjou_RP', '@nogitsunerd thats bc im v asian\\n\\nbut im a girl :((((((((((((', '@Emo_Penguin4 :((((((\\n*sad puppy eyes', '@angelhairhes fra nobody want to give me a ljp/5 because its so hard to have 1/5 nowdays, pleass pick me? :(', '@pactcoffee Tried that but sadly no code attached when I try and sign up :(', '@LeanneHirst @3Yorkshireteers oh and our conversation was going so well :-(', '@Shannon_Rawrx I wish I was there with you. It would beat being home with a numb mouth after a dentist visit! :(', '@devoncarlscn GOOD. :(', \"@vedant_ag @ProductHunt please don't ask for upvotes :( http://t.co/MT1tFymZGU\", '\"Hey, remember me?\" typa weather :(', 'I misss you sooo muchhh :(', 'Iam fat :(', 'I want to back there :(', \"Am I really the only one who's annoyed that YouTube got rid of Music tab? I loved that tab :(\", \"If I get my UCAS email today I can't even get onto Track because it's down for 3 days :(\", 'i miss u bigtime!!!... :(', 'Just another rumor :(\\n\\n#ZaynIsComingBackOnJuly26', 'This woman just gave me the warmest greeting, w a chin tickle even, but I think she has the wrong girl :(', ':( ♫ Sad by @maroon5 (with zikra, Lusi, and Hasya) — https://t.co/1zKAnQbheZ', \"@_irwinstagram I've been trying for so long for a Dylan solo DM :(\", 'want chicken nuggets again :(', '@ilykmh soms lu :(((', 'City :(', '@angelhairhes please fra choose me this time :(', \"@DJ_Browning I'm going to the Olympic stadium tonight in the rain :(\", \"@indiaquinn I didnt see your/ millie's guinea pigs :((\", \"lewis has about 748292 songs we'll never hear :(((\", '@JoshMight69Her ur in LA :(', 'and ano 22stans :(', 'CAN SOMEONE WATCH PAPER TOWNS WITH ME :-(', \"@wayhomefestival security won't let us in, say we have to wait until 9...website says entry 24/7 for camping. :(:(:(\", 'Thankyou sa treat kanina and sorry sa breakdown bc of Sir Mags :(( @ZAIRERR', 'Hateeeee time apart :(', 'Me too :-( https://t.co/0jypXAWkx4', '@proflayla least not lease. Just posted without looking back for what I have written. In hurry to finish my lunch :(', \"First attempt at sizing up to 6g's was unsuccessful & now my lil earlobes hurt :(((\", 'A shame that Rock City worked on that. :-(', '@cpdigdarkroom worst news all day :(', 'Sad today is girls day goodbye stage :(', \"@peacemakeruk Yes, Sue. It is a bit dreary isn't it? :(\", \"@selenagomez noooooo I wasn't online when u were tweeting fans :(\", \"where's denise i miss her :(\", 'I’d really like to handle Murielle Ahouré’s PR/Brand Image. She’s missing too many opportunities\\n :(', 'Euuuwwww @Andile_SS Lunch. Like a real construction worker :-( http://t.co/utDMqr0aAV', '@horan_lyra done, please me :(', '@sophiasam013 @leiwaleyn i hate you both :((((', '@_irwinstagram Dylan pls :(', \"@KimDyvotees ate I can't dm you po :(\", '@bluejeanrose WE REALLY NEED THIS PLEASE :( WE ARE BEGGING YOU..', \"@AireyFlamsteed [ also .... I Kath'd you earlier, you never responded :( ]\", 'And no i didnt get to finish chopped :(', \"@TemerickHarper nothing bored can't sleep :-( wbu?\", '@wonwoolipseu yess hahah pero may activity kme tom at cram week next week :(', '@cloverness :( I hope something holds your interest soon!', 'isco was so close :(', '@louisacasson I unfortunately did – curious that in English on-board announcements they said \"trespassers\" and in FR \"clandestins\" :(', '@ItzBabyAlexa :((( love ya 2 😭💖', 'And Muller will not be sold! Was quite obvious though but still had a hope :( #MUFC', 'i’m so sad i want my hair colour back now :(', 'stu is mean, i just wanna sleep : (', 'Moviee Buddyyyy :(', 'srsly? :( http://t.co/rGqzDaShNJ', \"#feelgoodfriday on the way to camp in the new forest... And it's raining :(\", 'so i forgot that i had to wake up at 6:30 am to babysit and i stayed up late w jacob last night im so tired :(', 'GUYS add my KIK - opixer805 #kik #kikme #talk #lesbian #oralsex #video #sexual :( http://t.co/rQwzb7W9bp', 'i wanna watch paper town but sadly no one to go w :-(', 'Wanna cuddle, but all I have is my pilllow :(', \"@AsdaServiceTeam i won't be made a fool of again , if it is like that i will ask her to make me another one :(\", '@jenniferseon yo stop bragging not everybody got the skrillah to travel :(', \"I can't sleep :(\", '@guevarawr pretty sure i drowned myself in ice cream :(((', '@annisabolo done ya gue report :(', '\"Why do you care so much?\"\\n\\nHa ha ha ha ha damn that question :( :( :(', \"@NiallOfficial from bad to good. My parents were also proud for being me today it's all bc of you guys. Thank you! X NOTICED ME PLEASE :((\", '@neelipar @ASOS95 not yet :( did they find yours eventually?', 'Its my grans funeral today :( Its going to be hard', '@MissKittyDomme must make a visit up to the north west its been to long to session miss kitty its 3 years plus :((', '@cxshtonhemiford Follow me again ? i forgot to followback and you unfollowed me :(((', '@angelhairhes Im always on but you never ever notice me :(', 'im so tempted to stream to screenshot sjkaos :(((( no', '@shiningstarniti r u angry....now m feeling so disappointed..mm...srry.. :(', 'I liked a @YouTube video from @kilarzvortex http://t.co/sJmK2LZFxE Stuffy Nose :( (BO2)', 'I wish Honma would win :(', 'Yeh Real Madrid walay bhi bohat wailay hain. Pre-season friendly pe itna shor machaya hua hai mein samjha cup final hai :(', \"@ShipsterUSA @alwafa @mamdouh733 @MyUS_Shopaholic I would have but I'm still waiting for the email :( check photo. http://t.co/k8uYr8Me57\", '@AndrewKantarias *On a serious Note* you should *100%* reply to my DM that I sent you. Haha 😄👍 Cause it actually is kinda serious... :( 😔😓', 'Isco :(', '@MatthewLush i love you :(', '@FizzaMalick yes sirkay wali pyaaz with daal. or you made daal and just got onions in vinegar :(', \"All I've been doing is watch cooking tutorials :( these are not the things I had planned for summer\", 'In the middle of Soho and no ice cream! :(', \"@NikiNoox Not great right now. I'm feeling wobbly and just want to go home but I can't :(\", \"@TruDan97 @iphonetips1 @FuzionDroid Hmm i thought I was #1? Well, I'll just go and turn off the server then ... ciao :-(\", 'Sadly no show of masaan here :( \\nWill watch this muv after it comes in HD then\\nhttp://t.co/CcweTaPdEq', '@nuaine @McDo_PH i have no idea what ure saying :((((((((', 'I hate this day..... :(', 'BEAST NEXT WEEK!!! : (', 'I just ate a whole pizza :( idk how to feel about that', '@georgie_holiday work :(', 'hayst :(', \"I miss CR!! Feel like going back but can't :(\", 'Hnnnnnnn he looks so fluffy :( http://t.co/pvGz3j6ZnI', '@Tigress1412 I miss u so bad :(', '@magicmoon_rp I wanna watch them again too :( maybe when they do comeback shows in Korea... or in Japan. I wanna visit your country', 'so saaad :(', '@junying0312 @shinthongg @khngjiayi I want too :(', '@MissStaceyVee @cathjenkin @Uber_RSA \"no ice cream available\" :(', '@Y_A_T_E_S Sorry about this. It could be a schedule change :(', \"WOW right after i'm done with school (for a short while) my internet decides to act like a bitch :((\", 'Nobody cares about optimisation :(((', \"@vinylify please don't ask for upvotes :( http://t.co/MT1tFymZGU\", 'rain :(', '@ajleestan I want a follow from @BellaTwins :(', '@Tigress1412 soniii kahaaaa u ?\\nNo tweets by u make me lonely :(', 'Full Shaved :(', '@awfullyariana WELCOME!! AND AW :( I HAVE TO GO BACK NEXT MONTH BUT RN TRYNA GET HEALTHY', '@sadcuddleashton me too but dont get ur hopes v high bc it might not be real tho :((', ':-( :-( :-( Okay...', \"@SueDixie :( At least it's not freezing outside too. Right?\", '@GeenaEhlich I know fml :(', \"ohh that sucks :((( hands you all my jackets!! it's way too warm here and it's making me sleepy 24/7\", '@andrwedwrds stop cyber bullying me :-(', 'Isco :(((((', 'I already miss her. That old _ _ _ :(', '@ArianaGrande never talks about racial issues :((', 'My house scary AF at night :(', 'Need holiday :(', 'irene :-(', 'Miss living in halls :(:(', \"Can't open :-((( is in Stockholm http://t.co/U8ax9LgScE\", 'On my life I remember one time a few years ago I changed my avi and lost 72 followers LOOOOOOL :(', '@KenCageRepo Thanks a bunch :( I hope to get training in to be among you. Hopefully find something.', '@ReddBlock1 @MadridGamesWeek Too far away :(', '@Suzy_slutcake I do have plans.. But looking like girl issues may stop play..:-(', 'Hungry :(', \"@kitokkey sobs that's really sweet of you!! ;__; i'll be busier next week onwards so idk if i'll find time to be ol anymore :(\", \"I'm sure it's just pure coincidence that my @spotify has done nothing but play up on my iMac since Apple Music launched! >:(\", \"wish that my grams lived nearer to me :(( I'm going to travel just so that i can see her.\", \"@abrwnigrl Why don't they play Blaine/Darren song ?? :(\", 'sorry for always changing my layout :(', 'Fuuuuuuuuuck me Jesus >:(', '@mishacollins i have a team on gishwhes but we are 6.. we will be excluded unless we find someone else? :-(', 'c looked so happy with her banana socks :(', \"@sakuraflower20 why you're upset? Is that something wrong with me? :(\", 'angelica really pulled out the \"I\\'m going to college in Idaho\" card on me :-( I hate her', 'hand hurts :(\\ngot down sick movement lmao', 'UGH :( I THOUGHT... @camerondallas http://t.co/KrrqH4aRbw', '@SANDEUL203092 fine!! :(', \"@Froufrou42 No Frou that isn't a bad thing, but neither are all vaccines a good thing.. :(( We all have to learn to get as much information\", \"@assthmatic I want the armor piece, it's better than the legendary I have now :(\", '@tescomobile I only had the cash on me for 1 :( I forgot to take my bank card and it was too much effort for 2 trips', 'same, the difference is that i am 15 :( https://t.co/R6HhQ0lE5p', 'Miss my dog :(', 'I miss you Bestfriend! :( http://t.co/n0ip32JRqf', \"@PureBexcellence Don't do that. :( I'll try to catch you if you do.\", 'did nat deactivate again :(', '@Cour98_x I feel your heart brake :( no tea in the mornings makes me grumpy for the rest of the day hahaha!x', \"Wrecking my head all night trying to make a decision... 'Sleep on it & then you'll know what to do' I say... Nope still confused :( gahhh!\", 'Terible headache :(', 'SUNGGYU FELL ON STAGE :(', '@PUKENIHORAN awww kiligs TY :(', '@Joe_Sugg @mrnhrn that means that you are not going to tweet anything again for a whole week:O :-(', '@_blacktomorrow im so jealous we always planned to go together!!! :(', 'im feeling weaker than any other years.... i want to do shravan maas though :(', 'he looks so tired i hope he gets some rest :( http://t.co/jaASB4KjE1', 'babe why are you infront of the TV stooooop :((( @crreatura', \"Na gi-guilty akooooooooooooooo :( :'( #imVERYverySORRY for that Mistake .\", 'Missing this movie so much :(\\nso hard to find the CD. . . http://t.co/PFqcW3B3iP', '@Slay__N I need answers :(', \"@MoOx Looks really good, but I don't get the greyed out basename, the path is all one colour. :( Using one dark & tomorrow night theme.\", \"@princessviki13 you're welcome - Shane you don't do online sessions :(\", '@RiotQuickshot Good man! Shame he no longer has a Cigar though :(', 'speakers on full volume. :(', 'So Sad :( https://t.co/GEx8wFhJhy', 'too tired for work this morning :(', '@SnellingD @Uber Having the same problem! :(', '@sequins_ why????? i find it cute anyways :-(', \"Offered promethazine or zopiclone for sleep in addition to quetiapine modified release…typically I've just paid out for a prescription :(\", 'my heart is hurt ... :( :(', '@interpedia_ \"Greska\" means mistake in Macedonian so... \\n\\nJust checked if it\\'s similar in Slovak, but it\\'s not :(', 'I just want to go out dancing or something. And someone pls taking me hiking :(', \"@VoxHiberionacum It most certainly is a theme issue - but we've tested on a range of devices w/ different browsers and OS :-(\", '@Jussstify :( zokay (Russian accent)', \"@ICTheatre So sad I didn't manage to get tickets :-(\", \"Super traffic, I'm sooo scared :(\", '7 hours travel time! Ugh! :(', '@Rigan_s @HakubiRedwinter b-but, my favorite thing about gintama is the shinsengumi special chapters :(', 'where the FUCK is Andy?!?!?! >:(', '@jakeblackah what ya gotta be like that for :( crapple! @wigdogg agrees. Android FTW #phandroid', '@douxVictoriammy hays :(', '@kwonsoonshine :( tline is totally not the same without you, its so weird i mean i used to see u all the time i go online now i barely see u', 'ohh :( 50 people bc it was an orchestra camp, which had bout 100 ppl. and we were all stuck together for 7 hours everyday in rehearsal [ ]', '@practicallyhaz the bittersweetness :(', 'eunji :(((( so pretty', 'Only done with my first week of work and already got work to do on a weekend :(', 'BAKIT FACEBOOK! :(', 'omg I miss this :-(((((( http://t.co/4uSs5hbOQn', '@LlivingDead91 damn :( hope u feel better soon', \"@jackjonestv I was 121st in yesterday's Rt for a follow and dm. I got neither :(\", '@zaynmalik follow me :((', 'Ehdar pegea panga dosto :(\\n\\nOpen link nd read this news\\n\\nhttp://t.co/QjNXZbJyA0 http://t.co/je1E4gboSw', '@Real_Liam_Payne please follow me :( i have been waiting for your follow back :( please follow me back or retweet or reply this :(', '@covtelegraph @sarajcox Oh dear, 3/10 :-(', \"@lukepottermusic u did not greet me on my birthday :( i even dmed u :'(\", 'I added a video to a @YouTube playlist http://t.co/sStJosDrNZ Short Talk! Last Day Of Beach :(', \"@biobio1993 oh no :( if it's someone I'm close with, maybe I can help sort it out? you don't have to tell me though XD but, offer is there!\", 'Due to rain the show this morning has been cancelled. Sorry if you made the trip in they canceled very last minute. Boo to the rain :-(', \"@marrrrr_13 @mitchgrassi yay he's 23 alreaddyyy :(\", 'Looking for fun? SNAPCHAT - luceleva21 #snapchat #kikgirl #porno #nudes #omegle #countrymusic #sexysasunday :( http://t.co/T8pqZuLaEx', 'naeun :( body goals :(', \"I want him to be healthy and happy again, but I don't know if he's gonna make it. :(\", '@makalamerry @LijGilmour but it wont be fun if im sick :((', \"Need special medicine for our son's kidneys but we can't afford it because we bought printer ink last week :(\", 'they are everywhere :( https://t.co/T0VTMpqams', \"@SpoilerTV_BATB that's a shame! I really enjoyed her tweets. :( those that did the bullying should be ashamed of themselves!#ihatesomepeople\", 'that means i will be on the low limit table for a while xD :((((', 'City 0-2 madrid :(', \"@drcox63 I try, it's just the way my brain is hard-wired. I always feel like I don't do enough :(\", \"So this Canadian family had the best dinner of their holiday last night @biabistrot. Well done! Enjoyed ours too but we're not on holiday :(\", 'Got an acne in a day, its really disgusting :(', '@MarielleGeeeeee i want you :(( \\nto make :((\\ngulo tho :(((\\nkandekjs can i not go to school and still pass i wanna cry hahahah', 'Back home :( (@ Rize Meydan) https://t.co/raRIqmgCJJ', 'I EXPERIENCED HELL FOR 3 FCKING DAYS I CREI :( No internet, no stable free fb connection, no tv, no dormmates :((((((', \"@GAMEHelps I pre ordered BO3 and I got my beta activation code and I went to the COD website to redeem it and it says it's invalid help? :(\", '@fkluca both pls :(', 'Wag hopia please :(( #ZaynIsComingBackOnJuly26', '@Maxim_PR I feel a campaign coming on! Although a certain editor has just revealed he is allergic to cats. Boooo! :(', 'City a shit :(', 'Having a bad headache right before a trip :(', 'No extensions :(', 'Need to talk to someone rightnow :(', \"BTU why don't they give us Blaine Karaoke ?? :(\", 'I need to get my photo taken for my licence this weekend and I have rly bad acne along my chin and forehead :(', \"@louisunshxn just don't do it :((\", 'Not the right time for me to get sick :(', 'I want to go back to apb not college :(', 'rt for 5 free follows\\n; mbf \\n; need more mutuals ❤️\\n; kpop accounts only \\nno rt; hahahaokay :(', '@basara_capcom full i hope basara capcom release for pc :(', 'My stomach hurts :(', '@percysnoodle URL? Their new web site design is just *so* easy to use. :-(', 'Cute :( https://t.co/fAaZxMaG3u', \"sunggyu at the back :( i wonder if he's okay :( https://t.co/MwLo6RSyHW\", '@nwoje I\\'m in London in the rain :( but was booking one! Hope you didn\\'t have to hear horrible grumbling about \"migrant activity\" #gross', \"@madjade24 @bocababy26 :C you don't know? :C daddy doesn't know? >:(\", '@ihyrina i feel you girl. :(((', 'and then three hours left :(', \"No fair you've already had front row I was legit at the back of the stadium :( https://t.co/c4Z0MdP4ky\", '@bexmader that means 3am for me in Australia :(((', \"<3 <3 awsme song <3 :-* :-( :-( :'( http://t.co/IjVWwO32eO\", 'can my mum stop picking on my clothes please :-(', \"@blingmot go sleep don't stay up for the entire thing u can do more tmw!uwu...well the younger jinki and older taems one :((( all those gifs\", '@amnesiall i love you :(', 'My fish is dying and I feel like crying. :(', '@brewdog. Any news about #Cambridge? :-(', \"“@Tanithandicraft: @StevensSlateCo Hey! Found you viathe @RNLI retweet! 😊” Brilliant, how's #Cyprus? Awful wet weather here :(\", 'Lunch. Like a real construction worker :-( http://t.co/84sCIHx8A4', \"@1DLittleSecret i just saw a tweet saying you're going on the 30th :( DAMN I CANT SEE YOU take pictures I want to see my amazing view 😂\", '@zaynmalik please come back! We Love You So Much! <3 :( \\n#ZaynComeBackTo1D \\n#ZaynIsComingBackOnJuly26 \\n#zayniscomingback', 'I miss senior year. :(', 'Spazzing on everything soobin dances :(', 'So hot :(\\n#summer', 'Why is \"27 and unmarried\" floating around my TL? I don\\'t need that kind of pressure right now :(', \"I'm in my winter boots :(\", 'Feels like a lifetime ! We finish on the same day :( !! Party time @xBethanyOystonx Xxx', 'Add me on KIK : hiondsheings58543 #kik #hornykik #photo #kikmenow #french #sabadodeganarseguidores #sexdate :( http://t.co/o8q0yUdrE9', 'I miss him :(', \"Really don't like Demi's new song/ video :(\", '@peanutbutler junjou? Junjou romantica? Why? :(', 'Rly sad that I had to rush off when that was the last time I would see everyone :-(', '@Danielle_Isla I could never go there ever after seeing that, so cruel :(', \"@OTRRM it's a privilege to get your mixtape from you : ( please sign my forehead for me : (\", \"Hey girl you must be Google Plus because I can't convince any of my friex|s to hang out with you. :(\", '@Celestalon @healiocentric We need good Taco places in Europe :(', 'Shaylan made me call her and she made me miss 4:20 too :(', '@JagexAlfred Blue ones still look too light :(', '@zaynmalik @Real_Liam_Payne I LOVE U BOTH :(((((', 'Awww baby Ylona :( awww dream team /(', 'http://t.co/ziJiJYLDXT via @youtube...Reality is!! :(', '@BeaMiller are you going to follow me or nah?? Im waitting :(( #NotAnApology', \"@Glam_And_Gore it's noon here where I live so I was like...ouh different timing :(\", 'got a pay rise….so did the tax man :(', 'ohhhh i miss it :(((((((((((( https://t.co/jMGXCQd6S2', '@iMac_too impossible sir for NM to change the order in one term :(', 'NOT AN APOLOGY ME ENCANTA VALE OSEA BEA :-(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.350\\n》》》》SEE ME\\n♛♛♛', 'I have to get ready for work in like 40 mins :(', 'Missing my best friend :(', '@_ennyselise i can be :(', \"DJ Derek is trending for horrible reasons :( Hope he's found safe and well.\", 'awwwwwwwwwww shit net low :(', '@DaVincis_Starz sad news, so sorry it will be last season. :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.349\\n》》》》SEE ME\\n♛♛♛', \"@MattLevick he didn't score first :(\", '@wandersinc i am not :(', 'hugs baek tight : (', '@jrmychan hahah he dunwan to keep me also suan le ba haiz seeing everyone otw rn :(', '@SOLODMHelperrs i dont trade trade harry, sorry, i only have one :(', 'i miss venice :(', 'My week off work is going far too quick!! :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.348\\n》》》》SEE ME\\n♛♛♛', 'i may look strong, hey :-(', 'Really wish I was out to d.c w my friends rn :(', 'I hate being an adult sometimes :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.347\\n》》》》SEE ME\\n♛♛♛', 'one tree hill makes me cry a lot 😕:-(', 'To com insonia :(', '@shereenstrachan i know them feels :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.346\\n》》》》SEE ME\\n♛♛♛', 'Craving for pizza. :(', '@Gotham3 very sad view :(', 'Listening to Rick Ross feeling like i am balling knowing damn well my wallet is hella empty. :(', 'I miss it already :(((o http://t.co/sbWVwaUyAd', '@bakkheia_ oh god that was one of the worst heartbreaking episodes ever i hated it :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.345\\n》》》》SEE ME\\n♛♛♛', \"@Israelgirly They sure do, esp now when ppl are talking crap about Millie!! >:( I'll go straight to that FB page:)\", '@onikallah why do u care where it is :( it makes no diff', '@qiefaaa persona 4 normal one... i preferred the golden one though! A lot of new scenes :(', '@Bett_Homes if only we could :( drive pass your advert everyday going work #determination rosebury will be ours #familyhome', 'give chance to other daw :((', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.344\\n》》》》SEE ME\\n♛♛♛', \"I'll sleep better tonight :(\", '@wonwoolipseu :((((((((((((((((( iTS OK!!', 'I really am a code monkey :( http://t.co/5vFYrLeeux', '@sweetbabecake yea i guess so :(((', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.343\\n》》》》SEE ME\\n♛♛♛', '@SexyVixen75_ @ED_DURANCE aww sweetie :( Erica is very busy she cant reply to everyone ❤ try not to worry.', '@Sitarai @_shikinrizal_ istg i wanna lick jackson :(((((( NSBZHDNXNDAMAL', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.342\\n》》》》SEE ME\\n♛♛♛', 'Today is damn slow! :( checked the time, 11:15AM..2hours later, 11:25AM\\nSigh', 'so cute :( https://t.co/VWLsPT6y1R', '@taesprout :-( i hope it works out..... or not if it is better that way', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.341\\n》》》》SEE ME\\n♛♛♛', \"There's a certain group in our fandom na mahilig mam-bully :( bakit?\", 'missed having someone come over when i was ill :(', 'Mtaani tunaita pussy viazi choma and we still get laid :-(', \"@Calum36Chambers Benzema celebrated quite well just now! Don't know what to make of it? Seems pretty happy! :(\", \"Been up since like, 7am and I'm still not tired :( my body needs to stop being a jerk.\", 'someone talk to me, i miss you all :(', \"@kmdevaser96 same here lah. I can't even watch YouTube videos. I miss the fast internet :( That's weird though :O\", \"@perriesjades where's black magic?:(\", '@WingsScotland no cats :-(', \"@fittorot i forgot you don't like people doing that i'm sorry :(\", '@menilleyble ate menille i need youuuu :((((', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.340\\n》》》》SEE ME\\n♛♛♛', 'BUT I HAVE IT ALREADY HE SOLD IT LIKE 2 WEEKS AGO :( https://t.co/FtgBvFN30O', \"@imcherrycblls i can't find kam's twitter and i wanna greet her a happy birthday :( help meeee please 😁\", '@zazaraisovna why so serious? :(', 'diz is my personal account. i also have fan acc. link in my bioooo :-( ay taray. yumu-youtuber.', \"We're only getting older baby :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.339\\n》》》》SEE ME\\n♛♛♛', 'Its been two months and Im still hurting. :(', 'I know both of you have your own life but I want to see you in the same picture :-( #parijat #sad #WillMissYouParijat http://t.co/WHJfmcRZWX', '@kiyomitsucashew it kInda does :-( and thank you!!! ill def do th', 'y r older women hot :((((((((((((', \"These sets are great for anyone off abroad on their jollies. I won't be needing one for Scotland :-( http://t.co/TyttJNekbv\", '@blackannesee Get better soon...... :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.338\\n》》》》SEE ME\\n♛♛♛', 'Craving for some mcnuggets :-(', '@sophielbradshaw We are really sorry to hear this, Sophie :( We will certainly pass your feedback on to our Product Development team.', \"@howeverhood @bubblegumcam one year later and we haven't even met :(\", '@KyuminpuVELF no idea :(!!!', 'NO STOP I CANT GO :( :( :( https://t.co/JLrt1bEIrY', \"Couldn't find any caramello koalas so I got a caramello bar... it's not the same :(\", '@OTRJSJ offers you my mixtape. will you talk to me more now : ( suckmejimin.', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.337\\n》》》》SEE ME\\n♛♛♛', 'true : ((( https://t.co/hfGyVJQ5RA', '@tumblrzoella same :(', 'Sucky Saturday!! :(', 'Im dying of laughter bc my dad keep playing pou changing voice :(', 'How do ppl not hear their goddamn dog barking? Seriously wish their dog would drop dead. >:(', 'Bae weather nje, but I\\'m having a blast. I miss you more my hun \"@Nessa_Mbeki: @znclair how\\'s dbn? I miss your ass bruh :(\"', 'Just wanna go back to my dream 🎀 was buying loads of clothes then woke up :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.336\\n》》》》SEE ME\\n♛♛♛', \"@srslybradley I'll try my hardest to cope w/out u :-(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.335\\n》》》》SEE ME\\n♛♛♛', \"@_abbeytaylor still didn't manage to message me though :(;\", \"@DJRyanHemsworth don't tease me :(\", \"I've decided to stop supporting @Scalydas and others until I find the answer of pledge is you get paid for supporting or pay back. Sorry. :(\", '@jujumber ya I realized :((( check viber mwah', 'Insurance co are writing my car off :( anyone got a big estate for sale?', '@BlondieBlonde70 It was nice to see family members I am close to but miss them :-(', 'Met crush but he is too lansi in way :((', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.334\\n》》》》SEE ME\\n♛♛♛', 'So emotional this morning. Saying bye to my best friend again :( @melonhairy and reading the end of book 5 of hp. :( waah! #sad', 'Jealous! I want to be in Miami :(', ':( “@AneleMpupa: Vandag\"@chatlas: It\\'s been a long ass month...re kgola neng eintlik?! 😢\" http://t.co/u6M5qQTXxv”', 'Sorry, I cant hope you :( http://t.co/wInJbEhRq1', '@Jennyhill54 OMG same :( wish you was coming to Spain with me :(', 'MY snapchat : LisaHerring19 #snapchat #snapchatme #porn #like4like #skype #repost #hotgirls :( http://t.co/kvVJ5Goieh', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.333\\n》》》》SEE ME\\n♛♛♛', 'My last day in twitter...... :(;(', '@robbiemacalino Whaaaaaat? Whyyyyyyy? :((', 'ok so i went out to check on lucky and shes passed away :( she was the best magpie i ever came across rip lucky 22.05.15-24.05.15 x', 'why am I still up ? :(', '@Chabeezumba I miss the team na and coach and training :((((', 'HES SO ADORABLE LIKE A CUTE MARSHMALLOW THAT U WANNA HUG BUT EAT BC CUTE AND CHSWIYFXCSKCALUM I LOVE HIM SO MUCH :((((', '@howdydollie I need you by :(', 'nvm lemme be quiet and eat my foof!:(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.332\\n》》》》SEE ME\\n♛♛♛', 'Casillas should be there :( \"@realmadriden: Manchester City vs Real Madrid: this is our starting XI #RMTour2015 http://t.co/s5a7H7pd9x\"', 'I had a dream where we were all around a table eating or something and Heavy Day came on and we all burst into song.\\n\\nCan this happen IRL :(', 'This is horrible. :( http://t.co/6G6C7ewfpf', \"@WizKhallista it's about the egg, water and bloopers awhile ago huhuhuhu grabe di ko na-take. :(((\", \"@deeziyah no Dublin :(( I'm so sorry I know how it feels the same thing sorta happened to me\", 'i thought it was true, you have to stop playing with my feelings guys :(((\\n#ZaynIsComingBackOnJuly26', 'Sorry for being inactive. :(', 'UnFriend You :(</3\\n#GreysonChance', '@banamnam @daseonjwi i know :( we were all disappointed', '@Markisskill didnt have the money at the time :( but would have', '@tescomobile could you pick me up a sandwich then?:(', 'LOL this time i mean it :( @Katz360_ You and time 😊 https://t.co/KQ2pDd30w8 …', 'Not having the money for this belle and Sebastian ticket sale absolutely kills me :(', '@nicky_nick1998 rude :(', \"@Kellipage17 Seriously?! That's amazing! #jealous Why am I never a first fan :( haha\", \"@thekittykane my feels. I rewatched yesterday ep 10 of s4 it's def the worst for SErs :(\", '@Uber_Delhi been trying for the past two hours. Nothing :( http://t.co/oLrKJpHDPb', 'Heart-breaking. :-( http://t.co/LoMmOjLW1K', 'JUST GOT HOME. JUST GOT OL. UGH OUTDATED AF :(((', 'Two hours and still no where near M4 - trip to @roalddahlmuseum abandoned. :-(', 'WTF is wrong with people...shooting up a movie theater, smh....damn people cant even live a good life :(', '@pippamaunder tomorrow 7-3 and Sunday 7.30-4 :(', 'guys stop please :(\\n\\n#ZaynIsComingBackOnJuly26 http://t.co/4gbLRYagWh', '@ravi_ceceli ya off :(((', \"This rain! It doesn't even feel like its Friday. >:(\", 'Ekk why no giriboy? :(', '@djsummajae Oh no :-( Hope you are having a lovely time though! -Danni', '@admirablehes94 me too.. :( Ohh. I need him', '@SlXSTRINGS stop :((', \"I still don't want Harriet to leave though :((((((\", 'gegu i want space gray iphone 6 :((', 'Sad truth but this is meh :(( \\n#TBT :( http://t.co/L5UMpvDbyB', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.331\\n》》》》SEE ME\\n♛♛♛', \"@sam_mcclure Looks like it's gonna be a long night the only good thing so far is the roof :(\", '@IzayaTheGod :( get u a nice lil gf then', \"really didn't want to see that :-(\", '@BrokenDoll :( i wish i could! so sweet!', '@PMOIndia @narendramodi .What is going on Indian politics EVERY ONE BLAMING each other after 68 year still representing the school life :(', \"Corbyn must understand Labour's new members to change the party's fortunes http://t.co/7JhaSTESp8 And yet another rant from this woman :(\", '@gyuloveme my baby :(((', '@Uber @Walls Why is there no icecream in Leeds? :(', '@taeserasera OMG! What happened? :(', 'I Miss this Cutie Ry :( https://t.co/cUCqzzhIbY', 'Last full day in London :(', \"Oh no! I used to love DJ Derek. I hope he's okay. :( https://t.co/cH2Iyla300\", \"@Showmasters :-( I'm already planning for #LFCCW hope I can meet more guests there!\", \"I feel like I haven't been in Twitter in like 5ever :-(\", 'America has such a good #OnTheRoadAgain2015 tour with most of all the FOUR songs being performed :(', 'Hate weekends they just mean work :(', '@selenagomez Follow me :(', 'i miss everything about you\":(', '@nicoleezzy halaaaang :( just done crying.', '@myoddballs @Kelsagirl recieved our order this morning but no flip flops :( hopefully just been forgotten?', \"Trying to use my #twitter account for #CaesarsPalace #socialrewards and it says my account doesn't meet requirements... DAMN #twitter :(\", \"@J_E_S_S_E__ same :( we're gonna be running through Cali w/o our woe :/\", 'cant believe I missed your follow spree today :( @AaronCarpenter', \"@nayybear lol it's been my job since I realized how many fuckboys are in this world :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.330\\n》》》》SEE ME\\n♛♛♛', '@Uber_Chennai @AmadoraGourmIce no delivery in chrompet is it ?? :(', \"i get sick easily because of weather changes : ( it was hot then now it's cold and my immune system is weak\", 'I need lush and a bathtub ... :(', 'Great, @Debian has got php5-mysql and libmysqlclient-dev out of sync and broke my dev server :(', '@ColtZoom_ @TheColtRising I wish I could join :(', 'I miss my Pleasanton friends :(', \"@ynnamaldita wala me load e :((( try ko i'll text u later\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.329\\n》》》》SEE ME\\n♛♛♛', '@dawnhalliday @British_Airways Definitely! I was lucky to be heard quickly (was there way early) but it was a nightmare for everyone :(', 'Megan fell asleep already :-(', 'I miss my mom :(', 'Ma heed :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.328\\n》》》》SEE ME\\n♛♛♛', 'Gwss :(❤️❤️ — Thankyouu❤️. http://t.co/z0a6jTboH8', '@bezz100 not see through the charade that has become day to day living? :((', 'i know how to play “one last time i need to be the one who takes you home” on the piano & i cant do the rest fml :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.327\\n》》》》SEE ME\\n♛♛♛', \"@W_PIPPY who's scored ? I'm at work :(\", \"@vijaysrivatsan yeah, that's why 'last time'. They were planning to file police complaint. So much yelling. Can we switch places? :(\", '@AmazonHelp @amazin @amazonsupport no contact whatsoever from anybody :(', \"@Youmeatyours yeah its horrible isn't it :( big hugs! & it means a lot. X\", '@RoySayWhatNow I want Pete Wentz :(', '@TruDan97 @AA12YT yeah, we had it but Shogi took it :( #BlameShoghicp', 'I met a new kinds of people, new classmate, new set of friends,Everything was new for me. But I dont find my BESTFRIEND. :(', 'hey there, internet - anyone had any troubles with ordering from #fixedgearfrenzy? Been 5 days now & no dispatch notice. Getting worried :(', '@voidstxlinski theyre so cute :(', \"@sophielouuu_ @dugganrachel no idea. 2 weeks, and I've had to to say rip to both of my hats :(\", \"i hope Shamuon's doing all right in Tokyo. :(((\", \"Being sent home because I'm not allowed to work on my broken toe :(\\nManaged to fuck it up horrendously jumping... http://t.co/ew7uvaNRyb\", \"That feeling when u don't wanna leave someone's open house :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.326\\n》》》》SEE ME\\n♛♛♛', 'Hasb SMS k messages atty hain mujy sirf :(', 'Keep waking up from nightmares :(', 'Pls win :(', \"@DineshDebiky @heineckrr @flytetymejam @GHSDuldulao :-( i'll be at work, like the other time\", \"well that isn't helpful/sensible etc... :( #Brum #cyclerevolution https://t.co/yb1im79Tye\", \"@znclair how's dbn? I miss your ass bruh :(\", '@FatalFerret caaaannntttt :(', \"@Rosiejanele Oh dear. They lost my payment last year & wrote to say my account was overdrawn. TBF they did 'find' it when I complained :-(\", \"#ZaynIsComingBackOnJuly26\\nIm crying,i hope zayn will come back but other side i just don't want to believe it :( http://t.co/QdYWa03z1F\", '@TruDan97 @iphonetips1 damn @Herobrineskull give it back :(', \"@AllicioGloria She's gone :(, Hello, we offer you free perfume samples and Chanel/Burberry/Prada giveaway on our site! Please check our bio.\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.325\\n》》》》SEE ME\\n♛♛♛', '@Danica_Yu oh noesss :((', \"Finally watching the last #TopGear episode, hopefully it won't end :( http://t.co/75IDDesHD0\", '@bicykiel @durnurr and I thought you were worthy of being the bridesmaid >:(((((((((', \"@iamglynnsmith Yeah : ( Couldn't find an NHS dentist here.\", \"I am looking forward for tomorrow's gathering omg la why the sudden change :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.324\\n》》》》SEE ME\\n♛♛♛', \"Yet another #RandomRestart #RandomReboot of #Lumia #WindowsPhone .\\nAnd that's after #Microsoft's update addressing that issue. :(\", \"@Jaaeeeeee lucky :( I was feeling hungry, but then I didn't wanna get out of bed either, so I gotta wait until mañana\", 'Some kpop female solos are ruined by those short male rappings :(', '@Zerbrechend SAME :(', '@bluejeanrose please sponsor us love! :( it would mean so much! We are begging you for a while now, please notice us', \"@Raaderer7 Yes now we do. Which means we're stuck with him as a striker, unless LVG plays him behind one. :(\", 'Fuuuuuck :(', \"@wacom helppp :(. I'm in the U.S and want to order a refurbished cintiq companion online but my card originates from outside the U.S\", \"@LionsgateUK Finnick's part in the final book is :-( is the movie going to be sad too #AskFinnick\", \"@TotallyWonwooed It was inside a closed container and im scared :( i can't even touch it :( and it looks hairy hahaha\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.323\\n》》》》SEE ME\\n♛♛♛', \"Two days off, and now I'm buried in emails... :(\", '@smilingkrys omaygad , i didnt know vic got surgery :( and theres amber :((( TT.TT', '@IvyTenebrae Hope you feel better. :(', 'i was so hyper today :((', \"there's a Las Vegas snapchat story and I'm sad, I want to go back :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.322\\n》》》》SEE ME\\n♛♛♛', \"I'm hungry :(\", 'Hi, imiss you :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.321\\n》》》》SEE ME\\n♛♛♛', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.320\\n》》》》SEE ME\\n♛♛♛', '@harryetlou i feel so bad for her LMAO ohhh i wanna know how it felt to be louis the first time he met H :(', '@thetrin I know.For now I am limited to prepaid stuff :(', 'We thought today was pizza day. Sadly none of the managers are in that usually buy it :(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.319\\n》》》》SEE ME\\n♛♛♛', \"I want to go to my grandma and grandpa's farm! There's a lot of cow chicken sheeps horses fruits and vegetables there :( Aww help me!\", \"Bored, puking and delirious from no sleep :-( motilium are a pack of Shite, no use at all. I'm also grumpy..... >:(\", \"@ShernScott I want to but I was busy moving house then I got ill... and I'm still ill :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.318\\n》》》》SEE ME\\n♛♛♛', '@RedMakuzawa that would be terrible :(', 'im so tired af but i need to ignore it bc of schoolworks :(((((', 'I want a taco :((', \"@rubysnipples whats phoebe's name on shots? can't find her :(\", '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.317\\n》》》》SEE ME\\n♛♛♛', \"I'm sorry to :-( :-( :-( \\nBlock\", \"@LisaPolice999 yes, don't do what I did last year: cycle through massive puddle, not see huge pothole, get stuck, & fall off into water :-(\", '@revivalcth 2 OF THOSE TIMES ITS BEEN OUT OF MY CONTROL :( AND I HAVENT BEEN ABLE TO :(:( i miss it :(:(', '♛♛♛\\n》》》》 \\nI LOVE YOU SO MUCH.\\nI BELİEVE THAT HE WİLL FOLLOW.\\nPLEASE FOLLOW ME PLEASE JUSTİN @justinbieber :( x15.316\\n》》》》SEE ME\\n♛♛♛', \"@SlXSTRINGS @deefizzy you haven't followed me yet :((\", 'Infinite im so sorry..i cant stream~~ :(', '@HeyItsPlat im sorry :(((', \"How do you turn notifications off?? I've had over 1,300 in the past few days :(\", \"@94rtaylor Hi Robyn, really sorry but it's not one of our necklaces :( Rachel x\", 'Ang Cold. :(', '@WaseemBadami amazing set of questions bhai keep it up:(( missing shan e ramzan and u :((', '@gfcakelover No, not yet :( .... but hopefully soon. Fingers crosssed! Are you coming to the @foodiesfestival in #clapham', '@buzybee78 :-( need to investigate more....', '@cadburysilk I have no one who will gift this to me :( *Feeling jealous *', 'No Friday night live @NRL on @GEMChannel in Sth Aus. So purchased a digital pass. Still have to wait to see @brisbanebroncos on delay :-(', '@angelweddiy Oh dear!! :-( xx', 'this movie essentially cut all the beginning of the book from its plot. :(', '@723qian @xcmainex tonight I got photoshoooot :(', 'Austin Mahone - All I Ever Need :(', '@SEOLMDR shut up :(', \"@failnaut oh :( well it wouldn't hurt to visit the doctor about it\", 'andaming memorization :(', 'Is anyone up :(', '@HoldyHoldy Cotton Candy is my favourite too! :( Time to stock up again!', \"why can't I sleep :(((\", \"My poor baby is sick:( \\nAnd he doesn't have the concept of swallowing his snot so he chokes on it. :((\", \"@alyaeldeeb12345 we're all in the same feelings :( http://t.co/lzd4XIo3aM\", 'GUYS add my KIK : taknottem477 #kik #kikgirl #skype #booty #nudes #mpoints #oralsex :( http://t.co/EGpLP1eGr9', '@neillcameron aw man, get better soon :(', \"@jungsilhoon maybe... im not into the i'll listen until i like it :(((( i'll stay with my old btob songs\", 'God , please help me ! :(', 'Really miss you :(', '@BristolBites keeps saying busy on mine :-(', \"http://t.co/rZ3BBeChHD\\nwe're going down at the moment :( the percentage ohh please!\", '@JasonBradbury Nobody to go with :(', 'SNAPCHAT : ShoshannaVassil #snapchat #hornykik #selfie #gay #porn #quote #camsex :( http://t.co/COW9YcUeaA', '@GilletteStadium wish I was going to Taylor swift :(', '@ExcahmOfLowee Flat is love to make me puke :(', \"@stormieraae what the heck :( you don't follow her?\", '@WforWoman \\nA9.\\nIt would be Ice Cream without Ice :((\\n#WSaleLove', \"Too many people asking when I'm back in LA :(\", '@EmmaLK Looks painful :(', 'Snapchat me guys - sexyjane19 #snapchat #kik #Horny #bestoftheday #photo #goodmusic #sexual :( http://t.co/0RZnnSlxq9', 'Delph??! 20 minutes, off on his debut :(', 'Lart rt :(', '@alexxmitchy @dugganrachel might sew it up! And no😬 do you know if someone took my orange chair?:((', '@YaraChmayaa I already left :(', \"@GU_CleverMonkey @PaulHollywood I didn't meet him :( I did at the skyfall premiere ages ago though!! He's yummy...just like his cakes!\", \"I just woke up to pee and now the suns coming up and I can't go back to sleep :(\", '@Cupcake_XGN sorry :(', \"@GabriellaaCruzz I'm not in manteca :( I'm visiting my dad\", \"@LeStoner_ if i asked her, she'd probably stab me :( but i found a 6 speed massage chair with shiatsu setting and heat for $50. Less risk.\", '@amsterdamartist \\n :(\\n Edward Hopper http://t.co/Qx6GZjjNXF', 'Eyyah :( \"@iamabdallahkb: @kings_dughtr am Man Utd born..... the best\"', '@StaMar999 I booked trip before crisis. :(((', 'I missed the goal :( 1-0 Real', \"I'm really sad i had the live photo sets in my cart but the shop logged me out :(\", '@brookswho2 aaaaaaaaaaaaa :((((( i need to decide on a waifu like by tomorrow', '@YerifeRV what happen to you babe? :(', 'Playing \"Give Your Heart A Break\" having memories from \"The Breakup\" episode :( I love the song tho', '@FuzionDroid @iphonetips1 :( the cold never bothered me anyway.', 'also i had a dream about joe again i just want to hug him and tell him how cute he is :(', \"@OTRRM : ( i'm like your major fan (!!) i just have this bias syndrome that i get shy around my biases : ((((\", 'MY STREAM IS SO PIXELATED :((((((', '@romanhloiday WHEN YOU ACTUALLY DECIDE TO COME SEE ME IVE TRIED TO GIVE IT TO YOU LIKE 3 TIMES :(', '@_karltovera weh I thought sa may bank? :-(', \"@Uber_SING wanted to get some but there isn't any Uber ice cream in my area :(\", '@marie_apayor MAYMAY and @DeniseFronteras If ever you make plans, DO IT IN ADVANCE HUHU! :( I need like 1 week allowance na magpaalam!!', \"& why tf can't i find subtitles for OITNB ? I need to understand Changs backstory :(\", 'Jeremy Kyle is so close to home this morning :(', 'going home :(', '@erwin_cabangal5 i miss you :( https://t.co/3FsrYukgt4', '@jiaaani for u :((((((((((( http://t.co/b3qkLaFJx4', '@SUBPAYNO but i miss all the boys being together i mean :((((', 'When the bus is late and you have no time to get food before work :(', '@AllRiseSilver gimme :( enjoy your meal baby♡', \"i just realised i am a month clean and wow i think that's neat-o :(\", 'wru scissors :(', \"@karir_komal dear plz don't post my creations in public without my permission , i amtired now telling every1 :(\", \"@jaidevpoomath don't have the app :(\", '@owyposadas imysm :((((', '@Hyojinsshi bank bank tut :(', 'i think i messed up my ankle again :(', '@SwagOnChristian - trop tard :(', '@againstmisogny Managed 1 month of accounts & have to do a few more :( tax credit deadline for 31 st. Only get child tax credit as cut Oct.', '@iain225 I gave it away last night as I didnt hear from anybody :(', 'I hear so many frogs this morning :((((((', 'Im crying right now my babies :(', '@ItsMe_Ryry online please :(', '@chrisisk @uberuk nothing in Shepherds Bush either :( I want ice cream', 'i have no friends whatsoever lol :(( oh well', '@sshawki Premiun feature in the making :() .@jeffweiner #NOTCOOL', 'almost 2/3 done with this. Sa lahat ng araw, bakit naging saturday pa finals ko :((', 'gyu y r u so cute :-( it hurts ok http://t.co/00YckcE7wj', ':( lmfaoooo https://t.co/Gu0QjHPMnX', \"I've been awake since like three :-(\", '@EllieWalker_1 well can I just say I deleted my Twitter app 3 weeks ago so I literally just downloaded it, sorry!:(', \"I acc can't look at it :(\", \"@PSYCRM you still haven't ! ! : (\", '@selenagomez come online babe :(', 'Aw I was hoping :(', 'wish more of my friends played league :-(', \"I literally just feel like eating some good fruit I'm so :(\", \"@Bigbst4tz2 I can't afford them can you please give me my first full mashup pack please :(\", 'how am i gonna watch eu lcs in 6 hours :( help i need more sleep', '@BBCLookEast Hope they find new homes :(', 'real talk does my account match or no? :(', '@svthoshipit typo ye :(', 'why @bmthofficial dont come here in Italy? :(', '@AKDP23 yass :(:', 'i rly wanna spend christmas with my relatives this yr :(', \"@fivedorkz not really, it's my first ever edit haha :-(\", \"Just my luck. When I move to Sydney. Everyone decides they don't want to go out :( hahaha\", \"@rightclick5ave I don't get why mb needs to cut their perf when don't cut on any other programmes :(\", '@dekayedd @Farrahnair but I JUST (like 15 mins ago) bought my dinner? :(', '@wotjustin UR ACTUALLY WATCHING (but is it for me smh #what #a #bff #yes #hashtags #bc #u #love #me jk omfg im so hyper :-( )', 'Tired & grumpy today. Hate missing exercise, as it makes me feel so much better. Can only go to combat in the holidays :(', 'My stomach hurts so much. I want to cry :(', 'why so sudden :((', '@StreetFighter IT STILL DOSENT WORK :(((', \"@MeganWoodyy sod's law :( but think of the Christmas sales!!!!\", 'Delph :(', \"@mrBobbyBones I've been trying to call for 20mins and getting a busy signal! :( I want to request the Yahoo yodel!\", 'I literally just pass out lately. :(', \"@Emeraldere You're going to die. I'm sorry :(\", '@CraftaBelle I very jokingly said it with no seriousness :(', \"i regret getting starbucks :( i want to sleep but i can't...\", \"@LeyejGilmour @LijGilmour I think I'm sick too :(((((((((\", 'MY snapchat : LynetteLowe #snapchat #kikhorny #interracial #bestoftheday #naked #goodmusic #sexysasunday :( http://t.co/66GRccvHOM', '@ohanakian @KianLawley i hope he is okay :(', \"Today's weather sums up how I feel about going to work :( #TGIF\", 'oh my gahd get well soon Amber :( @llama_ajol', '@sadcuddleashton theres a rumor they said zayns gonna be back on the 26th this month but JUST A RUMOR THO :(', 'bts was 2 weeks ago :(', \"Why is time dragging today. I looked at the clock and was disappointed to discover it wasn't even 12.00 yet :-(\", '@jsjvngrf obyun unnie? :(', '@aysegul_k im literally crying right now :(', '@tbhnswm wayhh :(', 'Ahhh Food Poisoning is so prevalent... :(', '@tradrmum Controversy. :(', '@liyanalovette sorry :(', 'My name tho :-( \\ni miss him', 'Poorly once again :( bed and Netflix today 🍵☕️', '@NachiketKhanna @niveditabasu Same Feelings sir :( :(', 'I really want sushi :(((((', \"Week 2 is over :( but can't wait for week 3 😊\", '@natsouthby I want to rt that :(', 'Has anyone managed to get an #UberIceCream yet? We keep getting busy messages. I think this is worse than the tube strike :(', \"I feel like I'm going to throw up :(\", \"@Wkshaffer Good for you....that's about 2 1/2 inches more than I got in NW Meck LOL :(\", \"Can't sleeeep :(\", 'is no one awake :(', \"@zoellaftmendes oh :( we'll miss you :(\", 'Delph injured already :( #MCFC', '@StreetFighter any fresh News? Still impossible to play :(', '@aminadujean oh no :( is there anything yo ucan do?', \"@Loganchance I understand :( It's so sad & depressing and makes me extremely anxious as a poc :/\", 'so I guess blocking number on phones spam SMS feature wont work. Nor will using specific words since these guys write Sinhala in English :(', 'No of Billionaires (1645) in the world is more than No of Islands (1190) in Maldives. Dheena, Fasgadah Alvadhaau. :( https://t.co/4hAaC51bQz', 'I burned my pizza rolls :-(', '@Emeraldere How can we help ? :(', \"Live countdown on V app?? I'm still confused with it's functions. Can we watch it on desktop??? :(((\", 'MY snapchat : EvelineConrade #snapchat #kikgirl #like4like #FaceTime #kikmsn #amazon #selfshot :( http://t.co/KWdxYb9dBC', \"I've wanted panda for like 3 days :(\", '@thorntonschocs this is awful news! Mum uses them for my birthday cake every year and now for my 21st there will be none :( #disappointed', '@abrianaaaa__ I WANNA GO BACK. CAN WE GO BACKKK? :(', 'Wake up :( http://t.co/fACJpi5F3p', 'To think this could be the last photo of these 11 all together... I hate the transfer window. :-( https://t.co/r4yiR7pAgj', '@slaydrey where is this?? ♥♥♥ looks so relaxing :(', 'oh my, im not prepared for @AaronCarpenter to get a girlfriend :(', 'Hi Dan , not too bad. Dull and overcast. Rain due later today :-( https://t.co/YxkUrv9Z1K', \"@grace_phipps you're so inactive :((\", 'ahhh get well soon amber!!! :( @llama_ajol', 'Amber :(', \"@EE Hey, yeah couldn't see anything. Even checked my spam folder too :(\", \"I hate being up late bc then I won't wake up early and I end up wasting my day \\n:(((\", '@surayyaaa_ :(( I miss you so much', 'Cant wait to have my truck fixed i missin hangin wiff mah friends all the time. :(', 'music team or interactive dept :(((', '@unfortunatalie @afewbugs such a waste of a cherry bakewell :(.', 'Collecting all five teal cards in time but not getting the prize makes me sad. :( #sect #tennunb', \"I'd rather stay in and sleep this weekend than go out :(\", '@CRIMINALMOX I LOVE THAT EPISODE BUT SKIP THE DOOMSDAY EPISODE PLEASE :((((', 'i feel you :(( https://t.co/jliVpKmFwG', 'Feeling a little neglected as there has been no visit from the postie today! :-(', 'I wish i got goodnight messages :(', \"@zzzTerror he didn't read my donation :(\", '@FusazoJT @Gfinity @SteelSeries I wish I had the money to afford them :(', 'I have a headache. :(', \"I feel like I'm a weird person for shipping Bellamy & Raven, because everyone ships him with Clarke, but the heart wants what it wants :(\", \"@ShahidsSuperFan Miss you too :( I'm so busy these week. How are you ?\", 'I feel so bad for helmy :(', '@xbiebsft5sos FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'I want I want :(( http://t.co/cvy1vBmqan', \"@imVkohli misss uh yr... Cnt wait more to c uh.... :( :'( :(\", 'Feels like winter :( #whereisthesun #summerismissing', \"@ScriptedOne it's gonna be a longggg night :(\", 'Another ridiculous headache :(', \"@SilverkissesTV sorry to hear :-( hope you're ok. haven't been to your stream lately as I got a new job but stocko will be back\", 'All i want is some chocolate and a lucozade :( :( :( :( :(', \"@KEEMSTARx And people ask why I don't leave my house, the world is scary and fucked. \\nShootings and explosions everywhere :(\", '@salmasl_ @divine_zarryy same :(', 'what happened to gyu :-(', '@ciaellB why beh :((', \"The worst mental block is a half-remembered song when its melody's in your head n it ain't leaving and you can't recall the whole either :((\", \"@NeoGrove :( sounds like you've reached my level\", '@Lucybanjifede FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'I wish :( :( please get signed xxx https://t.co/M8X6ojdWtr', '@Sttbs73 Actually, THEY say it, each time their mouths open :(', '@mrtonymartin feeling let down :( thought I was your favourite of your favourites', '@makerofhats :( :( :( target ftw', 'I never have enough sleep :(', 'Walking alone is not difficult. But when we walked a mile someone... Then coming back alone is Very Difficult.. :( : (\\n#S #h #O #n #U', 'Moving out day :(', 'I asked first!! :( \"@Bakino_: @anelisa_lisa_ pfb\"', '@infinite7muse @seongayu even on nate i think :(( they dropped places already', 'First time travelling to expo by myself. & the worse part is, ive not been to expo before :(', '@xjisoobelle I MISS YOU TOO JISOO!!! :(', '@floralalpacaz when I went \"fuck off\" to ur Chloe reply on my selfie I got this anon and they were all \"omg do u hate Chloe :(\"', \"50 like ? — mager wi':( http://t.co/c5axwoGGWb\", \"@didUsayBigfoot u knw wht I'm big fan of them n went on their set once bt didn't get chance to meet... :(\", 'if me and laura dont meet next year im gonna be so sad :((', 'Still mad at my knee :(', \"@LuciHolland @hejgordon @Edin_Game Gutted I never went down to Distant Worlds in London.\\nI'm very well, yourself?\\nIt has been too long :(\", 'Stop buffering :(', \"@Ania8Ela I'm going insane. The ID is wrong & the account won't go away so I can open my own account :(\", \"why is charli so hot every time she's in finland :( http://t.co/MY4Ix0VBct\", '\"Eh guys ganas face ah\" :( https://t.co/b9B6ofCXsm', 'Still in the studio with the sun coming up... Last good morning at Arch Camp :( http://t.co/BQc8Accj8p', 'They don’t love me,they know me when they need me… :(', '@_mspxo the name of the movie sounds sad itself :(', '@BiebsxMoonlight FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@MatttCastro You lyin :( lmao', 'Jealous :( — Why! http://t.co/VuCyE3ISif', 'i feel sick :-(', 'Miss my hair this colour :( http://t.co/bcZ4mVLoDz', \"Me : kian I love you \\nKian : I LOVE YOUUUUUU\\n:( I can't get over today omg\", '@Uber_Delhi no supercars & now no ice cream in so many Gurgaon locations :-( pls add more locations!', '@lugellhorn I hate you :((( see you at 9:15??', \"@Vequafied I'm bored :(\", '@Muselshoux whyyyy le :(?', '@HaticeBieberr FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '.@tanha_messiah My words were just satire on a general situation. Why are you hurt so much? :(', 'Regretting this peanut butter sandwich rn, sore in my mouth is making things difficult :-(((((((', 'Garden update: my trees are gone :( http://t.co/V8OH886Z2Z', '@rickygervais beers are lovely :(', 'My assignments have been failed :-(', '@vinrana1986 Say \"Hello\" to Viners Palembang please :(', \"@TourWithAriana_ I'm sorrrrryyyyy!! :(\", 'Aww amber :(', 'im so sure fany is so happy now :(', \"@zoeeylim sad sad sad kid :( it's ok I help you watch the match HAHAHAHAHA\", \"@TheMercedesXXX @Gavin_McInnes @TheCumiaShow It's too early in the day for a boner. Have mercy :-(\", 'I AM MAD, YUKI EGG. >:( SEE IM MAD >:( >:( https://t.co/h7JKvKGOa5', \"Looks like it's finally time to get rid of the old 2500k :( https://t.co/WvQhzYxJuc\", 'will i ever hear mary did you know live :((( http://t.co/E9f2HZ4jgV', \":(((( | Jake Gyllenhaal talks the impact of Heath Ledger's death http://t.co/OiyooLa3GV via @EW\", '@superllex miss you btw :(', 'Cold+Cough= :(', \"@HammerEmma I see. Oh hunny :( U know I'm at the end of a line if u just need a friendly ear. I know I've said that b4 but it still stands\", 'my data just depleted, I wish it could come back and say \"I\\'m sorry Mbasa, I was joking. I\\'m still here\" :(', \"@misses0wl breaks my heart cause I'm not at hard :(\", '@tyrafendy kat office client :( you?', '@betabetic esp when it came off for an hour for x rays. ( hope). Makes you feel like crying when you have to go back in :(', \"@biobio1993 :( aah, maybe they're just the type who blocks people easily? at least it's nothing personal then, but yeah, it still sucks....\", 'Anybody here with a collection of all Suits episodes from all seasons? Pa-copy. :(', \"Woke up with another migraine. :( ... Need proper rest but at moment I can't.\", '@4JStudios Now you made me really angry and sad ... :( NO NEW BIOMES! ...', \"@sociopathslut same :( I was at the mosque w I had to sit outside the whole time and it was smelly I'm so annoyed\", \"This taxi is emptier than Ciara's concert :(\", '@HUNCH0 my stomach hurts so bad :(', \"@SeaveyDaniel have fun here, even though I won't be able to see you :((\", \"@TwilitArgorok I hope everything's ok. *hugs* :(\", 'Omg nooo :((( https://t.co/RbkIa080Il', \"I'm not tired wtf :-(\", ':(: (Vine by luke clips) https://t.co/UB4OLW7ACW', 'aw bb :(', '@Melonenbrot yeah and too tall :(', \"I don't wanna go home just bring the English food over here and I'll gladly stay here :((\", \"@TheUselessThree @dawid_pink I'm sorry. :(\", \"@idgitadhg :-( i'm sorry\", \"@nayybear hahahaha that wasn't my intention!! I turned away and he said something so I turned again and that's when he kissed me :(\", \"@wtfxmbs AMBS please it's harry's jeans :)):):):(\", 'mayday parade is just feels :(', 'i know right :( huhu sad lyf 😔😔😔 https://t.co/rMdMCuYyNH', '@demiroberts_ August 13th :( x', 'A sad new for the animal kingdom :( http://t.co/I7N9cinihz', 'You saw chris brown :(((( https://t.co/Pm8mxoGpEn', 'so cute :( http://t.co/K2nuJxaZja', 'I miss my mom. :(', \"@sannastenman yeah but it's a bit risky to count on that :(\", '@luke_brooks @YouTube come back to cologne please :(', '@_avonsparadise_ FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"@_Two_Devils it doesn't help my Itunes doesn't work so I can't buy anything :(((\", '@ecclestech @ScarletBlue9 Weather app says rain tonight into tomorrow. :( Sit in the car & watch the footy', 'No babes on there :(', '@TheUselessThree @IKyaa_ I wanna duo :(', '@jungsilhoon i do like ballads but idk :((', '@larakiara Same :(', 'I need a massage :((', '@cabeIlovato wtf body goals :(', \"But I was told that I'm becoming a bit of a bish, so maybe I shouldn't :(\", 'Our lovely intern @NicolaPantelli is leaving us today :( but look at all these yummy treats she brought us! #yumyum http://t.co/zR2iuOYO5H', \"Cathy's story is basically about a black guy singing :(\", 'Missyou bishes :(', \"Ruby rose ko tou maine pora stalk karlia Omg beauty khatam bandi pe 😭👑 why TF she's so Pyaari but not me :(\", '@thatdavidmiller oh gawd i really need to get out more.... i understood that whole thing :(', 'Great review for MASSIS tea. We miss @TasteofLondon :(\\n\\n#ThatSelfieThough\\n https://t.co/rWEjE5uOjg', '@alma @iamrrr ON LOOP... Bad news for the people I have to provide feedback too though :(', 'Packing is such a nightmare :(', '@kmubmik ofc not allowed but some fans are managed to take some picts.. the risk is they caught by the security and got kicked out :(', '@ebookwoman oh dear :(', 'Aishhh... the stream getting slow and more viewer... :((*', '@clawdeeeeya :((( me too i have exams soon sighssss', '@annaspargoryan It was burnt toffee :(', 'okay she doesnt want to talk to me then I will stop :(', 'True..... Honesty is a very very very lonely word!!!! :(', \"@TimInTraining @chris_slight78 @ThermoGrenade @rossario @anj100 its #CheatDay and I've ran out of protein :(\", 'I WANT :(( http://t.co/aZN2zOScb1', 'Sissi made a tote bag for me for my birthday and i use it all the time and now its slowly breaking and it makes me really sad :(', \"I'm going to sleep before I upset myself any further :(\", 'I miss Church helping me get into my Armor :(', 'No Delphy :(', '@cartinelliaf i miss them :(( but i hate pll :((', 'so teen top actually performed under the rain yesterday.... fk are they ok :((( but im still v proud of them la!!!', '@PrincessSGB Please @PrincessSGB :(', 'whens my cat coming :(', 'Sel, Beth come to Serbia! Serbian Selenators and Motavators are so sad! :( 💋❤💋❤ http://t.co/mQrHl6Guv0', 'ZAYYYYYN :(', '@hfaithdavis poor kids momma died :(', '@ohanakian @KianLawley what happend to kian? :( is he okay?', '@the_rebel_in_me @swanqueentacos awww. Imperative. :( #TRMDHesitant', 'Cleaned my room! YAY but panas af :(', 'That was the quickest blood test ever but my arm hurts :(', \"I just slept in cause I really didn't wanna see everyone get their Jacob tickets when I wasn't allowed :(((\", 'Fuck sake ! Hamstring injury for delph :-( not another Rodwell', 'none of my friends came :(', \"@JoshThomas87 @Please_like_me WHat? Wasn't it supposed to be out in August?? :(\", '@ComfyCooCoo @fairlylocalden_ the problem is tracing, many people do that and claim they are an artist which is not how it works :(', '@sasshoseok did u get called by tp law? :(', \"We don't have chocolate milk powder anymore :(\", '@WLK_SNaeun teeth :( so I can smile wider', 'This honestly makes me sick to my stomach. RIP to all those who lost their lives last night :( https://t.co/yA72N10piP', \"Pains in my tummy an back keep waking me up :( literally can't get comfortable\", '@KelseyjRenwick I did notice :( where are you working now?', '@BloutAngelina FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@IndietracksFest @mr_omnibus I thought he was too! :-(', '@outsidezoella thank you bruno I had just made it to 1.8k too :(', 'wish I was going to ed in croke park today :(', \"Has anyone had to deal with Toll before to get a package? I don't understand their website :(\", 'still not back in shape :(', \"@_khooie :( I went all in too (wasn't much) I swear I'm the unluckiest bettor...\", '@GaganCh57575757 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'NSTP Class tomorrow :(', \"31 units for first sem of second year? Please tell us you're kidding. :(\", \"@cappucinoclaire i got this from google image, and now i don't know where is it bc i already closed the browser :/ sorry :((\", \"I'm too tan :-(((\", 'i still really really really really really like chipotle but chick-fil-a stole my heart :(', '@GHilalCelik evet :-(', \"@bornsinqer so lucky u. we dont have ramadhan holiday. only eid and that's only a week :( i need more\", 'Hard to save a live... :( </3 #Stexpert #RipStegi @byStegi', 'Nickyyyyyyyyyyyyyyyy wtf did you do ¿ :(', \"I seriously don't want to go back. :((\", '@lewiismynewt FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"#ZaynComeBackTo1D #zayniscomingback don't fucking play my emotion please... who started this....... :(\", \"@OfficialCK2013 got an image as the header of the website, and it won't centralise :(\", '@sophielbradshaw We have discontinued this product, Sophie. Really sorry for any disappointment :( We will pass your feedback on!', '@chattsss tbh idk :( ask around', '@pickledog47 @FoxyLustyGrover Its Kate, tho!! :( #sniff', \"I'ts buffering for me :(\", '@swiftstruelove :( let me speak *struggles*', '@Ch4rm41n3 aww damn :( and haha will do!', '@RafaelAllmark please follow me again!! :(', \"So glad i don't bother with make up at work. Been outside all morning and my face would have gone down the drain by now. Bloody rain. :(\", '@_nurannisaaa @fatinrafezall @_atirahmatasri @aiifanadhirah @farhani_nfr @_ainzuhraa @athiraidrus more precious when its never end :(', 'why u so fab :((( @.therese hahahahaha creds @_sheenapadua http://t.co/qcwv8In7jM', \"https://t.co/TVnpczmZZ8\\n\\nIT ENDED SO SOON. T_T\\n\\nIt hurts that one of them has to be eliminated. They're all so good. :(\\n\\n#TeamZiPal\\n\\nSMTM4\", '@elenadickinsonX ty, come home tonight tho :((((', 'Doing my assingnment whilst watching the game lol i hate life :( http://t.co/sxeh7LUH4q', '@imamjan123 awwww thank u i Editied it on my old phone ... but it dont work more :(', 'Nakaka Beastmode. I lost my ID :(', 'OH MY GAAAWD :( https://t.co/ZAd3jg0jzF', \"@hazminge @emliviaroney @maxdjuric @arthuredmondss but Jane said I'm welcome :(((((\", '@SensodyneIndia Yes, I love Mango ice candy but #ToothSensitivity robs me of the fun I could have had :(', '@RafaelAllmark why unfollow??? Please follow me again!!! :( colombia loves you!!', '@aryanswift6 please :((', \"Future didn't show up :(\", '@jvkho9997 thanks yots. Labyo miss you :((', 'get well soon pretty😘😘 — pano mo nalamannn bebeee? :( thankyou 😘 http://t.co/CVOT0DGrAy', \"oh no i'm too early :-(\", '“@AlejoDoe: @highimvale damn they stole my home girls phone too”got me fucked up :(', 'I need to stop being so hardheaded :-(', 'That lonely moment when the only text message you get all day is from your cell phone company. :(', \"but when you call me baby I KNOW IM NOT THE ONLY ONE :( — eating Zach's Burger Xpress\", \"@misslolitalove that's true :-( it's trying to get rid of Katie Hopkins to no avail\", \"I'm really just up :(\", \"Can't sleep :(\", \"Every night I take hella melatonin & every night I take like a 2-4 hour nap until I'm wide awake & it's the next day again :(\", '@sarahbournex me too :( determined not to feel ill for tonight!!!', '@inespsousa9 not me! :(', \"So cold here in the office huhu :( No more tasks to do but I'll be here until 9pm hahaah!!\", '\"@alyaeldeeb12345: I miss Chris \\' voice :(\" same http://t.co/5houV3sq5l', \"@ThisGuyCanUK Oh that's a shame! :( We're really looking for people that have written about it before and frequently do it! But thank you!\", 'Hope that person is in jail :( https://t.co/uYofSgIBVA', 'weirddd :(', 'Everyone is happy bc they have amazing friends bc of 1D then here i am still waiting for my internet bestfriends :(', 'Head ache :(((', '@JRF7F RUINED >:(', 'i need more :( donghyuk stans :( in :( my :( tl :((((( where u guys at', '@zoellaftmendes but why? :(', \"I miss Beks' original body since episode 13 :(\", 'reynoldsgrl either deactivated or got suspended i wanted to shade :(', 'just got home.. heavy rain :(', '@TheStonePilot sorry :(', '@TheLadyShelly haha I feel so naked without ole beardy tho :(', \"@HelloJP How did you get it?? I've been trying for ages and no joy! :(\", 'I want to sleep why am I not tired :((((', 'this song is freaking saaaaaaad :(', 'Sorry guys, no new video this week! :(', \"@mr_omnibus @IGetSpellbound aw that's a shame, we thought you were! We'll miss you :(\", '@palmirabieber FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'what happen to the kaussies? :(', 'I was looking forward to this Pixels movie and it turned out to be a bummer :(', 'its okay bae~ its okay :( \\ni wanna hug her already. #FightingMCIrene http://t.co/BGV6mxYfGt', \"MICHAEL'S EXERCISING AND YEAH IT'S GREAT AND ALL BUT I DON'T WANT HIM TO LOSE THE TUMMY :(((\", '@aryanswift6 done please pick me :(', 'finding old pictures with my long hair makes me so sad :(', \"@RafaelAllmark I've been supporting you since the start and am ALWAYS ignored :( please let today be the day you finally follow me������♥♥♥♥\", \"@dtoxdliving it's wet and miserable here :((💦☔️ missing my morning yoga & drink in the sunshine! 🌞💃🏽🍹 love to you all. xx\", '@chuchuxiu thats so mean!!>:( i dont like him how rude! also aww bc they had to keep u away from the snake:/ damn they shouldve moved him', 'Fucking shit stalking her account :(', '\"zayn is coming back on july 26\"\\nsrsly guys? how many times did you say that?? :-((', 'Georgia and Saffron are amazing and queens and I am just a poor peasant :( wish i could be more like them...', 'I got no sleep :(', '@valentinalmao @mgchalsey ahh im sorry i didnt reply back :( i miss you too!! also i wouldve tweeted u on that acc but ive been having', 'NFINITE New Update - Hoya \\n~#Admin_Myung \\nSLP :( http://t.co/67Qf4l0zF2', 'The saddest thing is when you are feeling real down,you look around and realize that there is no shoulder for you….! :(', 'laomma design; Kebaya & Wedding Dress. Bandung - Indonesia\\nLINE: laomma, \\n7DF89150\\nWHATSAPP : (+62) 089624641747\\nInstagram : Laomma_Couture', \"@_BeatrizHoran_ No, I can't :(\", 'I feel so drained like omg like so tired physically and mentally how haizzz and my eyes still hurt urghhh sat sun cant even stay at home :(', \"I'm really trying hard to level up my working-on-a-tight-schedule art for comics, & I know sometimes the art looks off, but :( ganbarimasu\", ':( now im feeling lonely wth https://t.co/6NrxEGjSv3', \"@ElHenderz @EllaHenderson livid - it's still not working :(\", 'oh that actually made me sad lol :(((', 'wanna sleep :(', '@jethrocarr double whammy :(', 'How unlucky would it be if I was dying and passed away just before ed came on stage #:-(', \"@RafaelAllmark I've been supporting you since the start and am ALWAYS ignored :( please let today be the day you finally follow me������♥♥♥\", 'Quuuuuuee friooooo :(', \"@RafaelAllmark I've been supporting you since the start and am ALWAYS ignored :( please let today be the day you finally follow me������♥♥\", \"so... it's raining again... so much for running... :(\", \"@RafaelAllmark I've been supporting you since the start and am ALWAYS ignored :( please let today be the day you finally follow me������♥\", '@nicefurby my dad said no sorry :(', \"@RafaelAllmark I've been supporting you since the start and am ALWAYS ignored :( please let today be the day you finally follow me������ ♥\", '@keelzy81 fat lady parts :(', \"@RafaelAllmark I've been supporting you since the start and am ALWAYS ignored :( please let today be the day you finally follow me������\", '@BTS_twt please take me there :((', 'wtf stereo kicks :(', '@marmice08 :((((((((((( but hopefully chwang will still drag him out to eat later sobs', 'Add my KIK - lorm823 #kik #kikmeguys #blonde #rp #kikmenow #indiemusic #selfshot :( http://t.co/W07JltA7Fy', '@natalielms95 @jxhun @SharonMelaniex why is this so accurate :-((((', 'I cant stream :(', 'Feeling unhappy today :-(', 'Omg no Amber :((', 'Looking for fun? SNAPCHAT - jennyjean22 #snapchat #hornykik #ebony #trade #models #elfindelmundo #webcamsex :( http://t.co/s0wlxvFdeV', '@Alex12Rios hey that was mean :(', \"I told myself I can survive living alone for the rest of my life but I can't even be left alone for a day :(\", '@_NathanSinclair well rude :(', 'I wanna buy the #calibraskaEP :(', \"@taekooknet No I didn't :( Hahaha I wish T.T You?\", '@Craig_J_Hastie @MassDeception1 lolzz, unfortunately dats how it is :(', '@chris_slight78 :( feels', 'I keep having the worse dreams with Corey in them :-(', '@DeeJ_BNG I appreciate the weekly update but more weapons than ever before are on the way? we have nowhere to put the one we already own :(', '@EdeLabayog yup thank you! Huhu mahirap? :(', \"T H E D R E A M is dead :((( Guess it's time to get to sleep. Hope it works later today and I can get some games with Nash\", \"My body system don't want to accept those foods :(\", '@feleciaag20 oh gosh i love it so much ;__; they have those fried noodles?? Love💜💜💜 but they stopped selling them here :(', 'London is veeeeerry wet today - this is more like summer as I know it! :(', '@sunggyu_ph saw it being rted orig tweet by @/starholicxx :((', \"justinbieber can u pls follow me on >daianerufato< i've been trying for too long :( ilysm baby! xx (July 24, 2015 at 07:17AM)\", '@HoneyMustardHoe :( I was kidding, get out your feelings', 'SONG FROM@THE FIFTH ALBUM I AM SO NOTR READY HWY IS NIALL SO CUTE :(: http://t.co/THMLVQlDAw', '@mohsinmalvi19 @wishrajpoot @DrAzharAliKhan Nothing except lie, fraud, double cross, diplomacy, survival of fittest, zero tolerant..... :(', '@Rinerh -hugs- I really wish I could love :( I miss you.', '@aileenlykacholo miss you. :(', '@burgeeem always remember to take a shit bb gurl. :-(', \"@carouseldiary We're sorry to hear this :( How is it now? Try the following steps: http://t.co/E9MkbTy6ke & let us know how you get on.\", '@moby307 So true, yet many know this and choose to not heed the notion xx :(', \"Unfortunately today's performances at Pier Approach will not be going ahead due to the weather. :( http://t.co/PidhDm1ga3\", 'crying to get rattle robe :(', '@shaanb24 Just looked at your previous tweets and seen that this message was due to a hack :( Hope you got it sorted!', '@swgzl do you not like ballads :-( i think it emphasis their vocals a lot so im happy they chose to promote one', '@bmthofficial They are all sold out :((((', \"@nat_broco erm, what's that like then :(\", \"can't announce cool show today so wait until monday thanks :(\", '@Abby_Lee_Miller hey Abby.can you help me persuade my mum to come with me to see in London please?:(', 'Lmao just realized I tweeted the wrong lyrics :(', \"@amellywood but but but but but emily's birthday :(\", '@httpbethx i packed all my socks for camping so i had to wear odd socks :(', \".@GoonrGrrl @TheDemocrats I can't see how she can possibly be elected - FAR too much baggage. But people see what they want to see :(\", 'So cold :(', '@maverickgamer_\\u3000July 24, 2015 at 07:17PM \\u3000:(', '@DADDYNAMJ00N @bbydesu No~ I mean, that @bbydesu hmm, omg Im so slow :(', '@karinatuano shiiiit. Kamiss beh 😭😭 Thank you bby. :* I miss you :( love you mwa.', 'My mommy left :(', \"@abigailjacinthe hi ate :( i know she loves you so much but maybe she's having a hard time right now.\", 'Very sad to return from holiday to find @MissCatJames not on my radio in the morning and @TomNewittDJ not doing BC drive :( @wearefreeradio', '@tooshiin but dat was fun while it lasted :(', \"Why do people scream so much before/during fighting? .. You're only hurting your throat stop it :(\", '@xfiIes :() IS there A CAT CAFE IN MELBOURNE', 'Movie marathon anyonneeee :(((( loner af', 'So fricken cold :(', \"@AntPHall that's annoying! That's the one I'm using and it's really good :(\", '@AudreyPelan @CLGDoublelift meh rito pls do something :(', 'Friendzone :(', \"Although it's 3 am here when their panels start...I'm gonna miss everything...:-(\", '@KollyBuzz repeat audience ?? :(', '@messiluonel @dragbackfake I only got one month in June :(', 'Take me back :( @ Hsm Canarios Park Hotel https://t.co/lvNoJfG20f', 'im sorry im getting all personal and stuff but its really bothering me and i cant stop crying about it but i dont have anyone to talk to :(', \"I wonder when I'm gonna see all ukiss members as one again :(\", \"@Napolitano29 i wish i was there too! :(\\nbut we have to have faith that we'll meet Sam and Kurt one day! one day...\", \"@bahadirylmz @59saniye my friends fatma'm :(\", '@austinh_44 damn Alex has more swag than me :((', \"@caylahhhh lmfao seriously??? I can't remember if I did honestly..more likely tho :((\", 'Missing you :(', '@Real_Liam_Payne please follow me :( i have been waiting for your follow back :(\\n\\nplease follow me back or retweet or reply this :(', ':( update: http://t.co/HPhnCQuvy3 via @YouTube', \"@Welshwonderland @sarahlohse @newdayevent @newdayServers Oh no, I forgot I'd be missing your cakes - and those FLAPJACKS! :-( #countthecost\", 'I want IHOP :(', '@angelhairhes i dont have snapchat :(', '@MaverickLowe @CTC_Cyclists Yep but oh so common of infra, still being rolled out now, in this Country :-(', '@comedyorjoke so true :(', '@bttrcpxljp done can u please give them to @tenderkjss ? i know im late sorry :(', '@mrowklis :(((( thank u bby. i love u too.', 'Can I just call into work :(', 'last day :-(', 'I want to sleep :(', '2nd thoughts on college :((', 'where do u guys stream? my stream is so lq im - :(', 'you, with your words like knives :((', \"Can't sleep cause I've had the worst anxiety all day :( ugh can I just stay home tomorrow? 😞 #sotired #mybrainneedstoshutoff\", 'Was so exited to get a maccies breakfast but no I was 10 minutes late and had to get a burger and cheese bites :(', \"@nuriaagonzalez it was amazing!! Such a short trip though :( I wanna go again, but for more days!! How's Spain? X\", '@Ironlings_ Sorry Mr 25 :(', \"@WayneDavid81 so pleased it went well Wayne! Shame I couldn't be there :( x\", \"wtf,i make new giveaway acc again...and now can't to tweet anything again!! :(\", \"I wanna talk to people but I'm scared they will find me annoying and tend to ignore me or not interested to talk to me :-((\", '@Wendypup2 I could get a black 510 and a blue silicon cover for it .. but its just not the same :(', 'No one thank that they have me bc of 1D! :( \\nI H A T E M E. Kbye', '@CHONIM91 btw ini sore say :(', \"I hate how they didn't have their first win yet :((\", '@c_tuilagi Anytime Lil Nigga!! (: (:', '@elmyra I tried to support but only UK citizens can sign :(', '@gotshinee so low compared to their ranking on mcountdown :((', '5h + kids makes all ://:(\\\\\\\\\\\\', \"People change and it's not always for good :(\", 'I\\'m sure \"@MTNza: @ThapeloMokz It would be sad to see you go Thapelo :( \\\\OP\"', 'Chocolates and peanuts ...... :(', 'Civ 5 just crashed in the middle of a marathon game... :(', 'Wooden Mic neh! :(', 'That is so embarrassing :( i texted the wrong organization gosh', 'lost all the excitement for my birthday :-(', \"hate it when people don't text me back :(\", '@holaitsali deactivated :(', '“My mouth can’t translate the things my heart says.” :(', \"@FontanillaTrish @GwnLndch Today? I don't have :(\", \"Mine still isn't working wtf? I missed my daily chances and going to miss out on mecha-totems if this keeps up :(\", 'This feeling.... Miss her badly. :(', 'Nak tgk paper townssssss sigh :(', 'Too early :(', '\"@ghrxoxo: jokid :((( https://t.co/dOl68YFRe6\"oyyy', \"i miss being a kid. i can't believe I'm doing adult stuff like paying rent and bills and doing a degree and shit like . the fuck??!?:(\", '@PatriciaPrecios @WilliamEdenDude @PiooooPiolo @MagandiaAdjrani @ipcasongsong @Rapamigz @akosizen tomorrow again, please? :-(', '“@Johnny_Spacey: @Mandi_Tinker yes, very inconsiderate of them. :(” why???', 'Pray for the kids :(', 'wow i miss my long hair , my braces , & softball :( http://t.co/XysuSB0fxK', 'and more and more and more anna :( https://t.co/JxjroN8PcY', '@extended5H FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'should i apply for tomcat? :(', '@AgathaChelsea18 Miss You Chel :(', \"@jemphillips We don't like the sound of this Jemma :( Try the following network steps: http://t.co/iL86HQ4Uyh & let us know.\", '@HeyImBeeYT idk how to use those :(', \"@AsdaServiceTeam which is only good if I'm receiving delivery otherwise I have to leave a detailed list of with offers OH needs 2 check :(\", 'matchy matchy d elsa hair :-(( love u soo much! http://t.co/gySQ6arggu', '@iamsrk please dont postpone it any longer! :( :(', 'karin honey i want another vist :(', \"I'm gonna get high blood pressure one day lol I'm eating too much unhealthy food :( http://t.co/6i0NhiKivf\", 'Pains propa knockin me sick :( owwww', \"Bacon sandwiches for @KateWyvern & @benjaminwyvern in the Marketing office, but I'm on pre-holiday diet boooo :( #meanies #deathbybaconsmell\", '@BiebersxGalaxy FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"@Uber_RSA I'm confused :( What do I put in the inital location? #UberIceCream asking me for location and destination\", '@WeeklyChris what happened love? :(', 'So now F(x) is 4 members?? Just Victoria,Amber,Luna,And Krystal??? No giant baby again in F(x) :( https://t.co/RXtJdTElW5', '@kirstin_taylor @genmakeup but no picture? :(', '@yearsandyears come to singapore :(', \"the last concert I went to in this stadium tomorrow's show is in was justin :(\", \"@ArysaAri Why can't I retweet your stuff :((\", '@_ajaaaa where r u gonna be Sarajevo??? :( I live like 2 hours from there 😩😩😩😩😭', '@GCTitans team has fallen apart unfortunately no energy it seems :(', \"@alyciasmarie but i wasn't :-((\", 'haix I wish I was an sp student :((( everyday can go breakfast when im late for class already haix', '@CLOUD9CABELLO FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@KzhaKish then tell me how? :(', '@platinumgames why is this not on Wii U, did Bayonetta 2 and The Wonderful 101 really sell so poorly? :(', \"@BillyNeyMates yeah just saw your other tweets and completely agree, we're not moving quick enough on transfers though :(\", ':((( dropped again http://t.co/jkopvoFnqq', '@lewpylew78 work was no longer really doable (I drove as trains were awful), so moved agencies, long story.Miss everone though :( R U OK x', \"@mattyelvin11 don't have any :( gonna order a jps soon hopefully they have some\", 'I miss mamabear so much :(', 'I thought finding someone was hard but finding them and trying to make them stay is harder :(\\n\\n#imintoher', '@PeterAspsjo Oh no that sucks! :(', 'I need to go school shopping. School starts in almost a week :(', '@Chivski232 so bad :(', '@likeafigure8 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@taylorswift13 UGH,I JUST WANT TO BE WITH YOU RIGHT HERE AND RIGHT NOW,I NEED YA TAY. You are the only one who understands me. :(', \"@itsNotMirna so true, I voted for them so many times :( Underrated just like all of Slovakia's entries D:\", \"@AahliyahR it's not funny :(\", '@itmeailung I know :( saklap', \"Sadly, I can't see my grades yet bc i have a hold order in rizal lib :(\", 'Baby :( https://t.co/lMAAJ9Kmvk', 'gonna miss it there :(', \"@matty_lam @SkyFootball I'm not watching because I'm working :( but I'm not interested in man city anyway 😂 hope they lose\", \"@yearsandyears I wanted to go but I don't live near any of these places at all :((\", \"@band_enthusiast it wasn't in class but the entire school had to discuss it in their advisory period but no one took it seriously :-(\", '@iliketobecrazy ja dit dus, I know the feel :(', '@gabrielecirulli life is harsh sometimes :(', '@Louis_Tomlinson school start next Monday ohgod :(', 'MY kik - abligaverins7 #kik #hornykik #photooftheday #kikchat #likeforlike #indiemusic #sexygirlbypreciouslemmy :( http://t.co/gNb5NvMtUC', 'Such a positive, beautiful light :( #RIPSandraBland #JusticeForSandraBland #SandraBland https://t.co/GP21Mwg1Os', '@TyareRamirez FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'I WANT TO CRI I HAVE NO ONE TO GO W :((((((( https://t.co/IpxqMQWFeM', \"@EcoGitesLenault oh no I didn't :( So sad, I will do some catching up today x\", 'Oh damn,it\\'s true :( \"@dailyteenwords: That moment you realize that holiday is almost over and you\\'ve done nothing.\"', '@EdeLabayog miss you edel!! Aww :( why? :(', \"@sahirlodhi Salam dear brother Eid Mubark & very sorry i've missed ur all the shows on this eid..feeling bad+sad :-(\", 'HP LOW DONG :((((((', '@NeilMorganGtr This is just way too common now :-(', 'SNAPCHAT : TammiRossM #snapchat #kikgirl #kikchat #wet #wife #indiemusic #sexy :( http://t.co/uxbrq1woRB', '@myywoohyun just saw this not mine huhu but .... :((( http://t.co/vEy02VcNGs', 'SNAPCHAT : TammiRossM #snapchat #kikgirl #kikchat #wet #wife #indiemusic #sexy :( http://t.co/IzW9wFL5Zv', '@perriesbummy miss u! :( and speck if your online babes ?? x', 'My SNAPCHAT - AbbyMill18 #snapchat #snapchatme #wet #sex #sexy #indiemusic #hotels :( http://t.co/4iBT7zCjZH', '@_cigarella :( ion wanna hear that', '@nateworkorange yeah just thinking :(', 'Spent more than 5min tryna lock my hse door without getting the key stuck. Noob to the nxt level. :(', '2weeks before our exam :(', 'I hate not getting enough sleep :( My baby wakes me up 300 times a night and I always feel like falling asleep at work 😔', '@boutagirrl no but I was pretty sure :-( until now at least', '@MariajoseCleri1 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'but still, fck, the nae nae...:( that literally made me fucking cry bc too deep', '@shabanadas @FatimaAli52 emotions make us human :(', 'Enough whit this ...:(;(;( ...stop http://t.co/EXV5MoItcE', '@UberUK all ice cream vans are busy in Bristol :(', '@infispirit_ same lol :(', '@JackButton35560 the subserver is down :(', 'just talked to my sis :(', \"@gabriel_platon @biancahequibal Oo pre I'm sick :( huhu so sad hahaha\", '@janellearg just got out of the tub :(', \"Can't wait to climb #penyfan on sunday. Hoping the rainy weather forecast is wrong! :( #breconbeacons\", \"@AlexBarnes96 give me your Skype name my FaceTime doesn't work :(\", 'Looking for fun? KIK - tittheir42 #kik #kikgirl #fuck #kikme #like4like #indiemusic #hottie :( http://t.co/l99IanEBsi', '@vinrana1986 We Indian fans really miSS UU dear do uu MiSS us :((((', \"I feel so rough :( My throat really hurts and my head keeps going really fuzzy and I feel like I'm going to pass out :'( xx\", '@ColtonLHaynes where the hell are you? I miss my idol :(', '@BEINGASANOCEAN please come to San Antonio again soon :(', '@hoya1991 I miss Kang junhee :( http://t.co/HDgBmwYSRr', \"I'm still so upset about my hair... :(\", '@SaveSxy i couldve joined pz earlier if i didnt wait..:(', '@bbcweather My camping trip starts on Saturday in Somerset...looking good! ...Sunday though is a different story... :-(', \"@Maxim_PR given how sunburnt I managed to get this weekend, maybe I'll be safer here in the rain :(\", \"@JamesMorrisonOK gutted !! I couldn't get tickets and it was my birthday :( are you releasing more dates\", \"@rah_sim you didn't even know what k3g was smh :(\", 'i need to get used to waking up alone again :((', 'What should i do . \\n\\nBAD VS PARTY AGAIN :(((((((', '@diplo so near yet so far :( Manila better be in the books soon </3', \"So steam updated and now my inputs for GameStomp no longer work, if I can't fix this tomorrow I'm gonna have to cancel the entire event :(\", '@Mandi_Tinker yes, very inconsiderate of them. :(', 'desc me in 8 words — off anon :( http://t.co/uCoB6iaV6W', '@roguetatt :( i love you', '@iamsrk sir,please announce don 3!!! i am badly waiting for it!! :(', \"Starts raining just as soon as I'm ready for a run :( damn it\", '@mooosebloood are you 100% sure you lost it in your house?? :((', \"Angelo's face while listening to Yna :((( #PSYGustoKita http://t.co/G5OxPE4DRI\", '@yearsandyears gimme european dates :((((((((', '@davidgold if I send you a fiver towards a new striker can we get one? Without Sakho we have no threat :( a goalscorer and we will be fine.', 'ive been reading cute fluffy cs ff :( i miss my babies :(', 'Foot pain just woke me up, nooooooo :(', '@Gilinskyscherry FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'I went on at 10:59 and stayed on at 11.00 until now but there were never any @Uber #UberIceCream vehicles available. Sham :(', 'I wish my Parents would live forever. :(', 'Finding a good conference hotel in London is tricky! They are all too small :(', 'i miss baao :(', '@JamesAnthonyT @MitchKinney is he alright?:(', 'nisrina is so beautiful :(', 'So, its been 40 days since you been gone and I still missing you like crazy bcs there were many hard times that I need you to support me :(', \"ladygaga I bet $20 to a friend that you will follow ✧。 Chelny 。✧ before the end of the month. Don't disappoint me! :(\", \"@ROOM94 I miss you's lots :-( , hope too see you's soon x\", '@yearsandyears what about Paris :(', \"At least I think Marrish is happening, not as my others otp's :(\", 'I miss my guy bestfriend :(', \"Its 6:15 and I'm wide awake :(\", 'Fuck tired :-(((', 'look how beautiful i wanna go back :( http://t.co/Z0dePj5knU', '@vIackhoIe yess;; i dont have the original pic :(', '@jungsilhoon ......... not really :(((((', 'OKAY PLEAS EDOMNT FCK QIH MY FEELINGS SHXBS ENOUGH!!!! :( #ZaynIsComingBackOnJuly26', '1000% battery life please :(', '@fionnlim my leg is white :-(', \"@smiffy no :( I'm so sorry\", '@NewburyToday Please help find these baby goats stolen from Chilton. Their mother is crying out to feed them. :-( http://t.co/ZsKASm4nCx', 'Wasted a good outfit today :(', 'jackson looks so exhausted :-(', \"@deniserayon_ I'm a fuck up :(\", '@filadelfiaaa you need to stop being so obsessed over me this is getting creepy :-(', 'josh is so tall that when he hugs me he can rest his head on mine :-(', '@AdoreDelano are u there too? :( http://t.co/P4Of3dpGXi', 'Boohoo back to work tonight, another weekend on nights :-(:-(:-(', '@dialoglk I wanna hang out with fellow tweeps and roar the lions to victory #TweepsMatchOut I want to hang out with my twitter family! :(', \"justinbieber I bet $20 to a friend that you will follow ✧。 Chelny 。✧ before the end of the month. Don't disappoint me! :(\", '@_ANGELINA_HORAN FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@MrsPiszczek nein :(', \"@girl_communism I can't see that tweet :(\", '@bsuzysk 404 not found! :(', \"i feel so bad because i fell asleep like right before it turned midnight and wasn't able to tell willlow hbd :(\", '@JaquieBrown @SundayStarTimes Sowwy :( The 3000 word limit really grinds my gears, but 0.001% chance of winning makes up for it!', \"Spent ages making our first Vine, only to realise that they're meant to be shot in portrait mode and you can't flip the shots...\\n:(\", '@yadirarpineda aw sorry :( you ok? wake up Madi', \"@Shortyy182 what's wrong? :(\", '@OpTic_Mochila These are not facts bro :(', 'I wish more people did 11:11s for me :(', '@LHBF7F you ruined it >>:(', 'Shanzay salabraty :(((', 'I WANNA MEET THEM :(((', '@AdityaRajKaul really thought you were one good journo.. But the lure of the gang I see is very strong.. Sad to see you too twisting news :(', '@78LOUlS i love you so so so so so so much :(', '@GIJojo2 Finishing on Monday! Sadly :( Then closed beta at the end of the year!', 'i didnt wanna end up here :(', '@boutagirrl I asked my sister and she said no and neither of my parents have it so like :-(', 'I wanna watch a movie :(', '@lgpmoradaax mashaket :((', \"@biobio1993 :( that's so sad... maybe it's a mistake, or they'd feel different about it now? *pets*\", \"When you feel like you're making the wrong decision :(\", '@Raphaelite_Girl Trying to send you a DM but not working?! :(', ':( (with bapak at Royal Prima Hospital) — https://t.co/mufNZljRv7', \"@BeforeYouExit you haven't follow me too :(\", 'GUYS add my KIK - mune874 #kik #kikme #tagsforlikes #snapme #bored #hannibal #kikgirl :( http://t.co/ax26wgYdRa', \"@justinbieber if u see this, can u follow me? I'm waiting so long :(\", '@larryequality this :( http://t.co/6rEe3BrXe6', 'How to money :(', '@princesswhut FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'i truly miss playing piano so much, i should of never stopped :(((', \"@LuiCalibre I'd be down but man i have to work right now :(\", 'PLISSS TWEET THIS ELF :(\\nMy #TeenChoice for #ChoiceInternationalArtist is #SuperJunior!', \"@junghooked @BTS_twt of course!! i dont think he'll take it seriously omg how nice if he saw this :-((\", 'Went home & came back :-( (@ Sunway College - @sunwayc in Petaling Jaya, Selangor) https://t.co/Hgr1dMQ1eQ', '@aurorakween I STILL GOTTA GLOW UP OK :(', 'Huhuu Thank you for all the \"congratulations\" and the \"proud of you\" You guys have no idea how happy I am thank you for the support :(((', \"@Thirty3forty5 Yeah - we thought that was part of the tour we did today, but it wasn't. :-(\", '@luvsgngrhd ME TOO :((( wHERE IS MARGO', '@marixyanchik1 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Konga\"@BeemanNONI: Well... \"@_topeh: ni wa*\"@iCUM_Thrice: Ode ni e\"@_topeh: K \"@iCUM_Thrice: I need to be disvirgined..like seriously! :(\"\"', 'I hear u\"@OccupyNaija: But you know I do na... :( We can negotiate the Bride Price Advance Payment https://t.co/7M7pZMPw7u\"', 'I thought I tweeted the link to end the yulin dog meat festival but idk what happened to it .. :( Imma try again', 'Ive got so much things to do in 3 days. :( what is syawal now. http://t.co/QZ4K9f36bs', 'I need to see my boys again :(', 'i lapar :(', '@lmaoclffrd yeah sad life :((', \"Watching @IVSofia 's story on Snapchat is killing me. Whats your life ? Beach + Pool all week long ? When are you working Bitch ! :(\", 'i forgot to get pale foundation :(', 'Sian :( why my plans always clash one fml 😭 facil head training this entire weekend and DH chalet. GOT SO SUAY ANOT 😢 HOW TO GO FOR BOTH', '@cloche_hat ah. Good luck then. My cat used to let them go in the house to have something to play with over winter. Fast little buggers :(', 'एक बार फिर सेँ धोखा........ >:( >_< — feeling silly at Chandauli Majhwar railway station http://t.co/iWAeDmuooP', \"Cant stand seeing my titos and titas cry :((((((( please pray for my cousin, he's in critical condition right now :(\", \"@celine_s16 I don't think you would like the answer to this question :(\", 'number 13 :(', '@wearedetr0it steals my narcos growing :(', 'nightmares :(', \"@milesSI ruins the game for me. You'll notice many stop playing the game when there are many regens. They don't look realistic :( shame\", '@crybassist why have people unfaved and rted this :(', \"@Hayleychinney Hope this isn't a regular problem for you :( Can you please let us know where you travel to/from and the time this was due?\", \"It's just heavy duty Benadryl lmao but dat shit works! I forgot to take it earlier :((\", '@pookiportia do share :(', '@IamMansoorKhan I hate it when u are offline :(', '@KISSINGJAl FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Not looking forward to this night shift tonight :(', '@irlfaker all nighter :(', '@gelzarraga dude, why arent u answering any of my msgs :((', 'yg new gg please :-(', '@SarahH9977 Thanks hun. Shame one of the sxrew on ends came off and dissappeared. Alot of swapping around and bleeding all over the place.:(', '@limonyeozaman ishal mi :(', '@cutelikejdb FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'high school days :(( https://t.co/sZemQfSZWx', '@muscularpayne YES BABE !!!! I MISSED U SO MUCH MORE :( I HATE U', 'It just ant working out .. :(', \"I'm so sorry about my spam guys :( http://t.co/zpLPgKesOH\", '@jhezreenmae thaanks Jhezz!! Omg stay awesome and damn your sneaks :((', '@kargadouri FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"tHE FANDOM IS BORED :((( DON'T HURT ME #ZaynIsComingBackOnJuly26\", '@margiefeeney11 barely any for Saturday and standing though :(', 'Soft defence by the best defensive team there :( #NRLTigersRoosters', \"and it's also so unfair that she won't be in the season 2 of @SecretsLiesABC i want indiana back, i don't want a new cast :(\", '@ImHibaNoor Hibbs fOllow back Nh Do gi ?? :o :(', \"Now I'm sad :( https://t.co/Ribf3SkrDI\", 'Where is this new Frank Ocean album :( :( :(', '@sasaribena BibleThump :(', 'Stress come on :(', '@RFarghaly123 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@mariaebun its not me :( its the person in me, sorry xxx', \"I rlyyyy wanna get my septum pierced but my mum won't let me :(\", '@muscularpayne GOOOD but its so hot here my tan line are ugly but im going home tonight!:(', \"@O2 Hiya, can you tell me if the Amazon fire phone is still available? I can't find it on the web site :(\", 'Stressed :(', '@GABRlEIIE not as much as my brother :(', '@Camy19994 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@stairwaytoalex sorry for saying your leg black in a venomous way :-(', \"And oh great, I'm sharing a carriage with a group of middle aged women in pink fur-trimmed stetsons. They've started drinking already >:(\", \"@RocketLeague you have a due date for the fix of error 59 ? My friend and me can't still play :(\", 'hays :(', 'i dont know :(', '@Childcareisfun @geekisnewchic :( okay', '@caylahhhh when my baby angel dies :((', \"Xue hasn't made me sing any songs for so long D:! She always gives Midori all the work! What about me :(?\", 'Hi @facebook please help me in getting back my disabled account. I really really need it back. :(', 'Ang sakit!!!! Inside and out! :(', 'but you already have me. :( https://t.co/CTmgOcgC54', '@kidrauhLogan FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"@kaylakerwin :( that disgusts me what a piece of shit..you're such an amazing mother Mateo & Brooklyn are so lucky💗 he doesn't deserve to\", \"When a guy buys u a water, but u can't drink it because u didn't watch the cup like a hawk as he transferred it from the bartender to u :(\", ':(( My #TeenChoice for #ChoiceInternationalArtist is #SuperJunior!', \"'Working from home' normally means 'surfing' but not in this case :(\", '@atiraxia :(...feel better bby!', '@RebelYelliex ok you better stay, otherwise i will miss you too much :(', \"@EvaMcL3 That's shocking!\\nWhy can't people just live & let live?\\nSometimes I despair of this world! :(\\nHope you're OK.\", '@BUTERAIRLINES FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@honestfandom bc were still hoping :(', 'Why the hell insta is not working :((', '@Real_Liam_Payne when will you notice me :(', \"I miss Chris ' voice :(\", '@myteksi hi, may i request a promo code pls? Tried using iwantin but got rejected just now :(', \"@cherryboyJJ :( then pls don't think you're not good enough ^__________^ let him be. if he's missing this chance then it is his fault\", \"@1DMspree @njhla omfg harry pls bae :( don't ignore me\", '@amerazjm FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Goodluck to your pocket \"@SwitInno: And I\\'m moving next week :( https://t.co/HCMO09MhQt…\"', '@stylesandjord and a month since i saw them :(', '@DanReeve86 I am really sorry you received the wrong order :( We would like to sort this out straight away. Can you email Help@VeryHQ.co.uk?', 'Photo: benedictervention: This is what happens to the contents of 221B between seasons :( You’d think... http://t.co/XXXtCKj5SP', '@zeynepirdal FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Feel like movies and popcorn today at the cinemas.... But no one to go with :(', 'Sleeping alone is terrible :(', '@kyuzizi Hey! Take care of yourself. :( :*', 'joyce,calm down :((', '@unit02chainz oops I meant those tiny chat days oooops :-(', \"Spotify finally figured out that I'm not in the US and won't let me listen anymore :(\", 'i have to go :(', \"@nickiepedia :( I can't. My parents are here na and my plans don't usually work out when they're here huhu. But I could try to make paalam\", \"@princess_sair I'm not being mean :( your my sazballs ❤\", \"@haestarxx they've been cuting it after his pants incident :(\", 'school starts pretty soon :(', 'why are so many things happening tomorrow aaaahh :(( wanna gooooo', \"No stomach's already growling :(\", 'Shaved my hair.. i feel like I gotta shave my beard a bit now :( nooooope.', \"Omg happy late birthday @mariahjoyyy I'm so sorry I missed it :( love you though hope you had a lot of fun 😘🎉\", '@Cro_Marta FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@RanDomly_Dom ding ding ding! a hundred points for u :(((', \"@churlishmeg Hi Meg. Just sent you an email about Verity's performances being cancelled this weekend. :( Rupert\", '@gulermaanb @sir_mancio amin :(', 'Weekend = Work + Studying :((', 'Retweet this pleaaase :((( 👆🏻👆🏻', 'Woaah Chris Brown :(((', '@TimmiTRetro @S0LV0 @sonicretro sorry solvo ;-;\\n\\ndont mean 2 :((( http://t.co/uz8ZgUEZ1A', \"you're gonna be such a good father :( https://t.co/wNAdY4En1E\", '@anissapenaa :( it would it really would', '@mrandmrsMCT no way I missed it too :(', \"i'm still finishing my work, dad. : ( https://t.co/T5mb06nkdS\", '@luke_brooks I need a twin :(', 'No baby no :( http://t.co/dNSaPwiUQA', \"@destinydatabase just want some new stuff :( me and @__Crow__ used to love Friday's for Xur been months of no excitement now :(\", '@Austin_Love_AM FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'When you step on a lego barefooted. :(', 'That time Twelvyy got rude :( http://t.co/zWreWycNrf', 'I need to sleep cuz another meeting at work in the morning :-(', \"@Stockhausens just have to hope and pray he's in good hands I'm far from being able to see him and I can't call him with :(\", '@WeeklyChris Hello! ... :(', 'Good news on the Boaz Myhill front but not on takeover news :-( #wba', \"anyone has the pic of taeyeon's derp in channel snsd hahahaha pd didn't zoom into hers :((( LMAO SUNNY's. BESST.\", '@leighalexander blood and plague pits :(', '@dargurl_serwiee Ok rich kid, I give up :(', '@Natvolpato1 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'And ignore my video game posts :(', \"@tackdriver56 yes that's a scary sight seeing frail people in cars. It's a lottery riding near those people, I always hold my breath :(\", '@Itsmiagiron okay :(', 'twurkin is razzist!!!!!!!!!!1!! blocks and reports u and writes a tumblr post about u :(', '@hstylessssayers @natishlouise MIGHT? :-(', 'KIK me guys - shek609 #kik #kikgirl #hot #likeforlike #horny #goodmusic #mugshot :( http://t.co/FDmw6B7jAL', '@cooldigangana @DiganganaS I want to attend ur birthday plssssssssssssssss :(', \"So Taissa Farmiga and Emma Roberts aren't in this season of AHS ? :(\", 'sorry :((( https://t.co/7BjmbfAPAZ', \"So gutted can't get to Liverpool tonight to see @JakeQuickenden on his final tour night gutted isn't the word :(\", '@drewsdimple he always does this when his hair is getting long :(', '@josselynramos01 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Fever :(((', '@subsubjjang YEAH HE DID BC AT THE END HE RUN BACK TO HIS PLACE HAHAHA I DIDNT SAW THEM LAUGHING THO BC LOW QUALITY :(', '@daniellesladek Hi Danielle, oh no :( Do you have the latest software installed? Have you tried doing a back up and restore?', 'Why momo, why? :( https://t.co/HcqK1IZBRp', '@inathancameron why you unfollow me? :(', '@alkapranos like pharma, sugar....almost immovable :(', \"why is got7's outfit for music bank so messy? :( the colour could have been better\", \"@myeongwh0re thank you anshe :( idk i just can't bring myself to get it off my mind but thank you;;\", '@Lill_Hippie FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Watching guys total their F1 cars makes me sad:( watching billions of rands get fucked :(', '@Mz_Phoi im bein so serious its sad....lol\\ngo tla tweng? Ive got shit genes :(', '@00kouhey00 Shut fuck up.Come here right now >:(', '@swelcome me too :(', '#SandraBland May Your Soul Rest In Peace. Our Thoughts and Prayers Are With her Family! :(', '@rhiska22 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"I can't believe that I got home, to find out that my brother is in jail, & is getting sent to county tomorrow like wtf! This isn't fair :(\", '@Solo_Dm_Helperr Me please i love she :(', 'is this better or should i just change it back omg :(', '@changkyunaf AHH WHY HE NO CHANGE IT SOUNDS COOLER :(( LMAO YES 2 MINHYUKS', 'Cause I want those nails :( http://t.co/ppwe3NHMs4', '@kazonomics @CNBC Man they told me to buy gold all the way down from 1900.. and now they tell me to sell :( ?', '@Suzy4everfan 😪😪😪 so tired sis we wait Yu nas hz :(', '@jonathan_wolle Lucky :(', '@ohkaibaeks I only have 1 though!! :(', '@EXOWORLDINA is he crying or something ?? His nose is red ! :(', 'what usually happens :( https://t.co/6o3ZgNOnvh', 'OMG selena tweets while i was busy out :(', 'saturday classes :( fuck', '@maibasyony I love you much more ♡♡♡ I swear emta hatigii b2aa :(((((', 'I wanna go see Paper Towns :(', '@LucasUpton @maffup enjoy these treats while young :(', \"@LukeBryanOnline Yayyyy!!! I hope it's not while I am knocked out by anesthesia. I will be so sad if I miss it :(\", \"If anybody around Penrith/Emu Plains sees her (she's giant and hard to miss) please let me know\\nVery important :( http://t.co/zQh19Rl1t2\", '@_tiffanyhwang like.... just put it at one side... or tell the staff... She still like slotted it in to make it look untouched :(', 'I WANT APINK TO WIN :( #더쇼 #에이핑크 @SBS_MTV', '@gummistovlar brienne meeting lsh im so :(', \":-( I'm up w no one to talk to. Bye\", \"@BBCSport he's always gunna be a former Leeds manager :(\", 'Darn :( http://t.co/lLeXrMuiXz', 'why didnt u :(', \"@dongvvoo1122 that's what im thinking too tbh :((\", '@fawadchaudhry May ALLAH save us from Pakistan`s Juudiciary :(', \"so sad to be leaving, Tim Horton's is better than Dunkin :(((\", 'Vidcon :(((((((((', '@HeelSimba :( well let me know on the day if after work you feel like socialising and I will make time for you!', \"I wish I had Cara Delevingne's face :-(\", 'My biggest fear is getting some drugs laced with something and flipping the fuck out :(', 'Easier said than done :( https://t.co/7HTgd85HfF', '@HoneyDogKimura Yes so far. Been nightmare to sort out. No Will. :( But light @ end of tunnel now fank Dog. xxx', 'Omg wtf people from apb got there schedule already?? I wish they did that for us :(', 'phone fell out of my hand and it woke me up :(', '@FilthyFrank i love u :-(', '@crude18 takfaham. :(', \"@yg_melissa look nothing I'm just bored :(\", 'this bird just had to shit on me :(', '@dumplinghoya :(( but I want to get at least a little bit older so I can do stuff XD', 'Ufffff Sr Dard :( — drinking green tea', '@tmhcuddly awwww KATEKYN :( I wish you could get it back', '@dongvvoo1122 ehh?? i dont think line supports that :((', '@lana___amiir @FATMA_TEARS @saad_my_life @FatimaZahra_SA @Saadlamjarred1 yeahhh :( .. It means have \"hacharatt \"', 'NIALL NIWLL NIALL NIALL :(((((( https://t.co/vftOOtSopP', '@realmadrid New kit is not looking good.... Poor.:(', '@electricgujtars not u i love u :(', \"@douglaswhates @muziekweek Aw :-( Depends how you define success! Good music is success (2 me), so I'd say you're successful! | How are you?\", '@kylaaareese me too :(', \"it's been a month tomorrow since luke followed me :(\", 'Witnessed ! #family #trip to #goa :( https://t.co/u13lmgymTH', \"@_orrhettofrappe they don't know how to make linis kasi :((( so sad. that's why im sweating kanina and it's so init pa huhu\", '@LANISeanDon my brothers do that, I gets pissed off :(', 'Awww really miss RHD celebration :(', 'Their 1st week digital point is decent. And so does their physical album point :((( wae', 'Gonna miss the subsidized lunches :( https://t.co/XwpUutxD60', \"@marjswifter i would never be! I understand though. Just a bummer i still won't be able to meet you. :( :( :( :(\", 'Gutted that the @bellesglasgow 20th anniversary shows next year clash with @GlastoFest :(', 'youngjae is getting more handsome im :(((', '@LeeUUHN No specific dates, just whenever we catch each other :(', \"@devan4director DUDE :-( DM me it I swear I won't add her\", 'Tbh, bestfriend breakups are even worse than relationship breakups. :(', \"harumph it's all soggy here :( was hoping to go do some more weeding\", \"And I'm moving next week :( https://t.co/zEITfrs8kB\", \"@crunchy_mummy @stevie_couch @Twinmumanddad @RunJumpScrap @helsy_1983 @NigeHiggins4 @Mr_Kitney it's raining her today, boo :(\", '@lynfogeek \"We\\'re sorry, but Google Play Music is currently experiencing errors. Please try again in a few minutes.\"\\n\\n:(', 'Im so hurt Selena was the best :(', 'the only thing i miss about Ireland is the cheese :(', 'I forgot to bring some of my #kitkat green teas and sakura flavour chokkie :( 😩😭🍵🌸', \"@_siMan__ says it's unavailable. :-(\", '@S0LV0 @omgNova @sonicretro Sorry!!! :(', '@chattsss I was going to pick you up earlier w/ richard but I forget you went to a gay club :(', '@celestiaIstars I actually typed this at 11:11 then my laptop took forever to tweet :((', 'why does it hurt so bad :((', '@sandwichlove_ I MISS them so much :(', 'Going to sleep alone :(', '@yongshwa huhu i know :-( thanks before satya! xx', 'My Aditya, mommy miss u sooo much :( .', '@diegxdelrey is this on ur computer? mine did it too :(', 'wanna go to singapore :(', 'I WANT 🍜🍜🍜🍜🍜 :(((', 'take me back pls :( http://t.co/baFVb7CXWZ', 'THERES THIS VIBRATING NOISE THAT WOKE ME UP ANS I KEEP HEARING IT AND ITS MAKING ME SAD CUS IM SO TIRED :((', '@Charlo_Parker Sorry :(', 'So many people are dying while returning to Dhaka after celebrating Eid. :(\\n\\nGuess traffic jam is in fact a... http://t.co/lR3JUxPtJG', '@Kellipage17 Haha, aw :( Sucks to be you! I shall be there in spirit keeping you warm & cheering for you?', \"@Uber How do we get our free Cornettos? We can't figure it out :-( x\", '@rainbowsessed nosebleed :(', \"I had a scary dream & now I can't go back to sleep :-((((\", 'But T. ______ is mad of us. I think. :( :(', '@NintendoUK @InTheLittleWood I want his game!!! But the last Nintendo I bought was a wii :(', 'I think I should stop getting so angry over stupid shit :(', 'Wew ramos on the ground :(', \"i love got7's outfit for just right >:( its so fun\", \"@MollyRosenblatt @Gonzo @Fox35Amy @luannesorrell @JaymeKingFox35 @Fox35John @ryanelijah @KOBprod I'm a fan of hair since I don't have any :(\", \"I don't sleep enough :(\", '@HelpwDms Hi. Sorry, I already have a Shawn Mendes sponsor :(', '@bellakpopkpop -cont- I have LINE :l same, I just online to reply mention and just watching tl x) sorry for late reply :(', \"Today Is a horrible day :( so dark and dinghy :'( http://t.co/oKR3mwS4jm\", \"@Skye_Fern Hi Skye! I'm sorry to hear this! :( Can you DM which store this is please and a name/description of the colleague please? (1)\", 'Why cant i see ur album? :( @BeaMiller', 'Evening :(((', 'Gagal total :(( My #TeenChoice for #ChoiceInternationalArtist is #SuperJunior!', 'I miss being a kid :-( http://t.co/724BGj38Hq', 'someone txt me :(', 'i want to play sims 4 :(', 'Noooot tired :(', 'Aww. :( I liked Notch too. https://t.co/Hl310mipzP', '@BannonAmanda thts depressing :-(((', 'Sucks everyones knocked :(', \"I'm starving :(\", 'Only a fuck day \\U000fe196\\n:(', 'Me too :( https://t.co/naDYZSJbca', \"mum woke me up to help with shopping now I'm awake and tired :(\", '@benwalker87 why are they all busy :(', ':-( \"@jperkovic93: Madrid playing in pyjamas today\"', '@Marx_Envy dat suks i want my old sleeping schedule back :(', \"Ugh, I think I'm getting sick. :(\", \"@charmsham i can't able to view pics da.. :( wat pic is this?\", '@taylorswift13 How are Swifties outside of U.S. supposed to vote? :( Really really really want to help you win!', '@annayeng sorna :((((', '@zora_db Just texted you, I am dying of lurgy, Jim! :(', \"i love the grey kit but i can't afford 3 kits :(\", '@chantalYM_ I went in to see them and apparently used about 6Gb extra of data :(', \"I've always wanted to see Two Door Cinema Club live :(\", '@fenestawindows Now You Scaring Me :( #Fenestoscope', '@AinsworthKeira did I not? Ah what a shame that is. Why am I not a shuffle queen like you :(', '@pablonerudaofic FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'everything was so much easier back then :( http://t.co/gW0vFMQqzQ', \"@knives_chau I'm not surprised! :(((\", 'hope bb can get some proper rest soon :(((', 'Etienne is making me sad :(', 'sometimes i wanted to be with myself.... :(', 'Can i cry for real coz the bandana s so cute to match for my dress.:((', '@colon_valeria FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Look how many people still think the more a woman has sex, the bigger her vagina. Sigh :( http://t.co/q1hctzJXvF', '@jan_iyer :( u didnt wish suriya anna....', '@CoreyHenson15 Follow me :(', \"@thei100 @Independent you said I was a man, I don't have dangling bits :(\", 'I was just thinking mjhe aaj tak kisi ne DM ni kiya :(', \"@queenvause what's wrong?? :(\", '@Aishjayx3 what happened to your eyesight? :(', \"I don't know how to start my requirements :(\", '@JamesMorrisonOK what about Leeds? I wanna see you live again :(', '@kendrahatesu FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@tataykosiharry I have 25 :( 25x30 ?', 'Hi everyone..\\nGood afteNoon \\n feeling Booooore :( :(', 'I got sleep medicine, but imma be out till 7 pm tomorrow if i take it now :(((', \"Why is it that I always wake up around 3 and can't fall back asleep :(\", '@AllRiseSilver uuu you make me hungry :( haha enjoy your meal~', '11:11 a boyfriend :(', '@Karishmakumari no ma you are! :(', '@Louis_Tomlinson i wish i had the money to fly and see your concerts! :(', '#FreebieFriday fingers crossed had to cut down food shop cos unexpected garage bill this week :( https://t.co/k7bFXN9H5V', '\"I know you said this is Michael Jackson, but this is obviously a little boy\" - my little brother while listening to a Jackson 5 song :(', '@BOCAGIRLSLAYED FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@AchterHorkrux nein. :(', 'gyu looks really good in denim :( http://t.co/SXzNAUQ7Vs', 'Still on the outside looking in at all fun going on with @bemeapp ... somebody please code me up :(', '@camss59 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Ce @7essycaauryn say GWS for me pleaseee ??? :(', 'good night :(', 'Nice whilst it lasted :( #AFLBluesHawks', \"@iTunes hi, I could not find any other way to contact Apple. Shuffle doesn't work at all, it only plays one song. :( http://t.co/qtgCn7Wi1P\", 'so wtf should I do today ?.....:((((', '@thevinnythepooh welcome to my version of twitter hell :(( @jefflacs', \"I can't stop watching Greys anatomy :(\", '@TheWeatherNetUK Sorry, not sorry :(', 'No1 online :(', 'why does she look so :( http://t.co/2NajN7LP0c', '@WaqasAliRajput4 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', \"i love morisette's voice af :(\", 'how tf do i get photoshop and flash non-trial version :((((', 'This is awful :( #SayHerName #SandraBland http://t.co/XT9P3J9v83', \"@lootcrate hey I've received my lootcrate today and the box was damaged and has damaged some of the items inside :( what can I do about it?\", '@gadventures So hard to pick just one. The Inca Trail was tough but fair, sandboarding was fun but lost my iPhone :( http://t.co/98H24VFdp4', \"@MollettGames So, so, SO much :( Especially if a TV network cancels it before it's time :'(\", '\"NO ICE CREAM AVAILABLE\" what a surprise.... @UberUK #leeds :(', '@davidottewell all while you and I cried into our Derby County and Leeds United coffee mugs -- unable to share our hate of Man U. :(', '@emre_lavigne FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@CameronNeil yeah true but I fucked up one of my signature dishes last night! Unfamiliar kitchen :(', \"He hates me now, that's for sure. :(((\", '@Eskom_MediaDesk bad news but nothing new wait for the coldest weekend and have load shedding :(', \"@osullivand it was the 10 year old's cat and his first loss of a pet too :(\", '@AWSSupport Thanks - can someone maybe look at case 1451834461 fast - I totally fucked up and its mad expensive :(', 'thirdwheeling these lovebirds :( http://t.co/kMrSV4YCz0', 'crying again for the nth time today :( kinda tired tho hay what am I gonna do with my life', ':( Dark Horse is better IMO sorry not sorry https://t.co/QfTrANs4Yd', '@myungfart DONT CRY BABY\\n\\nTALK TO ME :(', '@FATMA_TEARS me too :(', 'what do you mean :( http://t.co/xb7114NLDN', '@JerryFitzgibbon still a lot of tweets to delete by hand... :(', \"Dude, I won't even go watch it :( https://t.co/6BItjMbEtX\", 'i feel like that shirt is\\n\\nfamiliar\\n\\n? :(', 'The truth is, if I could be with anyone, I would still choose you. >:(', '@otraway same :(', 'Ahhhhh last 2 stages to go :(((', '@tmhsposey that was the account that got hacked :(', '@@JulietteMaughan realising that I never received my copies of #Sensiesha :(', \"Trying not to think about returning from Spain and leaving our eldest behind. She's already had one cry about it :(\", 'i miss netball :((', '@Kingstxnn Omg how u know............. 😟 HAHA keedz la its gonna be a long time before i party again :(((', '@aysegul_k please?\\n\\nIf its okay tho.\\n\\nIts just sooooooooo soooo hard to get a follow from him :(', 'I MISS TAYBIGAIL :(', '@FrantaAndBiebxr FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'feelings suck guys :-(', '@VisionzChokez nah i only have 1 no more jordans :( no more tournaments :( im goin ps4', \"can't kinks my chargers fucked up :-(\", '@tanginnomo no he kept looking at my bag :(', '20 losing streak... sad (:-(', '@amk Mine too! :(', '@COSMICNEWT WERE NOT READY FOR SCORCH SRSKY :( much more for tdc', 'need rest badly :-(', 'i miss them :(', 'Cant believe @TomParker & @MissKelseyH are finally in Egypt and i still wont be able to meet them :( #Gutted', \"@maicaocampooo I'm really sorry :(\", 'Height of In-sensitiveness.....ridiculous...:( https://t.co/bIBuYc44P5', '@jessicarios468 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'Struggling like crazy to get into a race fan mode. My head wants to, but my heart is just not cooperating at all. :(', 'I will never fix my sleeping schedule before school starts :(', '@EdenAdore hate to see you sad :( x', 'Come on @Uber. I want #UberIceCream. :(( http://t.co/Xl6kKYUbk3', \"@itsNotMirna congrats! Yay! Why didn't you invite me :(\", \"@RachaelAtWork @curexcomplex Don't even talk to me about computers. I'm having a data conversion done and it's all gone wrong. Crying :(\", 'Donna Thurston Collins we saw him today, he was the only dog sitting quietly in the kennel :( 911 NEEDS OUT... http://t.co/T8O7X2aRTm', 'Schools so shit rn!:(', '@nashyy_niall FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@AYINAJ__ why you only got half :(((', 'Want pluckerssss :(', \"@ZaynReport @MakeYouKnowLove what's mean? I don't understand nothing :(\", 'My KIK - gion886 #kik #kikhorny #teens #talk #nsfw #kidschoiceawards2015 #hotfmnoaidilforariana :( http://t.co/YbOKUQDWyE', \"I recorded ming and PBR giving me a shoutout on periscope but uts not letting me upload :( i'll try why i get home\", '@OGLeahSwanky i miss you more lil shawty :((', \"@threecheeese @Jutalkingtomeh I can't tomorrow. Naw :(( just eat my share. Huhu\", \"Sterling's gonna be so good at City :(\", 'MY kik - abligaverins7 #kik #hornykik #photooftheday #kikchat #likeforlike #indiemusic #sexygirlbypreciouslemmy :( http://t.co/CCr5mIKmMZ', \"apparently 9muses' performance was cut today >:(\", 'hrryok: the fact that harry still hold his mom’s hand :( :( :( http://t.co/hgE3nNSq4q', 'I need a massage :( ASAP', 'I want to be friends with them and go to concerts :((( @camilacabello97 @LaurenJauregui http://t.co/TtBSmyLS2N', \"Can't keep up :(\", '@teenpunklou yup, same.. I thought it was going to be on sale at 8 am, and it wnt on sale at 9:30 I bought it at 9:48... :(', '@RealTurkeyLady 9/11 kinda ruined it for me. The sound makes me brace myself for hearing the plane crash every time. No bueno. :(', '@DLS_34 have you checked with the receptionist, our surgery tell us to check after 20 mins,you may have been forgotten :(', 'SICK :(', '@myungfart cheer up ella :(', \"I have that feeling in my nose when you're in the pool and all the water goes up it :(\", '@WforWoman \\n9) shopping will be like fries without ketchup. Tasteless :(\\n\\n#WSaleLove', '@ikebukuroh deantd :-( #justgotkanekified', '@MiaCousins ah thanks babes #notgonnabeactivefor2weeksdontmissittoomuch :(', \"Think I'm going to have some sort of breakdown! @JackWhiteMedia's 2013 Disney Vlog has been taken down again! :-( it's my favourite one! :-(\", 'This gives me the chills :(', '@JuzzyftMahone FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@Xjenrobinson :( no swimming with turtles for me', '@DSLewisUK you know :(', 'CNN are running with a strapline \"Are Movie Theatres Safe\"...? Yes because that\\'s where the problem lies :-( #Guncontrol #Lafayette', '@CrazyGreen16 HAHAHA i support them but this song alot ppl say not good so :((( INFINITE VS WHO AH', 'i got stung by a wasp im crying so hard the tweak keeps getting bigger ive never been stung by one before i hope im not allergic to it :(', \"@ncilla so thát's what i've been doing wrong :(\\na powerpoint presentation with expectations before, during and after diner is no-no either?\", '@vivalabeat Not fun, no :( Will try to find somewhere to nap on lunch hour', '@lgpmoradaax hinde :((', '@Marx_Envy how worse ? :(', '@Jime_JB21 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@adwyhz ticket da expire :(', '@Jennyi_jc yes.. could you link me the YT u are using? :(', 'Why am I not tierd :(', '@marjswifter but but out of all the days, same day pa :( your company is mean 💔 jk', '@Donoxh oh my 😢 my friend of 8 years is helping me :(', 'I miss my circuit training during my secondary school days :(', 'i just wanna sleeeeep :(', \"@argon_ramos @SoddersLiger *joins the hugs* I'm sorry to hear Sodders :(\", '@achiralk thanks for the feedback. Here I was thinking that perhaps Mobitel may be better off, heck, guess not :(', \"@Domidodah that's not good :-(\", 'But you know I do na... :( We can negotiate the Bride Price Advance Payment https://t.co/2uRT9ae8Px', '@notaxation Colin, my PS4 is dying!? :( where can I find playstation support, without being charged money to call? Any help much appreciated', \"@thisfrozensea :((((( don't b rude\", '@Salweimar FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@virginmedia how long till Internet will go on? Was late in paying my bill and this exp waste is killing me :(', '@zupiapre Unfortunately, yes :( why?', '@eveh1_1 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@mgyhahsnayreht :( I was like OMG when I saw what I misspelt', '@kassi_grace Real life always gets in the way :(', \"She's so nice :((\", ':( true https://t.co/tTWEtt5GEP', 'i wan t a boyfriend :-((((', 'hyungwon was so beautiful just now!!!!!!!! :(', \"I totally slept through my alarms so now I can't go to the gym :(\", '@yeymp3 :( I hope you have an easy day at work today ❤️', 'IM HOPING :(( https://t.co/Q5slQJWgDT', 'What a painful way to die :(', '@GBiebs17 FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@Uber Trying to get an ice cream in leeds but it keeps cancelling on me :( #NeedIceCreamNow #UberIceCream', '@katrinacagro flight is on August 6 na :(', 'shakes my head repeatedly. nu-uh, jace, i love you the mostest! > : (', '@wwedrzziy @WWESuperCard_Ar @M76xMohamed @xalmtw7shx @semo_supercard @meto0003 @Mahmoud_Rida21\\nCongratulation :(', '@aylinguvenkaya_ FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', 'ph vips next week na :((((', '@Starlight_Sarah awwww oh nein :(', '@selenagcyrus babe?:(', 'Something sad/bad always happens to me around this time and day every year :(', '@LaveeKaif urgh i know :(', \"Wet holiday Friday :( Console yourself in our cafe with Sophie Grigson's amazing carrot cake! http://t.co/WfzvRXz1Id\", 'Sometimes I hate it when my heart wants something ♥ >:-(', \"It's getting light outside and I'm up :( I probably have like 3 hours of sleep D: I don't feel well rn and I have painful sunburn. UGHH\", \"I wonder if when I dropped my phone last time it damaged my WiFi cause I can't enable anymore and I have the otter protection case too :(\", \"Argh I feel sick wish I didn't come to work :(\", '@boyhuptuquruq FOLLOWED ME THANKS, AND\\n@justinbieber PLEASE FOLLOWED ME TOO :(', '@LeagueOfKnockup Dang it! :( Pon thought the time had finally come! OTL', 'Sleepovers with Jesse are awesome until he has to go to work at 5:30 in the morning :( bebe come back', \"@woonderfulhee i can't post any message again :(\", '@COOLDEMIGODS omg same :( FABINA was BAE. It was my OTP before IK what OTP meant😂😂', 'I love blue eyes :(', '@JenniferOldham4 send as some sunshine!!!! Is raining so much :(((((', \"Gardening is not part of a barrista's job description. Poor plant :( http://t.co/nQgQonm1TN\", 'Has a poorly pup :(', 'Great marketing campaign from @UberUK - shame all the drivers are busy :( #UberIceCream https://t.co/C0zXMuWeM1', \"@henryholland have a good trip. You won't need your brolly there... :-(\", 'Is this love? :(', '@24freebird sorry bt mere pass link nhi hai :( @SamanthaNair23', \"@corey_buckner i got hacked. I'm sorry! :(\", 'Well apparently, its post graduate students only, so i still dey go serve :(', 'Gonna miss BTOB. :(', 'other side of the world from all my people :( @caarolinenicole @QShawtymane @lazyolchristian @Noah55555 @Molainaa http://t.co/ACHMSo1gFC', 'Di private. Gagal kepo :(( My #TeenChoice for #ChoiceInternationalArtist is #SuperJunior!', 'Bitin :( @JatheaRebels', 'i want pretzels now :( #bb17 #bblf', 'I love you so much :(', '@minewsexual oh :( lol how it is? XD', \"@fckinica yes my dear! I will surely fuckin' miss ya :(\", 'PERF :( https://t.co/YjTjb45TaB', \"@kristynlopez97 you didn't get your vanilla latte though :(\", '@Skulker_PoA @ASUS_ROG Hi Skulker, check this thread: https://t.co/vMlI793G25 PG279Q isn’t coming anything soon sadly :(', '@MaKupsy there once was a place ..then it closed :(', \"oh my gosh traffic :(( I'm hungrrrryyy!!\", 'Someone sc me :(', '@KhaleesiMiley I want :(', '@ainexkelly but I have no find my iPhone app or iCloud app on my iPod touch so how can I see its location :-(', \"I can't go to hallyu on sunday :((((( so sad\", '@Rossi_mac9306 @MeekMillsBeLike @BestBedrooms I miss that show :(', 'buuuut i want it :(((( http://t.co/rInVNwnDyZ', '@RedLipsteeq funny thing is someone said I was telling his life story :(', \"Naw I'm really scared he gone think I'm crazy. I'm not gonna be able to sleep tonight :(\", \"So no free #Über ice cream for The Big Gay Al today. I didn't really want any anyway :( @ The Big Gay… https://t.co/1CThOoG9a1\", '@Nayritje okie :(', 'Friday!!!! But I have work til 8pm :( there is champagne haha', 'harlo i miss my boyfriend so much :-(((', '#torrentialrain today :-(', '@WforWoman A9) It would be a sad world for women ! :(\\n#WSaleLove', 'Lloyds r assholes there was clearly no one doing anything n now I have to wait till Tuesday :(', 'Aww man, I miss dancing. :(', \"@IanHallard Wonderful news! Best of luck with it x. Shame I'll again have to miss it :(.\", \"@selenagomez baby u tweet some fan during i sleeping i'm so sad :((\", \"@maggiemontalvan I knowwww my runny nose isn't letting me sleep :(\", 'sehun seems so skinny these days :(((', 'Big mistake not to bring a sweater this morning :(', '@danagold721 @PalladiumGravur @clementine_ford Yes youre right..and its sad that so many intolerant scared xenophobes are out there :-(', '@aaliyuhx what? :(', 'everyone makes mistakes ok :(((', '@thefinerthongs me too wtfff :(( i miss manchester and the mean bus driver', 'So lonely that sometimes i call my own number to get a busy tone. ;_; :(', 'Why have a no been paid ?? :((((', '@ODIHQ oh no !! It wasnt a lunch talk? I thought it started at 1pm :(', '@AfraidN0T then it might be hard to get into Final Fantasy then cause the newer ones are pish in comparison :( get the remastered 10 for ps4', 'i keep changing between fe14 icons i dont know which one to pick >:(', '. @Ben_Barker1989 yeah doesn’t appear to be working. But I want a free cornetto :( (not a strawberry one, they’re a fake cornetto)', '\"What happened?\" \"We just stopped talking\" :(', '@amyponce0830 I did :-(', 'please bring me back :( http://t.co/BLZEq3EqBe', '@tonyimberi Sorry :-(. Hope it gets better', \"Things that I regret until now...when we loose you.. :'( :( and missing you everyday our my lives!! #KapatidKongPogi http://t.co/CyZFCZFkjY\", \"i've been friends with steph and mel for the longest time im actually so sad i havent met them yet :(( i just want to hug them\", 'Where is carmen :((((((((((', 'truck was a week ago :((', '@topcoder Unable to login for the last 4 hours, no response from support team either Support Case 00128835, having a bad day! :(', 'I want Wingstop :-((', '@djdayz \\n@ohmydayz\\n@dayamickeysingh\\n@dayaftpardeep\\n@dayaxo \\n LOOOL :( help', 'I want to go on holiday damn it. Why must these days drag!? >:(', \"i've been streaming for hours, but the view didn't even budge, i'm stress! :(\", 'i never knew my cousin and i share the same love for 1d :((((((', 'Fuq ilhoon always ganteng :(', \"@nemuuunem they can't open the door so hard, I didn't notice that I already started a song on love live and I failed :-((\", \"Wish I was going to Leeds festival. Need to see Simple Plan :( it's been too long!\", \"I'm hungry and i cant make food since my brother is sleeping in the living room >:(\", '@Uber no ice cream for me :-( #getthescoop http://t.co/NNEeBaoTVY', 'MY kik : hearess677 #kik #kikhorny #hornykik #babe #chat #countrymusic #txt_shot :( http://t.co/mPhBY49eEi', 'why is everybody unfollowing me stop :(((', '@Jennyi_jc why the stream said standby only even Inatall the zenmate? :(', '@Chickowits :( Be careful...namechecking them brings them like a dog whistle with or without the #', 'junmyeon looks so d*ddy here :( LOOK https://t.co/xSRggfOijW', '@Ketepi_Ketepi sorry busy arini je tak busy :(', 'and another hour goes by :((', \"I'm not a very bright man. :(\", \"@qatarairways# would be fair to say that the privilege club is a joke . It doesn't matter what you ask for nothing ever available :-(\", 'I wish I could speak Igbo :(', '#BlameHoney for @ShaunySoda leaving the WHHR :(', '@edgar_trilla @wtfitsalex_ @_SamHernandez_1 @calvinrosorio I was just replying to Juan :(', 'My cat loves to snuggle up right by my face & I love it but can never breathe :(', '@rachaelhussey same :( working late tonight as well :( x', '@itsdemigdr ma come :-(', 'Trying to stay up to watch this game is not working for me :(', '3 weeks left for internship and 4 weeks left before going back to the States :(', 'Baby :( http://t.co/UR8ZwngzJZ', \"Normally don't get @VodafoneIrl data usage warning til end month, but got it today - so no more tweeting @GalwayIntArts or @galwayraces :-(\", \"@ThatPrakash11 i tried. Didn't work :(\", \"I had a dream i went to college and failed as an animator :( :( :(:'(\", \"@MsCarlyDowd we're not sure :( might have to wait :( but he wants to move asap!\", \"I wish I could drive. I'm good at it. Stupid vertigo and panic attacks makes dual carriageway driving impossible tho :(\", 'miss her so much :(\\n#AraGalang08 http://t.co/kT11UKaf3S', '@iamktlpz the movie was different from the book but still!!! ikr tams boses pa lang ni theo ugh :( miss you more!!!', \"My mobile isn't working anymoreeeeee :((((\", \"@seiyaharris oh no :-( that's rubbish.\", 'I still want a cactus :( https://t.co/TD8A5vEc9p', '@solodmssunshine OMG IM SOOO SORRRY :((', \"@CancerReliefUK I've had stomach and part of bowel removed because this nasty disease I have now been told I have tumour in kidneys :(\", 'Waited for nothing :-(((((((((((', 'wifi is fast af at my school even faster than at home :((', '@lostboxuk Very sad! :(', 'not feeling well :(', 'I have puffy eyelids :(', \"@itsAmarantha I can't wait <3 :(\", 'musicas :(((((((((((', 'baby looks so good in black :(( http://t.co/abIlgtTG5Z', \"I want to get into Dota but fuck me it's just not for me :(\", '@WOMADCHARLTONPK @MollysBarWOMAD 4am right near the campsites no less - not great with kids :(( Why is it not on the total other side?', \"sooooo tired but I can't sleep :(((\", '@Y0rgi Wish I could give some to you. I really do. But I cant :(', '@miahyooow Sorry miah hahays. :(', \"I want a churro popcorn and ice cream now :( I'm so hungry\", \"didn't bring key :(\", '@Victoria199412 FOLLOW BACK ME, THANKS \\n@justinbieber PLEASE :(', '@seiyaharris that sucks :(', \"I just can't sleep tonight :( Tomorrow is going to suck. Bright side... 6 more days and I'm back in Montana!\", '@jasmine_chantay :(( okay!!x', '@MbalulaFikile @UKenyatta Reign of errors example inflation rate sic :(', '@Uber - all ice cream vehicles are busy :-( #UberIceCream', 'I need to reset my phone :(', '@goodissachuntin Smh I know :(', 'Add my SNAPCHAT : EntlerBountly #snapchat #snapchat #tinder #dirtykik #followback #countrymusic #sexcam :( http://t.co/cbOf45m7VH', \"@scubadiver5 @Catharine34 I'm keeping the bug spray industry in business . Something bit my foot, swollen half way up my leg now :(\", \"I didn't see you today :( but it's fine. The distance makes me want you more.\", \"@brittannie_13 that's not fair, it happened to me :(\", \"@jojosmith1964 Oh no :( sorry to hear you're having issues with your signal Jojo. If you pop over the full postcode where this is happening,\", 'Someone please gift me #NotAnApology :(', '@nim_nams Hey hun! Unfortunately we would really have needed a model for a cut :( Thanks so much though! <3 xxx', 'Kafi din Bad mene aj koi post share ki he so friends like & rewert to bunta he Warnaaaaaaa...........:(', 'this is torture :(', '@xaimrose I tried to get in a field of goats jumped a wall and the drop was very low :(', \"#Iran #IranDeal :-( The US-Iran nuclear deal: MIT's experts size it up: This deal severely li... http://t.co/GbL15aoCW4 #UniteBlue #Tcot\", \"@RMBLees @dicehateme can't get them anywhere now. :-(\", 'Sorry God. :(', 'S2E12 is probably that saddest ive ever felt for rumpy :-(', 'WHY DADDY WHY YOU CHANGE THE CHANNEL :(', 'I literally just ate a whole gallon of ice cream, idk if I should be proud or nah :(!\\n- Ryan', 'Ah ma guy. You know the thing. \"@ceafive: the weather is set for more sleep but responsibilities. :-(\"', '@gandangclare secret! :(', \"@StuffAnuuriSays you're coming to Dallas dandia right :(\", 'As RBI in making of caged parrot. \\n1ly election commission, CAG r left, once d power is striped gujarat model will complete \\nVery sad :(', \"@LivingLifeNottm @honestmumma @moderndadpages I'm not looking forward to ours, mine goes next year at 3 :(\", \"@MelanieLBBH I HAVE THE SAME KIND OF EYES SO ARE MY TEARS YOUR SAME TEARS? BUT IT'S HARD NOT TO CARE :( ILY.MELANIE\", '@April_Todd aww :( what do you do?', 'LOL really?\"@PraiseKINGDAVID: @_Milli__ unlike me :(\"', 'Pure talent!! :( \"@OscarMbo: Always will be a fan of DeepXcape. Brothers are so talented!!! ����\"', '@bdunkelman doin ok? :(', 'I want to go but I cannot. :(', 'i cant go to sleep :-(', \"it's 5:08 am :-((\", '@seunjinbing @NGVMelbourne I can’t, thesis :(', 'Miss u :-( @deepikapadukone', '@kiwivickiBSc @BrezzyHayter sadly must be :(', '@VeilBride6 agreed :( ❤❤❤', \"like a boy when it's up like that' and he laughed and then we hugged and I said bye and :(((((( I love him\", \"please beliebers stop voting on twitter! it doesn't count :(\\nu have to vote here http://t.co/PkD4q2PVxV n refresh it http://t.co/Lh5sNTHmIV\", 'Come on #UberIceCream... where are all the cars :( #London #summer https://t.co/7Tvx7SZeQ6', 'SNAPCHAT : TammiRossM #snapchat #kikgirl #kikchat #wet #wife #indiemusic #sexy :( http://t.co/dEGAKDzsjN', \"we'll never be as young as we are now...\\nAS YOUNG AS WE ARE NOW :(((((\", '@b_lurryface i wish it was london :( gonna stay at the airport for a bit and then go into the city', 'Gtg again :(((', '@CrazyGreen16 HAHAHA apink this song wont win la i think...... :( Unless they promote longer compete w those not vv good to ppl one.', \"@katenash disgusting isn't it :(! I wish people had more respect for each other\", 'Ps in NYS opt-outed due to CC$$, VAM, and unfair testing of SpecEd and ELLs. Article completely misses this. :( https://t.co/EeA1drtlne', \"@TheChelseaTalk gutted you're one of the few people I won't be able to finally meet :(\", 'Add me on Snapchat - sexyamelie20 #snapchat #kikhorny #likeforfollow #kikmeboys #likeforfollow #newmusic #hornykik :( http://t.co/3BRNMai3CU', \"@Hooked_Duck that sounds cool!! Bet it doesn't float though :(\", \"@Morrisons but it's so gross :(\", 'turtle net !!!! :-(((', \"fineandyu takes such gd pics its like she's trying to hurt me :-(\", \"@JodanasandyXx \\nNo...not in your face enough for that...just couldn't face him in the flesh. Know its daft..but couldn't cope with it! :-(\", \"she's so cute :( http://t.co/BtE6DMoxYT\", '@vanillawley i want one too bit noone knows me on twitter so :(((', \"I had three dreams last night and the one I don't want to remember I do and the two I want to remember I don't :(\", 'wednesday needs to hurry :-(', 'SNAPCHAT : TammiRossM #snapchat #kikgirl #kikchat #wet #wife #indiemusic #sexy :( http://t.co/hQjLIUjbRt', '@ShanduLinda My last though :(', '@solodmssunshine thats me omg imsorry :(', 'aku chelsea koe eMyU, can you see that i miss you :(', 'i pOPPED CONFETTI THOUGH ! ! : ( https://t.co/Y79gPDxTIE', '@ Sams sister and her bf :-(', '@ArcticMonkeys please release a new album :(', '@seunrgriseyo good dong by?:(\\nsini dipoppo😘😘😘😘', '@calv_18 came up on my time hop :( #bestweekend', \"@MrCrump3ts I'm not certain unfortunately :( I'm okay-ish with HTML, but I'd quite like a better language to work with. I have a C++ course\", '@ITS_ImJinAh91 taken :(', \"I didn't made it again. :(\", 'I miss Geneva so much! England aint got half the sun :(', '@_GetUpAndTry same :(', '@horanshan I barely use twitter :( how are you?', '@EliiizeSoriano miss u :(', 'KIK me guys : patml482 #kik #kikmenow #kikmeboys #likeforlike #orgasm #nakamaforever #sexygirlbypreciouslemmy :( http://t.co/dl1AgJykBH', ':( I went to bed way too late', 'GUYS add my KIK : abouty797 #kik #kiksex #interracial #tagsforlikes #kikme #travel #kikmenow :( http://t.co/fZ4Zc928qA', '@Aussie_Legend I wish :(', 'More money more money :-(', \"@lucymatthewsss same deal here. the man at the airport laughed at me when he asked me age and asked 'reaally?' :(\", 'TIRED :(', '@_Milli__ unlike me :(', 'Spent the whole day watching videos of #AlDub over and over again. Ang cute nila! :( I ship. @aldenrichards02 @mainedcm', '@OVOEnergy What is the point of a smart meter if it displays the wrong information? Latest email sent 2nd July has just gone unanswered :(', \"i really can't fall back asleep :(\", ':(((((((((( so sad', 'Bri is falling asleep :(', '@kjmci it’s raining and cold :(', \"I'm tryna save my money but magcon merch keeps making new shit :((((((\", '@kalourd you right...the sinuend is kak. Not working :(', '@FC96HY laper :(', 'RAGE QUIT!!! :( http://t.co/XifB0wtlAS', '@Its_Divine_D yeah... :(', \"@RabihAntoun :( so sad for us. We're losers\", \"@katyperry Mom, what are u doing in the hospital? You're okay? :(\", 'Its been raining all morning :(', 'Weird guess? — Idk. :( http://t.co/GpY6E9jHUI', '@kourokocchi lmfao i dont know :(', \"brendon urie's suit game :(( http://t.co/e1X0yoh784\", \"@bangtanthough but i'm waiting for sumer repackage :'D so i have no money to buy this :(\", '@smiffy sorry Matthew :( <3', 'I want Yongbe green suede supreme hat :(', 'Used to be so skinny :( http://t.co/PQyN3HNJ33', 'Hey @CBuchanan68, can I maybe get a picture with you after the warm-up? You were gone at the signing session when we arrived :(', '@heyitsCysee hay baby im up and i miss you to baby :(', '@MegBowes_ @KardashianReact :( maybe ill surprise you and be brill', \"@TheLinderman_ you're probably right... :(\", 'thats 120 wings :( https://t.co/qPipSKciMF', \"It's because too broke for the bomb weave I want. :(\", 'spending my friday night without @DrRaamVII :(', '@WforWoman #WSaleLove \\nans 9: Depressing it would be :(', 'I wish Alex was here so he could rub my belly till I fell asleep :(', '@bruceyoucxnt :( sorry for your loss may Allah give her jannatul ferdous', 'Head is killing me today :(', ':( Ami Ekta Kharap Manush..!! :( — thinking about old memories at Crazy Mart http://t.co/wsbhHUK9bQ', '@rvirenee_ gua cans dong :(', \"My phones broke and im missing out on Khloe's ass on Kylies snapchat and it's making me sad :(\", '@iFazy nhe Yar :(', \"I won't let that happen in real life. :(\", 'I just woke up and missed everything :-((', \"sorry minkyuk I'm a slow af : (\", \"@hawkins_g omg you're so mean, he's fine :(\", 'I forget every year why the summer hols are so hard.... I spend days & days never really having conversations with grown ups :( #isolated', \"I don't like this at all :(\", '@minutely what happen to the HK weather sensor ? It has been broker for weeks :(', 'This rain needs to go away :(', ':( I wna go to church', 'I just wanna see her face again, I miss her so much :( in 2 years hopefully http://t.co/uCSqlApqoX', 'Hello my name is FlaviAna. :(', 'chickmt123: #letsFootball #atk greymind43: BREAKING NEWS: Chris Gayle says he will be out of cricket for 2-3 months due to back surgery. :(…', 'sudden mood-dump :(', \"I wanted to watch the livestream on my ipod but it wouldn't load so on computer now :(\", '@Jaysdaughter13 come over again :(', \"soo I have gotten my phone taken away and I'm currently sneaking on my mums phone, so I'm gonna be inactive for about a week :(\", 'I MISS TOM FELTON :( @TomFelton', \":( Unfortunately due to illness Verity Standen's performances have been cancelled. We will be in touch with those who have booked shortly.\", 'new favorite editing app. jk someone pls translate this :( http://t.co/n3aIIfaBAP', \"@Jam_sponge But I can't see the difference between black and red ink... :(\", \"i see ur bio @xannindy 😆😆 u don't break my heart actually :(\", 'I want takoyaki :(( My #TeenChoice for #ChoiceInternationalArtist is #SuperJunior!', 'i pity aisyah very much :(((((', 'wait where the fuck is my ffvi >:( ugh', 'Updated my latest episode on Youtube due to my 1st song choice :( There should be no problems viewing from ur phone /youtu.be/2_gPcTSojKw', '@AisyahZen I ALSO WANT :( Craving fr donutsss', '@Morrisons one of the little 50p cheese pizzas! I grated some more cheese on top so all is well but that one was looking a little sparse :(', \"@beamiller I can't listen to your new album on youtube because it's blocked in my country :(\", \"I'm coughing. :(\", '@jsjnete dd leave lagi?:(', '@Randeep_HoodaFC Yes..Cant see rider.:( @RandeepHooda', 'I always miss something when I have no wifi :(', 'This rain :(', \"I'm working next Saturday and im well gutted because I wanted to go to pride :(:(\", '@pcy_rock nope!! :( hueeeee', '@charliebudd @painterspitstop @HarriDec @1paintology6 @KingsDecor @FreshDecorators Wrong password/recall thingy not working is the prob :-(', \"@scottydoddy Hi George, I can't see that we sell this I'm afraid :( Sorry about that! Thanks, Beth\", 'I was chewing my toy and Stella came over and went for me. lots of noise and teeth and mum yelled at her and threw her out of room :(', 'Woke up from a bad dream. Grabe. :(', 'Rejected! :(( #TheAccidentalCouple ep. 15', ':(((( always. https://t.co/d9v4pfdWHH', 'Not a smooth handover :(', '@mycoleenromance srsly i order it all the time :-(', '@beckparsons1 no im on a 24 hour sleep on sunday :( xx', '@alisakmr same :-(', '@GearIV @Kodas_X hello i am spick and I find this offense :(((((((', '@eksobyvnb I know bebii I know :(', \"@lizardbeth_16 Oh my, what's happenend? We don't want to lose you. :-( *DR\", \"@bcwgaming ffs didn't even know :(\\nWhat time?\", \"@boyfminseok i like lip balms but i don't like to be compared to those! hmph :-(\", 'More sick Mumma, sick Bubba cuddles :( Cuddling on the floor to the footy and she falls asleep.… https://t.co/to6pXX7iuU', \"@GeorgieEllerton @laurentierneyy_ Aw Georgie I bet :( you'll be back soon!! This last month will fly by\", \"@azzzzyb LOOOL OI :( Bengalis in general are insecure it'll work do it\", 'Some girls will say \"that means you wanted my man while I was with him\" but you didn\\'t even know her or him back then :(', '@AprilXyloto any masterchef updates?? i left my phone at my cousins :( how was uni? whatchya doin? huh? huh? huh? <3 http://t.co/Y3tqhGfbsk', '@BillieJoeSpouse everything okay? :( x', '@WforWoman #WSaleLove Ocean without water, Vehicles without petrol n diesel , n me with my empty wardrobe :(', \"Its 5am & I haven't slept :(\", 'I miss Vegas :-(', '@supgonzo :((((( it could snap my head off', '@exhaustcd awe too bad :((', '@brenttiscool capcom cock teasing us. I need this beta :(', 'Sometimes just sometimes I drown half a bottle of Nyquil down my throat just for it to have no effect on me :(', 'Poooootek I really need 1,500 :( hahaha', 'OH MY GOD WHY DO I KNOW THIS JUST NOW :(((((((', '@beelovley19 wow hate u :( imy', '@bobble bobble is leaking & it was a gift I have no idea where to return it, its the thermos model :-(', \"Don't know about others but i am gonna miss classic duo of @DotACapitalist and @TobiWanDOTA during TI5 casting streams :(\", \"@niclasbenjamin don't ignore me please :( it was my birthday on the 12th of July, could you follow me now as a present? 😊😊😊❤️\", \"wanna skate but it's raining :(\", '@JacinthTran twitter said :((( but u followed me 💕💕💕💕', \"Omg no it's really detailed I gotta get to the Tae one :(((\", '@camnstyles it is so confusing tho :(', '@nirbananalrh @tanginarrymo i hope so miss na kita crys why so ia :(', '#PKwalaSawaal when will India become a developed nation :( ? @SonyMAX', \"@WesternDigital I have an external hard drive from you that has become corrupted and I can't access anything.Surely I can get info off? :(\", 'Last 4 day week before October 2nd. :(', '@AhamSharmaFC ohh so sad :( @StarPlus @FCManmarzian @ManmarzianFC', \"@Taeyeonniex3 so they didn't win on their 2nd stage of mubank? :(\", 'Waking up........... :(', \"@bumkeyyfel they're not. : ( except for those two who kill people ene\", '@koreanplease but i want them to win today :(', \"@Puddycats19 shame it's like £3k :(\", 'Zehr khany ka time is coming soon.....: (', '@JKCorden @justinbieber hey i miss him too :(', '@bbgurrll i wish :(', '@CallmeLexine Same Mommy :(', 'I missed half of Music Bank bc grocery shopping :( but the good thing is: I finally have hubba bubba bubble gum again <3', \"@kylaholiver yeahh!! They're actually on the floor in my closet, but I'm pretty sure they're high waters now :((( I was so ugly back then\", '@ColorsTV this time jhalak is very boring. .. The concept is bakwas. .. old concept was much better and interesting. ... :-(:-(:-(', '@paynepowerr WITHOUT ME :(', 'i miss seehiah :(( omggg http://t.co/7lia2pmQew', '@autuumnnn_ @Rissa_123456789 I need mine done goys :(', \"@lynshields lol. Well I can't buy those nachos then :(\", 'The most embarrassing moment when you shared your secrets with a wrong one :(', 'Mm what a lovely day... :(', 'Sorry for the stream ending im just tired and I some how ended the game which if you didnt know on PlayStation ends the broadcast :(', 'Still going to braid this hair again, after all the damage that the initial braids did. :( Ruth :(', '@kehyangki boong/?:((', 'rejected :-(', 'Im almost at the end of my Far Cry 4 journey :( any similar game recommendations? If you say COD or GTA I will cut you and your bitch', ':((((((( this is so sad i cwnt help it https://t.co/glBmiAAJ79', 'I have no more lives in Trivia Crack :(', 'Weather is awful today which means being stuck in :(', \"@rosieofthejones belated birthday wishes to you (can't believe I missed it - mind, I miss all bdays, inc my own!!!). Bad about phone :-(\", \"DON'T. PLAY. WITH. MY. FEELINGS :(\\n#ZaynIsComingBackOnJuly26\", 'i miss them already :(', 'i miss 5sos so much i cant deal with waiting possibly a year before i see them again :(', '#Rohingya #Muslims 72 indicted on human trafficking charges in Thailand - Asia - Around t... http://t.co/VWSLChONfd #SaveTheRohingya :-(', '@MissHayley1988 @djdarrenjones :( *hugs*', \"@__sabaa I'll say rumble in da kumble BC that's all I know :(((\", 'my mum decides to walk in and scold me for not cleaning my room just as i sat down and chilled :(', '@Merry_Ferry and it was phrased in such a \"why would you do this to her\" kind of way too :(', '@Valerie_VW But when i do gigs that include them..i have to tag them :(', '@ViThePony Make it hurry.... I am melting just taking a quick store run :(', \"@Shewho13 TFW no boyfriend :( (lol I jest) cooking relaxes me. I'm sure I'll eat it for lunch tomorrow.\", 'Grumpy me all day today as on night shift tonight :(', 'I offended myself :(((', \"I have #SleepingWithSirens tickets Oct 17th in Ok #BRINGMETHEHORIZON new tour and is playing Dallas the 18th I've seen them 2 times but :(\", '@envybae probably :((', '@Hatecrew_dzul Right right?? :( We will always have good memories I guess. 😔', 'Carva :(', \"#louisiana cinema shooting: Why do mass shootings happen so regularly in US? Sympathis to victims' families :(\", 'Finally got down to finishing the long story... But as expected of me, I failed to work at the revamps in the end... :(', 'My SNAPCHAT - AbbyMill18 #snapchat #snapchatme #wet #sex #sexy #indiemusic #hotels :( http://t.co/5OLTvTAO95', 'allow all these mosquito bites :(', \"Why can't I be better already :(((\", 'Forgot my headphones. Shit up a cunt :(\\nNow I have to listen to everyone in this room breathing.', \"@ddddray yeah!!! :( It's okay, I'll see you again this time next year\", '“@RookieKE: @KuisanMacharia I was listening on radio :-(” no worries wacha niende online.', 'I seem to have burned everything apart from the tea this morning. Bravo Friday to you too, Richard. :-(', 'Dear @Dominos_UK last night we waited 2hrs 13m for a pizza. By the time it arrived it was cold & too late to eat. Very disappointed :(', \"@DC_krystal94 really? Not on the 18th?? Kk i'm still not ready for school! :(\", 'Why do i miss this :-( http://t.co/FZvRFAi1YN', '@LingJing_ me too :(', 'CAN SOMEONE PLEASE GIFT ME #CalibraksaEP BECAUSE I DONT HAVE ANY MONEY LEFT :( http://t.co/hOtALEUdIS', \"@justinbit sorry darlin, i'm sorry :(\", '@cynthiariojas_ :( I did that once and I got grounded BC they think if I do that I sneak people in', 'everyone is so stunning......... :-( https://t.co/4kCqdyn0xR', \"@Coicele Oh, that doedn't sound good at all. :-(\", \"i have a feeling that infinite won't win today :(\", \"@FBGeorgiew I don't get paid! :( But I'm open for any kind of offers!\", 'All guys want from me is dick pics and all I want is to have a meaningful conversation about things we have in common :(((', 'I just wanna go to your house rn and give you a big big hug. :(((', 'Oh how horrific :( https://t.co/IObpbythB8', '@KookieAnda me too :(', '@XIA0HUN scoups :-(((( bakit scoups :----((((((', \"I thought I was mad at my bank and PayPal yesterday, but they both royally fucked up and now I'm screwed. :(\", \"@itsNotMirna I know right D: It's hard to believe :(\", '@AnnieIsDoomed its not my fault sweedy :(', 'so fucking tired and i have to drive home :(', 'I just want to get paid already :(', \"@Tebello__ I don't know what happened :(\", 'Nams is just enjoying man :(', '@maui26_maui :(( ill just make another one', 'Miss my boyfriend :(', '@minionicole_ sorry pooo :(', \"Nobodies up with me now, I'm sad :(\", \"@Kaelaris @FollowDeman I want to go too but I'm sure I'm already stuck somewhere :(\", \"@hellasugg @MyNamesChai and sacconejoly's (@JonathanJoly and @AnnaSaccone) went... But I think that's about it :( xx\", ':( this makes me sad. https://t.co/CWJsdT26uS', 'THIS IS UNFAIR WHY I DIDNT GET A FOLLOW WHEN OTHERS Get AND I SPAM :-(', \"I hate how I I get no texts to look at after my shift because everyone's just waking up :-(\", '@Hardlydan @Amras89 me to god damn you bethesda!!! Im gonna have no money after fallout 4 :(', '@Pahimar @Direwolf20 @Slowpoke101 Now i know how Dire and Slow look likee IRL because i could not go to minecon :(', 'something great is playing. PERFECT !!!!! :(', '@vengefulmgc i miss youuuu kateee :( iloveyouu be strong 😘', \"It's not you :( @jackgilinsky #CalibraksaEP http://t.co/kQWxO527tb\", '@__riixc i miss you too :(', '@dashlane 2015, and still no linux support? :-(', 'Just read the #SandraBland story. Thats so scary, hope the truth will be revealed :(', '@styles_meital aw :( can you make it on monday?', '@iviecrystal nawwwe hang in there love :( yes yes chikka ug kita rata soonest! :* mwamwa', \"@ChloeSalins I can't get it to fit :(\", '@Daniel_Juarez5 faggot* :( poor english teacher', '@KuisanMacharia I was listening on radio :-(', '@woIfgaang yep :( exactly.', 'id do anything to go thorpe park tomorrow !!! :(', 'i wanna go to vidcon :(', \"@emshelx such an eye opener, I didn't realise things like this happened! So scary and bad someone would do that :(\", '@Michael5SOS @_8bitsenpai_ can someone send me a screenshot of this conversation i want to see what it was but my phone is being stupid :-(', \"I doubt i'm going to bed soon though. :( I wake up at like 9.\", \"@HomeXpertsLeyla fyi the url on your profile doesn't work :(\", \"@NgSyafiq but he's sleeping and he's so cute :-(\", \"When you saw the nicest mehendi design in someone's picture on your dash but now you can't find it to bookmark it >:(\", '@TroyeSivanPH @ohhhfrances omg whay ur doing dis to me :(', 'I\\'m telling you :( I will in shaa Allah \"@waxxa_official: @Fatumoriginal na by force? Change phone mana 😒\"', '@rikkixreid @rriiccaahh @Maeee_123 sorry na :((( next time pramis 😚', 'if school ended earlier I could be at ngee ann now for the acoustic gig :(', 'Makes me sad he has to go back :((((', 'I Want jack in the box :(((', '@samatlounge Crikey, bit of an own goal there. Sounds like someone turned up for work with a snit on. :( https://t.co/kA6V6VIANv', 'Blocking people makes you lose followers :( :(', 'it was a very tiring week :( #NathanielHinanakit', '@darrenwho_ why is naya there whats happening. my link keeps doing the spinny loading wheel but never playing anything :(', '@ZackTheHeroXXX :(\\n\\nI was just online a few days ago! I have like 50 notifs again :(\\nin 2 days dammit\\nstop guys\\nlol jk <3 u', \".... My gosh ... I'm really bad at physics :(\", '@WillHillBet thank you for taking the time to reply, albeit with a disappointing answer - the most famous athlete racing and no odds :(', 'Short weekend ahead :(', \"I'm craving breakfast food so badly right now :(((\", 'he looks so good in stripes im :(((( http://t.co/ncKQXJcXGK', \"@azzzzyb :((( I'm helping you :((((((((\", 'gfriend looked so cute :(((', 'sad but true ano yung tbh? :( -_-', '@nayeou jahat :(', \"Screenshots from http://t.co/U2RdUgq6wH there's a competition open to meet ariana grande some countries excluded :( http://t.co/OdI14ms8NR\", 'hopefully I get to see my bff tomorrow \\n:(', 'ITS BEEN SO LONG ED LOVE YOU SEE U SOON :-((( @thepohjien', 'so fugly af in our school id :-(((((', \"I don't like seeing @SophiaxNicole sad :( smile more and stay strong alright? 😊💞\", 'where are the airport pictures of Jongdae?\\n\\nI hardly see him in my tlists :((', \"@MonochromeEm thank you lovely, going to write a list of the ones I've been recommended and see what one to choose, my budget isn't big :( x\", '\"...on set with these two #PabebeGirls!!! @pamupamorada08 @bernardokath\" aw pabebe :-(', \"@teobesta I altered my Sandra Bland storify btw now! I was quite angry when I wrote it originally - so it wasn't my best :-(\", \"hungry hungry hungry :( mom's not home oh my god im dying\", '@Abby_Lee_Miller Abby can you please try help me get my mum to come see you with me in London!:(', 'My ass hurts :( #MTVHottest Lady Gaga', 'This pain just below my right rib cage, since yesterday :(', 'Worst sleep ever :-( 😢😵😭', \"Don't quite know yet what is about to come out on Hulk Hogan today but clearly Hulkamania is officially dead. :(\", 'when your mom ignores your calls :( #unloved', 'i wanna watch paper tOWNS :-((((', '@GAYPERlON so lazy :(', 'I CANNOT :( https://t.co/zU0KgI8vHi', 'idk where I went wrong I used to be so cute :( kinda', 'i feel so alone here :(', '@carrebarre_ Ihhh stackare :(', 'i have the least green fingers ever, I can’t even keep my basil plant alive :(', '@lauren_brownxox we both were haha! My bed now has cake all over it :(', 'Fries please? :( @JustMeAla', '@Samcityyy how sad :-(', '@DrBabarAwan u said th remedy ov pak prob z to raiz th voice n nvr gv up.Wt now?wt hz imran achieved?in short \"thr z no soln ov pak prob\" :(', \"@lydiamoo My sister's wedding is tomorrow but then we're going to Hong Kong & I don't leave until the 31st. Then another horrific flight :(\", 'So cute :(', '@ellaalee whaaaaaaaaaat :( :( :( when are you leaving??', 'Yahoo Pipes to end Sept 30, my news feed to end with it. http://t.co/pNq95QKn9G - :-(', '@Annie_Airwolf someone put my lawn chair in my tree :(', \"I really want to pierce my cupid's bow :(\", 'literally have torn my room apart looking for my retainers :(', '@EGirl76 @hohkyo oh no :( that’s terrible :(((', \"@bumkeyyfel clowns? i'm not scared of clowns tho i think they're stupid bcs they dont know how to put lipstick on : (\", 'she likes rose more than me :(', 'Haiss.. todayy thoo.. :-(', \"@Virgin_TrainsEC unfortunately the only seats left were in coach K so we'll have to party quietly :( ^DH\", \"Of course I always miss @selenagomez's Tweeting sprees :(\", \"I've been going to sleep like at 5am everday :(\\nIt would be cool if other people like me would hangout at this time!\", 'Steven william umboh :( https://t.co/q4ue6MrFS9', '“@JaDine_Addicts: Goodafternoon JaDines, THIZ IZ IT EMEGED I KENNAT :((((( -G\\n\\n#OTWOLGrandTrailer”', '@savie_sav we will reunite again one day :(', 'So cold, abi this our house dey close to Arctic ocean? Man is dying! :(', 'My chicsirific heart :(', ':((((( i missed it :((((( http://t.co/Izhrf94jnB', 'The struggle in finding the perfect glasses for a small structured face is real :-(', 'Mood: cumbia :((((😩', '@Myloit_ trop :(', 'how could i correct a badlife? :( — feeling frustrated', \"@my_nameis_dan Download only isn't it? :(\", '@omggminho LOL 4-5 DAYS YES KASLKDJA IT WAS MY FINALS WEEK :-(', 'Just 3wks until we do flowers for our 1st wedding! A shame the feverfew will be over :( #weddingflowers #diyflowers http://t.co/oX8G6A4tSj', 'Imysm :(', '@Richieboi50Uk shit sorry :( take lots of things?', '@Habib_Insyaf @Engineering006 fitnes! :((', \"@cIaricestarling i know right... :( i hope it's worth it bc i really wanna see hugh as wolverine again <3\", '@AnwarLodhi imran khan is innocent :(', '@b3gringo not as of yet mate :(', '“@kuskus1: @pamtravel I bet you are wonder what happened :(”\\nJust trying to calm down before I start again 🙏🏻🎂', '@tashaxptv bby :( please be okay', 'I wish I went to Vidcon :(', 'Long distance :( Why? 💔', '@BradKavanagh :(( please make one. do you not miss Fabian?', \"@Charlottegshore @PhoebeBooks @headlinepg Where can I buy/order your book #MeMeMe?? I'm from Finland so it isn't here yet.... :((\", 'I miss seeing krystoria moments :(', 'getting holiday clothes on a day like this. Wanna go now :(', 'i miss sophie :(', '@WeeklyChris I just want your followback? :( but why you always makes SNOB :(\\nSakit sa Heart </3', 'go zumba somewhere else please, me studying :(', \"I do not know. I'm sorry !!\\n:( https://t.co/3dQB9Pt3UY\", '#GreekCrisis is that #Greeks leave/work abroad, \"We gave the light to the word and we remained in the dark\"... :( https://t.co/8To7Kej1ZP', \"why can't i go to sleep at a normal time :(\", 'i am not that artistic so how the heck can i do my project :(', 'I miss my long black hair. :(', '#UberIceCream no ice cream available in #Leeds :(', \"@SabyneM I thought we we're supposed to hangout dis week :(\", \"@akawhatadave I agree Dutch are sound but I'm not sure I'm legible :(. I'm legible for a Israeli passport only by the law of return.\", 'I want froze chocolate covered bananas :(', '@94tmhhes all these theories of people saying from the start that zayn will come back on 23rd july :((((((( its 24th today and im not ok', 'Stomachache bc of a slice of cake _:(´ཀ`」 ∠):_ …', 'Lions agains Otani, 3-0 down already at 3rd bottom no chance, eh, @schnuckster ? :-(', '@NiaLovelis Niaaaaaaaaaaaaaaaaaaaaaaaaaaa\\npls follow me, be my 2/4 \\nmiss you :( http://t.co/gRQZ1LKTJF', \"@profanityswan I've moved to Australia. It's only a matter of time :(\", 'Cute :(( 💞 http://t.co/WbxjcwXiqF', \"@Albondiga94 if you have schemes I don't have schemes planned yet :(\", 'Second that. We were off on Wednesday already :( https://t.co/R1Sbnpovdg', 'Paper towns please :-(', \"@AnnoGalactic :( :( I know it's how it goes, but still....\", \"dude i'm so fckin okay with you avoiding me all over again :(\", '@totgeglaubter @Swisscom_de fuck :((((', '@vinrana1986 hii vin plss rply my tweet :((', \"@MissFrizzy97 I didn't mean to put a rat lol :(\", 'I just deleted my entire Bollywood movie collection to make space for my Mac backup. Actual tears :(', 'SAY NO To EXAM!!!!!! exam na sa lunes at martes :(', '“@RobinhoodApp: We love spotting Robinhood out in the wild! Thanks for all the support out there, Robinhoodies! 🚙💚 http://t.co/bK6z2WhXMK”:(', '@RyanCooperXZ same here :(', '#docopenhagen i have a horse in my ass :( http://t.co/QouW0Uwd8O', \"I'll just have to write a bunch of ugly setter functions... :(\", '@UberUK im swiping right but dont see anything :(', 'How am I gonna live without my bbygurl for two whole days :(', '@hinata_shouyno fuck u Neil u ruined it >:-(', \"@drunkktae yeah i'm not :(((\", '2 years ago today I was packing for the Caribbean :(', 'So hacked off with myself as just gone up a size :( 6yrs ago, I had gone down to a size 12 and now I am a size 18 again :( I hate myself :(', \"@jabongindia @ibeingdesi @mayank_x3 @mika0562 @shatarup_ @shwetadaga23 :'( Tried very hard but lost :( #JabongatPumaUrbanStampede\", 'my bro choose takraw over me :(', \"@Dat_NiggaCarlos :((( it's not like a fersuree thing yet though\", '“@INyan99: oh poor baby :( 😁 https://t.co/JQwjFTnppG” 😭', \"Hell naw Angie, ain't nobody paying. Fuck your though this was :(\", '@tbhrapmon awwww no but thank you :( but im still ugly huhu idk', 'ice cream sandwich plsss :-((((((', \"how have you been, sheriff? i haven't seen you in aaaaaaaaaaa a aaaaages :((\", \"It's always hard leaving my heart :( I'mo sulk all day today.\", \"@angelhairhes some people aren't like you, Fra... some of them are kinda selfish :(\", \"@BenJPierce THAT'S NOT FAIR!! I WANNA MEET YOU SOOOO BAD!! <3 <3 :(\", '@BelgianKeeper follow trick nonce :(', \"@joffocakes I can't do charges on a pad for toffee though so tried to switch to someone other than bison. Never got back in :(\", \"I need to get up and motivated but that means I have to walk all the way to Q'don and I don't think I have that energy :(\", \"@missaprilnash oh crikey - not good :( it looks sore! I hope you're starting to feel better since then though x\", 'My heart rate is ridiculous today :(', \"I'm proud of my heart, it's been played, stabbed, cheated, burned and broken, but somehow still works. :(\\n#Unknown\", \"Why can't I be going to ed :(:(\", \"There's totally no stomping at all :(\", 'the aaaAaaAAAAAAh sound kanye makes in hey mama is so cute :(', 'I feel so ill today :(', \"Jdjdjdjd it's too detailed I had to stop :(\", '@jadehaines I want to add her :(', '@mukesvlut I said to myself I will never gonna eat banana anymore but I dont have a choice :(', \"I should've been asleep 3 or 4 hours ago :(\", \"jimin's fancafe post yesterday >:( i am gone\", '@HeelSimba :( are you free any time on Monday?', '@RupintaABC11 @ABC11_WTVD Noooo not Friday! I work all weekend :(', 'I want a flipping Belgium waffle thrown in my face :(', \"Don't have that one :( @Ifrahbreezy @missmbuga Perhaps something else? 87.7 #2fm\", 'My KIK - himseek8 #kik #kiksex #kikmsn #like4like #kissme #akua #hotel :( http://t.co/43zczi7Xly', 'homed and gg out again :((', \"Why didn't I glo up yet??? :((\", \"I so want to just be at home. I'm not eating properly and I'm sleeping just to pass the time. I'm miserable :(\", '@NiaLovelis i miss you :(\\npls follow me http://t.co/stdLTH1PBS', 'I get so sad about Cory Monteith like very often. :( As I am sure a lot of people do. Gone too soon hits close to home. What could have been', \"@charlotte_louth aw I know, I'm sorry :( how are you and your hashbrowns?😂😊💘💘\", \"@lauraho1992 @max4education @KeeleSU ahh the wonderful @KPAKeele!! They're really supportive of PGs - shame they didn't do an MSc I liked :(\", 'Where is hierro :(((', 'My SNAPCHAT - ShirleyCam #snapchat #hornykik #dmme #kikchat #selfie #amazon #phonesex :( http://t.co/teCUf9c9yc', '@Mickb1980 @CalderClarion @ev2cycling Looks good pal. Glad I paid £111 for my jersey and gilet! : (', 'look at his cheeks so squishy :( \\ncutest ;( http://t.co/qEV0hix7JZ', \"@delayedmornings oh really ?? wonder why it's expensive there :( are u donating ?\", 'Stay lahhh :( https://t.co/TlsKIA4mJv', \"@rxpstar I haven't debut and I'm still a student :( I don't have enough money to pay you eon.\", \"@tayiscamsbae @ArianaGrande she doesn't even notice me :(\", '@SUGGLEEET @AmazingPhil @danisnotonfire im not there too :(', '@smiffy Sorry to hear about your dogs :(', \"the sunrise was so pretty but i couldn't get a good picture of it :(\", 'KIK me guys : beety697 #kik #kikmeguys #kikme #makeup #sex #video #kikkomansabor :( http://t.co/TpZQefeWXN', 'in the getaway car after committing some criminal act !!! :( http://t.co/bmp14zzHLu http://t.co/LIP80Io2t9 ☼', \"@Espio1 @scully1888 It's madness, for sure. Three amiibo for the price of four on Nintendo store. It's just my backup… :(\", \"@baejuhyunx_ Batman can't fly, I can't help :(((( I HABE FAILED YOU ATE\", \"Makes me wish we didn't travel :-(\", '@CampSomeMore @TAEKHYEONG @JeffyPie siannn I 7 March 2017 :(', '@IronDuke95 free twitter :(', '@jasferblanco may list ba? :(', \"Well it's absolutely chuckin it down in 'ampsha :( #Rain #Rain #Rain\", '@selenagomez why did you have answer fans when i was sleep ??? :(', '@NiaLovelis Nia I want to meet you again :(', '@swiftlywatson ahh I hope you can!! :(', '@abhic4ever Terrible, just terrible. :(', '@uhAkie @CloakZTE but how :(', 'I miss the seniors very very much :((', '@DIESEL Please help me to find the replacement strap for my DZ9055 :( I love that watch!', 'My KIK - entlead590 #kik #kikmenow #nudes #hornykik #tinder #quote #webcamsex :( http://t.co/gYw0ckFKhR', '@Morteraaaaa tuesday daw :(', \"Today was meant to be quiet day to clean the shop but now I'm super busy with clients :(\", '@djjoeyfunk yep twice :(', \"justinbieber can u pls follow me on >daianerufato< i've been trying for too long :( ilysm bae! xx (July 24, 2015 at 07:02AM)\", '@Uber_Dublin no ice cream for ifsc mayor street :(', 'Biodiversity, Taxonomic Infrastructure, International Collaboration, and New Species Discovery http://t.co/BWNMCNBvnC Suppl. data as PDF :(', 'I just want my fucking day collar. :(', '@louloubarton81 jealous much :(', '@TOOBTOBI Follow back :(', \"Yep 3:03 am can't sleep :((\", '@lvl26highelf @MissFrizzy97 ummm I found it :(', '@Brooklyyyyyyyn :( okay this is the worst', 'My God :( :( :( https://t.co/daFvzOR5qt', '@PerezHilton That is hardly a respond :-(', 'Going to miss belting Sam smith on my daily car rides :((', 'I hope so :(#ZaynIsComingBackOnJuly26', 'Really want to be there :(', 'wish i was good at makeup, the only thing im good at is doing eyeliner :(((', \"@JoUllah I didn't in the end, I would of had to leave from work and therefore missed it :(\", \"i thought this is my best day but it's not. no paper towns today :(\", '@LittleMix please come to the netherlands :((', \"This actually made me cry this is so disgusting whAT THE ACTUAL FUCK im disgusted by what I've seen poor people :( https://t.co/z0iLcKLO6s\", 'lol forgot about mubank today :(', 'What if Max and El were together? :(', \"Jeb Bush calls #BlackLivesMatter a 'slogan' http://t.co/AFejQqyUsO via @msnbc\\n\\n#MSNBC #CNN\\n\\n(#JEBBush thanking his lucky stars... :-(\", \"It's true... :-( http://t.co/G3gV2f73Bh\", '@lionel_federer @ChocolateCharsi famished :(', '@scdesc damn D: I feel the same way about \"Maybe\" :( Like I was happy San Marino qualified but I wanted Suzy to qualify D:', \"@jungsilhoon i'm getting there :( we're at least speaking now\", '@SimoontjeVera RIP Momo ;-; :(', 'Ripped my skirt and hurt my back im injured lol :(', '@abbyfoy_ I MISS MY BRACES :((', '@sassylass427 sorry :((', \"I finally could stream ugh couldn't make it home for the past few days for the broadcast :(\", 'Whenever I hear \"Tama!\" I can\\'t help but repeat it in my head with the pabebe warrior saying it :(', 'why am I even awake :(', 'Nearly 50 dead and over 100 wounded reported in bomb attacks in #Iraq. In one week over 300 human beings killed :( http://t.co/OsxLd1LLG5', \"everyone's on holiday :(\", 'How far would you go just to win? Camara knows. :-( THE BRIDE WORE COVERALLS http://t.co/EC1zF7A9sy #romance #inspy', \"@jairaabells I won't be around tom. :(\", 'Mr Happily is both Mr Sneezy & Mr Sleepy :-(', \"@GeekPlanetDave He said you've got too much time on your hands :( #RogerWatch\", '@GutterdogUK I am ashamed at my language :(!', '@Boybisbored stalker!:(', 'Red velvet cake plsssssss :(', 'everybody fell asleep on me :(', \"@InfinitelySY Yeah, I've heard :( I think they should learn a little about traditions and people's beheaviour when they visit a country...\", \"@exostrash14 my parents don't let me >:(\", '@bublegyum sigh yeah :(', \"I miss Robert's cute ass :-(\", 'True Life :~\\nI Cant Hide Anything From You... :(\\n.\\n.\\nBut When Its About Love...❤\\n.\\n.\\n *I HAVE TO...* ^_^... http://t.co/uVJzARE3tp', \"I fucking hate when I wake up like at this time and I can't fall back asleep ugh :(\", \"@JamesEllwood0 Aaron said it was shit I didn't have ago because he said not worth taking and that's all I banged on about as well jelouse :(\", 'There is truly no better feeling in MTG than getting Thoughtseized twice in your first 2 rounds of game 1 to take all your playables away :(', '@TayfurMarshall @mrytrzi oldies but goodies :( http://t.co/nzQmWYMw2b', 'Missing MCG rn. :(', 'Woohyun seems weird on inspirit shining night... :( im not ised to seeing him like this........ what happened :/', 'forever no food at home & the food in school is not even nice :-((', \"@fondprince lets just assume it's high waisted because it's harry's jeans:( :((((\", '@peachymin i know :(', '@joinerslive did you by any chance find a black guinness wallet in the venue last night after the show? Lost my wallet :( :( :(\\nThank you!', 'The evil pepper does to my system. :(', 'My KIK - thessidew877 #kik #kikmeguys #FaceTime #omegle #Bored #quote #sexi :( http://t.co/ikWtd54Om2', \"There's a meeting on Sunday and genesis isn't back from Mexico yet :(\", \"so upset I'm not going in november man, I hope there's going to be a next time in the UK :(\", 'CRAVING FOR WINGS :(((((((((((((', '@whoisaaronlau I mashed up my phone lost your number.. :( Whattsap me if avail', \"@SabrinaFlowers Yeah :( Idk i just never found the time to finish Inuyasha! I've seen a lot of anime and i grew up watching inuyasha which\", \"Hey girl you must be Google Plus because I can't convince any of my fr ends to hang outfwith you. :(\", 'I JUST WANT MYUNGSOO, GYU, HOYA AND YEOL FOR ONCE :((', 'Victoria Park Books @VictoriaParkBks to close :( http://t.co/2lxZeZAhzE', \"So hard to find an organisation that we're satisfied with :(\", '@taesprout god im so sorry i hope you are better now :-( wah', 'Stock up sa for 1 hour. :(', '@DMisHaram lay challo pliss :(', '@swiftcarsm @crappycoffe and where the hell is she :(', \"omg I'd so FaceTime Juliana rn but she doesn't have a phone :-(\", 'Still confused on what to enroll this sem. :(', \"@lizzavirus I'm working next weekend :(\", '@MrMickyD :( not even when u hit me up we had 5', '@JessicaRyanFord I fell asleep :( do you guys wanna come to Starbucks w me lol', '@Darlene_Vibares Darlene Followback please :(', \"@JacobAndrade33 @MillerKaapke can we all be gay together at least. Don't leave me out alone :(\", 'the emoji :((( https://t.co/BFslmBZOAh', \"Freaking cat won't cuddle with me :-(\", \"@xxKalishaxx @Zoe91x @DeltaGoodrem I see she has a meet and greet tour coming up, but unfortunately she's not coming to Brisbane :(\", '@Wilpy1 Too late. :(', '@MerlinHousing hi Merlin, currently waiting a roof repair, and our kitchen is letting in water :( http://t.co/XqaB5F0wB8', '@daddyksoo I JUST SAW YOUR MENTION OMG SORRY :-(((((((((', \"@WeeklyChris I'm sorry sweetie :( No one deserves that.\", 'nawwwee i miss hyperbullies. like tong 3rd yr nga seatmates rajud mi mag barkada :(', \"@Thisbummarcus I'll miss you buddy :(\", '@baexsuze ores! :(', 'So sick :(', 'Not looking promising for our evening at the cricket, is it @jaybutcher @MrTomBaker? :( http://t.co/9U5yeDfqqg', \"I only sleep good when I'm at kaylas :(\", \"I miss everyone so much. Feel like I've not seen them in so long :(\", \"@chonchonnie I have yet to finish it! I'm still on season 7. :(\", 'Looking for fun? SNAPCHAT - ericavan18 #snapchat #snapchatme #likeforlike #interracial #model #repost #sexo :( http://t.co/X6O6vJmGac', 'Again not feeling well :(', \"WHY..... :(( not that I hate jong or dongwoo is just that all the photocards I've been getting is WH, DW & SJ http://t.co/zEQNiFVHUT\", 'May brain tumor si Vivian :( #MMSMalubhangSakit', 'Is everyone talking about rat boy today bc :(', 'My feet hurt :(', '@frkntrd oh man schade :(', '@wajiyaamjad ohh :( the first year will be a bit tiring but things get better after that!', '@zaynmalik zayn come back to 1D already. :(', \"I'm freezing :(\", \"I wanted the shoes FOR my holiday, shipping should take 4-5 days so it should have arrived TODAY, but it's not even on its way @DCSHOESUK :(\", \"@BeaMiller u didn't follow me :((\", \"@OhPrincessSaRaH I didn't see it so you must not of... been trying to think for a day what it could be...I've think I just figured it out :(\", 'My SNAPCHAT - JillCruz18 #snapchat #kiksexting #likeforlike #hornykik #lgbt #music #camsex :( http://t.co/lk77WR8Rrb', \"I feel like I'm the only person in Ireland not going to see @edsheeran in Croke park :(\", '@juonghwa sore qt :(', \"@sallydunne @laurentierneyy_ not til 19th of sept cos that's when bills start and full rent :(\", \"ok this whole time I've been tossing & turning in my bed trying to go to sleep but I just can't :(\", \"Showed up to open shop, but my co-worker is MIA :( Hopefully they arrive soon, I'm starving.\", '@antichankai yup!! i always order there anyways 😂 i hope it pushes through :((', '@chaisooyoung dare :(', 'Unsettled weather is the trend for the next few days. Sun this morning. Showers this afternoon. GH is 18C. Mixed bag for the weekend :-(.', \"@mzhrkiks why? but you'll get sick :(\", '@jungsilhoon two days before my birthday :(', 'IM LISTENING TO EVERYTHING ABOUT YOU :((', '@chuchuxiu shit rlly?:( i heard hamsters eat each other thats pretty fucked up hamsters r weird', 'just wanna see ed sheeran preform tonight :(', \"@demongrrl51 some peanut has probably crashed :( .. after all you've seen how they drive on the monash ...?\", '@Astiera01 @KapitaineRose @Madtloves What?P..... :(', 'When you cant find a gift so you end up using the money for starbucks :(((((', '@modern_combat I hope the hitmarker glitch is fixed soon :(', '@SafaaAzadMalik_ okay, safaa, please follow me :( I love you', \"Guess who's missed Selena's tweets for fans?:(\", 'My summer sleep schedule is back :(((', \"my eyes want to sleep but the rest of me doesn't. :( This is bad.\", '@unclutching :( u okay', '@ZahraMubeen ye galat hai tum ne mjhe ab non respected lrka bna dia, itna rude word use kia hai ke ab mere bhook hi khatam ho jai hai :(', 'can anyone give me money for the train so that i can see @littlemix today?! :(', \"Not been to the gym all week, so I need a BIG personal push today to get me there tonight....i've been making excuses to myself. #Lazy :-(\", 'annoying :((((((((', \"@carlyraejepsen you ain't gonna follow me?:(\", 'This Social Experiment, made me cry. :( http://t.co/4EiBxJPE9E', '@ayoo_gerry i miss you :-(', 'afterschool cant have a comeback even tho they want to coz they have no money :(((', 'Please Pray for my friend Bilal Ashraf his in ICU :( http://t.co/oUtwk8ON6O', '@qureshi_ruksar thankssss. :(', 'I MISS SO MANY PEOPLE :-(', \"@karisshackett01 @MarzJackson won't be long for us all :(\", '@taesprout ah im sorry :-( when was it', 'Annnd, now not going to Winchester {:-(', 'Its been 1 year now, Since he texted me this... I miss everything. But now, I know he will never be with me again :( http://t.co/lzr8hSb0Q5', '@JustTakeMeHome_ aw I used the same photo :(', 'Exactly :( http://t.co/LJRY4TTlRe', '@grindmegrande I always make so much effort to talk to you and all I get is like one or two tweets or DMs all day... like really? come on :(', \"@Penguin_porter that's awful :(\", '@wonwooo17 /grepe grepein/ :(', \"I don't want Panem to end :( I just LOVE the books and the movies\", '@sophiabxsh no Idk if I wanna watch the episode now :(', '@_Jazdorothy why my lover :( you going zoo?', \"@SweetieBiebs baby > boyfriend > bitch??? I don't know how to complete it :(\", 'All ice cream vans are busy :( Maybe later... #UberIceCream http://t.co/t6GAoKfAp1', \"@lifelesscurves hopefully not :( but sulli was like that too.........well, there was injured amber too, but she's still there haha sigh f(x)\", \"@darrenlewington Ouch :( What's happened to make you say this Darren? Is there anything we can help you with from here?\", 'not even sleepy :(', 'only CPM has condemned it, rest all political parties are quiet :(', 'When you realise that 2/3 of your big summer plans have been and gone :( :( :( next up is PARIS ✔️', 'Oops... a server error occurred and your email was not sent. :( :(', '@ajtszxc miss you too :(', \"@Insanomania They do... Their mentality doesn't :(\", '@hosongjun noooo :( it was too late d. Nvm d lah', 'everything reminds me of u :-(', 'no date yet :( https://t.co/Tu9R2CfSyx', 'feel like eating unagi out of a sudden :( https://t.co/cI5FPi66co', '@SarahRashadd straight 7elw :( at least mesh beyt3a2ad', '@kaiality too late now :(', \"@Mvusi_ lol I'm still very fluent and people say I sound white :( but varsity ruined me. Sengenza typos and I use some words out of context.\", '@ErwanLeCorre is there MovNat in Belgium? First search yields nothing... :-( #NBHeroes', \"@RocksteadyGames Tried doing it from my xbox, but it seems it doesn't work...:( it'd make a killer background.\", 'Looking for fun? KIK : agover73 #kik #kikgirl #hornykik #makeup #orgasm #brasileirao #sexdate :( http://t.co/PDxVjLdhi7', \"Watching abusive relationship videos is so fucking hard. I'm trying not to cry but it's like... :(\", '@hitgal_hashmi me also good.. But why are u not present here?? Have not seen u long time :(', 'I like u sm :-(', \"I'm so inactive. I wanna cry! :(\", 'Looking for fun? SNAPCHAT : JillCruz18 #snapchat #kikhorny #talk #teens #oralsex #batalladelosgallos #kikhorny :( http://t.co/OjCdZIHpuz', '@GODDAMMlT SRSLY FUCK U UNFOLLOWER HOPE UR FUTURE CHILD UNPARENTS U >:-(', \"Ah i honestly love my dad so much I'm slightly upset that I'm not seeing him on my birthday :(\", '@soarcasm Bianca \\n\\nUr one and only bun : (', \"you already knew i couldn't stand to let people dislike me :(( it's burdensome and i want totally clear it as soon as possible\", '@aquazzSky same here omg I miss them so badly :(((', 'Amelia didnt stalk my twitter :(', 'oh, i missed the broadcast. : (', \"i really can't stream on melon i feel useless :-(\", 'I need to stop looking at old soccer pictures :(', 'Got an interview for the job that I want but they rang me Tuesday for the interview on Thursday but in on holiday :(', '@AndreaMarySmith very helpful .... Or will be once I stop crying :(', '@realyys_ OTL NEVERMIND :( at least i got jeon so', 'And AS SOON as I tweeted that she planted her claws in my thigh for traction and zoomed away :(', '@luketothestars damnit :(', '@KLM I used to be PRY/PV ..... wish I could relive those days and become NYC/PV buy there is no way to communicate with NYC or USA KLM :(', \"It's really hot :-(\", '@Carouselballet Monday? :(', \"@badoeuf If going to stop breakfast early you might want to remove the 11am from your website. Even McD's doesn't pull that trick. :(\", '@blairforce2 which means its on its way over here :( 3rd load just hung up', ':( but wtf am I supposed to do now without her', 'Headache strike :(', 'English weather needs to fix up :((', 'Live fam bam but I have a cough :(', 'Absolutely gutted all the James Bay tickets have sold out for Manchester :(', 'Seventh spot na lang :( #OTWOLGrandTrailer', 'Splendour :(', '@lizzytrevaskis @1057darwin OMG! Swedish hair metal legends HäirFørce in the studio while I am on leave??? Noooo :( #givecodpieceachance', \"@missalicebmbds it's sore, Alice. :(\", \"I'm not ready to work yet :(\", '@adoringpreston someone unfaved :((', 'stiles :(', '@infinityandbion funny mo :(', 'someone explain #SandraBland :(', '@archietalanay dont be sad :(((((( ily', '@sonzhi No, I am going to spend the night in Prague and then leaving tomorrow :(', 'one of my friend is following me , a little heart attack , im sorry youre blocked :((((( sadis', \"@ellierowexo no I'm annoyed :(\", \"@GabyInTheFields Consider yourself lucky! my favourite character didn't even make it to the season finale in The 100 :(\", '@SarahLucero boo. I had already turned in. Yes. At 915. :(', \"@BeaMiller I DON'T HAVE ITUNES SO I'M WAITING #NotAnApology :(\", \"my layout doesn't match but it's the closest I could find for my header :( someone help\", \"@RamaZafar hayeee :( hayeee :( patwari here mam but for IK's vision I would say nothing rather than a lil laugh\", '@Mjbulanhagui13 agh, sorry :-(', 'VidCon :( :( :(', \"@Quality_CE don't gas me :((\", '@TheKelseeey awhhh ok ok :( see you nalang when class opens!!! Hehe', 'Last night was one of the worst night :( I pretty sure this Albanian women cursed me', 'Air Max Tavas pls pls pls pls :(', '@ChaeHyungwon_ taken :( another chara maybe? -teteh', '@devjoshi10 dev I.m verry sad cause you on twitter and than me off :(', \"@ryannhough I can imagine! This would shatter my dreams :-( We'll let our @CooperativeFood colleagues know all about this. ^SB\", 'Too much missing you :(', '@IMJicellmoreno Nawee ! :(', 'I WANT A WHITE FRENCH BULLDOG :(((', 'Wanna feel loved :(', \"@WeeklyChris Aww Poor you T.T I wish I was there to help you. Even though I can't really help much :(\", \"I'm sorry I didn't see this tweet :( 2 Points x https://t.co/N6HMgKfoR1\", 'I miss the Macho Man :(', 'can i hav my purity back ? :(', '@heartissoJEDlag i have kwento :( fbc', '3 days without talking with Bae :(', '@punkrockbgmouth @indiandeathlock whaaaaaaat noooooooo :(', \"@WeeklyChris \\n\\nPlease tweet me something I'm sad :( you can cheer me up \\nplease..\", 'I miss my brown hair :(', \"Nakakapikon yung nagbabasa ka ng blog comments for info and it's full of people asking the same damned questions answered in the post. :(\", '@kevinperry leading cause of cancer in children under five :(', \"Alone :-( :'( :-\\\\\", '@rcdlccom hello, any info about possible interest in Jonathas ?? He is close to join Betis :( greatings', \"@chescaleigh I'm sorry people are being shits who don't respect your personal space. :(\", '@seulgi_psv noooo :( *sogok ice cream*', '@lucyanne_l Thank you for sending premium writing instrument, however some dastardly swine stole it from envelope! :( http://t.co/xNe3cD6dvk', 'Im getting sick and tired of pipol saying Im short... M not Short... I AM TINY :(', \"@Charlie_Bread fair enough :( why would anyone do that? Just seems a tad fucked up 😔 .. It's a wiper, a wiper!\", '@EMPERYtech supposedly one of the worst kernels for any device :(', \"i'm so bored :(\", 'Is this true? I doubt it is :( #ZaynIsComingBackOnJuly26', 'Today’s job (another facking #Intel). Extra mega careful not to get bent socket pins :-( #PCGaming #PCUpgrade http://t.co/VeJNS9FBfn', 'Hate being the messenger :(', 'is everyone asleep already?:((((', \"@MoKurd they've brainwashed you :(\", 'can some1 pls download smosh:the movie free online? Hahahaha :(', 'MY kik - plawnew837 #kik #kikmenow #amateur #sfs #snapme #summer #hottie :( http://t.co/2HnzstgnOa', '@rivverofhoney Omg no way?! not you guys aswell :-( btw cat litter isnt good for pregnancy make sure u dont go near', 'Ah Mensch @Tikus09 :(', 'Sepanx with this one :( https://t.co/4Hp6d3sMwr', '@LoseThe_Battle We cannot view the picture. Are you unhappy with the seats on our bus? :(', \"There's a huge bag of presents from Luke and I can't open them until he's back from work :-((((\", '@baexrv pcy mine :-(', \"@walesdotcom @Visitcaerphilly last time I went to Caerphilly I couldn't find anywhere selling local cheese :-(\", \"My eyes are really bad today and I don't even have my glasses :(\", \"@rauhlstilinski I'M OMW😍 lol I wish :(((((\", '@lukesdagger JOKE LANG EH :( HAHDHDHSHHS', 'Never seeing your dad until midnight bc he worked hard as fuck :( #GrowingUpPoor', '@JackJackJohnson @jackgilinsky NUMBER ONE IN AMERICA!! 😭🇺🇸\\ni wish i could buy it but no money :( http://t.co/7xyNmimTpR', \"Wish that I can buy all Bangtan's merch :(\", 'The pain of all #UberIceCream drivers being busy :(', '@lawrenceispichu oh gosh what did you say? And aw hun :( *cuddles*', '@DatMelvin @Official__Jakub me wants! :(', '@taimoor_mahmood taimoor Meray dost :(', '@literalwt tyas mind to refollow me :(', 'My stomach is killing me :(', \"as if not an apology isn't available in australia :(( @BeaMiller\", 'ksoo u dumb butt :(', \"@D4nMeAtSix @carterreynolds omg why am I getting hate for being a sex offender :( poor me :( I'm a stupid pissbaby\", 'i want to finish death parade by this weekend :(', \"I'm so frustrated with my planks. The times are super inconsistent, and I have no idea what I'm doing wrong. :(\", 'RIP TOM MOORE...... I LOVE READING HIS COMIC BOOKS....\\nANOTHER GREAT ARTIST I WILL TRULY MISS :( http://t.co/f5uVxTUcSE', '@tylerftirwin I miss this so much :(', '@catasrtophe awww i miss you too i swear but Twitter these days are truly boring so i rather watch movies and football :(', 'when can sch get better........ :-(', 'my throat is so so sore :((', 'Why is no one awake :(', 'Im hungry now :(', 'Get in the bin, OSX/Chrome/Voiceover >:( http://t.co/0bcvA6YjWu', '😂😂 what a night :(((((( so devo xxx https://t.co/9ixTnyBXLb', 'im so sad :(', \"I hope it's wrong about #HulkHogan but I think I know deep down its not. It's hurtful to wake up that kind of unpleasantness :(\", \"@Yoonginese I don't even know what to say :(((\", '@kingsxcreed daaaaaamn :((', '@maaaybs Grabe ang harsh huhuhu why u like that? :(', '@halfmoonhalsey aw babe :((', 'my boys r playing :( and i cant watch it :( rip', 'Dadas uh iphone na, :(:( [pic] — https://t.co/Jr4U98A8ja', \"@OscarTrue89 no sorry I'm fully booked :-( xx\", '@ssulstagram why you unfollow me unnie?:(', '@norman__g lucky spike only :-(', '@imaginIarry omg i miss you 2 :(', \"Why didn't Panic's new album come out on the 22nd :(\", 'bigbang need some rest :( they have been travelling from one place to another, must be really tiring for them :(', '@Atunci_CoV @QuetaAuthor :( rude', '@nickiminaj you mention South Africa so many times in your song its about time you come to South Africa ! :(', \"Hate when I can't remember my dreams, I love sharing them :(\", 'What is going on in America man R.I.P to all the victims in #Louisiana :(', 'When school comes between me and twitter :(', 'Taking 190 at such a horrible timing :(', '@myungfart ella :( cheer up pls', \"@Lizarrdz That's no excuse for launching an attack Lizardz, you should feel like shit for doing that. I am deeply ashamed of you. >:(\", '@dtaylor5633 Nothing worse :(', '@cockneyradish Sorry about that :( We need to get an emergency engineer out to you! Will you be home for the next 4 hours? ^Laura', 'I can never go to sleep early :( lol', '@elglozano home dormtel near st scho!! all girls siya tho :( do you want me to help you find oneee', '@JDRaPlD @Excluzzive I was talking to exclusive :( U know I carry U want me to play 😘', '7pm on a Friday and I am dead :(', \"@fantasticpru @gemmajoobjoob Sorry Nat, school holidays.. :( and I'm working at 1pm.\", '@Vitality_Watson why do you do this when Im in work :(', '@Shansdoe every time i have feta cheese, my head starts to blaaaaze! sometimes my vision is messed too and nausea comes in :(', \"@natzaz17 Oh no, that's not good :( We're not aware of any issues. Have you been able to top-up now?\", 'Sharknado, one hour that I will never get back :(', 'Yeah, leave me on read :-(', 'I cannot even sleep right now :(', 'And Ernie :(', '.@ItsFoodsPorn all over my TL :( hungry af!', \"@Marguuuuh it's raining :-(\", '@DasCarrot no EZOO for me this year sorry :-(', 'Looking for fun? SNAPCHAT : LilyButle18 #snapchat #kikmenow #amateur #kikmeboys #seduce #hannibal #kiksexting :( http://t.co/y8RcKiqSZ3', 'when ed sheeran is preforming in your country tonight and ur not going :(', '@Uber_Mumbai Cannot seem to get one in Powai! :(', \"My neighbor doesn't let me sleep :-(\", '@The_Lie_Lama back to Delhi :(', '@ButtCupboard my feet were cold!!!! and there was no point in taking the socks off okay stop :(', \"i can't belieb it's raining :(\", \"Since models own stopped stocking at boots I can't get any and I can't even order online because it's telling me it's unsafe :(\", \"@crushinghes the summer holidays are great but I'm so bored already :(\", '@X2raw_evicted Oh. I was planning on streaming Halo on Xbox One today. :(', 'Drop Dead Fred use to be my favorite movie \\nI wish I had it :-(', \"remember was #2 on gaon and bad was #6 but infnt are eligible and apink are not :(((( acube why'd u do this\", \"So sad every time apink has an event .. Don't understand Korean :( 😭😭\", '@iamcharleigh_ :( have fun', 'Bullshit......:((', '@Taylan247 :( - Do you know what happens to the internet light when the connection drops? Thanks, Kei.', '@Nigguhjoee @Kvndrewhdz @xEnigma93 I wish I could hear food :(', '@HanaaGhzlli hanaaaa its your birthday???? ya Allah sorry for not wishing you in the van jn i tak tau :( happy birthday gorgeous!', \"@redlipshoran @JacobWhitesides omg really? I'm sorry babe :(((\", '@tallertara what happened soul sis? :(', 'And faith :(', 'What was the last present you received? — haha. basta. :( http://t.co/xhdfobhn8N', 'Went to bed with headache...woke up with headache :(', 'Snapchat me guys : JasminGarrick #snapchat #kiksexting #chat #sexting #addme #mpoints #hotmusicdelocos :( http://t.co/xXfTQWzhAI', 'Relation full of lies :(', \"aw fuck there's a dress bag on the floor. dammit that's really loud :(\", 'Dhis👉 @AhmedMarzooq blocked my twitter :( thank you for the good time 😢 I play 8ball, FAKMAREY,', '@LaEtchi unfortunately yours smells like doo doo :(', 'I wanna go to six flags :(', '@Sam_Ardi sorry :(', \"Shopping isn't fun when you're on your own :(\", 'I miss cat :(', '@bbgurrll i miss you too :(', \"I would like to be able to work full time on this stuff, but after this move, I'm having to consider taking on a fulltime job. :(\", \"@izzsugden yeah I've seen something about tinder on fb!! I was rooting for them :( but the other woman is frustrating me being so awkward!\", \"No food in the kitchen, no money in my wallet (thanks Barcelona) and my dad hasn't been home in a month so no beet juice either :(\", 'DCI today, now I wish I was going :-(', '@TrevvyM114 At work and freezing :(', 'Srsly, Y U do that? :(( https://t.co/g0r01GGj2b', 'Hate seeing my granddad like this :(', '@cessyybells sorry pre :(', \"@voxcinemas I want the minion bucket please :( it wasn't there yesterday! :(\", 'All is fair in love and war kapan update :(\\n\\nOh ya udah dihapus. Hilang dari muka bumi.\\n\\nI want to read it once more someone give me link 😢', '@tiaramescudi girl that was so quick too :(', 'so many nasty, narrow minded people :(', 'i want this in my room :-( http://t.co/alpqbVixcP', \"Because your friend does not respect your life :-( I'm sorry https://t.co/ApJ18ZWK0x\", '@CollagenShots Sadly not :( @Fighting_Fifty @AmazingPRltd @Janettaras @Gracefodor @NikkiTMB @rozhubley', \"Sucks how I'm Gona miss Chellos party :(\", '@RCDeportivo hello, any info about possible interest in Jonathas ?? He is close to join Betis :(', \"@LizaNMinnelli i can't watch it on my phone. Sorry :( thank you still <3\", 'The taxi driver thought me and Sophie worked for Nintendo and took us into the gates :( the security guards gave us the dirtiest looks haha', '@1994sdork omg :-(( I LOVE YOU SO MUCH MONICA SEE YOU SOON AAAHHH !!!', ':((( (at Crepes 40) — https://t.co/bazEmHlhYL', \"@captaintn @JAYBUMAOMGY @satgotlloco @longlivesamd don't kick my bae :((\", '@JoWaltham haha. Sounds like you’re having fun and games :(', \"@justinbieber you don't follow me :(\", \"school is on monday but i don't wanna meet new people :(\", '@exhaustcd BUT... I HAVENT FINISHED YET :(', '@bbomiyeh No. U forsaken me and ran off with the other gf. :(', 'Kanin please :( xD', 'Can not get on #hypixel :( want to record grrrr #thestruggleisreal #geek #gamer #gamers #youtube', '@EdmundMcMillenn I want afterbirth now :(', \"this is a bummer :( apink's digital + physical sales have been super great but bc of the timing of the album release they aren't up to win?\", 'OverPerhatian:(:(', 'this is so sad :((((((((', \"@GarryBrown75 That's awful :( My son missed his physics exam because he had chicken pox and they gave him a predicted grade. Poor girl.\", 'but srsly tho, bae looks so out of it :((((', \"@Cr4sh0v3rr1de Ahm...I've never been to London...nor on a holiday outside of Ireland in nearly 8 years :( Never got the chance/cash to go\", 'please follow me :( @JackJackJohnson', '@fivedorkz why omg :-(', \"5am & I'm up wit ha damn headache :(\", 'I had a dream that I met Karlie Kloss & she was so so sweet & she wanted to take like a bunch of goofy photos with me. :(', \"i didn't realize it was 3 am i was watching concert videos and pcd is extremely hard rn :(\", '@matthaig1 SORRY if I antagonised you with this. But she calls herself a writer. And has had several polite nudges, too... :(', \"@helter_skeleton I haven't delved into it enough but what I have seen and heard is fucking horrendous. :(\", '@luke_brooks follow me :(', '@AdaptsTheGod but duo we both dropped double digits :( TWICE', \"@DaShawnBullfrog @PapaHogieBear I just got here :( come!!!'\", 'THEYRE SO CUTE I WISH I KNEW WHAT THEY WERE SAYING :( http://t.co/Vr3ICTaFIS', 'I care :( http://t.co/Oe5ID3cJIR', \"@Jenna_Marbles I wish I could've met you :(\", \"My grandad really isn't well :( I worry so much about him!\", \"@ayyedolans DO U HAVE GRAY'S FOLLOWK?!! OMG ITS TOO HARD these DAYS U KNOW :(:(\", '@nighteyeslrh and idk what to do bc we have no money if we leave :-(', \"@KyuminpuVELF a lot of people suggest, but they still aren't :(!\", '@justinbieber follback me pls :(', '@BroderickDamien you have to get a pace maker? oh no! :(', '@isalouise2012 ah mince :(', '@scdesc Molly deserved a much higher place :(', \"I'm so hungry :((\", 'all i wanna do is have a good time with no one hitting on me or dating me is that too much to ask for :(', 'Feeling very sucky w this running nose cough sore throat and fever :-(', '@flirtyoakley same i hate hot weather :( its my graduation ceremony later and all the boys are gonna wear suits everyones going to die', '@AlexaBailon \"let\\'s go to a party....in our pants \" ew :( gross', 'someone has niall layouts to give me? :(', 'hey christine, why so moody? :(', '@bluexxdream i miss you :(', 'THROWBACKS :( http://t.co/WEbrI8gAgM', '@jesuskylie @tothebeyhive thats not a good enough of a reason :( please dont leave youre one of my fav barbs', \"@LewissCharles Cooper, but I'm not convinced. Neither of your 2 please! I'm more concerned with Creasy winning Deputy - but she won't :(\", '@3nymph some taste so bad though :(', 'i was joking only man :(((((', 'I never removed the Minion from my car and now after 23 days it has run out of batteries! I have no \"Banana\\'s\" :(', \"@CurlyxStyls i want a sponsor but my acc is new so i don't have even 1k :(\", 'What if I told u guys its my bday today ? :( all gift I want is $5 paypal', 'goodbye stage already :-(', '@pixiesuga shit idk what time it is for me :((', 'today was tiring :-((', '@ughponcong pretty :(', ':((((( matt', '@DEPORSEMPRE1 hello, any info about possible interest of Jonathas ?? He is close to join Betis :( saludos', 'hey someone text me :((', 'Another dissapointed review :( http://t.co/HlnZzdW0Tz #bbloggers #makeup #beauty @BBlogRT @BBloggersUnite @FemaleBloggerRT', \"😫 <-- this has to be the face every guy pull when getting head but can feel your bae's teeth in his dick :(\", 'Ahhhhh well :(', 'i wanna see paper towns w/ @milesfloresss :(', 'where can i get long lasting black pumps :(', \"@jaydebose omfg it's the most beautiful place ever I miss it so much :(\", 'Hate pimples :(', \"it's almost 12 but i'm so tired :(\", \"@latersbby honey & brown sugar is only good for ur lips :/ but the amount of stuff I used on my face that I could've used on food instead :(\", '@shagotpm ikr hais why would someone sell that precious thing? :((', \"I'm so tired :( I haven't got a good sleep in a while\", '@ZhenJie3007 yea man... Suppose to football tdy man but plan fail :(', \"Please god I don't wanna go to work :(\", '@gracioussam I kinda miss Pamela and good!Anna :(', \"@norm Can we please be woes? I can't run through the six with you, though, as I live in Mexico :(\", \"@Charlotte_Solom idk if I can because I'm getting a mini bus there so idk what time I'm going to get there :(\", \"@harriep Hi Harry, sorry :( We're working on a mast in the area. This can cause intermittent service until the work has been completed.\", 'Looking for fun? SNAPCHAT - JannieCam #snapchat #kikme #webcam #snapchatme #kikhorny #musicbiz #hotmusicdelocos :( http://t.co/8aOe100cdC', '@KirkHerbstreit Braxton should have gone pro! :( I feel bad for him. Urban is unprecedented in brainwashing (see Tebow and Alex Smith)', '@dxniellacueto wat. Okaaay huhu :(( sayanggggggggg did you find yah phone?', '1. Taxi Service\\n2. Second Scheduled Blog Post\\n3. HOUSEWORK OR BUST :(', \"My mum says she's done & that she's leaving my step dad :-(\", 'I want to go to Disneyland so badly :-(', \"BC OF THE 'THOMAS' NOT BEING TOMMYY :(( https://t.co/pYbIISPopv\", \"@LouiseMillerx @RedShoes4Life @x_Kisaragi @DayveHallam Billy did. I haven't... :(\", \"I fancy Kevin Clifton from strictly come dancing so much but he's now married :( whyyyyy\", 'NSC and MAT 0 tomorrow :(', \"@denissely Awhh i didn't see you guys or i would've rammed my car into you :(\", \"@bandq_help that's ok :( is there any reason why the vouchers can't be used online??\", 'KIK me : smadvow544 #kik #kikgirl #lgbt #photo #model #free #hottie :( http://t.co/Rzo9DqAXei', \"@halle182 everyone's at work I can't even get to yours :(\", '@quidco @TPOuk would love to see acdc..missed out on tickets :(', '@Lungi_jobe :( akere ive been sending ka my gmail and u not getting :(', \"It's their last stage today :( I'm going to miss them seeing them almost everyday\", '\"@Boy_Hugots: Never give up. The best things take time.\" weh :(', 'GUYS add my KIK - sprevelink633 #kik #hornykik #chat #porno #orgasm #free #webcamsex :( http://t.co/ZepUgc5yJ3', \"@xsushie why you're now lana? :(\", 'Missed 11:11 :( btw my wish was for @carterreynolds to follow me♥ #LoveYouTillTheEndCarter ☺', '@Shonette @HartsBakery Aw that sounds great, better than what i have for lunch :(', 'I want to play the SFV!!!\\nCapcom plz :(', 'Tips ONLINE!\\n6/7 WINNERS yesterday!\\nJust 1 goal off a nice 20/1 :(\\nHopefully a similar strike rate today!\\nhttp://t.co/lJEB3EPZVt', '@phenomyoutube u probs had more fun with david than me : (', 'Soooo burnt.... :-(', 'need new phone :(', 'Missing my tito daddy :(', 'when will rosie and hayoung shut up :(', 'I just want the Ram and NLB :-(', '@KyraaVazquez @geneanex HAHAHAH holy shit!!! Comforting why? :(', '@OhHeyItsAJ How could you be flat and have abs at the same time... @_@ \\nGym tayo G!! :(((', '@RohYB_ @Glanny_ @_wattie yeah :(', \"First two days of Katies summer and she's been back and forth to the doctor with suspect meningitis and viral tonsillitis :( poorly girl 😷\", 'I wanna go to the movies today but no one is down :(', 'I want to watch Paper towns :-(', \"@katiejosephx I've had no reply yet :(( !! But ange has given me some work for the next 3 weeks 😝 x\", \"@cmoan3 don't say that :-(\", 'Babyy :((( http://t.co/WX0gjCms9t', '@Cath_Kidston they dont have it either :( I will just have to have ugly cushions for a little while longer. thanks for your help.', '@JayMcGuiness happy birthday again! And please come back to singapore :-( 😿💓💓💕😚😚😚😚😚❤️❤️❤️❤️❤️ http://t.co/5LIiqJqpBt', \"@APluckyHeroine @Mrsnige no. They have to weigh up risks. Premiums will go up. :( A lot of money.1 reason I'm not that keen on getting a dog\", '@PexDesigns @TheAnimeBible I know that feel man :(', '@Wolf_Stack yeah by the looks of it :(', '@walls @UberUK @cornettouk I can\\'t see where it says \"ice cream\" on the uber app :( what do I do after setting my location?', '@BenJPierce I wish I could see you Ben :(', \"@kennyfairley @kevrobbo27 i don't think we will ever win the Petrofac Cup :-( ;-)\", \"15 Days ago Danny took my wig and put it onto mark's head I want to go back there @thescript @TheScript_Danny :( ♥ https://t.co/9ojA3FPxKF\", 'This>@AnaMyID a pathetic emotional burden.Says she likes me, cares about me, hugs me, respects me, tolerates me! & calls me names too! :-(', 'is allergic to cats... itchy throat. :(', \"@sxnflame I don't like dogs :(\", \"Man right now, I wish someone would bring me food to my office. I'm starving. :(\", '@VyenAngel gosh its cheaper in malaysia :( here its worth 130 +shipping', 'the weather is set for more sleep but responsibilities. :-(', 'i think someone hacked my other acc :(', 'Guys nooooo :-( what a WOW!!!!! Wow wow wow', 'This boy was snapchattimg me and I was happy bc friends then he ruined it when he said \"you wanna have fun😏😏\" :((', \"@sambirmingham2 I couldn't!! I look 12 still :((\", '@lemoncandykiss tbh I forget who is the donation manager in Sin & due to my hp corrupted did a restore all my data lost lor :(', \"@Juandicimo23 it's the worst pain :(\", '@ladyliaaxoxo but never dedicating anything to me :( smh lol', \"Irene unnie bite her fingers and worriedly stared at staff :( ~it's okay unnie\", 'I feel so sick :((((((', '@deano042 @RealKrisTravis WHAT :(', 'GUYS add my KIK - toneady46532 #kik #kikmeboys #wife #porno #snapdirty #premiostumundo #sheskindahot :( http://t.co/Swy2jBs8SC', 'Omfg the hugging corpses :(((((', '@MynameisQin @ManiiFanii #taeny #fyeah the link is broken :(', '@DeEstrellados hello, any info about possible interest of Jonathas ?? Hes close to Betis :(', 'I CANT WATCH TONIGHTS ANDROMEDA :(((', '@yuniizu LA time, right? Yes yunnie, im serious :(((', 'Why do developers release good games during school?? :(', '@djdarrenjones Thank you! I feel awful, not been this sick for a long time :(', '@cloudljp THERE WERE A LOT OF WRITINGS OF THE BOYS IN MY SECTION WHDJWKSJA IDK THAT ZIAM WRITING STILL FUCKS ME UP\\n\\ni go to a 100k school :(', \"@LushKitchen Noo I've ben watching it like a hawke all week! So gutted :(\", \"Don't spoil me :( http://t.co/XJGO5Znsjh\", 'None of you were hiding behind my shower curtain again :(', \"@adlow76 :( I wanted it to be good, or at least watchable - but by all accounts, it's neither\", 'I WANT TO WATCH! :( https://t.co/wdETpUIyOZ', 'My last day in Indiana :((((', 'when your fav cheese gives you migrines :( <<<<<<<<<<', \"still sad that we haven't fixed my cars window bc I can't drive anywhere without being scared it'll shatter on me :(\", '@hannardynamite I only have the morning off work unfortunately :( are you at GDCE/Gamescom?', '@jjjaneell hay idk baby :( 😭😭😭😭😭😭😭😭😭😭', \"@VGO__ Oh no :( Do't think that. Do you have a parcel coming from Yodel now? If so hit follow & DM over your tracking num. Chelsea\", 'I wish I could be friends with everybody :( lmfaooooo', 'Oooooouch!!! My poor pinky toe 👣 Good thing I work for Podiatrists. Just waiting until morning so I can go in. Hurry and be morning :(', '@michaelsutthako morning , i miss you :( :*', \"I miss my old house because you could hear when my parents door opened. Now I have to act like I'm asleep :(\", \"Gusto ko ng Rodic's :( someone share an order with me because one's big\", '@SVTNDino adoohh :(', \"@bumkeyyfel b-butt : ( isn't black cat a bad luck ene\", \"Missed out on tickets for @BelleSGlasgow's @RoyalAlbertHall shows this morning? :(\\nGet your #Tigermilk fix at http://t.co/QGGHsnicxv\", '@21dadoongie yes hopefully next year :((', 'I want to meet Jacob so bad @jacobwhitesides :(', 'Can you please tell me :(', \"@yoditstanton @elise_huard @bodil I used to recommend East Dulwich, but it's gone super crazy in the last five years. :(\", '@becchall awwww i miss you too! :(', 'The last few episodes were really intense :(((((( kagami n kuroko forever <3', \"can't sleep :-(\", \"I just can't say nah to food :((((\", '@keancipriano I want to see you :( sana makita na kita and ang @callalilyband .', 'spooky jim and smol bean :(', 'One of the guys from true blood was in St. Fagans yesterday :( :( :( @KimIannucci', '@Charlottegshore Where can I buy your book #MeMeMe? I live in Finland :(', \"@theohurts whaaat. this so isn't fair :(\", '@JayMcGuiness nooo stay in UK IM HERE :(', '@Ashton5SOS aw poor thing :(', '@Hafeelalala I also want :((', \"@elementaladam This looks amazing! (think I saw them at meadowhall the other day actually) unfortunately its a weekend so I'll be at work :(\", '@seokielips sorry :( i spend more time on instagram now', \"RIP Lola. :( I'll miss you. Sorry at di kita nadalaw the last days. Thank you for everything.. sa memories, sa warm hugs, sa lahat. Labyu la\", '@kaydeejimin okies :-(', '\" I dont want anything happen to my bae :( \"', 'Who even started this trend? I wanna know if there is a jot of truth :( #ZaynIsComingBackOnJuly26', 'Snapchat me guys : IvyPowel19 #snapchat #kikhorny #chat #girl #like4like #travel #phonesex :( http://t.co/HNMkErVr2O', '@1DalertGER Schade :(', 'Missin my homeslice on her bday :(( </333 @wraithmedia http://t.co/1J3qYUTTqG', 'My poor throat :(((', 'MY FAV EMOTICON RIGHT NOW IS THE \" :(: \" EMOTICON', \"you see i'd get my eyebrows done at prettylooks but i wanna try different styles too :(\", 'rip whitney houston. :(', '@iAhmedMallick @LightAgayi \\nAur ap bhi is me shamil ho :(', \"I haven't been on much these past 2 days bc I need to save my 3g but I feel like I've missed tonnes :(((\", '@gambl3d Hey there - sorry to hear this :( Have you checked the service status page → http://t.co/xyUrkkSa60? Gen', 'Are you holding back \\nlike the way you do :(', \"The amount i'm eating these days is ridiculous, don't know why I'm suddenly always hungry :(\", 'omg when ally hugs mani she wraps her arms around her neck and pulls her closer :-(((', '@SensodyneIndia I loved it but this #ToothSensitivity :-(', '@jjjaneell yes we should :(', '@guptashas @cquenx We were heartbroken too! :( @Uber_Delhi', 'A chover :(', 'i want cebu lechon :(', 'my head is killing me :(', '@BABYGVL i want a kitten so badly oh my god :((', \"@Taylorr0se if I sleep, I won't wake up on time :(\", 'Add my SNAPCHAT : JannyGreen22 #snapchat #kiksex #xxx #seduce #tagsforlikes #nakamaforever #hotels :( http://t.co/K8jYN7SdAL', '@ellieharveyy it probably your fault he lost his phone :(', '@Glanny_ @soL_Lyah @_wattie I told him to suicide and kill both of you, but you ran away forever :(', 'are you mad at me ? what did i do wrong ? :( what should i do to make you forgive me :(((', \"@ConnorFranta PLEASE FOLLOW ME CONNO!!!! I'M LATE AGAIN!!! BECAUSE TIME ZONE AND I COULD FREAK OUT THAT YOU NEVER SEE ME!! :(\", '@iperfectyonce @justinbieber its my biggest dream can u follow me brooo :((((', \"@elegantxharry I'm a lonely girl from England too :(\", 'This time last week we were on route to Lovebox :( @MixedGemsBeauty shares her day and the new @CollectionLove prods http://t.co/tChmTf8om4', '@ashtonboyf IMS OSAD :-(', 'I hate breaking out :(', '@Zearify i was in it :(', '@wilywagtail It still happens a lot - unfortunately there are still reports that people are falling for the scam :(', \"eric & i made up and he still didn't tell me he loved me :-( fake ass\", 'I miss ITB omigod :(', 'I need a job and to learn to drive but, my fricken health is putting me back. :(', \"@cleanupchick Hi, unfortunately, we're unable to locate your original complaint. :( Pls DM us the product details & we'll get back to you.\", 'I miss my boyfriend :-(', '@ZappingZach same :-(', '@waniiamira ehem 😏😏 haha ala yeke :( its okay then, have fun in kk! jumpa next time, in ✈️ or 🇺🇸 maybe😋', 'Come home to an empty house and no ape :(', \"I've been such a shit bestfriend.:(\", \"I'm gonna be so inactive next month :(\", 'Miss :(', \"@RebelGirl1323 :( Well try to do something to keep your mind off all the bad things. We're always here for you\", \"@ANTHONYFTSIVAN i'VE NEVER SEEN OR FELT SNOW :(\", \"@TroutAmbush I'm at work :(\\nI can show you once I get home, but during 1.2 I lost my maps by accident and lost my builds\", '@halehydruh i dont know huhu tests kasi namin and i didnt finish my AP test :-(', 'Now I want a hot dog :(', '@34_1 no, they rejected section of the UK govt e-petitions site died :(', \"I'm so sad. :(\", '@zayndrome i cant find it :(', '@remnantsofme Oh no :( What building & suite are you in!?', \"I wanna cut k but I'm with my friends and they threw me a sleepover party :( so I'm pretending to be ok like usual\", '@swcgtbh leave me alone :(((', 'praying for you , KHAMIS ... :( ... https://t.co/2Qg4dhxaGg #Kadhafi', 'damn forgot about my hot chocolate :(', \"I'm craving Oreos and milk :(((((\", 'And now that love island has finished I feel like summer has gone :(', '@sugarymgc i miss you :(', '@KrystalHosting Was just about to push a client your way for some hosting. Maybe I had better wait till next week :(', 'Im so irking :(', 'someone say thank u and goodbye to chris for me tomorrow pls :(', \"i need nate ruess' album :(\", 'I could just really use a hug and maybe some icecream :(', '@ZombieHam There are a lot of good comics events but they all seem to be for kids :( [part of the Schools program]', '@XFilesNews Looks more like dog food.... :( ugh!', 'I miss you so bad :((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( @denniselazaro', '@fluffyGAB aigoo our baby :(', 'Want to watch paper town :-(((', 'I just wanna recover :((', '@deefizzy :-( poor boy', '@KyraaVazquez u guys are together?? :(', '@gufuus i saw one doujin i think of killua getting fucked by ging i was a bit sad cause it didnt show dicks and i was hoping for ginggon :(', 'My computer has broken and i have to wait until to fix it.i miss so much the twitter and you,guys.All my love..:(', '@denisegohemun it feels like ytd :((((((', \"@thebodycoach Joe I'm sick can you come round and make me soup ? :(\", 'crying :(\\n#PDApaghimok', \"@woIfgaang it's the story of our life :( haha look who's talking\", '@Madrigal_6 I work :( smh', \"why isn't anyone awake :-((\", '@MonsterxStitch ya sorry :-(', \"@SP3CTACL3S she's my friend :(\", 'I used to be so flexible :( http://t.co/fc4NYvnfkb', \"This taxi driver is going really fast and I'm scared :(\", '@pamtravel I bet you are wonder what happened :(', 'Sheet, its hurt nanaman :(', 'Need a small lady to walk over my back. So sore.... :((((', '@JayMcGuiness i want to meet you :(', 'Alex fell asleep :(', \"why won't justin come to Scotland :(\", \"@wajiyaamjad ok I'll write u every week :((\", '@HuaAng75 but I have no curves and my tummy is so big.. How do I get flat abs? :(', 'It looks like. :( https://t.co/DgynGEpHuH', \"I feel so sick my stomach hurts all I've done is cried all night I can't sleep :(\", '@fyoudontknow WAIT ITS GONE. LITERALLY IT IS :(((((', \"@IsaHurairah that's a quote tweet :(\", '@dearestdaryl @hjoldr cream pinay pie soup :(', '@yslzaint this one :( http://t.co/s5Dw4o9nvb', 'jadi langsung flasback .. :( \"@GGStepit: @crownhyoding dont cry babyy ;(\"', 'okay i miss you @AnnShela_ :(( http://t.co/So3zOCWfiA', '@BeaMiller I can not listen to your album because I live in France :(((((', \"Some times I like this style :| but now I didn't liked it :( http://t.co/jjSI8VScPL\", 'Feel so sick :(', '@thomaslegal By all accounts it is meant to hit us by lunch time :(', 'i miss los :((((((', 'Pls stop saying rude nicknames that involve me being short im so sick of yall :(', '@jamesamurao I miss you :(', '@Apink_2011 pls write in english :( i dont understand', \"@lunatroye but snow is cold and gross and ew it's just a big mess because everyone just scrapes it into piles anyway :(\", '@maaaybs hey! I went home na. :(', \"But I'm still hoping :( #ZaynIsComingBackOnJuly26\", '@pinkle_dhesi @HonouredMind no nigga in dallas looks like that :( sale sare bandar varge', 'Hammering down here right now......looks set for the day.....:(', ':( vidcon :(', '@youniseabeegale Abby :(', 'I feel like crying for no reasons right now :(', 'poor them they must be so tired :(', 'When ur crazy af so you do this but it hurts so much bc u know that this shit aint real and its just edited :( http://t.co/ajZLTdCzI7', 'You will be forever missed & loved lolo. :(', '@__onlynay xbsbabnb poor you :(', \"although my mum asked me to watch it w her… but stillllllllllll :((( she hasn't read it yet SHE'D ASK QUESTIONS IN THE MIDDLE OF THE MOVIE\", 'Working 5 am everyday is exhausting :(', 'How did I end up in such a state last night :( :( :( :(', 'tbh i prefer apmas14 idk man theres something not right with this years apmas :(', '@hookuptrade can u just give 350 to @RihannaPedia & @HolyHardwell ill give u 350 + 350 Rts or anything pls :(', '@BRATSUNITED @ShutUpPenguin @epiphanichood why did it? Lmao. I only back out if it gets really really serious....:((', \"@FreedomChild3 Had wondered why this has not happened earlier? But then I realized, we don't have the leadership to do it! :-( #wakeupGOP\", '@LlivingDead91 Ah dude :(', 'I wanna take adams candy and eat it :(', \"PLEASE watch infinite's mv!!!!!! :(\", \"Can't believe I was too ill to go to work today. Wish I was there :(\", '@cloudljp same :((((( i hate school U DONT UNDERSTAND i missed a LOT i blame school', \"like I can't actually put any pressure on my ankle so I have to hop around the house and I just lost my balance and fell over :(\", 'Bull shark :( I am so late!!!! Trafficccccccc', 'I miss oscar :(', '@BabySyasya_97 i need translator :(', \"@haelic but last time the one was working :( and their fb is gone too? i haven't checked for a long time lol\", \"@carterreynolds @hankgreen because you're asian!!!! ummmm or maybe because ur filmed child pornography, slutshamed, faked suicide,ect. :-(\", '@LittleMix Poland is not faraway from Germany girls :( I still believe that one day we can meet', \"@ArchieMill98 good on you! I quit my full time job last week and now can't find another one :(\", '@theresaninkspot :( Well, the cookies better be worth it', \"@MalcolmInx lmao if I can catch up to the point where I can watch weekly then I'll be ok with that if I make it to 700 & there's 800 eps :(\", \"@nottswcentre Those cakes look AMAZING! Can't believe I'm missing it! :(\", \"@angelicaorganic I keep forgetting you're in the area. :-( but want to visit. Next time xx\", '@BillPolykretis @to_kazanaki makes me want to watch the whole film, then the CGI kicks in (oops, pun) & I start grumbling & turn it off :(', 'Seeing delph in another kit upsets me :(', \"@Graceaddley24 miss you too :( ! And haha the x's 😂😂 I still remember how u hate them xxxxx\", '#ZaynIsComingBackOnJuly26 this is not funny :(((((', \"@harrypusspuss @ThePinkLaptop @toninicho We're allowed a cheat MEAL :(\", 'have fun in Osaka, super junior!! :( it would be lovely to watch their comeback stage though', '@ParkSooyoungie @_allypasturan @gbrllx aytona? hala guys get ready na mathird wheel :(( jkjk', 'Worst day ever :( #pain# ...', \"can only backtrack 3 hours :( .... it's time to start actually utilizing these lists\", 'so i have to survive another week without my phone :(', 'i wish :( https://t.co/H8nYlHaQOo', 'pats jay : (', '@4ndypyro sad story broh :(', '@shayftcolleen uh I was asleep :(', \"I need my boyfriend rn but he won't answer my callllllls :(\", \"@laylaharden The Icarus 500 awning unfortunately won't fit the 600 size :(\", '2 bach :( https://t.co/dPRNCcNEZd', '6 days left :(', '@JayMcGuiness please baby follow me :(((', \"there's nothing to do :-(\", \"I can't feel tomorrow :(\", 'No give work again your old staff come police later my be court. I look another job. :( bye bye.', \"@genrentuk with landlords like @RichardBenyonMP as MP's though that's not going to be easy? :-(\", 'looking at old photos and getting sad :(', '@londonbakes oh no :( hope everything is okay.', \"@MrsAnneTwist @Argos_Online @macmillancancer i want i want i want you to follow me i want i want i want but that's crazy :( please love!(:♡♡\", '@WatchThatAnime @DigiWorks78 @eckoxsoldier its bullshit :(', '!! NUGGETS AND FRIES !! :-((', 'Love Warrior :-(', '@izzy_sainz but too tired to eat :(', 'daming assignment :(', \"I'm watching gossip girl and its making me so sad :(\", '@Wufanited tomorrow :(((', 'I still really miss my purple hair tie :( https://t.co/pqBSDisZQa', \"i can't deal with this match unless ishii just fucks everything up :(\", 'Clara and Yiling left me :(', '@bae_ts WHATEVER STIL L YOUNG >:-(', 'last chance :(', '@CelestialZephyr SAME :(', 'is it just me or does it look like she cried? it looks like she cried a bit :(', '@S1dharthM Come online and follow people :/ What z wrong in me?! Y do u ignore me Sidharth?!?!! :( :(', \"@TotallyWonwooed lol, i'm too lazy to learn ps :((((\", \"don't sleep. I'm here : (\", 'Bad day???:-(', 'Tagal :(', '@vlamhlongovic Oh no Ndabenhle :-( Please let us know why you feel this way? ^SA', \"I've got one poorly doggy :(\", 'Reply please antagal :(', '@CrabbyCrabsBB Windows 7 here :(', \"@Miss_J_Hart @staffrm well, I'm only on P.41 & 8 pages of notes thus far :-( and I've read twice before\", 'i want all of kylie jenners clothes :(', \"@SkyHelpTeam yes unfortunately I am, I have done the whole troubleshooting of the box too and I'm still having issues :(\", \"I miss those convo's so bad damn :(\", 'Dem free tix to Big Bang concert :(', '@TinyKyrus So youre not gonna guess whats inside my box? :(((', '@marlenejazmyne idk :-( maybe because I think boobs are more fun to play with', 'jahat :( https://t.co/k1MWoiqBiy', \"@Teeena232 We're sorry about this :( You'll no longer be able to access the site as you'll automatically be redirected to your local site.\", 'i was mad at gigi in my dream because we were hanging out and she didnt want to talk to me :( @GiGiHadid', \"carter: I don't deserve this hate :(\\nme: and i don't deserve just a single corn chip? I deserve two corn chips?\", \"@BeingJahirShah nnnoooo!!! Cz he's not a daddy gorilla anymore... :(\", 'I still have over 6 hours of work left omg :(', '@bastiani_matteo @sophiescott do you have a link? I missed HBM :(', \"Freaking humidity!! I think I never get used to it even I'm 100% Japanese. :(\", 'School works :(', \":( I can no longer admire the consistency of Jason Shackell's hair on the @NoNayNeverNet podcast http://t.co/T9rpuLyb5u\", \"I envy those people who get to meet and have a picture with Laura, Taylor, Lana, etc. They're so lucky to meet my babies :(\", 'I want both of this sa bday ko :( :( :( ^_^ ^_^ <3', '@JayMcGuiness :-( please notice me gonna spam u till u follow me baby', 'MY kik - twers782 #kik #kikhorny #lesbian #hornykik #girls #countrymusic #hornykik :( http://t.co/JYkCJdEdDP', 'I need hug :(', 'No words can explain how much i miss you. Hope you know that. :( @zaynmalik', 'oh gfriend is performing rn? :(', '@GZTAEHUN ok :-( i only have my d & w hahaahahahaha', \"@Worthless_Bums SM1 wasn't that bad. I mean, I only got mutilated by a robot that shot through a wall I didn't know could be destroyed...>:(\", '@soorjugn dare :(', 'Good morning, Twitter friends! Hope you all have an amazing day! So freakin tired, need more sleep :(', '😢 \"@ haestarr: i’m just :(( http://t.co/FY8LWoZmob\"', '@Citadel_Hoju @Citadel_Carry @StubsAU @Citadel_Jimz I wish I was there to help :(', '@junior_jones it was good as always 😀Flying back today though :(', 'Why do I need to have a car that functions as a car :(', 'I wish Twitter would support audio recordings. I would send yall snippets, these are amazing :(', 'Et Brotherhood of Steel ? :( https://t.co/3qH5rrf0xs', '@JayMcGuiness :-( please notice mefd', 'Missing Diana :(', \"The master @GodfreyElfwick has figured out how to turn led into gold, we're doomed :(\\n@Meteoryan\", \"i want to pull an all nighter but i'm so sleepy already :(\", \"All I ever wanna do is sleeep :( but they won't let mee\", \"Oh am I not allowed to vote for the teen choice awards?? :(( It said I'm out of the area\", 'all I want is for my icon to be a selfie of Jack and I :((', '@JayMcGuiness :-( please notice meowkd', \"Twitter is turning so much complicated. Can't find the trends now. :(\", \"@CandySalvatore you're right. I'm very tired :( good night my Ally. I love you ❤️\", \"@wise_bryann 😂 I wish I had the channel to watch it :( I usually watch it online but I don't have a laptop anymore:/\", '@oreaux_ rude :(', \"Again, I would just want people to understand your busy, daily schedule 😞 c'mon, guys. I barely even get 5 hours of sleep :-(\", ':((( no they killed him', 'I think shes busy :(', \"Swimmer's ear kasi :(\", 'What do you want for your bday? Answer please — Idk leh :( :b http://t.co/EQxpxjoYB9', '@Preeti_GG @TheGautamGulati yeahhh ...:( tht corner will b remembered always only coz of gg...:( n bb didnot show ths clip in episode:(', \"@robertsammons it's released online but not on the album that I know of :(\", '@JayMcGuiness :-( please notice me h', '😂😂😂thank you San😀\"@__Zanele: I wanna change my avi but uSanele :(\"', '@NathanDitum @corbynjokes Sad day for Nathan :(', '@Haydenwellsss @JoshWalker93 noo sad times :( Ruby will have to replace you as the shuffling act', 'i got so excited when micha rt or fave my tweet why am i such a creep :-( @japhantrash', \"Does anyone wanna be my friend, i'm just a lonely girl from England who is bored as hell throughout the summer holidays.. :(\", 'Home alone again :(', 'Whose idea was it to ave TRIPLE business lectures on a Friday afternoon from 2-5? :(', 'Until when? :(', \"@fvvxkk that's a damn lie :(\", \"@fubarpops I'm not allowed to give blood :(\", '@Jurisprude1 Then about six months ago, bottom jaw, second tooth from the back broke a quarter... on all things, chewing gum! :(', 'how did i go to sleep at 12 last night but rn im up :(', '@JayMcGuiness :-( please notice me', \"@rebeccalowrie No, it's not just you. Twitter have decided to take that feature away :-(\", \"@golden_kimono I'm okay, just tired and I planned to go out today but it's raining :( how are you?\", '@CNET Thats why they been pushing emoji, I give Sony five :-( :-( :-( :-( :-( :-(', '@AaronCarpenter is it too late? :( #Followmeaaron', '@exobab1es tzelumxoxo ! I dont really used line because is at my ipod :-(((( i used whatsapp more actually !!!', '@Mursano buy me something to drank then cause we have nothing :(', \"i slept all day and now i can't sleep :(\", '@JayMcGuiness :-( please notice mew', '@jhapaliMailo , some people :((\\nHow r u?', \"@SMARTCares it wasn't indicated on the SMS I received. :(\", '@__onlynay you got regular :((((', 'My KIK : oulive70748 #kik #kikmenow #photo #babe #loveofmylife #brasileirao #viernesderolenahot :( http://t.co/GmmwD4PrhU', '@kewlaf I feel u :(', 'Longmorn 30 y.o. supposed to be a replacement to Tobermory 32 y.o. but... Beginning is strong, tail is missing :( http://t.co/NZ8zUhrA3F', 'Waiting for love me recuerda tanto a Bath :((', '@HendersJuliet where has the sun gone?? :(', 'He dies in the movie :(', '@OhHeyItsAJ Shit.. I suggest na suck it up muna :( I know its hard, but being a nurse is more important right?', '@Sk37cHi :( what’s the issue?!', 'hrryok: the fact that harry still hold his mom’s hand :( :( :( http://t.co/RZbFA247f8', 'And the much awaited excitement is all down now! going to be a boring friday and weekend :(', ':( why am I not asleep', 'baby :( http://t.co/ZbKfVPUCqm', 'HP and The Cursed Child. Not a book but a Play. :( http://t.co/QYfioHfctx @robertsycho @crystalkaye01 @AngeloGrona @hyashley', 'When ur crazy af and u want to hurt urslef by editing stuff lime this and u know this shit aint real :( 😭 http://t.co/5li6OFp24x', '@Hannahphern3lia oMG WE R THE SAME HAHAH :(( omg debut mo na next year :(((', 'I wish I could meet the boys one day :(', '@Julia886 I try not to keep it in the house any more. Used to buy truckloads but not doing miss 13 any favours, so no more :(', 'This is it :-(', \"some of the best spectator sailing UK this w'end but BBC just showing highlights :( ‘flying’ foiling AC45 catamarans http://t.co/p4n34Djjuw\", '@chris_shak if it was you maybe but its not :(', 'GUYS add my KIK - pely829 #kik #kikmenow #fuck #model #amateur #elfindelmundo #sextaatequemfimseguesdvcomvalentino :( http://t.co/S8cATQRzew', \"@bravefrontiergl could you pls take care of the servers befor you send that? We have no value in it, as long as we can't get in :(\", '@KathrynLNewton my lovely baby, sweet cinnamon you are the best :(', 'Comfort me. :(', 'MTAP tomorrow which means I have to sleep early tonight. :-(', 'penge bestfriend :( #PSYGustoKita', '@zoullgab Frozen bagus emang? :(', '@LucyAndLydia I wish I could dm you cute things :( (preferably cute kittens and puppies)', '@thejcenaligway I still have to get a paper from engg then go back to cmc then OUR before maging okay :((', 'that\\'s kind of a dumb statement because who LIKES moodswings?? it\\'s like making a tweet saying \"I hate terminal diseases :(\" like wow unique', '@Velocentric Slow news day! :-(', '@JayMcGuiness @JayMcGuiness :-( please notice men', '@ikoimoy you should have watched with us :(', 'Regret and regret :((', 'Even though I have seen the whole of Peep Show multiple times, nothing could have prepared me for Netflix removing series 1 -7... why :(', \"@ASUS_ROGUK @OC3D That's what she said! .... :(\", '@jehyop is there any other way for me to get the bandana?:((', \"@j13ssk Hi there, oh no :( Let's take a look at this for you, please chat to us here http://t.co/otFGtFoeyF\", 'that sad moment when u r leaving in two days :(', '@JayMcGuiness @JayMcGuiness :-( please notice mef', 'Did your rebound run away already??? POOOOOOOOOR YOU :((((((', \"@taarang lol we did it at 2am last night. My face though? People think I'm perpetually pissed off or sad b/c of my resting bitchface. :(\", '@CllrPeterSarris :-( @ missing all the fun', '@JayMcGuiness @JayMcGuiness :-( please notice me z', 'Only a few people have wished my birthday. :(', '@taoya_suzaku :( The world is awful.', '@StayChill69 I Let You Down And Now I Feel Like Complete Shit. :(', \"@KristyBookNerd Uh huh :( Two times, because I'm super clever like that\", '@__onlynay :( bitch you really went?', 'When fave unfollows :(😩💖 @itisfurny http://t.co/hoVQLoKtIg', 'I really want to visit iceland :(', '#Zayn_Come_Back_We_Miss_You <3 <3 :( SO MUCH @zaynmalik', 'Starving :-(', '@0PlATE bc I am feeling very creepy today : ) // pmsl. mianhe, milkeu :(', 'I wanna meet the boys :(', 'the internet is being a total bitch : (', 'lrT bambam likes those sodas too :((( we were meant to be :((((', '1 More :( https://t.co/PPuufIZNb3', \"i wish i could go shopping but my whole weekend is taken up :(( it's annoying\", 'the people i usually stay up with are all asleep wtf :(', '@_Jazdorothy cheer up :-(', '@isakigoboom Payback for liking your videos and trying to help you get kit kats? :(', \"I'm not even tired :-(\", 'So no one about to come smoke with me? :(', '87000 jobee delivery pls :(', 'HAPPY BIRTHDAY BES! @mahhriel_114 Enjoy your day beb. I love you! Miss you sooooo muchie :( See you soon sana! 💞🎈🎂🎉😘 http://t.co/c5ooBR6OV9', 'CUTIE :((( http://t.co/XLVw7xaYSi', \"always fall asleep so early when I'm texting someone :(\", \"@Uber_BLR All it says is 'No IceCream available' :(\", \"@annarlonsdale When she asked to go to the bathroom :-( I'm really enjoying the show though.\", 'i lagg so much on certain people :(', 'I need to clear my head :(', \"my baby went back to sleep & now I'm bored :-(\", 'ughh i got nothing but pain :(', 'Laper banget !! :(', \"Naw :( Deep Dreamed my novel hoping there'd be invisible page beasts scuttling around but there's just worm tracks http://t.co/feTHZT8bfs\", 'bauuuuuuuukkk :(', \"@siwon407 too bad you guys cant attend today's Music Bank :(\", 'worried :-(((((((((((', '“@TheShoeBibles: Its mine.... http://t.co/I9rRNjyvUq” damnnn fineeeeeeeee omaigoshhhhhhh can I have you :((((', \"They didn't care that I was a Muslim :(\", \"@sneaksontaylor no it's not :(\", 'When Jessica calls and quits on power abs at 5:15 :-(', \"She lost us, her friends... :( she's the one who started the argument.\", \"@MsMeghanMakeup hope you're having fun at vidcon!! rlly bummed i couldnt go :(( love you sunshine 💛💛💛💛\", \"@iTaimikhan yepp.. I'm getting bore :(\", 'last night was so good :( 😺💒💎🎉', '@PrinceOfRnbZJM Can you follow me ? :(', \"feelin ' Sick :((\", \"If you want a biscuit slathered in chocolate, it's definitely taxed. Boo. :(\", \"From our investigations the answer is 'no'. Especially when the pups die within the free insurance period :( https://t.co/ZZRf0jKCeH\", '@1010hoshi1010 it jsut ended, :(', 'My heart hurts real bad :(', '@QPSmedia how awful :(', 'FOLLOW ME PLS!:( @tommophoebe', \"But if I'm being realistic.... :(\", 'my beloved grandmother : ( https://t.co/wt4oXq5xCf', 'I am not a happy Princess today :( sighs \\nBut I will get some work done \\nX\\n~ Purple Princess Edits ~', \"Babeeeee :((( you're so demn hotaisndonwyvauwjoqhsjsnaihsuswtf https://t.co/kWwv5Grny7\", 'something wrong :(', 'No words can explain the way i missing you :(((', 'I think need 2 years training to beat the record sia :(', 'Nirame ya geng :( (with fikri, Anna, and 6 others at Tirtagangga Hotel) — https://t.co/46fL7vHiL3', 'Char im really sick :(( one *font size 8* minion float *font size 12* for the sick kid pls :((', 'bestfriend like Ed plsss :(', '#RIPRishikeshwari.\\nYour soul rest in peace.\\n:(', \"@Herreraholic no I don't :(. I just unfollowed like 300 people cause following over 1k people was difficult\", \"when you don't have enough time to listen to all your artists' music :-(\", 'Take me to ice creamist pleaseeeee!:(', \"@missellabell No. And it's always going to be a terrible time. :(\", \"@The5BallOver @Radio702 :-( It's not a challenge though. Please check our FB page for entries and rather do a substitution. Thanks!\", \"I can't even see Hyungwon :(\", '@hyungwons_ tELL HIM TO PLS EAT MORE :-(((', '@CHEDA_KHAN Thats life. I get calls from people I havent seen in 20 years and its always favours : (', '@havemym0ney omg :( every time I would complain about my skin to my mom she was all \"everyone gets pimples\" like NO they don\\'t. although she', '#letsFootball #atk greymind43: BREAKING NEWS: Chris Gayle says he will be out of cricket for 2-3 months due to back surgery. :( #CPLT20 #CP…', \"i miss hannah montana and that's so raven sooo much :-(((\", '@ruy9n_ i want to rt :(', '@pipsuxx is he gonna be okay i love him :(', '@DeviousLiz awh :-( 💙 but you have to stay 💪', 'Last full night in Greece :( @ OPUS Inner Pleasure https://t.co/poglAQg9sJ', '@OXITS very disappointing to hear this, especially have just invested in one :-(', '@Bobwilson1955 yes :( but we have a BBQ to attend', \"@nicababess it didn't work :( http://t.co/aQzxRk7nk2\", 'Three 190s in a row?! Where is my 33 :(', 'My throat hurts so bad what do I do? :(', 'Lolliver!!!!! :(', 'Im watching disney channel by myself :(', 'Nobody is picking the one on the right :(', 'Can someone gift me :( #CalibraskaEP I NEED IT SO BAD', 'Lol just got split so hard. Lol single single split collat spilt single single spilt single split single single collat. :(', 'i hope you feel better, jay. :(', '@2baconil \\nYes many times :(\\n.#QuitKarwaoYaaro', 'STU DEACTİVATED :(', '@JabongIndia very disappointed :( never ever been lucky from your handle. #JabongatPumaUrbanStampede', '@ysmael85 hello !!! i need 2.5 off g2a code pls :(', 'THESIS THESIS THESIS THESIS THESIS THESIS THESIS THESIS THESIS THESIS \\nSHEREP NEMEN NG BEHEY KE :(', 'Should i deactivate my acc? :( #OTWOLGrandTrailer', '@misses0wl still sad that they kicked out the epic motherfucker :(', 'I really want another tattoo :(', \"someone get mads a reece vm tomorrow please!!!! she's never had one :(\", 'Deth Deth Dont Leave Me :(', '@Sakib_ovi so true :-(', \"let's go for #더쇼 cast your vote for #GOT7 today @SBS_MTV \\n\\n:((((((((((((((((((((((((\", 'Can someone hug me pls? :((((((', '@eyeammarkk omg :( not gonna happen , yeah we wish..', '@parisianskies :( at lest you have the GP to get you through it ^_^', '@nambooti aww :( catch them at the departure then!', '@98_madhvi_tommo it apparently isnt :(', '@SensodyneIndia i miss those days :( #ToothSensitivity.', \"@natalieegiselle it's unavailable now :(\", \"@i_am_mill_i_am you mean we can't wipe them out? :-(\", 'Just found out my flight home is 13 hours long :(((((((', '@oIiverfelicitys UGH YUCK :( make sure you rest the next two days then', '@carissakenga omg so sad then on your birthday sorry i didnt send something ystrday ill do it later cuz i dont have my phone now :(((', 'seolhyun isnt in these first eps because shes filming a drama :((', '@NZRR_S3 sorry :(', 'I always get like 5 4-piece spicy nuggets :(', 'im sooo hungry though :(', 'thigh cramps :-(', 'To my fellow morning owls, surely you have noticed the sun already rising a bit later...sign that winter is coming :( http://t.co/4OU2EyPh8A', 'Nowhere near being tired :(', 'Too hot :(', \"@mari_suunn dude :( I'm scared lol\", 'Raining the whole day in Mumbai. Don’t feel like working at all. :(', \"Best get me and my little lady out of our pj's need to go wallpaper for me mom :( really cba today\", '@farhainismail_ yes pls far i need it :(', \"didn't even know it could get hotter than this fml :(\", \"@JaydnNeal1 Aw bless you, this made me smile! I'm missing you too :(\", 'Hi,life :(', '@pledis_17 I was not in the mood the whole day :-(', 'Almost done with parks and rec :( lol', '@zaynmalik are u coming back? :(', \"@lplatten Hi there, we're sorry to hear this :( Log in here: http://t.co/76lov3ArFc you'll be able to see all the information you need.\", 'goTDAMN :-( http://t.co/KkPDlQZ2F4', 'I want my phone baaack :(((', '@ZozeeBo BE HONEST. do you miss Dubai? because Dubai misses you and we want you to come back :(', \"We finally get Star Driver in SRW and it's a mobage :(\", 'being sad for no reason sucks because u dunno how to stop being sad so u just gotta chill in ur room and listen to music & b alone :(', \"If you have streaming passes for Melon, please stream as much as you can. #인피니트 's Digitals are so #Bad :(\", 'snapchat - JannyGreen18 #snapchat #kiksex #hot #teen #lgbt #goodmusic #sexcams :( http://t.co/dbwmKuR3HK', '@guy_interruptd Aw :( *strokes*', '@OzzyOsbourne @Slash I first saw GnR opening for Alice Cooper before they were famous. We partied backstage; no Alice r Slash. :(', \"tagged by @asabianglala ♡ i'm sorry i have A LOT of music so you prolly don't know half of it :( also @SaikyoRyouT http://t.co/AcXikXwfcI\", '24 hours not enough :(', '@FurretTails awww poor bunny. :(', 'Stress let me go. :(', '@NicoIrishNews i wish for bloopers :((((', '@roguebassjst no no i love u most and fuck i know :(', '@twinklingwatson yeah :(', '@paigecardona $20 is nothing though :(', \"@GeorgiaAnne1998 Aww I've already left!! I would have come and said hey if I had have seen it sooner :( Have a good night! X\", '@QjQj_Kwon How weird :( ^^', 'Sr. Financial Analyst - Expedia, Inc.: (#Bellevue, WA) http://t.co/ktknMhvwCI #Finance #ExpediaJobs #Job #Jobs #Hiring', 'seriously :(', 'Tried to make prison style alcohol, failed badly and ended up with a massive dose of the shits.... :(', 'not fair he still looks so cute how :(', '@imdanielpadilla hi!!!!!! love u :( :(', 'Overly attached. :((((', \"I.M's voice :( lord help\", 'i want that bandana and bottle set huhuh :((', \"I can't sleep bc heartburn :-(\", 'Meet Steven @ the only kid who listens to me :( https://t.co/WL0Dtzg3J1', \"I'm so fucking jealous of everyone on holiday :(\", 'Terrible thing about doin yoga or working out. Once you stopped and start again...awalmu njareeeeem :(', 'Nooooooooo her last day is today :(', 'I care about Maggie but she is a psycho bitch I want to kill myself and take a two day vacation off twitter :( wahhh', 'Really not looking forward to work tonight though :(', 'I miss abudhabi :(', 'Going home blues this am :-( but back on MONDAY #hibye for social action plans @Herts1617 #ShareYourSummer http://t.co/7pJJ9q5v7z', 'Being a pro soccer play would be so cool :(', '@MaddyyOR @TreqEu i Wish But b8 Too Strong :(', \"Hey girl you must.be a dairy produxt because I want you but I can't have you I am lactose intolerant. :(\", \"@ITVCentral #Midlands Yes thanks for the depressing weather forecast, where the word 'rain' was mentioned several times :-(\", 'Why am I crying?! :(', \"@emergingrecruit @_RobLong You'll be this old one day..... :(\", \"literally spent all day yesterday sleeping on and off in bed, and I'm still absolutely fucking knackered today :((\", 'this new Sandra Bland footage is really the icing on the cake.. heartbreaking how they dragged her lifeless body from the police car :(', 'i knowwwww :( https://t.co/KHkzmeS7kF', \"@shellbryson We're sorry you feel this way Shell :( We regularly review our pricing to offer the best we can.\", '@jess_lakeland Sorry to hear this Jess :( The quickest way is to call +44 7782 333 333 or we can add this to your account within 72 hours:', 'Pengen boxing :( (at @golds_indonesia) — https://t.co/qXG4UNA4Fn', '@Tanyastan4nicki girlll did u hear abt the possibly tsunami for us in West Indies?? Im in my island im afraid lol :((', \"@mxchelleebabes I don't have you on snap :(\", '@BacheloretteABC @kaitlynbristowe would love to see her w/Nick but if she picks no one I waisted TV time. & they never work out anyway. :(', 'Hulk Hogan in the news for a racial tirade :( I thought he couldnt stoop lower than his role in Thunder in Paradise http://t.co/vd0z6x8t8g', 'SORRY FOR FORGETTING THIS VERY IMPORTANT DAY HUHU FIGHT ME IM SO SO SO SORRY :(', \"Breaking the habit of a lifetime... I'm about to play a Call of Duty game.. :(\", 'I apologize for annoying you so much on snapchat :( @JoshDevineDrums', 'Adults just take all the things too serious. Really miss when I was kid :(', '.@aylesburyowl @ljam185 The facade of democracy has dropped so quickly :(', '@Meem_Hye I am a confused brat. :(', \"Someone come over and I'll make popcorn and watch movies just pls cuddle me :(\", 'Finally home. Been driving since 5am :(', \"@___mew2 tb in mr o's class :(\", '@desiboy34783 @ArianaTorGlam Bade fursat se usey banaya hai usey uppar waale ney. Afsos humse dur hai wo :(', \"@esp__132 oh really :( i saw a few gif posts and some had seen really happy about it, but maybe it's people who'd be happy with any naruhina\", \"@Errata_0 you can't :(\", '@hausofbekah @JudasDiamonds Thats an English nameeee :(( Haiqal isnt an English name but you remember him', '@GFuelEnergy i want that but i dont have paypal :(', 'And that\\'s how my 360hrs of \"summer\" ends..... HUHUHU I WILL MISS PICC A LOT :(((((', 'my heart hurts :(', '@nextofficial my instore card expired in June & I havent been sent a new one :(', '@loyalistofSoShi MCountdown pre-voting is begin, we are at 5th place :(', 'I felt bad when Irene forgot what she was going to say :(', \"@flrsbea wow that's great! What's your username? :(\", 'Minho still injured ,, :( ,, get well Oppa \\nwe miss you <3', \"@za5 they can't even deliver ice cream. I tried twice, all the ice cream vans are busy :(\", 'i want durian strudel :(.', 'VIDCON :((', 'GUYS add me on SNAPCHAT - AmargoLonnard #snapchat #kikmeboys #sexy #french #dirtykik #newmusic #sexcams :( http://t.co/TXdc692SgB', '@Glassyskyx u change u say i change tsk :(', 'Damn.. I wish I could just sleep :(', 'Like why did you have to join the marines? :-(', \"I'm sad yall thought it was real :(\", \"@annnalucz i'm not going :( kailan ba? may tix ka?\", \"@Tinkering_Love you've already killed me tho. :(\", 'Hotel for Dogs was pretty sad too where the brother & sister got separated :(', 'Missing that cute someone la!! :(', 'PAYDAY, but feels like payhour as its all gone to my bills immediately :(', \"@Oduun_ lmao :( most natural hair I've seen is ugly I swear\", '@_MeKeLe_ @YogscastLewis Nope :( Best place to get it first is to pre-order on Amazon: http://t.co/fZRCI1xONv', '@jobhopjulie I was there on the Sunday for a little while. Not been able to get up much this year, busy :( all looked great tho!', \"@aurorakween you don't fwm :(\", \"@ShellyBarker123 what's wrong?:((\", 'I miss my guppy. :-(', \"@Cramdaline It just doesn't go away... you must go to the dentist. :( #poorKid\", \"@denocte Thanks - lack of time is a problem, isn't it :(\", 'When you get misunderstood :(', 'when ur cat is super nice and cuddly but then suddenly scratches and tries to bite :( \\n\\nlike who can i trust anymore', 'I hit my thumb :(.', '@iloveksoo we almost got to see his cute ankles but his socks :(', \"@bravefrontiergl Honestly at this point I don't care about compensation. I just want to be able to play BF again. :(\", '@dnwrld that song is not on here :(', '@CourtneyR_Green awwwww my baby :( 💕', \"I couldn't sleep last night n it didn't help me waking up at 8 this morning n my phone wasn't even charged :(\", '@ZozeeBo @TanyaBurr please can you tell everyone why you didnt go to vidcon :(', 'I need to like, tell myself na, na okay lang :((((', '@Laraibmufc follow back :(', 'my heart is currently torturing itself :( lol wat', '@CallmeHaRsh female student killed in some caste love kirkiri :(', \"I've run out of bread and I don't feel well enough to make any. :(\", 'I had a dream of you :( https://t.co/OZdMHNQbSU', \"@UyyChristopher :( Broken hearted? That's just a phase. Don't worry, you can do it!!\", \"stop being sour :( it doesn't suit you 😂💞 https://t.co/nJ0ziQ14is\", 'wonho reminds me of someone >:( i just cant put my finger to it', '@Coles45Coles \\n\\nwont be in work today, feel so ill :( i have a tummy bug xx', 'Last day on the beach :-(:-(:-(.... http://t.co/oqo9F7FQs9', 'RAIN :(', '@yezzer Visual Studio 2015? it just got out. switched to it already and broke a lot of code :(', \"@MTNza seriously this is unfair some are not asking questions! There are ready to answer and win :( ='( while we busy asking questions!!\", 'Mission bear: failed again :(', ':-( ugly af :-( https://t.co/bHIXkuNqPS', 'PAP of your spirit animal? — no i dont have :( http://t.co/0UvPRQnvGl', \"I totally ship #danzell, I'm crafting that I can't go to vidcon, I would sell my soul to the devil to just get a hug from Dan and Phil. :(\", '@annajudithk Because they hate me | :(', \"@NUFC_Vine he's gona miss Sheff Utd/York probably waiting for a visa which leaves gim with 1 friendly. Bet he starts season on the bench :(\", \"@ranaPTX_ BUT WHO WILL LEAD US WHEN YOU'RE GONE :((\", '@LottyStorer @charliee_catlin 😂😩😩 what a mess :(', '@twinitisha irony is its more harmful .. :(', '@DollyyDaydreams I miss you so much more :( xxx', 'no motivation :(', '@LiLGeekette but that is the point. Because it is YOLO I sort of die when lactose is in me... Ugh like 3 months pregnant bloating :(', '@lovetartan Really sorry I cant find the image you have mentioned :(', 'Im not getting ollys tweet notifications :(', 'going home tomorrow :-(', \"Too bad I'm poor :( https://t.co/FohWp4P0NN\", '@Glanny_ @RohYB_ @_wattie your team killed me :(', '@MattElyas no way!! :(', \"i'm so inactive :(\", ':( the world where alternis kills himself is really sad because they leave that place and everyone there just has to die', 'is everyone gonna be talking abt rat boy today bc :((', \"Why on earth did I assume it wouldn't rain in London? Most likely influenced by overall warm and dry past weeks in continental Europe :(\", 'I remember when Fab Four had a 24 hour call, Damn I miss that so much :(', '@dongvvoo1122 😀🔫 r u sure u want that b r u h we barely survive w them in tank tops :((', 'so thirsty :((', '@Adam_Bhatti what is a konami policy about PES PC version ?! what happen ?! why all Version are not same ?! :(((', \"@AmericanFujoshi doesn't have the sound effects :(\", 'I Blame Rantie For All Of This :(', '@BlatBlatKLANG ummmm ok? this is a new development :(', \"You guys are never on :( — Aw sorry we're really bust atm.. Shall be back soon http://t.co/YHfZFhLCgr\", \"@ddlovato @Vevo bad :( I don't like it. This video is too many perverse.\", 'first time to go to school without my bracelets :(( it feels odd', \"I can't fall back asleep :(\", '@ayyedolans IM NOT UNTIL THE TWINS FOLLOW ME BACK BYLFNNZ :(', '@PulkitSamrat @yamigautam that is unfair ..why u should banned our all film in Pakistan :(', '@LucyAndLydia @georgiamerryyy I want one :(', 'Feel sick :(', \"Hmmm 10 mins to get my train and I'm currently about 15 mins away :( #failsatlife\", \"I'm so hungry :(\", 'I want it to be my birthday already :(', \"@louanndavies Completely agree. The press won't :(\", 'Im super duper tired :(', \"Having boring time :( don't know what to do.....\", 'ill be on soon, I PROMISE :(\\nwaaah', 'I wanna change my avi but uSanele :(', 'MY PUPPY BROKE HER FOOT :(', \"where's all the jaebum baby pictures :((\", 'But but Mr Ahmad Maslan cooks too :( https://t.co/ArCiD31Zv6', '@eawoman As a Hull supporter I am expecting a misserable few weeks :-(']\n" + ] + } + ], + "source": [ + "print(all_negative_tweets)" + ] + } + ], + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From aca6fc390bb06a00a26cfc51969a77498c927a47 Mon Sep 17 00:00:00 2001 From: lovetonight Date: Mon, 7 Aug 2023 00:02:30 +0700 Subject: [PATCH 3/7] Naive Bayes --- .../Week 2/Learn.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb b/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb index 7ffa7c6..2015269 100644 --- a/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb +++ b/Natural Language Processing with Classification and Vector Spaces/Week 2/Learn.ipynb @@ -549,20 +549,20 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "9.009134475815145\n" + "8.991514792680311\n" ] } ], "source": [ "# Test with your own tweet - feel free to modify `my_tweet`\n", - "my_tweet = 'I am happy :)'\n", + "my_tweet = 'I am happy today :)'\n", "\n", "p = naive_bayes_predict(my_tweet, logprior, loglikelihood)\n", "print(p)" From ccdbcd04f134656d9c6f52cc00a19caef92477e5 Mon Sep 17 00:00:00 2001 From: lovetonight Date: Mon, 7 Aug 2023 15:55:40 +0700 Subject: [PATCH 4/7] PCA --- .../Week 3/Learn.ipynb | 558 ++++++++++++++++++ 1 file changed, 558 insertions(+) create mode 100644 Natural Language Processing with Classification and Vector Spaces/Week 3/Learn.ipynb diff --git a/Natural Language Processing with Classification and Vector Spaces/Week 3/Learn.ipynb b/Natural Language Processing with Classification and Vector Spaces/Week 3/Learn.ipynb new file mode 100644 index 0000000..1eec869 --- /dev/null +++ b/Natural Language Processing with Classification and Vector Spaces/Week 3/Learn.ipynb @@ -0,0 +1,558 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Run this cell to import packages.\n", + "import pickle\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from utils import get_vectors" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
city1country1city2country2
0AthensGreeceBangkokThailand
1AthensGreeceBeijingChina
2AthensGreeceBerlinGermany
3AthensGreeceBernSwitzerland
4AthensGreeceCairoEgypt
\n", + "
" + ], + "text/plain": [ + " city1 country1 city2 country2\n", + "0 Athens Greece Bangkok Thailand\n", + "1 Athens Greece Beijing China\n", + "2 Athens Greece Berlin Germany\n", + "3 Athens Greece Bern Switzerland\n", + "4 Athens Greece Cairo Egypt" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('capitals.txt', delimiter=' ')\n", + "data.columns = ['city1', 'country1', 'city2', 'country2']\n", + "\n", + "# print first five elements in the DataFrame\n", + "data.head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "243" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "word_embeddings = pickle.load(open(\"word_embeddings_subset.p\", \"rb\"))\n", + "len(word_embeddings) # there should be 243 words that will be used in this assignment" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dimension: 300\n" + ] + } + ], + "source": [ + "print(\"dimension: {}\".format(word_embeddings['Spain'].shape[0]))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def cosine_similarity(A, B):\n", + " '''\n", + " Input:\n", + " A: a numpy array which corresponds to a word vector\n", + " B: A numpy array which corresponds to a word vector\n", + " Output:\n", + " cos: numerical number representing the cosine similarity between A and B.\n", + " '''\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " \n", + " dot = np.dot(A,B)\n", + " norma = np.sqrt(np.dot(A,A))\n", + " normb = np.sqrt(np.dot(B,B))\n", + " cos = dot/(norma*normb)\n", + "\n", + " ### END CODE HERE ###\n", + " return cos" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.6510956" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# feel free to try different words\n", + "king = word_embeddings['king']\n", + "queen = word_embeddings['queen']\n", + "\n", + "cosine_similarity(king, queen)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def euclidean(A, B):\n", + " \"\"\"\n", + " Input:\n", + " A: a numpy array which corresponds to a word vector\n", + " B: A numpy array which corresponds to a word vector\n", + " Output:\n", + " d: numerical number representing the Euclidean distance between A and B.\n", + " \"\"\"\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + "\n", + " # euclidean distance\n", + "\n", + " d = np.linalg.norm(A-B)\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return d" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.4796925" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Test your function\n", + "euclidean(king, queen)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def get_country(city1, country1, city2, embeddings):\n", + " \"\"\"\n", + " Input:\n", + " city1: a string (the capital city of country1)\n", + " country1: a string (the country of capital1)\n", + " city2: a string (the capital city of country2)\n", + " embeddings: a dictionary where the keys are words and values are their embeddings\n", + " Output:\n", + " countries: a dictionary with the most likely country and its similarity score\n", + " \"\"\"\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + "\n", + " # store the city1, country 1, and city 2 in a set called group\n", + " group = set((city1, country1, city2))\n", + "\n", + " # get embeddings of city 1\n", + " city1_emb = word_embeddings[city1]\n", + "\n", + " # get embedding of country 1\n", + " country1_emb = word_embeddings[country1]\n", + "\n", + " # get embedding of city 2\n", + " city2_emb = word_embeddings[city2]\n", + "\n", + " # get embedding of country 2 (it's a combination of the embeddings of country 1, city 1 and city 2)\n", + " # Remember: King - Man + Woman = Queen\n", + " vec = country1_emb - city1_emb + city2_emb\n", + "\n", + " # Initialize the similarity to -1 (it will be replaced by a similarities that are closer to +1)\n", + " similarity = -1\n", + "\n", + " # initialize country to an empty string\n", + " country = ''\n", + "\n", + " # loop through all words in the embeddings dictionary\n", + " for word in embeddings.keys():\n", + "\n", + " # first check that the word is not already in the 'group'\n", + " if word not in group:\n", + "\n", + " # get the word embedding\n", + " word_emb = word_embeddings[word]\n", + "\n", + " # calculate cosine similarity between embedding of country 2 and the word in the embeddings dictionary\n", + " cur_similarity = cosine_similarity(vec, word_emb)\n", + "\n", + " # if the cosine similarity is more similar than the previously best similarity...\n", + " if cur_similarity > similarity:\n", + "\n", + " # update the similarity to the new, better similarity\n", + " similarity = cur_similarity\n", + "\n", + " # store the country as a tuple, which contains the word and the similarity\n", + " country = (word, cur_similarity)\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return country\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('Egypt', 0.7626821)" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Testing your function, note to make it more robust you can return the 5 most similar words.\n", + "get_country('Athens', 'Greece', 'Cairo', word_embeddings)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C4 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def get_accuracy(word_embeddings, data):\n", + " '''\n", + " Input:\n", + " word_embeddings: a dictionary where the key is a word and the value is its embedding\n", + " data: a pandas dataframe containing all the country and capital city pairs\n", + " \n", + " Output:\n", + " accuracy: the accuracy of the model\n", + " '''\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " # initialize num correct to zero\n", + " num_correct = 0\n", + "\n", + " # loop through the rows of the dataframe\n", + " for i, row in data.iterrows():\n", + "\n", + " # get city1\n", + " city1 = row['city1']\n", + "\n", + " # get country1\n", + " country1 = row['country1']\n", + "\n", + " # get city2\n", + " city2 = row['city2']\n", + "\n", + " # get country2\n", + " country2 = row['country2']\n", + "\n", + " # use get_country to find the predicted country2\n", + " predicted_country2, _ = get_country(city1, country1, city2, word_embeddings)\n", + "\n", + " # if the predicted country2 is the same as the actual country2...\n", + " if predicted_country2 == country2:\n", + " # increment the number of correct by 1\n", + " num_correct += 1\n", + "\n", + " # get the number of rows in the data dataframe (length of dataframe)\n", + " m = len(data)\n", + "\n", + " # calculate the accuracy by dividing the number correct by m\n", + " accuracy = num_correct/m\n", + "\n", + " ### END CODE HERE ###\n", + " return accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy is 0.92\n" + ] + } + ], + "source": [ + "accuracy = get_accuracy(word_embeddings, data)\n", + "print(f\"Accuracy is {accuracy:.2f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C5 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "def compute_pca(X, n_components=2):\n", + " \"\"\"\n", + " Input:\n", + " X: of dimension (m,n) where each row corresponds to a word vector\n", + " n_components: Number of components you want to keep.\n", + " Output:\n", + " X_reduced: data transformed in 2 dims/columns + regenerated original data\n", + " \"\"\"\n", + "\n", + " ### START CODE HERE (REPLACE INSTANCES OF 'None' with your code) ###\n", + " # mean center the data\n", + " X_demeaned = X-np.mean(X, axis=0)\n", + "\n", + " # calculate the covariance matrix\n", + " covariance_matrix = np.cov(X_demeaned, rowvar=False)\n", + "\n", + " # calculate eigenvectors & eigenvalues of the covariance matrix\n", + " eigen_vals, eigen_vecs = np.linalg.eigh(covariance_matrix, UPLO='L')\n", + "\n", + " # sort eigenvalue in increasing order (get the indices from the sort)\n", + " idx_sorted = np.argsort(eigen_vals)\n", + "\n", + " # reverse the order so that it's from highest to lowest.\n", + " idx_sorted_decreasing = idx_sorted[::-1]\n", + "\n", + " # sort the eigen values by idx_sorted_decreasing\n", + " eigen_vals_sorted = eigen_vals[idx_sorted_decreasing]\n", + "\n", + " # sort eigenvectors using the idx_sorted_decreasing indices\n", + " eigen_vecs_sorted = eigen_vecs[:,idx_sorted_decreasing]\n", + "\n", + " # select the first n eigenvectors (n is desired dimension\n", + " # of rescaled data array, or dims_rescaled_data)\n", + " eigen_vecs_subset = eigen_vecs_sorted[:,0:n_components]\n", + "\n", + " # transform the data by multiplying the transpose of the eigenvectors\n", + " # with the transpose of the de-meaned data\n", + " # Then take the transpose of that product.\n", + " X_reduced = np.dot(eigen_vecs_subset.transpose(),X_demeaned.transpose()).transpose()\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return X_reduced\n" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Your original matrix was (3, 10) and it became:\n", + "[[ 0.43437323 0.49820384]\n", + " [ 0.42077249 -0.50351448]\n", + " [-0.85514571 0.00531064]]\n" + ] + } + ], + "source": [ + "# Testing your function\n", + "np.random.seed(1)\n", + "X = np.random.rand(3, 10)\n", + "X_reduced = compute_pca(X, n_components=2)\n", + "print(\"Your original matrix was \" + str(X.shape) + \" and it became:\")\n", + "print(X_reduced)" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You have 11 words each of 300 dimensions thus X.shape is: (11, 300)\n" + ] + } + ], + "source": [ + "words = ['oil', 'gas', 'happy', 'sad', 'city', 'town',\n", + " 'village', 'country', 'continent', 'petroleum', 'joyful']\n", + "\n", + "# given a list of words and the embeddings, it returns a matrix with all the embeddings\n", + "X = get_vectors(word_embeddings, words)\n", + "\n", + "print('You have 11 words each of 300 dimensions thus X.shape is:', X.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlkAAAGhCAYAAABS0aGuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABKdUlEQVR4nO3deVxUZf//8feAsqgwirIW5hqKG5piqCWmhdrtVx63mZYL5FJZVqTlcpcimrdLmVl2a6to2nqXli2WUViZioqYK6VhWoFYJuACEnN+f/hj7iZEQTkM4Ov5eMzj0TlzXWc+Z0Dm3XWuuY7FMAxDAAAAqFAuzi4AAACgJiJkAQAAmICQBQAAYAJCFgAAgAkIWQAAACYgZAEAAJiAkAUAAGACQhYAAIAJCFkAAAAmIGRVIovFojVr1ji7DAAAUAkIWQAAACYgZAEAAJiglrMLqGg2m02//vqrvLy8ZLFYLutYa9as0bx58/Tjjz/K09NT7du31xtvvKH9+/dr5syZ+u677/Tnn3+qXbt2+ve//62wsDB734MHD2r8+PHavn27mjRporlz50qSTp8+rdzc3MuqCwCAmsYwDOXl5SkoKEguLjVjDMhiGIbh7CIq0s8//6zg4GBnlwEAAC7BkSNHdPXVVzu7jApR40ayvLy8JJ37IXl7e1/ycdLS0tSzZ0/t2rVLjRs3vmBbm82mxo0b6+WXX1bfvn2VlJSk22+/Xbt371ZgYKAk6fPPP9egQYO0atUq/eMf/7jkugAAqIlyc3MVHBxs/xyvCWpcyCq+ROjt7X1ZIat79+7q3bu3unXrpqioKN1yyy267bbb1KBBAx09elSPP/64kpOTlZ2draKiIp0+fVq//fabvL29dfjwYQUHByskJMR+vN69e0uS6tSpc1l1AQBQk13uVJ+qpGZc9DSBq6ur1q9fr08++UShoaF67rnnFBISooyMDMXExCgtLU2LFi3St99+q7S0NDVs2FBnz551dtkAAKCKIGRdgMViUffu3ZWQkKAdO3bIzc1Nq1ev1saNG/Xggw+qf//+atOmjdzd3fXbb7/Z+7Vu3VpHjhxRZmamfd/mzZudcQoAAMBJatzlwoqyZcsWJSUl6ZZbbpGfn5+2bNmiY8eOqXXr1mrZsqVee+01de7cWbm5uXr00Ufl6elp79unTx9de+21iomJ0ZNPPqnc3Fw99thjTjwbAABQ2RjJKoW3t7e++uor9e/fX9dee60ef/xxLViwQP369dMrr7yiP/74Q506ddKIESP04IMPys/Pz97XxcVFq1ev1pkzZxQeHq4xY8Zo9uzZTjwbAABQ2WrcEg65ubmyWq3KyclhgjkAANVETfz8ZiQLAADABIQsAAAAExCyAAAATMC3C8uoyGYoJeO4svPy5eflofCmPnJ1qTkLpgEAgIpFyCqDdbszlbB2rzJz8u37Aq0eih8Qqr5tA51YGQAAqKq4XHgR63ZnatzKVIeAJUlZOfkatzJV63ZnltITAABcyQhZF1BkM5Swdq/Ot8ZF8b6EtXtVZKtRq2AAAIAKQMi6gJSM4yVGsP7KkJSZk6+UjOOVVxQAAKgWCFkXkJ1XesC6lHYAAODKQci6AD8vjwptBwAArhyErAsIb+qjQKuHSluowaJz3zIMb+pTmWUBAIBqgJB1Aa4uFsUPCJWkEkGreDt+QCjrZQEAgBIIWRfRt22glgzvpACr4yXBAKuHlgzvxDpZAADgvFiMtAz6tg3UzaEBrPgOAADKjJBVRq4uFkU0b+jsMgAAQDXB5UIAAAATELIAAABMQMgCAAAwASELAADABIQsAAAAExCyAAAATEDIAgAAMAEhCwAAwASELAAAABMQskwSGxur6OjoCjteVlaWbr75ZtWtW1f169cvU5/k5GRZLBadOHGiwuoAAABlw211TLJo0SIZhlFhx1u4cKEyMzOVlpYmq9VaYccFAADmIGSZpKKD0MGDB3XdddepZcuWFXpcAABgDi4XmuSvlwsLCgr04IMPys/PTx4eHurRo4e2bt0qSTIMQy1atNBTTz3l0D8tLU0Wi0UHDhxQkyZN9O6772rFihWyWCyKjY3VoUOHZLFYlJaWZu9z4sQJWSwWJScnV9JZAgCA0hCyKsGkSZP07rvvavny5UpNTVWLFi0UFRWl48ePy2KxaNSoUVq2bJlDn2XLlunGG29UixYttHXrVvXt21e33367MjMztWjRIiedCQAAKCtClslOnTqlJUuW6Mknn1S/fv0UGhqql156SZ6ennrllVcknRv1Sk9PV0pKiiSpsLBQr7/+ukaNGiVJ8vX1lbu7uzw9PRUQEMCcLAAAqgFTQ9ZXX32lAQMGKCgoSBaLRWvWrLlg++Jvw/39kZWVZWaZpjp48KAKCwvVvXt3+77atWsrPDxc+/btkyQFBQXp1ltv1auvvipJWrt2rQoKCjR48GCn1AwAAC6fqSHr1KlT6tChg55//vly9UtPT1dmZqb94efnZ1KFVceYMWP05ptv6syZM1q2bJmGDBmiOnXqlNrexeXcj+6v32AsLCw0vU4AAFA2pn67sF+/furXr1+5+/n5+ZV5Laiqrnnz5nJzc9PGjRt1zTXXSDoXhrZu3aq4uDh7u/79+6tu3bpasmSJ1q1bp6+++uqCx/X19ZUkZWZmqmPHjpLkMAkeAAA4V5VcwiEsLEwFBQVq27atZsyY4XCp7e8KCgpUUFBg387Nza2MEsusbt26GjdunB599FH5+PiocePGmj9/vk6fPq3Ro0fb27m6uio2NlZTp05Vy5YtFRERccHjenp66vrrr9fcuXPVtGlTZWdn6/HHHzf7dAAAQBlVqYnvgYGBWrp0qd599129++67Cg4OVmRkpFJTU0vtM2fOHFmtVvsjODi4Eisum7lz52rQoEEaMWKEOnXqpAMHDujTTz9VgwYNHNqNHj1aZ8+e1V133VWm47766qv6888/dd111ykuLk5PPPGEGeUDAIBLYDEqclnyC72QxaLVq1eX+1YzPXv2VOPGjfXaa6+d9/nzjWQFBwcrJydH3t7el1PyZbnjjjvk6uqqlStXlrnP119/rd69e+vIkSPy9/c3sToAAKqW3NxcWa1Wp39+V6QqNZJ1PuHh4Tpw4ECpz7u7u8vb29vh4Ux//vmn9u7dq02bNqlNmzZl6lNQUKCff/5ZM2bM0ODBgwlYAADUAFU+ZKWlpSkwMNDZZZTZ7t271blzZ7Vp00b33nuvw3ORkZEOk92LvfHGG7rmmmt04sQJzZ8/v5IqBQAAZjJ14vvJkycdRqEyMjKUlpZmnwA+depU/fLLL1qxYoUk6ZlnnlHTpk3Vpk0b5efn6+WXX9YXX3yhzz77zMwyK1RYWJhOnz5drj6xsbGKjY01pyAAAOAUpoasbdu2qVevXvbtCRMmSJJiYmKUmJiozMxMHT582P782bNnNXHiRP3yyy+qU6eO2rdvr88//9zhGNVRkc1QSsZx/XayQJk5+SqyGXJ1sTi7LAAAYCJTLxdGRkbKMIwSj8TERElSYmKiw82MJ02apAMHDujMmTP6/fff9eWXX1b7gLVud6Z6zPtCd7y0WQeyT+qTXb8qOHKovKwNFBAQoBkzZtjbPv3002rXrp3q1q2r4OBg3XfffTp58qT9+cTERNWvX19r1qxRy5Yt5eHhoaioKB05csTeZsaMGQoLC9MLL7yg4OBg1alTR7fffrtycnIknVuFv3bt2iVW0Y+Li9MNN9xg7psBAMAVpMrPyarO1u3O1LiVqcrMybfvO7krSWdstWQdMk/DH/yXZs6cqfXr10s6t4r7s88+qz179mj58uX64osvNGnSJIdjnj59WrNnz9aKFSu0ceNGnThxQkOHDnVoc+DAAb399ttau3at1q1bpx07dui+++6TJN14441q1qyZw7c1CwsLtWrVKvu9EgEAwOUjZJmkyGYoYe1e/X19DDe/JrL2uFO1fa7SRksbXde5s5KSkiSdG03q1auXmjRpoptuuklPPPGE3n77bYf+hYWFWrx4sSIiInTddddp+fLl+vbbb+03l5ak/Px8rVixQmFhYbrxxhv13HPP6c0337SPXo0ePVrLli2zt1+7dq3y8/N1++23m/NmAABwBSJkmSQl47jDCFax2r5NJUmGpMycfHl4N1R2drYk6fPPP1fv3r111VVXycvLSyNGjNDvv//uMJG+Vq1a6tKli327VatWql+/vv1m05LUuHFjXXXVVfbtiIgI2Ww2paenSzo30f7AgQPavHmzpHOXIW+//XbVrVu34t4AAACucIQsk2TnlQxYkmRxcXXYPltkyGaz6dChQ/rHP/6h9u3b691339X27dvtN9Y+e/Zshdbm5+enAQMGaNmyZTp69Kg++eQTLhUCAFDBquS9C2sCPy+PMrVzr3Uu527fvl02m00LFiyQi8u5fX+/VCidW+x027ZtCg8PlySlp6frxIkTat26tb3N4cOH9euvvyooKEiStHnzZrm4uCgkJMTeZsyYMbrjjjt09dVXq3nz5he8PyQAACg/RrJMEt7UR4FWD5W2UINFUqDVQw3quEmSWrRoocLCQj333HP68ccf9dprr2np0qUl+tWuXVsPPPCAtmzZou3btys2NlbXX3+9PXRJkoeHh2JiYrRz5059/fXXevDBB3X77bcrICDA3iYqKkre3t564oknynyvRAAAUHaELJO4ulgUPyBUkkoEreLt+AGhsvz/jQ4dOujpp5/WvHnz1LZtW61atUpz5swpcdw6depo8uTJuvPOO9W9e3fVq1dPb731lkObFi1a6J///Kf69++vW265Re3bt9d//vMfhzYuLi6KjY1VUVGRRo4cWRGnDAAA/qLSbhBdWaraDSbX7c5Uwtq9DpPgA60eih8Qqr5ty3e7oMTERMXFxenEiROltpkxY4bWrFmjtLS0ix5v9OjROnbsmD744INy1QEAQEWrap/fFYE5WSbr2zZQN4cGKCXjuLLz8uXn5aHwpj5OXfE9JydHu3bt0uuvv07AAgDAJISsSuDqYlFE84bOLsNu4MCBSklJ0b333qubb77Z2eUAAFAjcbkQAAA4XU38/GYky0mKbxpdVS4hAgCAikXIcoKKnAwPAACqJpZwqGTnu2m0JGXl5GvcylSt253ppMoAAEBFImRVotJuGi3Jvi9h7V4V2WrUNDkAAK5IhKxKVNpNo4sV3zQ6JeN45RUFAABMQciqRKXdNPpS2wEAgKqLkFWJynrT6LK2AwAAVRchqxKV9abR4U19KrMsAABgAkJWJSrrTaNZLwsAgOqPkFXJ+rYN1JLhnRRgdbwkGGD10JLhnVgnCwCAGoLFSJ2gKt40GgAAVCxClpNUtZtGAwCAisXlQgAAABMQsgAAAExAyAIAADABIQsAAMAEhCwAAAATELIAAABMQMgCAAAwASELAADABIQsAAAAExCyAAAATEDIAgAAMAEhCwAAwASELAAAABMQsgAAAExAyAIAADABIQsAAMAEpoasr776SgMGDFBQUJAsFovWrFlz0T7Jycnq1KmT3N3d1aJFCyUmJppZIgAAgClMDVmnTp1Shw4d9Pzzz5epfUZGhm699Vb16tVLaWlpiouL05gxY/Tpp5+aWSYAAECFq2Xmwfv166d+/fqVuf3SpUvVtGlTLViwQJLUunVrffPNN1q4cKGioqLMKhMAAKDCVak5WZs2bVKfPn0c9kVFRWnTpk2l9ikoKFBubq7DAwAAwNmqVMjKysqSv7+/wz5/f3/l5ubqzJkz5+0zZ84cWa1W+yM4OLgySgUAALigKhWyLsXUqVOVk5Njfxw5csTZJQEAAJg7J6u8AgICdPToUYd9R48elbe3tzw9Pc/bx93dXe7u7pVRHgAAQJlVqZGsiIgIJSUlOexbv369IiIinFQRAADApTE1ZJ08eVJpaWlKS0uTdG6JhrS0NB0+fFjSuUt9I0eOtLe/99579eOPP2rSpEnav3+//vOf/+jtt9/Www8/bGaZAAAAFc7UkLVt2zZ17NhRHTt2lCRNmDBBHTt21PTp0yVJmZmZ9sAlSU2bNtVHH32k9evXq0OHDlqwYIFefvlllm8AAADVjsUwDMPZRVSk3NxcWa1W5eTkyNvb29nlAACAMqiJn99Vak4WAABATUHIAgAAMAEhCwAAwASELAAAABMQsgAAAExAyAIAADABIQsAAMAEhCwAAAATELIAAABMQMgCAAAwASELAADABIQsAAAAExCyAAAATEDIAgAAMAEhCwAAwASELAAAABMQsgAAAExAyAIAADABIQsAAMAEhCwAAAATELIAAABMQMgCAAAwASELAADABIQsAAAAExCyAAAATEDIAgAAMAEhCwAAwASELAAAABMQsgAAAExAyAIAADABIQsAAMAEhCwAAAATELIAAABMQMgCAAAwASELAADABIQsAAAAExCyAAAATEDIAgAAMAEhCwAAwASVErKef/55NWnSRB4eHuratatSUlJKbZuYmCiLxeLw8PDwqIwyAQAAKozpIeutt97ShAkTFB8fr9TUVHXo0EFRUVHKzs4utY+3t7cyMzPtj59++snsMgEAACqU6SHr6aef1tixY3XXXXcpNDRUS5cuVZ06dfTqq6+W2sdisSggIMD+8Pf3N7tMAACACmVqyDp79qy2b9+uPn36/O8FXVzUp08fbdq0qdR+J0+e1DXXXKPg4GANHDhQe/bsKbVtQUGBcnNzHR4AAADOZmrI+u2331RUVFRiJMrf319ZWVnn7RMSEqJXX31V77//vlauXCmbzaZu3brp559/Pm/7OXPmyGq12h/BwcEVfh4AAKBqaNKkiZ555hlnl1EmVe7bhRERERo5cqTCwsLUs2dPvffee/L19dULL7xw3vZTp05VTk6O/XHkyJFKrhgAAJQmMTFR9evXd3YZTlHLzIM3atRIrq6uOnr0qMP+o0ePKiAgoEzHqF27tjp27KgDBw6c93l3d3e5u7tfdq0AAMB5zp496+wSKpypI1lubm667rrrlJSUZN9ns9mUlJSkiIiIMh2jqKhIu3btUmBgoFllAgCAUkRGRmr8+PEaP368rFarGjVqpGnTpskwDEnn5kY/8sgjuuqqq1S3bl117dpVycnJkqTk5GTdddddysnJsS/LNGPGDEnnLvvNmjVLI0eOlLe3tx566CFJ0vvvv682bdrI3d1dTZo00YIFCy5Y34kTJzRmzBj5+vrK29tbN910k3bu3Gl/PjY2VtHR0Q594uLiFBkZ6XCODzzwgOLi4tSgQQP5+/vrpZde0qlTp3TXXXfJy8tLLVq00CeffFKu9870y4UTJkzQSy+9pOXLl2vfvn0aN26cvWhJGjlypKZOnWpvP3PmTH322Wf68ccflZqaquHDh+unn37SmDFjzC4VAACcx/Lly1WrVi2lpKRo0aJFevrpp/Xyyy9LksaPH69NmzbpzTff1HfffafBgwerb9+++uGHH9StWzc988wzDkszPfLII/bjPvXUU+rQoYN27NihRx99VNK5UDR06FDt2rVLM2bM0LRp05SYmFhqbYMHD1Z2drY++eQTbd++XZ06dVLv3r11/Pjxcp9jo0aNlJKSogceeEDjxo3T4MGD1a1bN6WmpuqWW27RiBEjdPr06bIf1KgEzz33nNG4cWPDzc3NCA8PNzZv3mx/rmfPnkZMTIx9Oy4uzt7W39/f6N+/v5Gamlrm18rJyTEkGTk5ORV5CgAAXJF69uxptG7d2rDZbPZ9kydPNlq3bm389NNPhqurq/HLL7849Ondu7cxdepUwzAMY9myZYbVai1x3GuuucaIjo62bxd/fvfq1cuh3aOPPmqEhoY69Fu4cKFhGIbx9ddfG97e3kZ+fr5Dn+bNmxsvvPCCYRiGERMTYwwcONDh+Yceesjo2bOnwzn26NHDvv3nn38adevWNUaMGGHfl5mZaUgyNm3aVOJcSmPqnKxixcOM51M8pFhs4cKFWrhwYSVUBQAAyuL666+XxWKxb0dERGjBggXatWuXioqKdO211zq0LygoUMOGDS963M6dO5/3tf6qe/fueuaZZ1RUVCRXV1eH53bu3KmTJ0+WeK0zZ87o4MGDF339v2rfvr39v11dXdWwYUO1a9fOvq94pYQLLab+d5USsgAAgDmSk5PVq1cv/fHHH6pfv74SExMVFxenEydOmP7aJ0+elKurq7Zv314iANWrV++i/evWrXvZrx8YGFhiwEaS/RuNLi4u9vljxQoLC0u0r127tsO2xWJx2FccMm02W5nrI2QBAFCNdevWTZmZmbJaraa9xpYtWxy2N2/erJYtW6pjx44qKipSdna2brjhhvP2dXNzU1FRUZlfa/PmzQ7bGzdu1LXXXlsixElSp06dlJWVpVq1aqlJkybnPZ6vr692797tsC8tLa1EqDJDlVsnCwAAlJ2bm5sCAgIcLudVtMOHD2vChAlKT0/XG2+8oeeee04PPfSQrr32Wg0bNkwjR47Ue++9p4yMDKWkpGjOnDn66KOPJJ37FuHJkyeVlJSk33777aITxzds2KBZs2bp+++/1/Lly7V48WKHyfJ/1adPH0VERCg6OlqfffaZDh06pG+//VaPPfaYtm3bJkm66aabtG3bNq1YsUI//PCD4uPjS4QusxCyAACo4goKCvTggw/Kz89PHh4e6tGjh7Zu3Srp3OVCi8Vi6uXBkSNH6syZMwoPD9f999+vhx56SHfffbckadmyZRo5cqQmTpyokJAQRUdHa+vWrWrcuLGkcyNt9957r4YMGSJfX1/Nnz//gq+VmJioN998U23bttX06dM1c+ZMxcbGnretxWLRxx9/rBtvvFF33XWXrr32Wg0dOlQ//fSTfQ5VVFSUpk2bpkmTJqlLly7Ky8vTyJEjK+7NuQCL8fcLldVcbm6urFarcnJy5O3t7exyAAC4bA899JD++9//6uWXX9Y111yj+fPn64MPPtCBAwf03XffmTonKzIyUmFhYabfyqYmfn4zkgUAQBV26tQpLVmyRE8++aT69eun0NBQvfTSS/L09NQrr7zi7PJwAYQsAACqsIMHD6qwsFDdu3e376tdu7bCw8O1b98+J1aGi+HbhQAAoFTnWx4BZcNIFgAAVVjz5s3l5uamjRs32vcVFhZq69atCg0NrdRaimyGNh38Xe+n/aJNB39Xka1GTeuucIxkAQBQhdWtW1fjxo3To48+Kh8fHzVu3Fjz58/X6dOnNXr0aIebIZtp3e5MJazdq8ycfPu+QKuH4geEqm/bwEqpobohZAEAUMXNnTtXNptNI0aMUF5enjp37qxPP/1UDRo0qJTXX7c7U+NWpurv41ZZOfkatzJVS4Z3ImidB0s4AACAUhXZDPWY94XDCNZfWSQFWD30zeSb5Opy6Qui1sTPb+ZkAQCAUqVkHC81YEmSISkzJ18pGccrr6hqgpAFAABKlZ1XesC6lHZXEkIWAAAolZ+XR4W2u5Iw8R0AgGqkyGYoJeO4svPy5eflofCmPpc1F+piwpv6KNDqoayc/BIT36X/zckKb+pjWg3VFSELAIBqwhnLKLi6WBQ/IFTjVqbKIjkEreJoFz8g1NSgV11xuRAAgGqgeBmFv09CL15GYd3uTNNeu2/bQC0Z3kkBVsdLggFWD5ZvuABGsgAAqOKKbIYS1u497+U6Q+dGlBLW7tXNoQGmjSj1bRuom0MDKvVSZXVHyAIAoIorzzIKEc0bmlaHq4vF1OPXNFwuBACgimMZheqJkAUAQBXHMgrVEyELAIAyysvL07Bhw1S3bl0FBgZq4cKFioyMVFxcnCTptddeU+fOneXl5aWAgADdeeedys7Otvf/448/NGzYMPn6+srT01MtW7bUsmXLLvq6xcsolDb7yaJz3zJkGYWqhZAFAEAZTZgwQRs3btQHH3yg9evX6+uvv1Zqaqr9+cLCQs2aNUs7d+7UmjVrdOjQIcXGxtqfnzZtmvbu3atPPvlE+/bt05IlS9SoUaOLvm7xMgqSSgQtllGourhBNAAAZZCXl6eGDRvq9ddf12233SZJysnJUVBQkMaOHatnnnmmRJ9t27apS5cuysvLU7169fR///d/atSokV599dVLqsEZ62RVlpr4+c23CwEAKIMff/xRhYWFCg8Pt++zWq0KCQmxb2/fvl0zZszQzp079ccff8hms0mSDh8+rNDQUI0bN06DBg1SamqqbrnlFkVHR6tbt25lroFlFKoXLhcCAFABTp06paioKHl7e2vVqlXaunWrVq9eLUk6e/asJKlfv3766aef9PDDD+vXX39V79699cgjj5TrdYqXURgYdpUimjckYFVhhCwAAMqgWbNmql27trZu3Wrfl5OTo++//16StH//fv3++++aO3eubrjhBrVq1cph0nsxX19fxcTEaOXKlXrmmWf04osvVto5oHJxuRAAgDLw8vJSTEyMHn30Ufn4+MjPz0/x8fFycXGRxWJR48aN5ebmpueee0733nuvdu/erVmzZjkcY/r06bruuuvUpk0bFRQU6MMPP1Tr1q2ddEYwGyNZAACU0dNPP62IiAj94x//UJ8+fdS9e3e1bt1aHh4e8vX1VWJiot555x2FhoZq7ty5euqppxz6u7m5aerUqWrfvr1uvPFGubq66s0333TS2cBsfLsQAIBLdOrUKV111VVasGCBRo8e7exyqrWa+PnN5UIAAMpox44d2r9/v8LDw5WTk6OZM2dKkgYOHOjkylAVEbIAACiHp556Sunp6XJzc9N1112nr7/+ukwLiuLKQ8gCAKCMOnbsqO3btzu7DFQThCwAAC5Bkc1gUVBcECELAIByqsm3t0HFYQkHAADKYd3uTI1bmeoQsCQpKydf41amat3uTCdVhqqGkAUAQBkV2QwlrN2r8619VLwvYe1eFdlq1OpIuESELAAAyigl43iJEay/MiRl5uQrJeN45RWFKqtSQtbzzz+vJk2ayMPDQ127dlVKSsoF27/zzjtq1aqVPDw81K5dO3388ceVUSYAABeUnVd6wLqUdqjZTA9Zb731liZMmKD4+HilpqaqQ4cOioqKOu9NMyXp22+/1R133KHRo0drx44dio6OVnR0tHbv3m12qQAAXJCfl0eFtkPNZvptdbp27aouXbpo8eLFkiSbzabg4GA98MADmjJlSon2Q4YM0alTp/Thhx/a911//fUKCwvT0qVLL/p6NXFZfgBA1VBkM9Rj3hfKysk/77wsi6QAq4e+mXwTyzmUU038/DZ1JOvs2bPavn27+vTp878XdHFRnz59tGnTpvP22bRpk0N7SYqKiiq1fUFBgXJzcx0eAACYwdXFovgBoZLOBaq/Kt6OHxBKwIIkk0PWb7/9pqKiIvn7+zvs9/f3V1ZW1nn7ZGVllav9nDlzZLVa7Y/g4OCKKR4AgPPo2zZQS4Z3UoDV8ZJggNVDS4Z3Yp0s2FX7xUinTp2qCRMm2Ldzc3MJWgAAU/VtG6ibQwNY8R0XZGrIatSokVxdXXX06FGH/UePHlVAQMB5+wQEBJSrvbu7u9zd3SumYAAAysjVxaKI5g2dXQaqMFMvFxbfoTwpKcm+z2azKSkpSREREeftExER4dBektavX19qewAAgKrI9MuFEyZMUExMjDp37qzw8HA988wzOnXqlO666y5J0siRI3XVVVdpzpw5kqSHHnpIPXv21IIFC3TrrbfqzTff1LZt2/Tiiy+aXSoAAECFMT1kDRkyRMeOHdP06dOVlZWlsLAwrVu3zj65/fDhw3Jx+d+AWrdu3fT666/r8ccf17/+9S+1bNlSa9asUdu2bc0uFQAAoMKYvk5WZauJ62wAAFDT1cTPb+5dCAAAYAJCFgAAgAkIWQAAACYgZAEAAJiAkAUAAGACQhYAAIAJCFkAAAAmIGQBAACYgJAFAABgAkIWAACACQhZAAAAJiBkAQAAmICQBQAAYAJCFgAAgAkIWQAAACYgZAEmOHTokCwWi9LS0pxdCgDASQhZgBOdPXvW2SUAAExCyEKNZLPZNH/+fLVo0ULu7u5q3LixZs+eLUnatWuXbrrpJnl6eqphw4a6++67dfLkSXvfyMhIxcXFORwvOjpasbGx9u0mTZro3//+t0aNGiUvLy81btxYL774ov35pk2bSpI6duwoi8WiyMhISVJsbKyio6M1e/ZsBQUFKSQkRDNnzlTbtm1LnENYWJimTZtWQe8IAKCyEbJQI02dOlVz587VtGnTtHfvXr3++uvy9/fXqVOnFBUVpQYNGmjr1q1655139Pnnn2v8+PHlfo0FCxaoc+fO2rFjh+677z6NGzdO6enpkqSUlBRJ0ueff67MzEy999579n5JSUlKT0/X+vXr9eGHH2rUqFHat2+ftm7dam+zY8cOfffdd7rrrrsu850AADhLLWcXAFS0vLw8LVq0SIsXL1ZMTIwkqXnz5urRo4deeukl5efna8WKFapbt64kafHixRowYIDmzZsnf3//Mr9O//79dd9990mSJk+erIULF+rLL79USEiIfH19JUkNGzZUQECAQ7+6devq5Zdflpubm31fVFSUli1bpi5dukiSli1bpp49e6pZs2aX/kYAAJyKkSzUOPv27VNBQYF69+593uc6dOhgD1iS1L17d9lsNvsoVFm1b9/e/t8Wi0UBAQHKzs6+aL927do5BCxJGjt2rN544w3l5+fr7Nmzev311zVq1Khy1QMAqFoYyUKN4+npeVn9XVxcZBiGw77CwsIS7WrXru2wbbFYZLPZLnr8vwa8YgMGDJC7u7tWr14tNzc3FRYW6rbbbitn5QCAqoSRLNQ4LVu2lKenp5KSkko817p1a+3cuVOnTp2y79u4caNcXFwUEhIiSfL19VVmZqb9+aKiIu3evbtcNRSPVBUVFZWpfa1atRQTE6Nly5Zp2bJlGjp06GWHRQCAczGShRrHw8NDkydP1qRJk+Tm5qbu3bvr2LFj2rNnj4YNG6b4+HjFxMRoxowZOnbsmB544AGNGDHCPh/rpptu0oQJE/TRRx+pefPmevrpp3XixIly1eDn5ydPT0+tW7dOV199tTw8PGS1Wi/YZ8yYMWrdurWkc8EPAFC9MZKFGmnatGmaOHGipk+frtatW2vIkCHKzs5WnTp19Omnn+r48ePq0qWLbrvtNvXu3VuLFy+29x01apRiYmI0cuRI++TzXr16lev1a9WqpWeffVYvvPCCgoKCNHDgwIv2admypbp166ZWrVqpa9eu5T5nAEDVYjH+PvmkmsvNzZXValVOTo68vb2dXQ5QZoZhqGXLlrrvvvs0YcIEZ5cDAJWqJn5+c7kQqAKOHTumN998U1lZWayNBQA1BCELqAL8/PzUqFEjvfjii2rQoIGzywEAVABCFlAF1LCr9gAAEbJwBSiyGUrJOK7svHz5eXkovKmPXF0szi4LAFDDEbJQo63bnamEtXuVmZNv3xdo9VD8gFD1bRvoxMr+JzExUXFxceVeJgIAULWxhANqrHW7MzVuZapDwJKkrJx8jVuZqnW7M0vpaZ4mTZromWeecdg3ZMgQff/995Vey4wZMxQWFlbprwsAVwpCFmqkIpuhhLV7db6ZTsX7EtbuVZHN+XOhPD095efn5+wyAAAVjJCFGikl43iJEay/MiRl5uQrJeO4w36bzab58+erRYsWcnd3V+PGjTV79mxJ0q5du3TTTTfJ09NTDRs21N13362TJ0/a+8bGxio6OlpPPfWUAgMD1bBhQ91///32+x5GRkbqp59+0sMPPyyLxSKL5dy8sMTERNWvX99+nOIRptdee01NmjSR1WrV0KFDlZeX51DnnDlz1LRpU3l6eqpDhw7673//a38+OTlZFotFSUlJ6ty5s+rUqaNu3brZb4KdmJiohIQE7dy5015LYmLiJb3XAIDzI2ShRsrOKz1gXajd1KlTNXfuXE2bNk179+7V66+/Ln9/f506dUpRUVFq0KCBtm7dqnfeeUeff/65xo8f79D/yy+/1MGDB/Xll19q+fLlSkxMtIeX9957T1dffbVmzpypzMxMh/sj/t3Bgwe1Zs0affjhh/rwww+1YcMGzZ071/78nDlztGLFCi1dulR79uzRww8/rOHDh2vDhg0Ox3nssce0YMECbdu2TbVq1dKoUaMknbtEOXHiRLVp08Zey5AhQ8r0ngEAyoaJ76iR/Lw8yt0uLy9PixYt0uLFixUTEyNJat68uXr06KGXXnpJ+fn5WrFiherWrStJWrx4sQYMGKB58+bZ73vYoEEDLV68WK6urmrVqpVuvfVWJSUlaezYsfLx8ZGrq6u8vLwUEBBwwbpsNpsSExPl5eUlSRoxYoSSkpI0e/ZsFRQU6N///rc+//xzRURESJKaNWumb775Ri+88IJ69uxpP87s2bPt21OmTNGtt96q/Px8eXp6ql69eqpVq9ZFawEAXBpCFmqk8KY+CrR6KCsn/7zzsiySAqznlnMotm/fPhUUFKh3794l2u/bt08dOnSwByxJ6t69u2w2m9LT0+0hq02bNnJ1dbW3CQwM1K5du8pdf5MmTewBq/g42dnZkqQDBw7o9OnTuvnmmx36nD17Vh07dnTY1759e4djSFJ2drYaN25c7poAAOVDyEKN5OpiUfyAUI1bmSqL5BC0ilfIih8Q6rBelqen52W/bu3atR22LRaLbDZbhR6neB7YRx99pKuuusqhnbu7e6nHKZ4Ddin1AADKjzlZqLH6tg3UkuGdFGB1vHQYYPXQkuGdSqyT1bJlS3l6eiopKanEsVq3bq2dO3fq1KlT9n0bN26Ui4uLQkJCylyTm5ubioqKynkmjkJDQ+Xu7q7Dhw+rRYsWDo/g4OBKrQUAUDpTR7KOHz+uBx54QGvXrpWLi4sGDRqkRYsWqV69eqX2iYyMLDF595577tHSpUvNLBU1VN+2gbo5NKBMK757eHho8uTJmjRpktzc3NS9e3cdO3ZMe/bs0bBhwxQfH6+YmBjNmDFDx44d0wMPPKARI0bYLxWWRZMmTfTVV19p6NChcnd3V6NGjcp9Tl5eXnrkkUf08MMPy2azqUePHsrJydHGjRvl7e1tn09WlloyMjKUlpamq6++Wl5eXiVGwgAAl87UkDVs2DBlZmZq/fr1Kiws1F133aW7775br7/++gX7jR07VjNnzrRv16lTx8wyUcO5ulgU0bxhmdpOmzZNtWrV0vTp0/Xrr78qMDBQ9957r+rUqaNPP/1UDz30kLp06aI6depo0KBBevrpp8tVy8yZM3XPPfeoefPmKigouOR7Fs6aNUu+vr6aM2eOfvzxR9WvX1+dOnXSv/71rzIfY9CgQXrvvffUq1cvnThxQsuWLVNsbOwl1QMAKMlimHRn2n379ik0NFRbt25V586dJUnr1q1T//799fPPPysoKOi8/SIjIxUWFlZiVeyyys3NldVqVU5Ojry9vS+1fAAAUIlq4ue3aXOyNm3apPr169sDliT16dNHLi4u2rJlywX7rlq1So0aNVLbtm01depUnT59utS2BQUFys3NdXgAAAA4m2mXC7OyskrcKqRWrVry8fFRVlZWqf3uvPNOXXPNNQoKCtJ3332nyZMnKz09Xe+9995528+ZM0cJCQkVWjsAAMDlKnfImjJliubNm3fBNvv27bvkgu6++277f7dr106BgYHq3bu3Dh48qObNm5doP3XqVE2YMMG+nZubW65vWAEAAJih3CFr4sSJF50c26xZMwUEBNgXTyz2559/6vjx4+VaYbpr166Szi3AeL6Q5e7uzjeiYIoim1GmbyUCAHA+5Q5Zvr6+8vX1vWi7iIgInThxQtu3b9d1110nSfriiy9ks9nswaks0tLSJP1vtWqgMqzbnamEtXsdbjIdaPVQ/IDQEutrAQBwPqZNfG/durX69u2rsWPHKiUlRRs3btT48eM1dOhQ+zcLf/nlF7Vq1UopKSmSzt0Ud9asWdq+fbsOHTqkDz74QCNHjtSNN97ocHsQwEzrdmdq3MpUh4AlSVk5+Rq3MlXrdpd+Y2cAAIqZuuL7qlWr1KpVK/Xu3Vv9+/dXjx499OKLL9qfLywsVHp6uv3bg25ubvr88891yy23qFWrVpo4caIGDRqktWvXmlkmYFdkM5Swdu9573dYvC9h7V4V2UxZ+QQAUIOYtk6Ws9TEdTZQeTYd/F13vLT5ou3eGHt9mRc4BQBcXE38/ObehcBfZOflX7xROdoBAK5chCzgL/y8PC7eqBztAABXLkIW8BfhTX0UaPVQaQs1WHTuW4bhTX0qsywAQDVEyAL+wtXFovgBoZJUImgVb8cPCGW9LADARRGygL/p2zZQS4Z3UoDV8ZJggNVDS4Z3Yp0sAECZmHbvQqA669s2UDeHBrDiOwDgkhGygFK4ulhYpgEAcMm4XAgAAGACQhYAAIAJCFkAAAAmIGQBAACYgJAFAABgAkIWAACACQhZAAAAJiBkAQAAmICQBQAAYAJCFgAAgAkIWQAAACYgZAEAAJiAkAUAAGACQhYAAIAJCFkAAAAmIGQBAACYgJAFAABgAkIWAACACQhZAAAAJiBkAQAAmICQBQAAYAJCFgAAgAkIWQAAACYgZAEAAJiAkAXTHDp0SBaLRWlpac4uBQCASkfIgmmCg4OVmZmptm3bSpKSk5NlsVh04sQJ5xYGAEAlqOXsAlBzubq6KiAgwNllAADgFIxk4bLZbDbNnz9fLVq0kLu7uxo3bqzZs2c7XC48dOiQevXqJUlq0KCBLBaLYmNjtWLFCjVs2FAFBQUOx4yOjtaIESOccToAAFQIRrJw2aZOnaqXXnpJCxcuVI8ePZSZman9+/c7tAkODta7776rQYMGKT09Xd7e3vL09JSbm5sefPBBffDBBxo8eLAkKTs7Wx999JE+++wzZ5wOAAAVgpCFy5KXl6dFixZp8eLFiomJkSQ1b95cPXr00KFDh+ztXF1d5ePjI0ny8/NT/fr17c/deeedWrZsmT1krVy5Uo0bN1ZkZGRlnQYAABWOy4W4LPv27VNBQYF69+59yccYO3asPvvsM/3yyy+SpMTERMXGxspisVRUmQAAVDrTQtbs2bPVrVs31alTx2HU4kIMw9D06dMVGBgoT09P9enTRz/88INZJaICeHp6XvYxOnbsqA4dOmjFihXavn279uzZo9jY2MsvDgAAJzItZJ09e1aDBw/WuHHjytxn/vz5evbZZ7V06VJt2bJFdevWVVRUlPLz880qE5epZcuW8vT0VFJS0kXburm5SZKKiopKPDdmzBglJiZq2bJl6tOnj4KDgyu8VgAAKpNpISshIUEPP/yw2rVrV6b2hmHomWee0eOPP66BAweqffv2WrFihX799VetWbPGrDJxmTw8PDR58mRNmjRJK1as0MGDB7V582a98sorJdpec801slgs+vDDD3Xs2DGdPHnS/tydd96pn3/+WS+99JJGjRpVmacAAIApqsycrIyMDGVlZalPnz72fVarVV27dtWmTZtK7VdQUKDc3FyHByrXtGnTNHHiRE2fPl2tW7fWkCFDlJ2dXaLdVVddpYSEBE2ZMkX+/v4aP368/Tmr1apBgwapXr16io6OrsTqAQAwR5X5dmFWVpYkyd/f32G/v7+//bnzmTNnjhISEkytDRfm4uKixx57TI899liJ5wzDcNieNm2apk2bdt7j/PLLLxo2bJjc3d1NqRMAgMpUrpGsKVOmyGKxXPDx9/WRzDZ16lTl5OTYH0eOHKnU18fl++OPP7R69WolJyfr/vvvd3Y5AABUiHKNZE2cOPGi3/pq1qzZJRVSfPuVo0ePKjAw0L7/6NGjCgsLK7Wfu7s7Ix/VXMeOHfXHH39o3rx5CgkJcXY5AABUiHKFLF9fX/n6+ppSSNOmTRUQEKCkpCR7qMrNzdWWLVvK9Q1FVD9/XbQUAICawrSJ74cPH1ZaWpoOHz6soqIipaWlKS0tzeEbZa1atdLq1aslSRaLRXFxcXriiSf0wQcfaNeuXRo5cqSCgoKYCA0AAKod0ya+T58+XcuXL7dvd+zYUZL05Zdf2m+Xkp6erpycHHubSZMm6dSpU7r77rt14sQJ9ejRQ+vWrZOHh4dZZaKCFdkMpWQcV3Zevvy8PBTe1EeuLqzcDgC48liMv3/9q5rLzc2V1WpVTk6OvL29nV3OFWXd7kwlrN2rzJz/LR4baPVQ/IBQ9W0beIGeAIArXU38/K4y62Shelu3O1PjVqY6BCxJysrJ17iVqVq3O9NJlQEA4ByELFy2IpuhhLV7db4h0eJ9CWv3qshWowZNAQC4IEIWLltKxvESI1h/ZUjKzMlXSsbxyisKAAAnI2ThsmXnle0G3mVtBwBATUDIquYiIyMVFxfn1Br8vMr27c+ytgMAoCYgZOGyhTf1UaDVQ6Ut1GDRuW8Zhjf1qcyyAABwKkJWNRYbG6sNGzZo0aJF9ntHHjp0SBs2bFB4eLjc3d0VGBioKVOm6M8//5Qkffjhh6pfv76KiookSWlpabJYLJoyZYr9uGPGjNHw4cMlSYmJiapfv74+/fRTtW7dWvXq1VPfvn2Vmfm/bwu6ulgUPyBUkkoEreLt+AGhrJcFALiiELKqsUWLFikiIkJjx45VZmamMjMzVbt2bfXv319dunTRzp07tWTJEr3yyit64oknJEk33HCD8vLytGPHDknShg0b1KhRIyUnJ9uPu2HDBvuCsZJ0+vRpPfXUU3rttdf01Vdf6fDhw3rkkUccaunbNlBLhndSgNXxkmCA1UNLhndinSwAwBXHtBXfYT6r1So3NzfVqVPHfoPtxx57TMHBwVq8eLEsFotatWqlX3/9VZMnT9b06dNltVoVFham5ORkde7cWcnJyXr44YeVkJCgkydPKicnRwcOHFDPnj3tr1NYWKilS5eqefPmkqTx48dr5syZJerp2zZQN4cGsOI7AABiJKvG2bdvnyIiImSx/C/YdO/eXSdPntTPP/8sSerZs6eSk5NlGIa+/vpr/fOf/1Tr1q31zTffaMOGDQoKClLLli3t/evUqWMPWJIUGBio7Ozs876+q4tFEc0bamDYVYpo3pCABQC4YjGSdQWKjIzUq6++qp07d6p27dpq1aqVIiMjlZycrD/++MNhFEuSateu7bBtsVhUw+7GBABAhWMkq5pzc3OzT2KXpNatW2vTpk0OIWjjxo3y8vLS1VdfLel/87IWLlxoD1TFISs5OdlhPhYAALg0hKxqrkmTJtqyZYsOHTqk3377Tffdd5+OHDmiBx54QPv379f777+v+Ph4TZgwQS4u537cDRo0UPv27bVq1Sp7oLrxxhuVmpqq77//vsRIFgAAKD9CVjX3yCOPyNXVVaGhofL19VVhYaE+/vhjpaSkqEOHDrr33ns1evRoPf744w79evbsqaKiInvI8vHxUWhoqAICAhQSEuKEMwEAoGaxGDVsck1ubq6sVqtycnLk7e3t7HIAAEAZ1MTPb0ayAAAATEDIAgAAMAEhCwAAwASsk1WDFNkMVlsHAKCKIGTVEOt2Zyph7V5l5uTb9wVaPRQ/IJT7BgIA4ARcLqwB1u3O1LiVqQ4BS5KycvI1bmWq1u3OdFJlAABcuQhZ1VyRzVDC2r063zocxfsS1u5Vka1GrdQBAECVR8iq5lIyjpcYwforQ1JmTr5SMo5XXlEAAICQVd1l55UesC6lHQAAqBiErGrOz8ujQtsBAICKQciq5sKb+ijQ6qHSFmqw6Ny3DMOb+lRmWQAAXPEIWdWcq4tF8QNCJalE0Crejh8QynpZAABUMkJWDdC3baCWDO+kAKvjJcEAq4eWDO/EOlkAADgBi5HWEH3bBurm0ABWfAcAoIogZNUgri4WRTRv6OwyAACAuFwIAABgCkIWAACACQhZAAAAJiBkAQAAmICQVUXNmDFDYWFh9u3Y2FhFR0fbtyMjIxUXF1fpdQEAgLIhZFVRjzzyiJKSkpxdBgAAuEQs4VBF1atXT/Xq1XN2GQAA4BIxkuUkL774ooKCgmSz2Rz2Dxw4UKNGjSpxufBiXnvtNXXu3FleXl4KCAjQnXfeqezsbIc2H3zwgVq2bCkPDw/16tVLy5cvl8Vi0YkTJ+xtvvnmG91www3y9PRUcHCwHnzwQZ06depyThUAgCsSIctJBg8erN9//11ffvmlfd/x48e1bt06DRs2rNzHKyws1KxZs7Rz506tWbNGhw4dUmxsrP35jIwM3XbbbYqOjtbOnTt1zz336LHHHnM4xsGDB9W3b18NGjRI3333nd566y198803Gj9+/CWfJwAAVyrTQtbs2bPVrVs31alTR/Xr1y9Tn9jYWFksFodH3759zSrRqRo0aKB+/frp9ddft+/773//q0aNGqlXr17lPt6oUaPUr18/NWvWTNdff72effZZffLJJzp58qQk6YUXXlBISIiefPJJhYSEaOjQoQ4hTJLmzJmjYcOGKS4uTi1btlS3bt307LPPasWKFcrPz7+s8wUA4EpjWsg6e/asBg8erHHjxpWrX9++fZWZmWl/vPHGGyZV6HzDhg3Tu+++q4KCAknSqlWrNHToULm4lP/Hsn37dg0YMECNGzeWl5eXevbsKUk6fPiwJCk9PV1dunRx6BMeHu6wvXPnTiUmJtrng9WrV09RUVGy2WzKyMi4lFMEAOCKZdrE94SEBElSYmJiufq5u7srICDAhIqqngEDBsgwDH300Ufq0qWLvv76ay1cuLDcxzl16pSioqIUFRWlVatWydfXV4cPH1ZUVJTOnj1b5uOcPHlS99xzjx588MESzzVu3LjcdQEAcCWrct8uTE5Olp+fnxo0aKCbbrpJTzzxhBo2LP2mxwUFBfaRIEnKzc2tjDIrhIeHh/75z39q1apVOnDggEJCQtSpU6dyH2f//v36/fffNXfuXAUHB0uStm3b5tAmJCREH3/8scO+rVu3Omx36tRJe/fuVYsWLcpdAwAAcFSlJr737dtXK1asUFJSkubNm6cNGzaoX79+KioqKrXPnDlzZLVa7Y/ikFFdDBs2TB999JFeffXVS5rwLp0bZXJzc9Nzzz2nH3/8UR988IFmzZrl0Oaee+7R/v37NXnyZH3//fd6++237aOMFotFkjR58mR9++23Gj9+vNLS0vTDDz/o/fffZ+I7AACXoFwha8qUKSUmpv/9sX///ksuZujQofq///s/tWvXTtHR0frwww+1detWJScnl9pn6tSpysnJsT+OHDlyya/vDDfddJN8fHyUnp6uO++885KO4evrq8TERL3zzjsKDQ3V3Llz9dRTTzm0adq0qf773//qvffeU/v27bVkyRL7twvd3d0lSe3bt9eGDRv0/fff64YbblDHjh01ffp0BQUFXd5JAgBwBbIYhmGUtfGxY8f0+++/X7BNs2bN5ObmZt9OTExUXFycw1pM5eHr66snnnhC99xzT5na5+bmymq1KicnR97e3pf0mleK2bNna+nSpdUumAIAap6a+PldrjlZvr6+8vX1NauWEn7++Wf9/vvvCgwMrLTXrMn+85//qEuXLmrYsKE2btyoJ598kkuBAACYxLQ5WYcPH1ZaWpoOHz6soqIipaWlKS0tzb5ukyS1atVKq1evlnTum22PPvqoNm/erEOHDikpKUkDBw5UixYtFBUVZVaZV5QffvhBAwcOVGhoqGbNmqWJEydqxowZzi4LAIAaqVyXC8sjNjZWy5cvL7H/yy+/VGRk5LkXt1i0bNkyxcbG6syZM4qOjtaOHTt04sQJBQUF6ZZbbtGsWbPk7+9f5teticONAADUdDXx89u0kOUs1fWHVGQzlJJxXNl5+fLz8lB4Ux+5ulicXRYAAJWiun5+X0iVWyfrSrRud6YS1u5VZs7/bl0TaPVQ/IBQ9W3LfDQAAKqjKrVO1pVo3e5MjVuZ6hCwJCkrJ1/jVqZq3e5MJ1UGAAAuByHLiYpshhLW7tX5rtcW70tYu1dFthp1RRcAgCsCIcuJUjKOlxjB+itDUmZOvlIyjldeUQAAoEIQspwoO6/0gHUp7QAAQNVByHIiPy+PCm0HAACqDkKWE4U39VGg1UOlLdRg0blvGYY39anMsgAAQAUgZDmRq4tF8QNCJalE0Crejh8QynpZAABUQ4QsJ+vbNlBLhndSgNXxkmCA1UNLhndinSwAAKopFiOtAvq2DdTNoQGs+A4AQA1CyKoiXF0simje0NllAACACsLlQgAAABMQsgAAAExAyAIAADABIQsAAMAEhCwAAAATELIAAABMQMgCAAAwASELAADABIQsAAAAE9S4Fd8Nw5Ak5ebmOrkSAABQVsWf28Wf4zVBjQtZeXl5kqTg4GAnVwIAAMorLy9PVqvV2WVUCItRkyKjJJvNpl9//VVeXl6yWKrPDZZzc3MVHBysI0eOyNvb29nlVLor/fwl3oMr/fwl3gOJ9+BKPn/DMJSXl6egoCC5uNSM2Uw1biTLxcVFV199tbPLuGTe3t5X3D+sv7rSz1/iPbjSz1/iPZB4D67U868pI1jFakZUBAAAqGIIWQAAACYgZFUR7u7uio+Pl7u7u7NLcYor/fwl3oMr/fwl3gOJ9+BKP/+apsZNfAcAAKgKGMkCAAAwASELAADABIQsAAAAExCyAAAATEDIcpLZs2erW7duqlOnjurXr1+mPoZhaPr06QoMDJSnp6f69OmjH374wdxCTXT8+HENGzZM3t7eql+/vkaPHq2TJ09esE9kZKQsFovD4957762kii/f888/ryZNmsjDw0Ndu3ZVSkrKBdu/8847atWqlTw8PNSuXTt9/PHHlVSpOcpz/omJiSV+1h4eHpVYbcX76quvNGDAAAUFBclisWjNmjUX7ZOcnKxOnTrJ3d1dLVq0UGJioul1mqW855+cnFzid8BisSgrK6tyCq5gc+bMUZcuXeTl5SU/Pz9FR0crPT39ov1q2t+BKwkhy0nOnj2rwYMHa9y4cWXuM3/+fD377LNaunSptmzZorp16yoqKkr5+fkmVmqeYcOGac+ePVq/fr0+/PBDffXVV7r77rsv2m/s2LHKzMy0P+bPn18J1V6+t956SxMmTFB8fLxSU1PVoUMHRUVFKTs7+7ztv/32W91xxx0aPXq0duzYoejoaEVHR2v37t2VXHnFKO/5S+dWvf7rz/qnn36qxIor3qlTp9ShQwc9//zzZWqfkZGhW2+9Vb169VJaWpri4uI0ZswYffrppyZXao7ynn+x9PR0h98DPz8/kyo014YNG3T//fdr8+bNWr9+vQoLC3XLLbfo1KlTpfapaX8HrjgGnGrZsmWG1Wq9aDubzWYEBAQYTz75pH3fiRMnDHd3d+ONN94wsUJz7N2715BkbN261b7vk08+MSwWi/HLL7+U2q9nz57GQw89VAkVVrzw8HDj/vvvt28XFRUZQUFBxpw5c87b/vbbbzduvfVWh31du3Y17rnnHlPrNEt5z7+s/zaqK0nG6tWrL9hm0qRJRps2bRz2DRkyxIiKijKxsspRlvP/8ssvDUnGH3/8USk1Vbbs7GxDkrFhw4ZS29S0vwNXGkayqomMjAxlZWWpT58+9n1Wq1Vdu3bVpk2bnFjZpdm0aZPq16+vzp072/f16dNHLi4u2rJlywX7rlq1So0aNVLbtm01depUnT592uxyL9vZs2e1fft2h5+fi4uL+vTpU+rPb9OmTQ7tJSkqKqpa/rwv5fwl6eTJk7rmmmsUHBysgQMHas+ePZVRbpVRk34HLkdYWJgCAwN18803a+PGjc4up8Lk5ORIknx8fEptw+9A9VbjbhBdUxXPQfD393fY7+/vXy3nJ2RlZZUY8q9Vq5Z8fHwueD533nmnrrnmGgUFBem7777T5MmTlZ6ervfee8/ski/Lb7/9pqKiovP+/Pbv33/ePllZWTXm530p5x8SEqJXX31V7du3V05Ojp566il169ZNe/bsqdY3gS+P0n4HcnNzdebMGXl6ejqpssoRGBiopUuXqnPnziooKNDLL7+syMhIbdmyRZ06dXJ2eZfFZrMpLi5O3bt3V9u2bUttV5P+DlyJCFkVaMqUKZo3b94F2+zbt0+tWrWqpIoqX1nfg0v11zlb7dq1U2BgoHr37q2DBw+qefPml3xcVD0RERGKiIiwb3fr1k2tW7fWCy+8oFmzZjmxMlSWkJAQhYSE2Le7deumgwcPauHChXrttdecWNnlu//++7V792598803zi4FJiJkVaCJEycqNjb2gm2aNWt2SccOCAiQJB09elSBgYH2/UePHlVYWNglHdMMZX0PAgICSkx4/vPPP3X8+HH7uZZF165dJUkHDhyo0iGrUaNGcnV11dGjRx32Hz16tNTzDQgIKFf7quxSzv/vateurY4dO+rAgQNmlFgllfY74O3tXeNHsUoTHh5e7YPJ+PHj7V/2udiobE36O3AlYk5WBfL19VWrVq0u+HBzc7ukYzdt2lQBAQFKSkqy78vNzdWWLVsc/m/f2cr6HkREROjEiRPavn27ve8XX3whm81mD05lkZaWJkkOwbMqcnNz03XXXefw87PZbEpKSir15xcREeHQXpLWr19fpX7eZXUp5/93RUVF2rVrV5X/WVekmvQ7UFHS0tKq7e+AYRgaP368Vq9erS+++EJNmza9aB9+B6o5Z8+8v1L99NNPxo4dO4yEhASjXr16xo4dO4wdO3YYeXl59jYhISHGe++9Z9+eO3euUb9+feP99983vvvuO2PgwIFG06ZNjTNnzjjjFC5b3759jY4dOxpbtmwxvvnmG6Nly5bGHXfcYX/+559/NkJCQowtW7YYhmEYBw4cMGbOnGls27bNyMjIMN5//32jWbNmxo033uisUyiXN99803B3dzcSExONvXv3GnfffbdRv359IysryzAMwxgxYoQxZcoUe/uNGzcatWrVMp566ilj3759Rnx8vFG7dm1j165dzjqFy1Le809ISDA+/fRT4+DBg8b27duNoUOHGh4eHsaePXucdQqXLS8vz/5vXZLx9NNPGzt27DB++uknwzAMY8qUKcaIESPs7X/88UejTp06xqOPPmrs27fPeP755w1XV1dj3bp1zjqFy1Le81+4cKGxZs0a44cffjB27dplPPTQQ4aLi4vx+eefO+sULsu4ceMMq9VqJCcnG5mZmfbH6dOn7W1q+t+BKw0hy0liYmIMSSUeX375pb2NJGPZsmX2bZvNZkybNs3w9/c33N3djd69exvp6emVX3wF+f3334077rjDqFevnuHt7W3cddddDiEzIyPD4T05fPiwceONNxo+Pj6Gu7u70aJFC+PRRx81cnJynHQG5ffcc88ZjRs3Ntzc3Izw8HBj8+bN9ud69uxpxMTEOLR/++23jWuvvdZwc3Mz2rRpY3z00UeVXHHFKs/5x8XF2dv6+/sb/fv3N1JTU51QdcUpXpLg74/i846JiTF69uxZok9YWJjh5uZmNGvWzOFvQnVT3vOfN2+e0bx5c8PDw8Pw8fExIiMjjS+++MI5xVeA85373//OXwl/B64kFsMwjEobNgMAALhCMCcLAADABIQsAAAAExCyAAAATEDIAgAAMAEhCwAAwASELAAAABMQsgAAAExAyAIAADABIQsAAMAEhCwAAAATELIAAABMQMgCAAAwwf8DR0s/U2cssWsAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# We have done the plotting for you. Just run this cell.\n", + "result = compute_pca(X, 2)\n", + "plt.scatter(result[:, 0], result[:, 1])\n", + "for i, word in enumerate(words):\n", + " plt.annotate(word, xy=(result[i, 0] - 0.05, result[i, 1] + 0.1))\n", + "\n", + "plt.show()" + ] + } + ], + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 0df85f972ea9d385eabafebd38a84a85c8bc8acf Mon Sep 17 00:00:00 2001 From: lovetonight Date: Thu, 10 Aug 2023 14:16:18 +0700 Subject: [PATCH 5/7] Auto correction --- .../Week 1/Learn.ipynb | 2215 +++++++++++++++++ 1 file changed, 2215 insertions(+) create mode 100644 Natural Language Processing with Probabilistic Models/Week 1/Learn.ipynb diff --git a/Natural Language Processing with Probabilistic Models/Week 1/Learn.ipynb b/Natural Language Processing with Probabilistic Models/Week 1/Learn.ipynb new file mode 100644 index 0000000..8848a9e --- /dev/null +++ b/Natural Language Processing with Probabilistic Models/Week 1/Learn.ipynb @@ -0,0 +1,2215 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Assignment 1: Auto Correct\n", + "\n", + "Welcome to the first assignment of Course 2. This assignment will give you a chance to brush up on your python and probability skills. In doing so, you will implement an auto-correct system that is very effective and useful." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Outline\n", + "- [0. Overview](#0)\n", + " - [0.1 Edit Distance](#0-1)\n", + "- [1. Data Preprocessing](#1)\n", + " - [1.1 Exercise 1](#ex-1)\n", + " - [1.2 Exercise 2](#ex-2)\n", + " - [1.3 Exercise 3](#ex-3)\n", + "- [2. String Manipulation](#2)\n", + " - [2.1 Exercise 4](#ex-4)\n", + " - [2.2 Exercise 5](#ex-5)\n", + " - [2.3 Exercise 6](#ex-6)\n", + " - [2.4 Exercise 7](#ex-7)\n", + "- [3. Combining the edits](#3)\n", + " - [3.1 Exercise 8](#ex-8)\n", + " - [3.2 Exercise 9](#ex-9)\n", + " - [3.3 Exercise 10](#ex-10)\n", + "- [4. Minimum Edit Distance](#4)\n", + " - [4.1 Exercise 11](#ex-11)\n", + "- [5. Backtrace (Optional)](#5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 0. Overview\n", + "\n", + "You use autocorrect every day on your cell phone and computer. In this assignment, you will explore what really goes on behind the scenes. Of course, the model you are about to implement is not identical to the one used in your phone, but it is still quite good. \n", + "\n", + "By completing this assignment you will learn how to: \n", + "\n", + "- Get a word count given a corpus\n", + "- Get a word probability in the corpus \n", + "- Manipulate strings \n", + "- Filter strings \n", + "- Implement Minimum edit distance to compare strings and to help find the optimal path for the edits. \n", + "- Understand how dynamic programming works\n", + "\n", + "\n", + "Similar systems are used everywhere. \n", + "- For example, if you type in the word **\"I am lerningg\"**, chances are very high that you meant to write **\"learning\"**, as shown in **Figure 1**. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 1
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### 0.1 Edit Distance\n", + "\n", + "In this assignment, you will implement models that correct words that are 1 and 2 edit distances away. \n", + "- We say two words are n edit distance away from each other when we need n edits to change one word into another. \n", + "\n", + "An edit could consist of one of the following options: \n", + "\n", + "- Delete (remove a letter): ‘hat’ => ‘at, ha, ht’\n", + "- Switch (swap 2 adjacent letters): ‘eta’ => ‘eat, tea,...’\n", + "- Replace (change 1 letter to another): ‘jat’ => ‘hat, rat, cat, mat, ...’\n", + "- Insert (add a letter): ‘te’ => ‘the, ten, ate, ...’\n", + "\n", + "You will be using the four methods above to implement an Auto-correct. \n", + "- To do so, you will need to compute probabilities that a certain word is correct given an input. \n", + "\n", + "This auto-correct you are about to implement was first created by [Peter Norvig](https://en.wikipedia.org/wiki/Peter_Norvig) in 2007. \n", + "- His [original article](https://norvig.com/spell-correct.html) may be a useful reference for this assignment.\n", + "\n", + "The goal of our spell check model is to compute the following probability:\n", + "\n", + "$$P(c|w) = \\frac{P(w|c)\\times P(c)}{P(w)} \\tag{Eqn-1}$$\n", + "\n", + "The equation above is [Bayes Rule](https://en.wikipedia.org/wiki/Bayes%27_theorem). \n", + "- Equation 1 says that the probability of a word being correct $P(c|w) $is equal to the probability of having a certain word $w$, given that it is correct $P(w|c)$, multiplied by the probability of being correct in general $P(C)$ divided by the probability of that word $w$ appearing $P(w)$ in general.\n", + "- To compute equation 1, you will first import a data set and then create all the probabilities that you need using that data set. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Part 1: Data Preprocessing " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "from collections import Counter\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As in any other machine learning task, the first thing you have to do is process your data set. \n", + "- Many courses load in pre-processed data for you. \n", + "- However, in the real world, when you build these NLP systems, you load the datasets and process them.\n", + "- So let's get some real world practice in pre-processing the data!\n", + "\n", + "Your first task is to read in a file called **'shakespeare.txt'** which is found in your file directory. To look at this file you can go to `File ==> Open `. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 1\n", + "Implement the function `process_data` which \n", + "\n", + "1) Reads in a corpus (text file)\n", + "\n", + "2) Changes everything to lowercase\n", + "\n", + "3) Returns a list of words. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Options and Hints\n", + "- If you would like more of a real-life practice, don't open the 'Hints' below (yet) and try searching the web to derive your answer.\n", + "- If you want a little help, click on the green \"General Hints\" section by clicking on it with your mouse.\n", + "- If you get stuck or are not getting the expected results, click on the green 'Detailed Hints' section to get hints for each step that you'll take to complete this function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " General Hints\n", + "\n", + "

\n", + " \n", + "General Hints to get started\n", + "

\n", + "

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Detailed Hints\n", + "\n", + "

\n", + "Detailed hints if you're stuck\n", + "

    \n", + "
  • Use 'with' syntax to read a file
  • \n", + "
  • Decide whether to use 'read()' or 'readline(). What's the difference?
  • \n", + "
  • Choose whether to use either str.lower() or str.lowercase(). What is the difference?
  • \n", + "
  • Use re.findall(pattern, string)
  • \n", + "
  • Look for the \"Raw String Notation\" section in the Python 're' documentation to understand the difference between r'\\W', r'\\W' and '\\\\W'.
  • \n", + "
  • For the pattern, decide between using '\\s', '\\w', '\\s+' or '\\w+'. What do you think are the differences?
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: process_data\n", + "def process_data(file_name):\n", + " \"\"\"\n", + " Input: \n", + " A file_name which is found in your current directory. You just have to read it in. \n", + " Output: \n", + " words: a list containing all the words in the corpus (text file you read) in lower case. \n", + " \"\"\"\n", + " words = [] # return this variable correctly\n", + "\n", + " ### START CODE HERE ###\n", + "\n", + " with open(file_name) as f:\n", + " file_name_data = f.read()\n", + " data_lowcase = file_name_data.lower()\n", + " words = re.findall('\\w+', data_lowcase)\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return words\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note, in the following cell, 'words' is converted to a python `set`. This eliminates any duplicate entries." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The first ten words in the text are: \n", + "['o', 'for', 'a', 'muse', 'of', 'fire', 'that', 'would', 'ascend', 'the']\n", + "There are 6116 unique words in the vocabulary.\n" + ] + } + ], + "source": [ + "#DO NOT MODIFY THIS CELL\n", + "word_l = process_data('shakespeare.txt')\n", + "vocab = set(word_l) # this will be your new vocabulary\n", + "print(f\"The first ten words in the text are: \\n{word_l[0:10]}\")\n", + "print(f\"There are {len(vocab)} unique words in the vocabulary.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output\n", + "```Python\n", + "The first ten words in the text are: \n", + "['o', 'for', 'a', 'muse', 'of', 'fire', 'that', 'would', 'ascend', 'the']\n", + "There are 6116 unique words in the vocabulary.\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 2\n", + "\n", + "Implement a `get_count` function that returns a dictionary\n", + "- The dictionary's keys are words\n", + "- The value for each word is the number of times that word appears in the corpus. \n", + "\n", + "For example, given the following sentence: **\"I am happy because I am learning\"**, your dictionary should return the following: \n", + "\n", + "\n", + " \n", + " \n", + " \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Key Value
I 2
am2
happy1
because1
learning1
\n", + "\n", + "\n", + "**Instructions**: \n", + "Implement a `get_count` which returns a dictionary where the key is a word and the value is the number of times the word appears in the list. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "

    \n", + "
  • Try implementing this using a for loop and a regular dictionary. This may be good practice for similar coding interview questions
  • \n", + "
  • You can also use defaultdict instead of a regualr dictionary, along with the for loop
  • \n", + "
  • Otherwise, to skip using a for loop, you can use Python's Counter class
  • \n", + "
\n", + "

" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: get_count\n", + "def get_count(word_l):\n", + " '''\n", + " Input:\n", + " word_l: a set of words representing the corpus. \n", + " Output:\n", + " word_count_dict: The wordcount dictionary where key is the word and value is its frequency.\n", + " '''\n", + " \n", + " word_count_dict = {} # fill this with word counts\n", + " ### START CODE HERE \n", + " word_count_dict = Counter(word_l)\n", + " ### END CODE HERE ### \n", + " return word_count_dict" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There are 6116 key values pairs\n", + "The count for the word 'thee' is 240\n" + ] + } + ], + "source": [ + "#DO NOT MODIFY THIS CELL\n", + "word_count_dict = get_count(word_l)\n", + "print(f\"There are {len(word_count_dict)} key values pairs\")\n", + "print(f\"The count for the word 'thee' is {word_count_dict.get('thee',0)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "#### Expected Output\n", + "```Python\n", + "There are 6116 key values pairs\n", + "The count for the word 'thee' is 240\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 3\n", + "Given the dictionary of word counts, compute the probability that each word will appear if randomly selected from the corpus of words.\n", + "\n", + "$$P(w_i) = \\frac{C(w_i)}{M} \\tag{Eqn-2}$$\n", + "where \n", + "\n", + "$C(w_i)$ is the total number of times $w_i$ appears in the corpus.\n", + "\n", + "$M$ is the total number of words in the corpus.\n", + "\n", + "For example, the probability of the word 'am' in the sentence **'I am happy because I am learning'** is:\n", + "\n", + "$$P(am) = \\frac{C(w_i)}{M} = \\frac {2}{7} \\tag{Eqn-3}.$$\n", + "\n", + "**Instructions:** Implement `get_probs` function which gives you the probability \n", + "that a word occurs in a sample. This returns a dictionary where the keys are words, and the value for each word is its probability in the corpus of words." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "General advice\n", + "

    \n", + "
  • Use dictionary.values()
  • \n", + "
  • Use sum()
  • \n", + "
  • The cardinality (number of words in the corpus should be equal to len(word_l). You will calculate this same number, but using the word count dictionary.
  • \n", + "
\n", + " \n", + "If you're using a for loop:\n", + "
    \n", + "
  • Use dictionary.keys()
  • \n", + "
\n", + " \n", + "If you're using a dictionary comprehension:\n", + "
    \n", + "
  • Use dictionary.items()
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: get_probs\n", + "def get_probs(word_count_dict):\n", + " '''\n", + " Input:\n", + " word_count_dict: The wordcount dictionary where key is the word and value is its frequency.\n", + " Output:\n", + " probs: A dictionary where keys are the words and the values are the probability that a word will occur. \n", + " '''\n", + " probs = {} # return this variable correctly\n", + "\n", + " ### START CODE HERE ###\n", + " m = sum(word_count_dict.values())\n", + " for key in word_count_dict.keys():\n", + " probs[key] = word_count_dict.get(key, 0)/m\n", + " ### END CODE HERE ###\n", + " return probs\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of probs is 6116\n", + "P('thee') is 0.0045\n" + ] + } + ], + "source": [ + "#DO NOT MODIFY THIS CELL\n", + "probs = get_probs(word_count_dict)\n", + "print(f\"Length of probs is {len(probs)}\")\n", + "print(f\"P('thee') is {probs['thee']:.4f}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output\n", + "\n", + "```Python\n", + "Length of probs is 6116\n", + "P('thee') is 0.0045\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Part 2: String Manipulations\n", + "\n", + "Now, that you have computed $P(w_i)$ for all the words in the corpus, you will write a few functions to manipulate strings so that you can edit the erroneous strings and return the right spellings of the words. In this section, you will implement four functions: \n", + "\n", + "* `delete_letter`: given a word, it returns all the possible strings that have **one character removed**. \n", + "* `switch_letter`: given a word, it returns all the possible strings that have **two adjacent letters switched**.\n", + "* `replace_letter`: given a word, it returns all the possible strings that have **one character replaced by another different letter**.\n", + "* `insert_letter`: given a word, it returns all the possible strings that have an **additional character inserted**. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### List comprehensions\n", + "\n", + "String and list manipulation in python will often make use of a python feature called [list comprehensions](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions). The routines below will be described as using list comprehensions, but if you would rather implement them in another way, you are free to do so as long as the result is the same. Further, the following section will provide detailed instructions on how to use list comprehensions and how to implement the desired functions. If you are a python expert, feel free to skip the python hints and move to implementing the routines directly." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Python List Comprehensions embed a looping structure inside of a list declaration, collapsing many lines of code into a single line. If you are not familiar with them, they seem slightly out of order relative to for loops. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 2
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The diagram above shows that the components of a list comprehension are the same components you would find in a typical for loop that appends to a list, but in a different order. With that in mind, we'll continue the specifics of this assignment. We will be very descriptive for the first function, `deletes()`, and less so in later functions as you become familiar with list comprehensions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 4\n", + "\n", + "**Instructions for delete_letter():** Implement a `delete_letter()` function that, given a word, returns a list of strings with one character deleted. \n", + "\n", + "For example, given the word **nice**, it would return the set: {'ice', 'nce', 'nic', 'nie'}. \n", + "\n", + "**Step 1:** Create a list of 'splits'. This is all the ways you can split a word into Left and Right: For example, \n", + "'nice is split into : `[('', 'nice'), ('n', 'ice'), ('ni', 'ce'), ('nic', 'e'), ('nice', '')]`\n", + "This is common to all four functions (delete, replace, switch, insert).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 3
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Step 2:** This is specific to `delete_letter`. Here, we are generating all words that result from deleting one character. \n", + "This can be done in a single line with a list comprehension. You can make use of this type of syntax: \n", + "`[f(a,b) for a, b in splits if condition]` \n", + "\n", + "For our 'nice' example you get: \n", + "['ice', 'nce', 'nie', 'nic']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 4
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Levels of assistance\n", + "\n", + "Try this exercise with these levels of assistance. \n", + "- We hope that this will make it both a meaningful experience but also not a frustrating experience. \n", + "- Start with level 1, then move onto level 2, and 3 as needed.\n", + "\n", + " - Level 1. Try to think this through and implement this yourself.\n", + " - Level 2. Click on the \"Level 2 Hints\" section for some hints to get started.\n", + " - Level 3. If you would prefer more guidance, please click on the \"Level 3 Hints\" cell for step by step instructions.\n", + " \n", + "- If you are still stuck, look at the images in the \"list comprehensions\" section above.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Level 2 Hints\n", + "\n", + "

\n", + "

\n", + "

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Level 3 Hints\n", + "\n", + "

\n", + "

    \n", + "
  • splits: Use array slicing, like my_str[0:2], to separate a string into two pieces.
  • \n", + "
  • Do this in a loop or list comprehension, so that you have a list of tuples.\n", + "
  • For example, \"cake\" can get split into \"ca\" and \"ke\". They're stored in a tuple (\"ca\",\"ke\"), and the tuple is appended to a list. We'll refer to these as L and R, so the tuple is (L,R)
  • \n", + "
  • When choosing the range for your loop, if you input the word \"cans\" and generate the tuple ('cans',''), make sure to include an if statement to check the length of that right-side string (R) in the tuple (L,R)
  • \n", + "
  • deletes: Go through the list of tuples and combine the two strings together. You can use the + operator to combine two strings
  • \n", + "
  • When combining the tuples, make sure that you leave out a middle character.
  • \n", + "
  • Use array slicing to leave out the first character of the right substring.
  • \n", + "
\n", + "

" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C4 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: deletes\n", + "def delete_letter(word, verbose=False):\n", + " '''\n", + " Input:\n", + " word: the string/word for which you will generate all possible words \n", + " in the vocabulary which have 1 missing character\n", + " Output:\n", + " delete_l: a list of all possible strings obtained by deleting 1 character from word\n", + " '''\n", + "\n", + " delete_l = []\n", + " split_l = []\n", + "\n", + " ### START CODE HERE ###\n", + " split_l = [(word[:i], word[i:]) for i in range(len(word))]\n", + " delete_l = [L+R[1:] for (L, R) in split_l if R]\n", + " ### END CODE HERE ###\n", + "\n", + " if verbose:\n", + " print(\n", + " f\"input word {word}, \\nsplit_l = {split_l}, \\ndelete_l = {delete_l}\")\n", + "\n", + " return delete_l\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "input word cans, \n", + "split_l = [('', 'cans'), ('c', 'ans'), ('ca', 'ns'), ('can', 's')], \n", + "delete_l = ['ans', 'cns', 'cas', 'can']\n" + ] + } + ], + "source": [ + "delete_word_l = delete_letter(word=\"cans\",\n", + " verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output\n", + "```CPP\n", + "Note: You might get a slightly different result with split_l\n", + "\n", + "input word cans, \n", + "split_l = [('', 'cans'), ('c', 'ans'), ('ca', 'ns'), ('can', 's')], \n", + "delete_l = ['ans', 'cns', 'cas', 'can']\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 1\n", + "- Notice how it has the extra tuple `('cans', '')`.\n", + "- This will be fine as long as you have checked the size of the right-side substring in tuple (L,R).\n", + "- Can you explain why this will give you the same result for the list of deletion strings (delete_l)?\n", + "\n", + "```CPP\n", + "input word cans, \n", + "split_l = [('', 'cans'), ('c', 'ans'), ('ca', 'ns'), ('can', 's'), ('cans', '')], \n", + "delete_l = ['ans', 'cns', 'cas', 'can']\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 2\n", + "If you end up getting the same word as your input word, like this:\n", + "\n", + "```Python\n", + "input word cans, \n", + "split_l = [('', 'cans'), ('c', 'ans'), ('ca', 'ns'), ('can', 's'), ('cans', '')], \n", + "delete_l = ['ans', 'cns', 'cas', 'can', 'cans']\n", + "```\n", + "\n", + "- Check how you set the `range`.\n", + "- See if you check the length of the string on the right-side of the split." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of outputs of delete_letter('at') is 2\n" + ] + } + ], + "source": [ + "# test # 2\n", + "print(f\"Number of outputs of delete_letter('at') is {len(delete_letter('at'))}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected output\n", + "\n", + "```CPP\n", + "Number of outputs of delete_letter('at') is 2\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 5\n", + "\n", + "**Instructions for switch_letter()**: Now implement a function that switches two letters in a word. It takes in a word and returns a list of all the possible switches of two letters **that are adjacent to each other**. \n", + "- For example, given the word 'eta', it returns {'eat', 'tea'}, but does not return 'ate'.\n", + "\n", + "**Step 1:** is the same as in delete_letter() \n", + "**Step 2:** A list comprehension or for loop which forms strings by swapping adjacent letters. This is of the form: \n", + "`[f(L,R) for L, R in splits if condition]` where 'condition' will test the length of R in a given iteration. See below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 5
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Levels of difficulty\n", + "\n", + "Try this exercise with these levels of difficulty. \n", + "- Level 1. Try to think this through and implement this yourself.\n", + "- Level 2. Click on the \"Level 2 Hints\" section for some hints to get started.\n", + "- Level 3. If you would prefer more guidance, please click on the \"Level 3 Hints\" cell for step by step instructions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Level 2 Hints\n", + "\n", + "

\n", + "

\n", + "

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Level 3 Hints\n", + "\n", + "

\n", + "

    \n", + "
  • splits: Use array slicing, like my_str[0:2], to separate a string into two pieces.
  • \n", + "
  • Splitting is the same as for delete_letter
  • \n", + "
  • To perform the switch, go through the list of tuples and combine four strings together. You can use the + operator to combine strings
  • \n", + "
  • The four strings will be the left substring from the split tuple, followed by the first (index 1) character of the right substring, then the zero-th character (index 0) of the right substring, and then the remaining part of the right substring.
  • \n", + "
  • Unlike delete_letter, you will want to check that your right substring is at least a minimum length. To see why, review the previous hint bullet point (directly before this one).
  • \n", + "
\n", + "

" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C5 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: switches\n", + "def switch_letter(word, verbose=False):\n", + " '''\n", + " Input:\n", + " word: input string\n", + " Output:\n", + " switches: a list of all possible strings with one adjacent charater switched\n", + " '''\n", + "\n", + " switch_l = []\n", + " split_l = []\n", + "\n", + " ### START CODE HERE ###\n", + " split_l = [(word[:i], word[i:]) for i in range(len(word))]\n", + " switch_l = [L+R[1]+R[0]+R[2:] for (L, R) in split_l if len(R) >= 2]\n", + " ### END CODE HERE ###\n", + "\n", + " if verbose:\n", + " print(\n", + " f\"Input word = {word} \\nsplit_l = {split_l} \\nswitch_l = {switch_l}\")\n", + "\n", + " return switch_l\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input word = eta \n", + "split_l = [('', 'eta'), ('e', 'ta'), ('et', 'a')] \n", + "switch_l = ['tea', 'eat']\n" + ] + } + ], + "source": [ + "switch_word_l = switch_letter(word=\"eta\",\n", + " verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected output\n", + "\n", + "```Python\n", + "Input word = eta \n", + "split_l = [('', 'eta'), ('e', 'ta'), ('et', 'a')] \n", + "switch_l = ['tea', 'eat']\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 1\n", + "\n", + "You may get this:\n", + "```Python\n", + "Input word = eta \n", + "split_l = [('', 'eta'), ('e', 'ta'), ('et', 'a'), ('eta', '')] \n", + "switch_l = ['tea', 'eat']\n", + "```\n", + "- Notice how it has the extra tuple `('eta', '')`.\n", + "- This is also correct.\n", + "- Can you think of why this is the case?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 2\n", + "\n", + "If you get an error\n", + "```Python\n", + "IndexError: string index out of range\n", + "```\n", + "- Please see if you have checked the length of the strings when switching characters." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of outputs of switch_letter('at') is 1\n" + ] + } + ], + "source": [ + "# test # 2\n", + "print(f\"Number of outputs of switch_letter('at') is {len(switch_letter('at'))}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected output\n", + "\n", + "```CPP\n", + "Number of outputs of switch_letter('at') is 1\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 6\n", + "**Instructions for replace_letter()**: Now implement a function that takes in a word and returns a list of strings with one **replaced letter** from the original word. \n", + "\n", + "**Step 1:** is the same as in `delete_letter()`\n", + "\n", + "**Step 2:** A list comprehension or for loop which form strings by replacing letters. This can be of the form: \n", + "`[f(a,b,c) for a, b in splits if condition for c in string]` Note the use of the second for loop. \n", + "It is expected in this routine that one or more of the replacements will include the original word. For example, replacing the first letter of 'ear' with 'e' will return 'ear'.\n", + "\n", + "**Step 3:** Remove the original input letter from the output." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "

    \n", + "
  • To remove a word from a list, first store its contents inside a set()
  • \n", + "
  • Use set.discard('the_word') to remove a word in a set (if the word does not exist in the set, then it will not throw a KeyError. Using set.remove('the_word') throws a KeyError if the word does not exist in the set.
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C6 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: replaces\n", + "def replace_letter(word, verbose=False):\n", + " '''\n", + " Input:\n", + " word: the input string/word \n", + " Output:\n", + " replaces: a list of all possible strings where we replaced one letter from the original word. \n", + " ''' \n", + " \n", + " letters = 'abcdefghijklmnopqrstuvwxyz'\n", + " replace_l = []\n", + " split_l = []\n", + " \n", + " ### START CODE HERE ###\n", + "\n", + " split_l = [(word[:i],word[i:]) for i in range(len(word))]\n", + " replace_set = [(L+letter+R[1:]) for letter in letters for L,R in split_l if R]\n", + " replace_set.remove(word)\n", + " ### END CODE HERE ###\n", + " \n", + " # turn the set back into a list and sort it, for easier viewing\n", + " replace_l = sorted(list(replace_set))\n", + " \n", + " if verbose: print(f\"Input word = {word} \\nsplit_l = {split_l} \\nreplace_l {replace_l}\") \n", + " \n", + " return replace_l" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input word = can \n", + "split_l = [('', 'can'), ('c', 'an'), ('ca', 'n')] \n", + "replace_l ['aan', 'ban', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'can', 'can', 'cao', 'cap', 'caq', 'car', 'cas', 'cat', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cbn', 'ccn', 'cdn', 'cen', 'cfn', 'cgn', 'chn', 'cin', 'cjn', 'ckn', 'cln', 'cmn', 'cnn', 'con', 'cpn', 'cqn', 'crn', 'csn', 'ctn', 'cun', 'cvn', 'cwn', 'cxn', 'cyn', 'czn', 'dan', 'ean', 'fan', 'gan', 'han', 'ian', 'jan', 'kan', 'lan', 'man', 'nan', 'oan', 'pan', 'qan', 'ran', 'san', 'tan', 'uan', 'van', 'wan', 'xan', 'yan', 'zan']\n" + ] + } + ], + "source": [ + "replace_l = replace_letter(word='can',\n", + " verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output**: \n", + "```Python\n", + "Input word = can \n", + "split_l = [('', 'can'), ('c', 'an'), ('ca', 'n')] \n", + "replace_l ['aan', 'ban', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'cao', 'cap', 'caq', 'car', 'cas', 'cat', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cbn', 'ccn', 'cdn', 'cen', 'cfn', 'cgn', 'chn', 'cin', 'cjn', 'ckn', 'cln', 'cmn', 'cnn', 'con', 'cpn', 'cqn', 'crn', 'csn', 'ctn', 'cun', 'cvn', 'cwn', 'cxn', 'cyn', 'czn', 'dan', 'ean', 'fan', 'gan', 'han', 'ian', 'jan', 'kan', 'lan', 'man', 'nan', 'oan', 'pan', 'qan', 'ran', 'san', 'tan', 'uan', 'van', 'wan', 'xan', 'yan', 'zan']\n", + "```\n", + "- Note how the input word 'can' should not be one of the output words." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 1\n", + "If you get something like this:\n", + "\n", + "```Python\n", + "Input word = can \n", + "split_l = [('', 'can'), ('c', 'an'), ('ca', 'n'), ('can', '')] \n", + "replace_l ['aan', 'ban', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'cao', 'cap', 'caq', 'car', 'cas', 'cat', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cbn', 'ccn', 'cdn', 'cen', 'cfn', 'cgn', 'chn', 'cin', 'cjn', 'ckn', 'cln', 'cmn', 'cnn', 'con', 'cpn', 'cqn', 'crn', 'csn', 'ctn', 'cun', 'cvn', 'cwn', 'cxn', 'cyn', 'czn', 'dan', 'ean', 'fan', 'gan', 'han', 'ian', 'jan', 'kan', 'lan', 'man', 'nan', 'oan', 'pan', 'qan', 'ran', 'san', 'tan', 'uan', 'van', 'wan', 'xan', 'yan', 'zan']\n", + "```\n", + "- Notice how split_l has an extra tuple `('can', '')`, but the output is still the same, so this is okay." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 2\n", + "If you get something like this:\n", + "```Python\n", + "Input word = can \n", + "split_l = [('', 'can'), ('c', 'an'), ('ca', 'n'), ('can', '')] \n", + "replace_l ['aan', 'ban', 'caa', 'cab', 'cac', 'cad', 'cae', 'caf', 'cag', 'cah', 'cai', 'caj', 'cak', 'cal', 'cam', 'cana', 'canb', 'canc', 'cand', 'cane', 'canf', 'cang', 'canh', 'cani', 'canj', 'cank', 'canl', 'canm', 'cann', 'cano', 'canp', 'canq', 'canr', 'cans', 'cant', 'canu', 'canv', 'canw', 'canx', 'cany', 'canz', 'cao', 'cap', 'caq', 'car', 'cas', 'cat', 'cau', 'cav', 'caw', 'cax', 'cay', 'caz', 'cbn', 'ccn', 'cdn', 'cen', 'cfn', 'cgn', 'chn', 'cin', 'cjn', 'ckn', 'cln', 'cmn', 'cnn', 'con', 'cpn', 'cqn', 'crn', 'csn', 'ctn', 'cun', 'cvn', 'cwn', 'cxn', 'cyn', 'czn', 'dan', 'ean', 'fan', 'gan', 'han', 'ian', 'jan', 'kan', 'lan', 'man', 'nan', 'oan', 'pan', 'qan', 'ran', 'san', 'tan', 'uan', 'van', 'wan', 'xan', 'yan', 'zan']\n", + "```\n", + "- Notice how there are strings that are 1 letter longer than the original word, such as `cana`.\n", + "- Please check for the case when there is an empty string `''`, and if so, do not use that empty string when setting replace_l." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of outputs of switch_letter('at') is 1\n" + ] + } + ], + "source": [ + "# test # 2\n", + "print(f\"Number of outputs of switch_letter('at') is {len(switch_letter('at'))}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected output\n", + "```CPP\n", + "Number of outputs of switch_letter('at') is 1\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 7\n", + "\n", + "**Instructions for insert_letter()**: Now implement a function that takes in a word and returns a list with a letter inserted at every offset.\n", + "\n", + "**Step 1:** is the same as in `delete_letter()`\n", + "\n", + "**Step 2:** This can be a list comprehension of the form: \n", + "`[f(a,b,c) for a, b in splits if condition for c in string]` " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C7 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: inserts\n", + "def insert_letter(word, verbose=False):\n", + " '''\n", + " Input:\n", + " word: the input string/word \n", + " Output:\n", + " inserts: a set of all possible strings with one new letter inserted at every offset\n", + " '''\n", + " letters = 'abcdefghijklmnopqrstuvwxyz'\n", + " insert_l = []\n", + " split_l = []\n", + "\n", + " ### START CODE HERE ###\n", + " split_l = [(word[:i], word[i:]) for i in range(len(word)+1)]\n", + " insert_l = [L+letter+R for L, R in split_l for letter in letters]\n", + " ### END CODE HERE ###\n", + "\n", + " if verbose:\n", + " print(\n", + " f\"Input word {word} \\nsplit_l = {split_l} \\ninsert_l = {insert_l}\")\n", + "\n", + " return insert_l\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input word at \n", + "split_l = [('', 'at'), ('a', 't'), ('at', '')] \n", + "insert_l = ['aat', 'bat', 'cat', 'dat', 'eat', 'fat', 'gat', 'hat', 'iat', 'jat', 'kat', 'lat', 'mat', 'nat', 'oat', 'pat', 'qat', 'rat', 'sat', 'tat', 'uat', 'vat', 'wat', 'xat', 'yat', 'zat', 'aat', 'abt', 'act', 'adt', 'aet', 'aft', 'agt', 'aht', 'ait', 'ajt', 'akt', 'alt', 'amt', 'ant', 'aot', 'apt', 'aqt', 'art', 'ast', 'att', 'aut', 'avt', 'awt', 'axt', 'ayt', 'azt', 'ata', 'atb', 'atc', 'atd', 'ate', 'atf', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz']\n", + "Number of strings output by insert_letter('at') is 78\n" + ] + } + ], + "source": [ + "insert_l = insert_letter('at', True)\n", + "print(f\"Number of strings output by insert_letter('at') is {len(insert_l)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected output\n", + "\n", + "```Python\n", + "Input word at \n", + "split_l = [('', 'at'), ('a', 't'), ('at', '')] \n", + "insert_l = ['aat', 'bat', 'cat', 'dat', 'eat', 'fat', 'gat', 'hat', 'iat', 'jat', 'kat', 'lat', 'mat', 'nat', 'oat', 'pat', 'qat', 'rat', 'sat', 'tat', 'uat', 'vat', 'wat', 'xat', 'yat', 'zat', 'aat', 'abt', 'act', 'adt', 'aet', 'aft', 'agt', 'aht', 'ait', 'ajt', 'akt', 'alt', 'amt', 'ant', 'aot', 'apt', 'aqt', 'art', 'ast', 'att', 'aut', 'avt', 'awt', 'axt', 'ayt', 'azt', 'ata', 'atb', 'atc', 'atd', 'ate', 'atf', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz']\n", + "Number of strings output by insert_letter('at') is 78\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 1\n", + "\n", + "If you get a split_l like this:\n", + "```Python\n", + "Input word at \n", + "split_l = [('', 'at'), ('a', 't')] \n", + "insert_l = ['aat', 'bat', 'cat', 'dat', 'eat', 'fat', 'gat', 'hat', 'iat', 'jat', 'kat', 'lat', 'mat', 'nat', 'oat', 'pat', 'qat', 'rat', 'sat', 'tat', 'uat', 'vat', 'wat', 'xat', 'yat', 'zat', 'aat', 'abt', 'act', 'adt', 'aet', 'aft', 'agt', 'aht', 'ait', 'ajt', 'akt', 'alt', 'amt', 'ant', 'aot', 'apt', 'aqt', 'art', 'ast', 'att', 'aut', 'avt', 'awt', 'axt', 'ayt', 'azt']\n", + "Number of strings output by insert_letter('at') is 52\n", + "```\n", + "- Notice that split_l is missing the extra tuple ('at', ''). For insertion, we actually **WANT** this tuple.\n", + "- The function is not creating all the desired output strings.\n", + "- Check the range that you use for the for loop." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Note 2\n", + "If you see this:\n", + "```Python\n", + "Input word at \n", + "split_l = [('', 'at'), ('a', 't'), ('at', '')] \n", + "insert_l = ['aat', 'bat', 'cat', 'dat', 'eat', 'fat', 'gat', 'hat', 'iat', 'jat', 'kat', 'lat', 'mat', 'nat', 'oat', 'pat', 'qat', 'rat', 'sat', 'tat', 'uat', 'vat', 'wat', 'xat', 'yat', 'zat', 'aat', 'abt', 'act', 'adt', 'aet', 'aft', 'agt', 'aht', 'ait', 'ajt', 'akt', 'alt', 'amt', 'ant', 'aot', 'apt', 'aqt', 'art', 'ast', 'att', 'aut', 'avt', 'awt', 'axt', 'ayt', 'azt']\n", + "Number of strings output by insert_letter('at') is 52\n", + "```\n", + "\n", + "- Even though you may have fixed the split_l so that it contains the tuple `('at', '')`, notice that you're still missing some output strings.\n", + " - Notice that it's missing strings such as 'ata', 'atb', 'atc' all the way to 'atz'.\n", + "- To fix this, make sure that when you set insert_l, you allow the use of the empty string `''`." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of outputs of insert_letter('at') is 78\n" + ] + } + ], + "source": [ + "# test # 2\n", + "print(f\"Number of outputs of insert_letter('at') is {len(insert_letter('at'))}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected output\n", + "\n", + "```CPP\n", + "Number of outputs of insert_letter('at') is 78\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# Part 3: Combining the edits\n", + "\n", + "Now that you have implemented the string manipulations, you will create two functions that, given a string, will return all the possible single and double edits on that string. These will be `edit_one_letter()` and `edit_two_letters()`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## 3.1 Edit one letter\n", + "\n", + "\n", + "### Exercise 8\n", + "\n", + "**Instructions**: Implement the `edit_one_letter` function to get all the possible edits that are one edit away from a word. The edits consist of the replace, insert, delete, and optionally the switch operation. You should use the previous functions you have already implemented to complete this function. The 'switch' function is a less common edit function, so its use will be selected by an \"allow_switches\" input argument.\n", + "\n", + "Note that those functions return *lists* while this function should return a *python set*. Utilizing a set eliminates any duplicate entries." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "

    \n", + "
  • Each of the functions returns a list. You can combine lists using the `+` operator.
  • \n", + "
  • To get unique strings (avoid duplicates), you can use the set() function.
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C8 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: edit_one_letter\n", + "def edit_one_letter(word, allow_switches = True):\n", + " \"\"\"\n", + " Input:\n", + " word: the string/word for which we will generate all possible wordsthat are one edit away.\n", + " Output:\n", + " edit_one_set: a set of words with one possible edit. Please return a set. and not a list.\n", + " \"\"\"\n", + " \n", + " edit_one_set = set()\n", + " \n", + " ### START CODE HERE ###\n", + " edit_one_set.update(insert_letter(word))\n", + " edit_one_set.update(delete_letter(word))\n", + " edit_one_set.update(replace_letter(word))\n", + " if allow_switches:\n", + " edit_one_set.update(switch_letter(word))\n", + " # edit_one_set.remove(word)\n", + " ### END CODE HERE ###\n", + "\n", + " return edit_one_set" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "input word at \n", + "edit_one_l \n", + "['a', 'aa', 'aat', 'ab', 'abt', 'ac', 'act', 'ad', 'adt', 'ae', 'aet', 'af', 'aft', 'ag', 'agt', 'ah', 'aht', 'ai', 'ait', 'aj', 'ajt', 'ak', 'akt', 'al', 'alt', 'am', 'amt', 'an', 'ant', 'ao', 'aot', 'ap', 'apt', 'aq', 'aqt', 'ar', 'art', 'as', 'ast', 'at', 'ata', 'atb', 'atc', 'atd', 'ate', 'atf', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz', 'au', 'aut', 'av', 'avt', 'aw', 'awt', 'ax', 'axt', 'ay', 'ayt', 'az', 'azt', 'bat', 'bt', 'cat', 'ct', 'dat', 'dt', 'eat', 'et', 'fat', 'ft', 'gat', 'gt', 'hat', 'ht', 'iat', 'it', 'jat', 'jt', 'kat', 'kt', 'lat', 'lt', 'mat', 'mt', 'nat', 'nt', 'oat', 'ot', 'pat', 'pt', 'qat', 'qt', 'rat', 'rt', 'sat', 'st', 't', 'ta', 'tat', 'tt', 'uat', 'ut', 'vat', 'vt', 'wat', 'wt', 'xat', 'xt', 'yat', 'yt', 'zat', 'zt']\n", + "\n", + "The type of the returned object should be a set \n", + "Number of outputs from edit_one_letter('at') is 130\n" + ] + } + ], + "source": [ + "tmp_word = \"at\"\n", + "tmp_edit_one_set = edit_one_letter(tmp_word)\n", + "# turn this into a list to sort it, in order to view it\n", + "tmp_edit_one_l = sorted(list(tmp_edit_one_set))\n", + "\n", + "print(f\"input word {tmp_word} \\nedit_one_l \\n{tmp_edit_one_l}\\n\")\n", + "print(f\"The type of the returned object should be a set {type(tmp_edit_one_set)}\")\n", + "print(f\"Number of outputs from edit_one_letter('at') is {len(edit_one_letter('at'))}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output\n", + "```CPP\n", + "input word at \n", + "edit_one_l \n", + "['a', 'aa', 'aat', 'ab', 'abt', 'ac', 'act', 'ad', 'adt', 'ae', 'aet', 'af', 'aft', 'ag', 'agt', 'ah', 'aht', 'ai', 'ait', 'aj', 'ajt', 'ak', 'akt', 'al', 'alt', 'am', 'amt', 'an', 'ant', 'ao', 'aot', 'ap', 'apt', 'aq', 'aqt', 'ar', 'art', 'as', 'ast', 'ata', 'atb', 'atc', 'atd', 'ate', 'atf', 'atg', 'ath', 'ati', 'atj', 'atk', 'atl', 'atm', 'atn', 'ato', 'atp', 'atq', 'atr', 'ats', 'att', 'atu', 'atv', 'atw', 'atx', 'aty', 'atz', 'au', 'aut', 'av', 'avt', 'aw', 'awt', 'ax', 'axt', 'ay', 'ayt', 'az', 'azt', 'bat', 'bt', 'cat', 'ct', 'dat', 'dt', 'eat', 'et', 'fat', 'ft', 'gat', 'gt', 'hat', 'ht', 'iat', 'it', 'jat', 'jt', 'kat', 'kt', 'lat', 'lt', 'mat', 'mt', 'nat', 'nt', 'oat', 'ot', 'pat', 'pt', 'qat', 'qt', 'rat', 'rt', 'sat', 'st', 't', 'ta', 'tat', 'tt', 'uat', 'ut', 'vat', 'vt', 'wat', 'wt', 'xat', 'xt', 'yat', 'yt', 'zat', 'zt']\n", + "\n", + "The type of the returned object should be a set \n", + "Number of outputs from edit_one_letter('at') is 129\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Part 3.2 Edit two letters\n", + "\n", + "\n", + "### Exercise 9\n", + "\n", + "Now you can generalize this to implement to get two edits on a word. To do so, you would have to get all the possible edits on a single word and then for each modified word, you would have to modify it again. \n", + "\n", + "**Instructions**: Implement the `edit_two_letters` function that returns a set of words that are two edits away. Note that creating additional edits based on the `edit_one_letter` function may 'restore' some one_edits to zero or one edits. That is allowed here. This accounted for in get_corrections." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "

    \n", + "
  • You will likely want to take the union of two sets.
  • \n", + "
  • You can either use set.union() or use the '|' (or operator) to union two sets
  • \n", + "
  • See the documentation Python sets for examples of using operators or functions of the Python set.
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C9 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: edit_two_letters\n", + "def edit_two_letters(word, allow_switches=True):\n", + " '''\n", + " Input:\n", + " word: the input string/word \n", + " Output:\n", + " edit_two_set: a set of strings with all possible two edits\n", + " '''\n", + "\n", + " edit_two_set = set()\n", + "\n", + " ### START CODE HERE ###\n", + " tmp_edit_one_set = edit_one_letter(word, allow_switches)\n", + " # edit_two_set.update(edit_one_letter(tmp, allow_switches)\n", + " # for tmp in tmp_edit_one_set if tmp)\n", + " for tmp in tmp_edit_one_set:\n", + " if tmp:\n", + " tmp_edit_two_set = edit_one_letter(tmp,allow_switches)\n", + " edit_two_set.update(tmp_edit_two_set)\n", + " ### END CODE HERE ###\n", + "\n", + " return edit_two_set\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of strings with edit distance of two: 2654\n", + "First 10 strings ['', 'a', 'aa', 'aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag']\n", + "Last 10 strings ['zv', 'zva', 'zw', 'zwa', 'zx', 'zxa', 'zy', 'zya', 'zz', 'zza']\n", + "The data type of the returned object should be a set \n", + "Number of strings that are 2 edit distances from 'at' is 7154\n" + ] + } + ], + "source": [ + "tmp_edit_two_set = edit_two_letters(\"a\")\n", + "tmp_edit_two_l = sorted(list(tmp_edit_two_set))\n", + "print(f\"Number of strings with edit distance of two: {len(tmp_edit_two_l)}\")\n", + "print(f\"First 10 strings {tmp_edit_two_l[:10]}\")\n", + "print(f\"Last 10 strings {tmp_edit_two_l[-10:]}\")\n", + "print(f\"The data type of the returned object should be a set {type(tmp_edit_two_set)}\")\n", + "print(f\"Number of strings that are 2 edit distances from 'at' is {len(edit_two_letters('at'))}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output\n", + "\n", + "```CPP\n", + "Number of strings with edit distance of two: 2654\n", + "First 10 strings ['', 'a', 'aa', 'aaa', 'aab', 'aac', 'aad', 'aae', 'aaf', 'aag']\n", + "Last 10 strings ['zv', 'zva', 'zw', 'zwa', 'zx', 'zxa', 'zy', 'zya', 'zz', 'zza']\n", + "The data type of the returned object should be a set \n", + "Number of strings that are 2 edit distances from 'at' is 7154\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Part 3-3: suggest spelling suggestions\n", + "\n", + "Now you will use your `edit_two_letters` function to get a set of all the possible 2 edits on your word. You will then use those strings to get the most probable word you meant to type aka your typing suggestion.\n", + "\n", + "\n", + "### Exercise 10\n", + "**Instructions**: Implement `get_corrections`, which returns a list of zero to n possible suggestion tuples of the form (word, probability_of_word). \n", + "\n", + "**Step 1:** Generate suggestions for a supplied word: You'll use the edit functions you have developed. The 'suggestion algorithm' should follow this logic: \n", + "* If the word is in the vocabulary, suggest the word. \n", + "* Otherwise, if there are suggestions from `edit_one_letter` that are in the vocabulary, use those. \n", + "* Otherwise, if there are suggestions from `edit_two_letters` that are in the vocabulary, use those. \n", + "* Otherwise, suggest the input word.* \n", + "* The idea is that words generated from fewer edits are more likely than words with more edits.\n", + "\n", + "\n", + "Note: \n", + "- Edits of one or two letters may 'restore' strings to either zero or one edit. This algorithm accounts for this by preferentially selecting lower distance edits first." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Short circuit\n", + "In Python, logical operations such as `and` and `or` have two useful properties. They can operate on lists and they have ['short-circuit' behavior](https://docs.python.org/3/library/stdtypes.html). Try these:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[]\n", + "['a', 'b']\n", + "['Most', 'Likely']\n", + "['least', 'of', 'all']\n" + ] + } + ], + "source": [ + "# example of logical operation on lists or sets\n", + "print( [] and [\"a\",\"b\"] )\n", + "print( [] or [\"a\",\"b\"] )\n", + "#example of Short circuit behavior\n", + "val1 = [\"Most\",\"Likely\"] or [\"Less\",\"so\"] or [\"least\",\"of\",\"all\"] # selects first, does not evalute remainder\n", + "print(val1)\n", + "val2 = [] or [] or [\"least\",\"of\",\"all\"] # continues evaluation until there is a non-empty list\n", + "print(val2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The logical `or` could be used to implement the suggestion algorithm very compactly. Alternately, if/then constructs could be used.\n", + " \n", + "**Step 2**: Create a 'best_words' dictionary where the 'key' is a suggestion and the 'value' is the probability of that word in your vocabulary. If the word is not in the vocabulary, assign it a probability of 0.\n", + "\n", + "**Step 3**: Select the n best suggestions. There may be fewer than n." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "

    \n", + "
  • edit_one_letter and edit_two_letters return *python sets*.
  • \n", + "
  • Sets have a handy set.intersection feature
  • \n", + "
  • To find the keys that have the highest values in a dictionary, you can use the Counter dictionary to create a Counter object from a regular dictionary. Then you can use Counter.most_common(n) to get the n most common keys.\n", + "
  • \n", + "
  • To find the intersection of two sets, you can use set.intersection or the & operator.
  • \n", + "
  • If you are not as familiar with short circuit syntax (as shown above), feel free to use if else statements instead.
  • \n", + "
  • To use an if statement to check of a set is empty, use 'if not x:' syntax
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C10 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# UNIT TEST COMMENT: Candidate for Table Driven Tests\n", + "# GRADED FUNCTION: get_corrections\n", + "def get_corrections(word, probs, vocab, n=2, verbose=False):\n", + " '''\n", + " Input: \n", + " word: a user entered string to check for suggestions\n", + " probs: a dictionary that maps each word to its probability in the corpus\n", + " vocab: a set containing all the vocabulary\n", + " n: number of possible word corrections you want returned in the dictionary\n", + " Output: \n", + " n_best: a list of tuples with the most probable n corrected words and their probabilities.\n", + " '''\n", + "\n", + " suggestions = []\n", + " n_best = []\n", + "\n", + " ### START CODE HERE ###\n", + " # if probs.get(word):\n", + " # suggestions.append(word)\n", + " # edit_one = edit_one_letter(word)\n", + " # for tmp in edit_one:\n", + " # if probs.get(tmp):\n", + " # suggestions.append(tmp)\n", + " # edit_two = edit_two_letters(word)\n", + " # for tmp in edit_two:\n", + " # if probs.get(tmp):\n", + " # suggestions.append(tmp)\n", + " # suggestions = suggestions[:n]\n", + " suggestions = list((word in vocab and word) or edit_one_letter(word).intersection(vocab) or edit_two_letters(word).intersection(vocab))\n", + " n_best = [[s,probs[s]] for s in suggestions]\n", + " ### END CODE HERE ###\n", + " # n_best = [(x,probs.get(x)/len(vocab)) for x in suggestions]\n", + " if verbose:\n", + " print(\"entered word = \", word, \"\\nsuggestions = \", suggestions)\n", + "\n", + " return n_best\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "entered word = dys \n", + "suggestions = ['days', 'dye']\n", + "word 0: days, probability 0.000410\n", + "word 1: dye, probability 0.000019\n", + "data type of corrections \n" + ] + } + ], + "source": [ + "# Test your implementation - feel free to try other words in my word\n", + "my_word = 'dys' \n", + "tmp_corrections = get_corrections(my_word, probs, vocab, 2, verbose=True) # keep verbose=True\n", + "for i, word_prob in enumerate(tmp_corrections):\n", + " print(f\"word {i}: {word_prob[0]}, probability {word_prob[1]:.6f}\")\n", + "\n", + "# CODE REVIEW COMMENT: using \"tmp_corrections\" insteads of \"cors\". \"cors\" is not defined\n", + "print(f\"data type of corrections {type(tmp_corrections)}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Expected Output\n", + "- Note: This expected output is for `my_word = 'dys'`. Also, keep `verbose=True`\n", + "```CPP\n", + "entered word = dys \n", + "suggestions = {'days', 'dye'}\n", + "word 0: days, probability 0.000410\n", + "word 1: dye, probability 0.000019\n", + "data type of corrections \n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Part 4: Minimum Edit distance\n", + "\n", + "Now that you have implemented your auto-correct, how do you evaluate the similarity between two strings? For example: 'waht' and 'what'\n", + "\n", + "Also how do you efficiently find the shortest path to go from the word, 'waht' to the word 'what'?\n", + "\n", + "You will implement a dynamic programming system that will tell you the minimum number of edits required to convert a string into another string." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Part 4.1 Dynamic Programming\n", + "\n", + "Dynamic Programming breaks a problem down into subproblems which can be combined to form the final solution. Here, given a string source[0..i] and a string target[0..j], we will compute all the combinations of substrings[i, j] and calculate their edit distance. To do this efficiently, we will use a table to maintain the previously computed substrings and use those to calculate larger substrings.\n", + "\n", + "You have to create a matrix and update each element in the matrix as follows: " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\\text{Initialization}$$\n", + "\n", + "\\begin{align}\n", + "D[0,0] &= 0 \\\\\n", + "D[i,0] &= D[i-1,0] + del\\_cost(source[i]) \\tag{4}\\\\\n", + "D[0,j] &= D[0,j-1] + ins\\_cost(target[j]) \\\\\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "$$\\text{Per Cell Operations}$$\n", + "\\begin{align}\n", + " \\\\\n", + "D[i,j] =min\n", + "\\begin{cases}\n", + "D[i-1,j] + del\\_cost\\\\\n", + "D[i,j-1] + ins\\_cost\\\\\n", + "D[i-1,j-1] + \\left\\{\\begin{matrix}\n", + "rep\\_cost; & if src[i]\\neq tar[j]\\\\\n", + "0 ; & if src[i]=tar[j]\n", + "\\end{matrix}\\right.\n", + "\\end{cases}\n", + "\\tag{5}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So converting the source word **play** to the target word **stay**, using an input cost of one, a delete cost of 1, and replace cost of 2 would give you the following table:\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "
# s t a y
# 0 1 2 3 4
p 1 2 3 4 5
l 23456
a 34545
y 45654
\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The operations used in this algorithm are 'insert', 'delete', and 'replace'. These correspond to the functions that you defined earlier: insert_letter(), delete_letter() and replace_letter(). switch_letter() is not used here." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The diagram below describes how to initialize the table. Each entry in D[i,j] represents the minimum cost of converting string source[0:i] to string target[0:j]. The first column is initialized to represent the cumulative cost of deleting the source characters to convert string \"EER\" to \"\". The first row is initialized to represent the cumulative cost of inserting the target characters to convert from \"\" to \"NEAR\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 6 Initializing Distance Matrix
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Filling in the remainder of the table utilizes the 'Per Cell Operations' in the equation (5) above. Note, the diagram below includes in the table some of the 3 sub-calculations shown in light grey. Only 'min' of those operations is stored in the table in the `min_edit_distance()` function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 7 Filling Distance Matrix
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the formula for $D[i,j]$ shown in the image is equivalent to:\n", + "\n", + "\\begin{align}\n", + " \\\\\n", + "D[i,j] =min\n", + "\\begin{cases}\n", + "D[i-1,j] + del\\_cost\\\\\n", + "D[i,j-1] + ins\\_cost\\\\\n", + "D[i-1,j-1] + \\left\\{\\begin{matrix}\n", + "rep\\_cost; & if src[i]\\neq tar[j]\\\\\n", + "0 ; & if src[i]=tar[j]\n", + "\\end{matrix}\\right.\n", + "\\end{cases}\n", + "\\tag{5}\n", + "\\end{align}\n", + "\n", + "The variable `sub_cost` (for substitution cost) is the same as `rep_cost`; replacement cost. We will stick with the term \"replace\" whenever possible." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below are some examples of cells where replacement is used. This also shows the minimum path from the lower right final position where \"EER\" has been replaced by \"NEAR\" back to the start. This provides a starting point for the optional 'backtrace' algorithm below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\"alternate Figure 8 Examples Distance Matrix
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "### Exercise 11\n", + "\n", + "Again, the word \"substitution\" appears in the figure, but think of this as \"replacement\"." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Instructions**: Implement the function below to get the minimum amount of edits required given a source string and a target string. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "\n", + " Hints\n", + "\n", + "

\n", + "

    \n", + "
  • The range(start, stop, step) function excludes 'stop' from its output
  • \n", + "
  • words
  • \n", + "
\n", + "

\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C11 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: min_edit_distance\n", + "def min_edit_distance(source, target, ins_cost=1, del_cost=1, rep_cost=2):\n", + " '''\n", + " Input: \n", + " source: a string corresponding to the string you are starting with\n", + " target: a string corresponding to the string you want to end with\n", + " ins_cost: an integer setting the insert cost\n", + " del_cost: an integer setting the delete cost\n", + " rep_cost: an integer setting the replace cost\n", + " Output:\n", + " D: a matrix of len(source)+1 by len(target)+1 containing minimum edit distances\n", + " med: the minimum edit distance (med) required to convert the source string to the target\n", + " '''\n", + " # use deletion and insert cost as 1\n", + " m = len(source)\n", + " n = len(target)\n", + " # initialize cost matrix with zeros and dimensions (m+1,n+1)\n", + " D = np.zeros((m+1, n+1), dtype=int)\n", + "\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + "\n", + " # Fill in column 0, from row 1 to row m, both inclusive\n", + " for row in range(1, m+1): # Replace None with the proper range\n", + " D[row, 0] = D[row-1, 0]+del_cost\n", + "\n", + " # Fill in row 0, for all columns from 1 to n, both inclusive\n", + " for col in range(1, n+1): # Replace None with the proper range\n", + " D[0, col] = D[0, col-1] + ins_cost\n", + "\n", + " # Loop through row 1 to row m, both inclusive\n", + " for row in range(1, m+1):\n", + "\n", + " # Loop through column 1 to column n, both inclusive\n", + " for col in range(1, n+1):\n", + "\n", + " # Intialize r_cost to the 'replace' cost that is passed into this function\n", + " r_cost = rep_cost\n", + "\n", + " # Check to see if source character at the previous row\n", + " # matches the target character at the previous column,\n", + " if source[row-1] == target[col-1]:\n", + " # Update the replacement cost to 0 if source and target are the same\n", + " r_cost = 0\n", + "\n", + " # Update the cost at row, col based on previous entries in the cost matrix\n", + " # Refer to the equation calculate for D[i,j] (the minimum of three calculated costs)\n", + " D[row, col] = min(D[row-1, col] + del_cost,\n", + " D[row, col-1] + ins_cost, D[row-1, col-1]+r_cost)\n", + "\n", + " # Set the minimum edit distance with the cost found at row m, column n\n", + " med = D[m, n]\n", + "\n", + " ### END CODE HERE ###\n", + " return D, med\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimum edits: 4 \n", + "\n", + " # s t a y\n", + "# 0 1 2 3 4\n", + "p 1 2 3 4 5\n", + "l 2 3 4 5 6\n", + "a 3 4 5 4 5\n", + "y 4 5 6 5 4\n" + ] + } + ], + "source": [ + "#DO NOT MODIFY THIS CELL\n", + "# testing your implementation \n", + "source = 'play'\n", + "target = 'stay'\n", + "matrix, min_edits = min_edit_distance(source, target)\n", + "print(\"minimum edits: \",min_edits, \"\\n\")\n", + "idx = list('#' + source)\n", + "cols = list('#' + target)\n", + "df = pd.DataFrame(matrix, index=idx, columns= cols)\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Expected Results:** \n", + "\n", + "```CPP\n", + "minimum edits: 4\n", + " \n", + " # s t a y\n", + "# 0 1 2 3 4\n", + "p 1 2 3 4 5\n", + "l 2 3 4 5 6\n", + "a 3 4 5 4 5\n", + "y 4 5 6 5 4\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimum edits: 3 \n", + "\n", + " # n e a r\n", + "# 0 1 2 3 4\n", + "e 1 2 1 2 3\n", + "e 2 3 2 3 4\n", + "r 3 4 3 4 3\n" + ] + } + ], + "source": [ + "#DO NOT MODIFY THIS CELL\n", + "# testing your implementation \n", + "source = 'eer'\n", + "target = 'near'\n", + "matrix, min_edits = min_edit_distance(source, target)\n", + "print(\"minimum edits: \",min_edits, \"\\n\")\n", + "idx = list(source)\n", + "idx.insert(0, '#')\n", + "cols = list(target)\n", + "cols.insert(0, '#')\n", + "df = pd.DataFrame(matrix, index=idx, columns= cols)\n", + "print(df)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Expected Results** \n", + "```CPP\n", + "minimum edits: 3 \n", + "\n", + " # n e a r\n", + "# 0 1 2 3 4\n", + "e 1 2 1 2 3\n", + "e 2 3 2 3 4\n", + "r 3 4 3 4 3\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now test several of our routines at once:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "eer eer 0\n" + ] + } + ], + "source": [ + "source = \"eer\"\n", + "targets = edit_one_letter(source,allow_switches = False) #disable switches since min_edit_distance does not include them\n", + "for t in targets:\n", + " _, min_edits = min_edit_distance(source, t,1,1,1) # set ins, del, sub costs all to one\n", + " if min_edits != 1: print(source, t, min_edits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Expected Results** \n", + "```CPP\n", + "(empty)\n", + "```\n", + "\n", + "The 'replace()' routine utilizes all letters a-z one of which returns the original word." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "eer eer 0\n" + ] + } + ], + "source": [ + "source = \"eer\"\n", + "targets = edit_two_letters(source,allow_switches = False) #disable switches since min_edit_distance does not include them\n", + "for t in targets:\n", + " _, min_edits = min_edit_distance(source, t,1,1,1) # set ins, del, sub costs all to one\n", + " if min_edits != 2 and min_edits != 1: print(source, t, min_edits)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Expected Results** \n", + "```CPP\n", + "eer eer 0\n", + "```\n", + "\n", + "We have to allow single edits here because some two_edits will restore a single edit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Submission\n", + "Make sure you submit your assignment before you modify anything below\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# Part 5: Optional - Backtrace\n", + "\n", + "\n", + "Once you have computed your matrix using minimum edit distance, how would find the shortest path from the top left corner to the bottom right corner? \n", + "\n", + "Note that you could use backtrace algorithm. Try to find the shortest path given the matrix that your `min_edit_distance` function returned.\n", + "\n", + "You can use these [lecture slides on minimum edit distance](https://web.stanford.edu/class/cs124/lec/med.pdf) by Dan Jurafsky to learn about the algorithm for backtrace." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "# Experiment with back trace - insert your code here\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### References\n", + "- Dan Jurafsky - Speech and Language Processing - Textbook\n", + "- This auto-correct explanation was first done by Peter Norvig in 2007 " + ] + } + ], + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From d70358940560cd6361a3122a62f89509640f1b9e Mon Sep 17 00:00:00 2001 From: lovetonight Date: Wed, 16 Aug 2023 20:40:47 +0700 Subject: [PATCH 6/7] Parts-of-Speech Tagging --- .../Week 2/Learn.ipynb | 1120 +++++++++++++++++ 1 file changed, 1120 insertions(+) create mode 100644 Natural Language Processing with Probabilistic Models/Week 2/Learn.ipynb diff --git a/Natural Language Processing with Probabilistic Models/Week 2/Learn.ipynb b/Natural Language Processing with Probabilistic Models/Week 2/Learn.ipynb new file mode 100644 index 0000000..4d939df --- /dev/null +++ b/Natural Language Processing with Probabilistic Models/Week 2/Learn.ipynb @@ -0,0 +1,1120 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "# Importing packages and loading in the data set \n", + "from utils_pos import get_word_tag, preprocess \n", + "import pandas as pd\n", + "from collections import defaultdict\n", + "import math\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A few items of the training corpus list\n", + "['In\\tIN\\n', 'an\\tDT\\n', 'Oct.\\tNNP\\n', '19\\tCD\\n', 'review\\tNN\\n']\n" + ] + } + ], + "source": [ + "# load in the training corpus\n", + "with open(\"WSJ_02-21.pos\", 'r') as f:\n", + " training_corpus = f.readlines()\n", + "\n", + "print(f\"A few items of the training corpus list\")\n", + "print(training_corpus[0:5])" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A few items of the vocabulary list\n", + "['!', '#', '$', '%', '&', \"'\", \"''\", \"'40s\", \"'60s\", \"'70s\", \"'80s\", \"'86\", \"'90s\", \"'N\", \"'S\", \"'d\", \"'em\", \"'ll\", \"'m\", \"'n'\", \"'re\", \"'s\", \"'til\", \"'ve\", '(', ')', ',', '-', '--', '--n--', '--unk--', '--unk_adj--', '--unk_adv--', '--unk_digit--', '--unk_noun--', '--unk_punct--', '--unk_upper--', '--unk_verb--', '.', '...', '0.01', '0.0108', '0.02', '0.03', '0.05', '0.1', '0.10', '0.12', '0.13', '0.15']\n", + "\n", + "A few items at the end of the vocabulary list\n", + "['yards', 'yardstick', 'year', 'year-ago', 'year-before', 'year-earlier', 'year-end', 'year-on-year', 'year-round', 'year-to-date', 'year-to-year', 'yearlong', 'yearly', 'years', 'yeast', 'yelled', 'yelling', 'yellow', 'yen', 'yes', 'yesterday', 'yet', 'yield', 'yielded', 'yielding', 'yields', 'you', 'young', 'younger', 'youngest', 'youngsters', 'your', 'yourself', 'youth', 'youthful', 'yuppie', 'yuppies', 'zero', 'zero-coupon', 'zeroing', 'zeros', 'zinc', 'zip', 'zombie', 'zone', 'zones', 'zoning', '{', '}', '']\n" + ] + } + ], + "source": [ + "# read the vocabulary data, split by each line of text, and save the list\n", + "with open(\"hmm_vocab.txt\", 'r') as f:\n", + " voc_l = f.read().split('\\n')\n", + "\n", + "print(\"A few items of the vocabulary list\")\n", + "print(voc_l[0:50])\n", + "print()\n", + "print(\"A few items at the end of the vocabulary list\")\n", + "print(voc_l[-50:])" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Vocabulary dictionary, key is the word, value is a unique integer\n", + ":0\n", + "!:1\n", + "#:2\n", + "$:3\n", + "%:4\n", + "&:5\n", + "':6\n", + "'':7\n", + "'40s:8\n", + "'60s:9\n", + "'70s:10\n", + "'80s:11\n", + "'86:12\n", + "'90s:13\n", + "'N:14\n", + "'S:15\n", + "'d:16\n", + "'em:17\n", + "'ll:18\n", + "'m:19\n", + "'n':20\n" + ] + } + ], + "source": [ + "# vocab: dictionary that has the index of the corresponding words\n", + "vocab = {} \n", + "\n", + "# Get the index of the corresponding words. \n", + "for i, word in enumerate(sorted(voc_l)): \n", + " vocab[word] = i \n", + " \n", + "print(\"Vocabulary dictionary, key is the word, value is a unique integer\")\n", + "cnt = 0\n", + "for k,v in vocab.items():\n", + " print(f\"{k}:{v}\")\n", + " cnt += 1\n", + " if cnt > 20:\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A sample of the test corpus\n", + "['The\\tDT\\n', 'economy\\tNN\\n', \"'s\\tPOS\\n\", 'temperature\\tNN\\n', 'will\\tMD\\n', 'be\\tVB\\n', 'taken\\tVBN\\n', 'from\\tIN\\n', 'several\\tJJ\\n', 'vantage\\tNN\\n']\n" + ] + } + ], + "source": [ + "# load in the test corpus\n", + "with open(\"WSJ_24.pos\", 'r') as f:\n", + " y = f.readlines()\n", + "\n", + "print(\"A sample of the test corpus\")\n", + "print(y[0:10])" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The length of the preprocessed test corpus: 34199\n", + "This is a sample of the test_corpus: \n", + "['The', 'economy', \"'s\", 'temperature', 'will', 'be', 'taken', 'from', 'several', '--unk--']\n" + ] + } + ], + "source": [ + "#corpus without tags, preprocessed\n", + "_, prep = preprocess(vocab, \"test.words\") \n", + "\n", + "print('The length of the preprocessed test corpus: ', len(prep))\n", + "print('This is a sample of the test_corpus: ')\n", + "print(prep[0:10])" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: create_dictionaries\n", + "def create_dictionaries(training_corpus, vocab):\n", + " \"\"\"\n", + " Input: \n", + " training_corpus: a corpus where each line has a word followed by its tag.\n", + " vocab: a dictionary where keys are words in vocabulary and value is an index\n", + " Output: \n", + " emission_counts: a dictionary where the keys are (tag, word) and the values are the counts\n", + " transition_counts: a dictionary where the keys are (prev_tag, tag) and the values are the counts\n", + " tag_counts: a dictionary where the keys are the tags and the values are the counts\n", + " \"\"\"\n", + "\n", + " # initialize the dictionaries using defaultdict\n", + " emission_counts = defaultdict(int)\n", + " transition_counts = defaultdict(int)\n", + " tag_counts = defaultdict(int)\n", + "\n", + " # Initialize \"prev_tag\" (previous tag) with the start state, denoted by '--s--'\n", + " prev_tag = '--s--'\n", + "\n", + " # use 'i' to track the line number in the corpus\n", + " i = 0\n", + "\n", + " # Each item in the training corpus contains a word and its POS tag\n", + " # Go through each word and its tag in the training corpus\n", + " for word_tag in training_corpus:\n", + "\n", + " # Increment the word_tag count\n", + " i += 1\n", + "\n", + " # Every 50,000 words, print the word count\n", + " if i % 50000 == 0:\n", + " print(f\"word count = {i}\")\n", + "\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " # get the word and tag using the get_word_tag helper function (imported from utils_pos.py)\n", + " word, tag = get_word_tag(word_tag, vocab)\n", + "\n", + " # Increment the transition count for the previous word and tag\n", + " transition_counts[(prev_tag, tag)] += 1\n", + "\n", + " # Increment the emission count for the tag and word\n", + " emission_counts[(tag, word)] += 1\n", + "\n", + " # Increment the tag count\n", + " tag_counts[tag] += 1\n", + "\n", + " # Set the previous tag to this tag (for the next iteration of the loop)\n", + " prev_tag = tag\n", + "\n", + " ### END CODE HERE ###\n", + "\n", + " return emission_counts, transition_counts, tag_counts\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "word count = 50000\n", + "word count = 100000\n", + "word count = 150000\n", + "word count = 200000\n", + "word count = 250000\n", + "word count = 300000\n", + "word count = 350000\n", + "word count = 400000\n", + "word count = 450000\n", + "word count = 500000\n", + "word count = 550000\n", + "word count = 600000\n", + "word count = 650000\n", + "word count = 700000\n", + "word count = 750000\n", + "word count = 800000\n", + "word count = 850000\n", + "word count = 900000\n", + "word count = 950000\n" + ] + } + ], + "source": [ + "emission_counts, transition_counts, tag_counts = create_dictionaries(training_corpus, vocab)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of POS tags (number of 'states'): 46\n", + "View these POS tags (states)\n", + "['#', '$', \"''\", '(', ')', ',', '--s--', '.', ':', 'CC', 'CD', 'DT', 'EX', 'FW', 'IN', 'JJ', 'JJR', 'JJS', 'LS', 'MD', 'NN', 'NNP', 'NNPS', 'NNS', 'PDT', 'POS', 'PRP', 'PRP$', 'RB', 'RBR', 'RBS', 'RP', 'SYM', 'TO', 'UH', 'VB', 'VBD', 'VBG', 'VBN', 'VBP', 'VBZ', 'WDT', 'WP', 'WP$', 'WRB', '``']\n" + ] + } + ], + "source": [ + "# get all the POS states\n", + "states = sorted(tag_counts.keys())\n", + "print(f\"Number of POS tags (number of 'states'): {len(states)}\")\n", + "print(\"View these POS tags (states)\")\n", + "print(states)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "transition examples: \n", + "(('--s--', 'IN'), 5050)\n", + "(('IN', 'DT'), 32364)\n", + "(('DT', 'NNP'), 9044)\n", + "\n", + "emission examples: \n", + "(('DT', 'any'), 721)\n", + "(('NN', 'decrease'), 7)\n", + "(('NN', 'insider-trading'), 5)\n", + "\n", + "ambiguous word example: \n", + "('RB', 'back') 304\n", + "('VB', 'back') 20\n", + "('RP', 'back') 84\n", + "('JJ', 'back') 25\n", + "('NN', 'back') 29\n", + "('VBP', 'back') 4\n" + ] + } + ], + "source": [ + "print(\"transition examples: \")\n", + "for ex in list(transition_counts.items())[:3]:\n", + " print(ex)\n", + "print()\n", + "\n", + "print(\"emission examples: \")\n", + "for ex in list(emission_counts.items())[200:203]:\n", + " print (ex)\n", + "print()\n", + "\n", + "print(\"ambiguous word example: \")\n", + "for tup,cnt in emission_counts.items():\n", + " if tup[1] == 'back': print (tup, cnt) " + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: predict_pos\n", + "\n", + "def predict_pos(prep, y, emission_counts, vocab, states):\n", + " '''\n", + " Input: \n", + " prep: a preprocessed version of 'y'. A list with the 'word' component of the tuples.\n", + " y: a corpus composed of a list of tuples where each tuple consists of (word, POS)\n", + " emission_counts: a dictionary where the keys are (tag,word) tuples and the value is the count\n", + " vocab: a dictionary where keys are words in vocabulary and value is an index\n", + " states: a sorted list of all possible tags for this assignment\n", + " Output: \n", + " accuracy: Number of times you classified a word correctly\n", + " '''\n", + " \n", + " # Initialize the number of correct predictions to zero\n", + " num_correct = 0\n", + " \n", + " # Get the (tag, word) tuples, stored as a set\n", + " all_words = set(emission_counts.keys())\n", + " \n", + " # Get the number of (word, POS) tuples in the corpus 'y'\n", + " total = len(y)\n", + " for word, y_tup in zip(prep, y): \n", + "\n", + " # Split the (word, POS) string into a list of two items\n", + " y_tup_l = y_tup.split()\n", + " \n", + " # Verify that y_tup contain both word and POS\n", + " if len(y_tup_l) == 2:\n", + " \n", + " # Set the true POS label for this word\n", + " true_label = y_tup_l[1]\n", + "\n", + " else:\n", + " # If the y_tup didn't contain word and POS, go to next word\n", + " continue\n", + " \n", + " count_final = 0\n", + " pos_final = ''\n", + " \n", + " # If the word is in the vocabulary...\n", + " if word in vocab:\n", + " for pos in states:\n", + "\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # define the key as the tuple containing the POS and word\n", + " key = (pos,word)\n", + "\n", + " # check if the (pos, word) key exists in the emission_counts dictionary\n", + " if key in emission_counts.keys(): # complete this line\n", + "\n", + " # get the emission count of the (pos,word) tuple \n", + " count = emission_counts.get(key)\n", + "\n", + " # keep track of the POS with the largest count\n", + " if count>count_final: # complete this line\n", + "\n", + " # update the final count (largest count)\n", + " count_final = count\n", + "\n", + " # update the final POS\n", + " pos_final = pos\n", + "\n", + " # If the final POS (with the largest count) matches the true POS:\n", + " if pos_final == true_label: # complete this line\n", + " \n", + " # Update the number of correct predictions\n", + " num_correct += 1\n", + " \n", + " ### END CODE HERE ###\n", + " accuracy = num_correct / total\n", + " \n", + " return accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy of prediction using predict_pos is 0.8889\n" + ] + } + ], + "source": [ + "accuracy_predict_pos = predict_pos(prep, y, emission_counts, vocab, states)\n", + "print(f\"Accuracy of prediction using predict_pos is {accuracy_predict_pos:.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: create_transition_matrix\n", + "def create_transition_matrix(alpha, tag_counts, transition_counts):\n", + " ''' \n", + " Input: \n", + " alpha: number used for smoothing\n", + " tag_counts: a dictionary mapping each tag to its respective count\n", + " transition_counts: transition count for the previous word and tag\n", + " Output:\n", + " A: matrix of dimension (num_tags,num_tags)\n", + " '''\n", + " # Get a sorted list of unique POS tags\n", + " all_tags = sorted(tag_counts.keys())\n", + " \n", + " # Count the number of unique POS tags\n", + " num_tags = len(all_tags)\n", + " \n", + " # Initialize the transition matrix 'A'\n", + " A = np.zeros((num_tags,num_tags))\n", + " \n", + " # Get the unique transition tuples (previous POS, current POS)\n", + " trans_keys = set(transition_counts.keys())\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ### \n", + " \n", + " # Go through each row of the transition matrix A\n", + " for i in range(num_tags):\n", + " \n", + " # Go through each column of the transition matrix A\n", + " for j in range(num_tags):\n", + "\n", + " # Initialize the count of the (prev POS, current POS) to zero\n", + " count = 0\n", + " \n", + " # Define the tuple (prev POS, current POS)\n", + " # Get the tag at position i and tag at position j (from the all_tags list)\n", + " key = (all_tags[i],all_tags[j])\n", + "\n", + " # Check if the (prev POS, current POS) tuple \n", + " # exists in the transition counts dictionary\n", + " if transition_counts[key]: #complete this line\n", + " \n", + " # Get count from the transition_counts dictionary \n", + " # for the (prev POS, current POS) tuple\n", + " count = transition_counts[key]\n", + " \n", + " # Get the count of the previous tag (index position i) from tag_counts\n", + " count_prev_tag = tag_counts[all_tags[i]]\n", + " \n", + " # Apply smoothing using count of the tuple, alpha, \n", + " # count of previous tag, alpha, and total number of tags\n", + " A[i,j] = (count +alpha)/(count_prev_tag + alpha*num_tags)\n", + "\n", + " ### END CODE HERE ###\n", + " \n", + " return A" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A at row 0, col 0: 0.000007040\n", + "A at row 3, col 1: 0.1691\n", + "View a subset of transition matrix A\n", + " # $ '' ( )\n", + "RBS 2.217069e-06 2.217069e-06 2.217069e-06 0.008870 2.217069e-06\n", + "RP 3.756509e-07 7.516775e-04 3.756509e-07 0.051089 3.756509e-07\n", + "SYM 1.722772e-05 1.722772e-05 1.722772e-05 0.000017 1.722772e-05\n", + "TO 4.477336e-05 4.472863e-08 4.472863e-08 0.000090 4.477336e-05\n", + "UH 1.030439e-05 1.030439e-05 1.030439e-05 0.061837 3.092348e-02\n" + ] + } + ], + "source": [ + "alpha = 0.001\n", + "A = create_transition_matrix(alpha, tag_counts, transition_counts)\n", + "# Testing your function\n", + "print(f\"A at row 0, col 0: {A[0,0]:.9f}\")\n", + "print(f\"A at row 3, col 1: {A[3,1]:.4f}\")\n", + "\n", + "print(\"View a subset of transition matrix A\")\n", + "A_sub = pd.DataFrame(A[30:35,30:35], index=states[30:35], columns = states[0:5] )\n", + "print(A_sub)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C4 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: create_emission_matrix\n", + "\n", + "def create_emission_matrix(alpha, tag_counts, emission_counts, vocab):\n", + " '''\n", + " Input: \n", + " alpha: tuning parameter used in smoothing \n", + " tag_counts: a dictionary mapping each tag to its respective count\n", + " emission_counts: a dictionary where the keys are (tag, word) and the values are the counts\n", + " vocab: a dictionary where keys are words in vocabulary and value is an index.\n", + " within the function it'll be treated as a list\n", + " Output:\n", + " B: a matrix of dimension (num_tags, len(vocab))\n", + " '''\n", + " \n", + " # get the number of POS tag\n", + " num_tags = len(tag_counts)\n", + " \n", + " # Get a list of all POS tags\n", + " all_tags = sorted(tag_counts.keys())\n", + " \n", + " # Get the total number of unique words in the vocabulary\n", + " num_words = len(vocab)\n", + " \n", + " # Initialize the emission matrix B with places for\n", + " # tags in the rows and words in the columns\n", + " B = np.zeros((num_tags, num_words))\n", + " \n", + " # Get a set of all (POS, word) tuples \n", + " # from the keys of the emission_counts dictionary\n", + " emis_keys = set(list(emission_counts.keys()))\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # Go through each row (POS tags)\n", + " for i in range(num_tags): # complete this line\n", + " \n", + " # Go through each column (words)\n", + " for j in range(num_words): # complete this line\n", + "\n", + " # Initialize the emission count for the (POS tag, word) to zero\n", + " count = 0\n", + " \n", + " # Define the (POS tag, word) tuple for this row and column\n", + " key = (all_tags[i],vocab[j])\n", + "\n", + " # check if the (POS tag, word) tuple exists as a key in emission counts\n", + " if key in emis_keys: # complete this line\n", + " \n", + " # Get the count of (POS tag, word) from the emission_counts d\n", + " count = emission_counts[key]\n", + " \n", + " # Get the count of the POS tag\n", + " count_tag = tag_counts[all_tags[i]]\n", + " \n", + " # Apply smoothing and store the smoothed value \n", + " # into the emission matrix B for this row and column\n", + " B[i,j] = (count+alpha)/(count_tag+alpha*num_words)\n", + "\n", + " ### END CODE HERE ###\n", + " return B" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "View Matrix position at row 0, column 0: 0.000006032\n", + "View Matrix position at row 3, column 1: 0.000000720\n", + " 725 adroitly engineers promoted synergy\n", + "CD 8.201296e-05 2.732854e-08 2.732854e-08 2.732854e-08 2.732854e-08\n", + "NN 7.521128e-09 7.521128e-09 7.521128e-09 7.521128e-09 2.257091e-05\n", + "NNS 1.670013e-08 1.670013e-08 4.676203e-04 1.670013e-08 1.670013e-08\n", + "VB 3.779036e-08 3.779036e-08 3.779036e-08 3.779036e-08 3.779036e-08\n", + "RB 3.226454e-08 6.456135e-05 3.226454e-08 3.226454e-08 3.226454e-08\n", + "RP 3.723317e-07 3.723317e-07 3.723317e-07 3.723317e-07 3.723317e-07\n" + ] + } + ], + "source": [ + "# creating your emission probability matrix. this takes a few minutes to run. \n", + "B = create_emission_matrix(alpha, tag_counts, emission_counts, list(vocab))\n", + "\n", + "print(f\"View Matrix position at row 0, column 0: {B[0,0]:.9f}\")\n", + "print(f\"View Matrix position at row 3, column 1: {B[3,1]:.9f}\")\n", + "\n", + "# Try viewing emissions for a few words in a sample dataframe\n", + "cidx = ['725','adroitly','engineers', 'promoted', 'synergy']\n", + "\n", + "# Get the integer ID for each word\n", + "cols = [vocab[a] for a in cidx]\n", + "\n", + "# Choose POS tags to show in a sample dataframe\n", + "rvals =['CD','NN','NNS', 'VB','RB','RP']\n", + "\n", + "# For each POS tag, get the row number from the 'states' list\n", + "rows = [states.index(a) for a in rvals]\n", + "\n", + "# Get the emissions for the sample of words, and the sample of POS tags\n", + "B_sub = pd.DataFrame(B[np.ix_(rows,cols)], index=rvals, columns = cidx )\n", + "print(B_sub)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C5 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: initialize\n", + "def initialize(states, tag_counts, A, B, corpus, vocab):\n", + " '''\n", + " Input: \n", + " states: a list of all possible parts-of-speech\n", + " tag_counts: a dictionary mapping each tag to its respective count\n", + " A: Transition Matrix of dimension (num_tags, num_tags)\n", + " B: Emission Matrix of dimension (num_tags, len(vocab))\n", + " corpus: a sequence of words whose POS is to be identified in a list \n", + " vocab: a dictionary where keys are words in vocabulary and value is an index\n", + " Output:\n", + " best_probs: matrix of dimension (num_tags, len(corpus)) of floats\n", + " best_paths: matrix of dimension (num_tags, len(corpus)) of integers\n", + " '''\n", + " # Get the total number of unique POS tags\n", + " num_tags = len(tag_counts)\n", + "\n", + " # Initialize best_probs matrix\n", + " # POS tags in the rows, number of words in the corpus as the columns\n", + " best_probs = np.zeros((num_tags, len(corpus)))\n", + "\n", + " # Initialize best_paths matrix\n", + " # POS tags in the rows, number of words in the corpus as columns\n", + " best_paths = np.zeros((num_tags, len(corpus)), dtype=int)\n", + "\n", + " # Define the start token\n", + " s_idx = states.index(\"--s--\")\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + "\n", + " # Go through each of the POS tags\n", + " for i in range(num_tags): # complete this line\n", + "\n", + " # Handle the special case when the transition from start token to POS tag i is zero\n", + " if A[s_idx, i] == 0: # complete this line\n", + "\n", + " # Initialize best_probs at POS tag 'i', column 0, to negative infinity\n", + " best_probs[i, 0] = float('-inf')\n", + "\n", + " # For all other cases when transition from start token to POS tag i is non-zero:\n", + " else:\n", + "\n", + " # Initialize best_probs at POS tag 'i', column 0\n", + " # Check the formula in the instructions above\n", + " best_probs[i, 0] = math.log(\n", + " A[s_idx, i])+math.log(B[i, vocab[corpus[0]]])\n", + "\n", + " ### END CODE HERE ###\n", + " return best_probs, best_paths\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "best_probs, best_paths = initialize(states, tag_counts, A, B, prep, vocab)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "best_probs[0,0]: -22.6098\n", + "best_paths[2,3]: 0.0000\n" + ] + } + ], + "source": [ + "# Test the function\n", + "print(f\"best_probs[0,0]: {best_probs[0,0]:.4f}\") \n", + "print(f\"best_paths[2,3]: {best_paths[2,3]:.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " upward\n", + "CD 0.0\n", + "NN 0.0\n", + "NNS 0.0\n", + "VB 0.0\n", + "RB 0.0\n", + "RP 0.0\n" + ] + } + ], + "source": [ + "cidx = ['upward']\n", + "\n", + "# Get the integer ID for each word\n", + "cols = [vocab[a] for a in cidx]\n", + "rvals =['CD','NN','NNS', 'VB','RB','RP']\n", + "\n", + "# For each POS tag, get the row number from the 'states' list\n", + "rows = [states.index(a) for a in rvals]\n", + "\n", + "# Get the emissions for the sample of words, and the sample of POS tags\n", + "best_probs_sub = pd.DataFrame(best_probs[np.ix_(rows,cols)], index=rvals, columns = cidx )\n", + "print(best_probs_sub )" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C6 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: viterbi_forward\n", + "def viterbi_forward(A, B, test_corpus, best_probs, best_paths, vocab):\n", + " '''\n", + " Input: \n", + " A, B: The transiton and emission matrices respectively\n", + " test_corpus: a list containing a preprocessed corpus\n", + " best_probs: an initilized matrix of dimension (num_tags, len(corpus))\n", + " best_paths: an initilized matrix of dimension (num_tags, len(corpus))\n", + " vocab: a dictionary where keys are words in vocabulary and value is an index \n", + " Output: \n", + " best_probs: a completed matrix of dimension (num_tags, len(corpus))\n", + " best_paths: a completed matrix of dimension (num_tags, len(corpus))\n", + " '''\n", + " # Get the number of unique POS tags (which is the num of rows in best_probs)\n", + " num_tags = best_probs.shape[0]\n", + " \n", + " # Go through every word in the corpus starting from word 1\n", + " # Recall that word 0 was initialized in `initialize()`\n", + " for i in range(1, len(test_corpus)): \n", + " \n", + " # Print number of words processed, every 5000 words\n", + " if i % 5000 == 0:\n", + " print(\"Words processed: {:>8}\".format(i))\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code EXCEPT the first 'best_path_i = None') ###\n", + " # For each unique POS tag that the current word can be\n", + " for j in range(num_tags): # complete this line\n", + " \n", + " # Initialize best_prob for word i to negative infinity\n", + " best_prob_i = float(\"-inf\")\n", + " \n", + " # Initialize best_path for current word i to None\n", + " best_path_i = None\n", + "\n", + " # For each POS tag that the previous word can be:\n", + " for k in range(num_tags): # complete this line\n", + " \n", + " # Calculate the probability = \n", + " # best probs of POS tag k, previous word i-1 + \n", + " # log(prob of transition from POS k to POS j) + \n", + " # log(prob that emission of POS j is word i)\n", + " prob = best_probs[k,i-1]+math.log(A[k,j]) +math.log(B[j,vocab[test_corpus[i]]])\n", + "\n", + " # check if this path's probability is greater than\n", + " # the best probability up to and before this point\n", + " if prob > best_prob_i: # complete this line\n", + " \n", + " # Keep track of the best probability\n", + " best_prob_i = prob\n", + " \n", + " # keep track of the POS tag of the previous word\n", + " # that is part of the best path. \n", + " # Save the index (integer) associated with \n", + " # that previous word's POS tag\n", + " best_path_i = k\n", + "\n", + " # Save the best probability for the \n", + " # given current word's POS tag\n", + " # and the position of the current word inside the corpus\n", + " best_probs[j,i] = best_prob_i\n", + " \n", + " # Save the unique integer ID of the previous POS tag\n", + " # into best_paths matrix, for the POS tag of the current word\n", + " # and the position of the current word inside the corpus.\n", + " best_paths[j,i] = best_path_i\n", + "\n", + " ### END CODE HERE ###\n", + " return best_probs, best_paths" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Words processed: 5000\n", + "Words processed: 10000\n", + "Words processed: 15000\n", + "Words processed: 20000\n", + "Words processed: 25000\n", + "Words processed: 30000\n" + ] + } + ], + "source": [ + "# this will take a few minutes to run => processes ~ 30,000 words\n", + "best_probs, best_paths = viterbi_forward(A, B, prep, best_probs, best_paths, vocab)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "best_probs[0,1]: -32.2110\n", + "best_probs[0,4]: -49.5601\n" + ] + } + ], + "source": [ + "# Test this function \n", + "print(f\"best_probs[0,1]: {best_probs[28,2]:.4f}\") \n", + "print(f\"best_probs[0,4]: {best_probs[0,4]:.4f}\") " + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C7 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: viterbi_backward\n", + "def viterbi_backward(best_probs, best_paths, corpus, states):\n", + " '''\n", + " This function returns the best path.\n", + " \n", + " '''\n", + " # Get the number of words in the corpus\n", + " # which is also the number of columns in best_probs, best_paths\n", + " m = best_paths.shape[1] \n", + " \n", + " # Initialize array z, same length as the corpus\n", + " z = [None] * m\n", + " \n", + " # Get the number of unique POS tags\n", + " num_tags = best_probs.shape[0]\n", + " \n", + " # Initialize the best probability for the last word\n", + " best_prob_for_last_word = float('-inf')\n", + " \n", + " # Initialize pred array, same length as corpus\n", + " pred = [None] * m\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " ## Step 1 ##\n", + " \n", + " # Go through each POS tag for the last word (last column of best_probs)\n", + " # in order to find the row (POS tag integer ID) \n", + " # with highest probability for the last word\n", + " for k in range(num_tags): # complete this line\n", + "\n", + " # If the probability of POS tag at row k \n", + " # is better than the previously best probability for the last word:\n", + " if best_probs[k,-1]>best_prob_for_last_word: # complete this line\n", + " \n", + " # Store the new best probability for the lsat word\n", + " best_prob_for_last_word = best_probs[k,-1]\n", + " \n", + " # Store the unique integer ID of the POS tag\n", + " # which is also the row number in best_probs\n", + " z[m - 1] = k\n", + " \n", + " # Convert the last word's predicted POS tag\n", + " # from its unique integer ID into the string representation\n", + " # using the 'states' dictionary\n", + " # store this in the 'pred' array for the last word\n", + " pred[m - 1] = states[z[m-1]]\n", + " \n", + " ## Step 2 ##\n", + " # Find the best POS tags by walking backward through the best_paths\n", + " # From the last word in the corpus to the 0th word in the corpus\n", + " for i in range(m-1, -1, -1): # complete this line\n", + " \n", + " # Retrieve the unique integer ID of\n", + " # the POS tag for the word at position 'i' in the corpus\n", + " pos_tag_for_word_i = best_paths[z[i],i] \n", + " \n", + " # In best_paths, go to the row representing the POS tag of word i\n", + " # and the column representing the word's position in the corpus\n", + " # to retrieve the predicted POS for the word at position i-1 in the corpus\n", + " z[i - 1] = pos_tag_for_word_i\n", + " \n", + " # Get the previous word's POS tag in string form\n", + " # Use the 'states' dictionary, \n", + " # where the key is the unique integer ID of the POS tag,\n", + " # and the value is the string representation of that POS tag\n", + " pred[i - 1] = states[pos_tag_for_word_i]\n", + " \n", + " ### END CODE HERE ###\n", + " return pred\n", + "# Run and test your function" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The prediction for pred[-7:m-1] is: \n", + " ['see', 'them', 'here', 'with', 'us', '.'] \n", + " ['VB', 'PRP', 'RB', 'IN', 'PRP', '.'] \n", + "\n", + "The prediction for pred[0:8] is: \n", + " ['DT', 'NN', 'POS', 'NN', 'MD', 'VB', 'VBN'] \n", + " ['The', 'economy', \"'s\", 'temperature', 'will', 'be', 'taken']\n" + ] + } + ], + "source": [ + "# Run and test your function\n", + "pred = viterbi_backward(best_probs, best_paths, prep, states)\n", + "m=len(pred)\n", + "print('The prediction for pred[-7:m-1] is: \\n', prep[-7:m-1], \"\\n\", pred[-7:m-1], \"\\n\")\n", + "print('The prediction for pred[0:8] is: \\n', pred[0:7], \"\\n\", prep[0:7])" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The third word is: temperature\n", + "Your prediction is: NN\n", + "Your corresponding label y is: temperature\tNN\n", + "\n" + ] + } + ], + "source": [ + "print('The third word is:', prep[3])\n", + "print('Your prediction is:', pred[3])\n", + "print('Your corresponding label y is: ', y[3])" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C8 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: compute_accuracy\n", + "def compute_accuracy(pred, y):\n", + " '''\n", + " Input: \n", + " pred: a list of the predicted parts-of-speech \n", + " y: a list of lines where each word is separated by a '\\t' (i.e. word \\t tag)\n", + " Output: \n", + " \n", + " '''\n", + " num_correct = 0\n", + " total = 0\n", + " \n", + " # Zip together the prediction and the labels\n", + " for prediction, y in zip(pred, y):\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " # Split the label into the word and the POS tag\n", + " word_tag_tuple = y.split()\n", + " \n", + " # Check that there is actually a word and a tag\n", + " # no more and no less than 2 items\n", + " if len(word_tag_tuple )!=2: # complete this line\n", + " continue \n", + "\n", + " # store the word and tag separately\n", + " word, tag = word_tag_tuple\n", + " \n", + " # Check if the POS tag label matches the prediction\n", + " if prediction == tag: # complete this line\n", + " \n", + " # count the number of times that the prediction\n", + " # and label match\n", + " num_correct += 1\n", + " \n", + " # keep track of the total number of examples (that have valid labels)\n", + " total += 1\n", + " \n", + " ### END CODE HERE ###\n", + " return num_correct/total" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy of the Viterbi algorithm is 0.9531\n" + ] + } + ], + "source": [ + "print(f\"Accuracy of the Viterbi algorithm is {compute_accuracy(pred, y):.4f}\")" + ] + } + ], + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From b9b2e648dd4e0095c21a0013cac368f2a3856823 Mon Sep 17 00:00:00 2001 From: lovetonight Date: Tue, 22 Aug 2023 17:00:40 +0700 Subject: [PATCH 7/7] Auto-complete Sysytem --- .../Week 3/Learn.ipynb | 2057 +++++++++++++++++ 1 file changed, 2057 insertions(+) create mode 100644 Natural Language Processing with Probabilistic Models/Week 3/Learn.ipynb diff --git a/Natural Language Processing with Probabilistic Models/Week 3/Learn.ipynb b/Natural Language Processing with Probabilistic Models/Week 3/Learn.ipynb new file mode 100644 index 0000000..3aa7485 --- /dev/null +++ b/Natural Language Processing with Probabilistic Models/Week 3/Learn.ipynb @@ -0,0 +1,2057 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import random\n", + "import numpy as np\n", + "import pandas as pd\n", + "import nltk\n", + "nltk.data.path.append('.')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data type: \n", + "Number of letters: 3335477\n", + "First 300 letters of the data\n", + "-------\n" + ] + }, + { + "data": { + "text/plain": [ + "\"How are you? Btw thanks for the RT. You gonna be in DC anytime soon? Love to see you. Been way, way too long.\\nWhen you meet someone special... you'll know. Your heart will beat more rapidly and you'll smile for no reason.\\nthey've decided its more fun if I don't.\\nSo Tired D; Played Lazer Tag & Ran A \"" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-------\n", + "Last 300 letters of the data\n", + "-------\n" + ] + }, + { + "data": { + "text/plain": [ + "\"ust had one a few weeks back....hopefully we will be back soon! wish you the best yo\\nColombia is with an 'o'...“: We now ship to 4 countries in South America (fist pump). Please welcome Columbia to the Stunner Family”\\n#GutsiestMovesYouCanMake Giving a cat a bath.\\nCoffee after 5 was a TERRIBLE idea.\\n\"" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-------\n" + ] + } + ], + "source": [ + "with open(\"en_US.twitter.txt\", \"r\",encoding='utf-8') as f:\n", + " data = f.read()\n", + "print(\"Data type:\", type(data))\n", + "print(\"Number of letters:\", len(data))\n", + "print(\"First 300 letters of the data\")\n", + "print(\"-------\")\n", + "display(data[0:300])\n", + "print(\"-------\")\n", + "\n", + "print(\"Last 300 letters of the data\")\n", + "print(\"-------\")\n", + "display(data[-300:])\n", + "print(\"-------\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C1 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: split_to_sentences ###\n", + "def split_to_sentences(data):\n", + " \"\"\"\n", + " Split data by linebreak \"\\n\"\n", + " \n", + " Args:\n", + " data: str\n", + " \n", + " Returns:\n", + " A list of sentences\n", + " \"\"\"\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " sentences = data.split('\\n')\n", + " ### END CODE HERE ###\n", + " \n", + " # Additional clearning (This part is already implemented)\n", + " # - Remove leading and trailing spaces from each sentence\n", + " # - Drop sentences if they are empty strings.\n", + " sentences = [s.strip() for s in sentences]\n", + " sentences = [s for s in sentences if len(s) > 0]\n", + " \n", + " return sentences " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "I have a pen.\n", + "I have an apple. \n", + "Ah\n", + "Apple pen.\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "['I have a pen.', 'I have an apple.', 'Ah', 'Apple pen.']" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# test your code\n", + "x = \"\"\"\n", + "I have a pen.\\nI have an apple. \\nAh\\nApple pen.\\n\n", + "\"\"\"\n", + "print(x)\n", + "\n", + "split_to_sentences(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C2 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: tokenize_sentences ###\n", + "def tokenize_sentences(sentences):\n", + " \"\"\"\n", + " Tokenize sentences into tokens (words)\n", + " \n", + " Args:\n", + " sentences: List of strings\n", + " \n", + " Returns:\n", + " List of lists of tokens\n", + " \"\"\"\n", + " \n", + " # Initialize the list of lists of tokenized sentences\n", + " tokenized_sentences = []\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # Go through each sentence\n", + " for sentence in sentences:\n", + " \n", + " # Convert to lowercase letters\n", + " sentence = sentence.lower()\n", + " \n", + " # Convert into a list of words\n", + " tokenized = nltk.word_tokenize(sentence)\n", + " \n", + " # append the list of words to the list of lists\n", + " tokenized_sentences.append(tokenized)\n", + " \n", + " ### END CODE HERE ###\n", + " \n", + " return tokenized_sentences" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['sky', 'is', 'blue', '.'],\n", + " ['leaves', 'are', 'green', '.'],\n", + " ['roses', 'are', 'red', '.']]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# test your code\n", + "sentences = [\"Sky is blue.\", \"Leaves are green.\", \"Roses are red.\"]\n", + "tokenize_sentences(sentences)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C3 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: get_tokenized_data ###\n", + "def get_tokenized_data(data):\n", + " \"\"\"\n", + " Make a list of tokenized sentences\n", + " \n", + " Args:\n", + " data: String\n", + " \n", + " Returns:\n", + " List of lists of tokens\n", + " \"\"\"\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # Get the sentences by splitting up the data\n", + " sentences = data.split('\\n')\n", + " \n", + " # Get the list of lists of tokens by tokenizing the sentences\n", + " tokenized_sentences = [nltk.word_tokenize(sentence.lower()) for sentence in sentences]\n", + " \n", + " ### END CODE HERE ###\n", + " \n", + " return tokenized_sentences" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['sky', 'is', 'blue', '.'],\n", + " ['leaves', 'are', 'green'],\n", + " ['roses', 'are', 'red', '.']]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# test your function\n", + "x = \"Sky is blue.\\nLeaves are green\\nRoses are red.\"\n", + "get_tokenized_data(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "tokenized_data = get_tokenized_data(data)\n", + "random.seed(87)\n", + "random.shuffle(tokenized_data)\n", + "\n", + "train_size = int(len(tokenized_data) * 0.8)\n", + "train_data = tokenized_data[0:train_size]\n", + "test_data = tokenized_data[train_size:]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "47962 data are split into 38369 train and 9593 test set\n", + "First training sample:\n", + "['i', '❤', 'and', 'her', 'boo', 'relationship', 'they', 'so', 'thuged', 'out', '!', '!']\n", + "First test sample\n", + "['better', 'than', '``', 'misplaced', 'quotation', 'marks', \"''\", 'rt', ':', 'lately', 'i', 'find', 'that', 'i', 'am', 'adding', 'too', 'many', 'exclamation', 'points', 'where', 'they', 'do', \"n't\", 'belong', '!']\n" + ] + } + ], + "source": [ + "print(\"{} data are split into {} train and {} test set\".format(\n", + " len(tokenized_data), len(train_data), len(test_data)))\n", + "\n", + "print(\"First training sample:\")\n", + "print(train_data[0])\n", + " \n", + "print(\"First test sample\")\n", + "print(test_data[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C4 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: count_words ###\n", + "def count_words(tokenized_sentences):\n", + " \"\"\"\n", + " Count the number of word appearence in the tokenized sentences\n", + " \n", + " Args:\n", + " tokenized_sentences: List of lists of strings\n", + " \n", + " Returns:\n", + " dict that maps word (str) to the frequency (int)\n", + " \"\"\"\n", + " \n", + " word_counts = {}\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # Loop through each sentence\n", + " for sentence in tokenized_sentences: # complete this line\n", + " \n", + " # Go through each token in the sentence\n", + " for token in sentence: # complete this line\n", + "\n", + " # If the token is not in the dictionary yet, set the count to 1\n", + " if token not in word_counts: # complete this line\n", + " word_counts[token] = 1\n", + " \n", + " # If the token is already in the dictionary, increment the count by 1\n", + " else:\n", + " word_counts[token] += 1\n", + "\n", + " ### END CODE HERE ###\n", + " \n", + " return word_counts" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'sky': 1,\n", + " 'is': 1,\n", + " 'blue': 1,\n", + " '.': 3,\n", + " 'leaves': 1,\n", + " 'are': 2,\n", + " 'green': 1,\n", + " 'roses': 1,\n", + " 'red': 1}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# test your code\n", + "tokenized_sentences = [['sky', 'is', 'blue', '.'],\n", + " ['leaves', 'are', 'green', '.'],\n", + " ['roses', 'are', 'red', '.']]\n", + "count_words(tokenized_sentences)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C5 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: get_words_with_nplus_frequency ###\n", + "def get_words_with_nplus_frequency(tokenized_sentences, count_threshold):\n", + " \"\"\"\n", + " Find the words that appear N times or more\n", + " \n", + " Args:\n", + " tokenized_sentences: List of lists of sentences\n", + " count_threshold: minimum number of occurrences for a word to be in the closed vocabulary.\n", + " \n", + " Returns:\n", + " List of words that appear N times or more\n", + " \"\"\"\n", + " # Initialize an empty list to contain the words that\n", + " # appear at least 'minimum_freq' times.\n", + " closed_vocab = []\n", + " \n", + " # Get the word couts of the tokenized sentences\n", + " # Use the function that you defined earlier to count the words\n", + " word_counts = count_words(tokenized_sentences)\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + "\n", + " # for each word and its count\n", + " for word, cnt in word_counts.items(): # complete this line\n", + " \n", + " # check that the word's count\n", + " # is at least as great as the minimum count\n", + " if cnt >=count_threshold:\n", + " \n", + " # append the word to the list\n", + " closed_vocab.append(word)\n", + " ### END CODE HERE ###\n", + " \n", + " return closed_vocab" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Closed vocabulary:\n", + "['.', 'are']\n" + ] + } + ], + "source": [ + "# test your code\n", + "tokenized_sentences = [['sky', 'is', 'blue', '.'],\n", + " ['leaves', 'are', 'green', '.'],\n", + " ['roses', 'are', 'red', '.']]\n", + "tmp_closed_vocab = get_words_with_nplus_frequency(tokenized_sentences, count_threshold=2)\n", + "print(f\"Closed vocabulary:\")\n", + "print(tmp_closed_vocab)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C6 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: replace_oov_words_by_unk ###\n", + "def replace_oov_words_by_unk(tokenized_sentences, vocabulary, unknown_token=\"\"):\n", + " \"\"\"\n", + " Replace words not in the given vocabulary with '' token.\n", + " \n", + " Args:\n", + " tokenized_sentences: List of lists of strings\n", + " vocabulary: List of strings that we will use\n", + " unknown_token: A string representing unknown (out-of-vocabulary) words\n", + " \n", + " Returns:\n", + " List of lists of strings, with words not in the vocabulary replaced\n", + " \"\"\"\n", + " \n", + " # Place vocabulary into a set for faster search\n", + " vocabulary = set(vocabulary)\n", + " \n", + " # Initialize a list that will hold the sentences\n", + " # after less frequent words are replaced by the unknown token\n", + " replaced_tokenized_sentences = []\n", + " \n", + " # Go through each sentence\n", + " for sentence in tokenized_sentences:\n", + " \n", + " # Initialize the list that will contain\n", + " # a single sentence with \"unknown_token\" replacements\n", + " replaced_sentence = []\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + "\n", + " # for each token in the sentence\n", + " for token in sentence: # complete this line\n", + " \n", + " # Check if the token is in the closed vocabulary\n", + " if token in vocabulary: # complete this line\n", + " # If so, append the word to the replaced_sentence\n", + " replaced_sentence.append(token)\n", + " else:\n", + " # otherwise, append the unknown token instead\n", + " replaced_sentence.append(unknown_token)\n", + " ### END CODE HERE ###\n", + " \n", + " # Append the list of tokens to the list of lists\n", + " replaced_tokenized_sentences.append(replaced_sentence)\n", + " \n", + " return replaced_tokenized_sentences" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original sentence:\n", + "[['dogs', 'run'], ['cats', 'sleep']]\n", + "tokenized_sentences with less frequent words converted to '':\n", + "[['dogs', ''], ['', 'sleep']]\n" + ] + } + ], + "source": [ + "tokenized_sentences = [[\"dogs\", \"run\"], [\"cats\", \"sleep\"]]\n", + "vocabulary = [\"dogs\", \"sleep\"]\n", + "tmp_replaced_tokenized_sentences = replace_oov_words_by_unk(tokenized_sentences, vocabulary)\n", + "print(f\"Original sentence:\")\n", + "print(tokenized_sentences)\n", + "print(f\"tokenized_sentences with less frequent words converted to '':\")\n", + "print(tmp_replaced_tokenized_sentences)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C7 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED_FUNCTION: preprocess_data ###\n", + "def preprocess_data(train_data, test_data, count_threshold):\n", + " \"\"\"\n", + " Preprocess data, i.e.,\n", + " - Find tokens that appear at least N times in the training data.\n", + " - Replace tokens that appear less than N times by \"\" both for training and test data. \n", + " Args:\n", + " train_data, test_data: List of lists of strings.\n", + " count_threshold: Words whose count is less than this are \n", + " treated as unknown.\n", + "\n", + " Returns:\n", + " Tuple of\n", + " - training data with low frequent words replaced by \"\"\n", + " - test data with low frequent words replaced by \"\"\n", + " - vocabulary of words that appear n times or more in the training data\n", + " \"\"\"\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + "\n", + " # Get the closed vocabulary using the train data\n", + " vocabulary = get_words_with_nplus_frequency(train_data, count_threshold)\n", + "\n", + " # For the train data, replace less common words with \"\"\n", + " train_data_replaced = replace_oov_words_by_unk(\n", + " train_data, vocabulary)\n", + "\n", + " # For the test data, replace less common words with \"\"\n", + " test_data_replaced = replace_oov_words_by_unk(\n", + " test_data, vocabulary)\n", + "\n", + " ### END CODE HERE ###\n", + " return train_data_replaced, test_data_replaced, vocabulary\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tmp_train_repl\n", + "[['sky', 'is', 'blue', '.'], ['leaves', 'are', 'green']]\n", + "\n", + "tmp_test_repl\n", + "[['', 'are', '', '.']]\n", + "\n", + "tmp_vocab\n", + "['sky', 'is', 'blue', '.', 'leaves', 'are', 'green']\n" + ] + } + ], + "source": [ + "# test your code\n", + "tmp_train = [['sky', 'is', 'blue', '.'],\n", + " ['leaves', 'are', 'green']]\n", + "tmp_test = [['roses', 'are', 'red', '.']]\n", + "\n", + "tmp_train_repl, tmp_test_repl, tmp_vocab = preprocess_data(tmp_train, \n", + " tmp_test, \n", + " count_threshold = 1)\n", + "\n", + "print(\"tmp_train_repl\")\n", + "print(tmp_train_repl)\n", + "print()\n", + "print(\"tmp_test_repl\")\n", + "print(tmp_test_repl)\n", + "print()\n", + "print(\"tmp_vocab\")\n", + "print(tmp_vocab)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "minimum_freq = 2\n", + "train_data_processed, test_data_processed, vocabulary = preprocess_data(train_data, \n", + " test_data, \n", + " minimum_freq)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First preprocessed training sample:\n", + "['i', '❤', 'and', 'her', 'boo', 'relationship', 'they', 'so', '', 'out', '!', '!']\n", + "\n", + "First preprocessed test sample:\n", + "['better', 'than', '``', 'misplaced', '', 'marks', \"''\", 'rt', ':', 'lately', 'i', 'find', 'that', 'i', 'am', 'adding', 'too', 'many', 'exclamation', 'points', 'where', 'they', 'do', \"n't\", 'belong', '!']\n", + "\n", + "First 10 vocabulary:\n", + "['i', '❤', 'and', 'her', 'boo', 'relationship', 'they', 'so', 'out', '!']\n", + "\n", + "Size of vocabulary: 14812\n" + ] + } + ], + "source": [ + "print(\"First preprocessed training sample:\")\n", + "print(train_data_processed[0])\n", + "print()\n", + "print(\"First preprocessed test sample:\")\n", + "print(test_data_processed[0])\n", + "print()\n", + "print(\"First 10 vocabulary:\")\n", + "print(vocabulary[0:10])\n", + "print()\n", + "print(\"Size of vocabulary:\", len(vocabulary))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C8 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED FUNCTION: count_n_grams ###\n", + "def count_n_grams(data, n, start_token='', end_token=''):\n", + " \"\"\"\n", + " Count all n-grams in the data\n", + "\n", + " Args:\n", + " data: List of lists of words\n", + " n: number of words in a sequence\n", + "\n", + " Returns:\n", + " A dictionary that maps a tuple of n-words to its frequency\n", + " \"\"\"\n", + "\n", + " # Initialize dictionary of n-grams and their counts\n", + " n_grams = {}\n", + "\n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + "\n", + " # Go through each sentence in the data\n", + " for sentence in data: # complete this line\n", + "\n", + " # prepend start token n times, and append one time\n", + " sentence = [start_token]*n + sentence + [end_token]\n", + "\n", + " # convert list to tuple\n", + " # So that the sequence of words can be used as\n", + " # a key in the dictionary\n", + " sentence = tuple(sentence)\n", + "\n", + " # Use 'i' to indicate the start of the n-gram\n", + " # from index 0\n", + " # to the last index where the end of the n-gram\n", + " # is within the sentence.\n", + "\n", + " for i in range(len(sentence)-n+1): # complete this line\n", + "\n", + " # Get the n-gram from i to i+n\n", + " n_gram = sentence[i:i+n]\n", + "\n", + " # check if the n-gram is in the dictionary\n", + " if n_gram in n_grams.keys(): # complete this line\n", + "\n", + " # Increment the count for this n-gram\n", + " n_grams[n_gram] += 1\n", + " else:\n", + " # Initialize this n-gram count to 1\n", + " n_grams[n_gram] = 1\n", + "\n", + " ### END CODE HERE ###\n", + " return n_grams\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Uni-gram:\n", + "{('',): 2, ('i',): 1, ('like',): 2, ('a',): 2, ('cat',): 2, ('',): 2, ('this',): 1, ('dog',): 1, ('is',): 1}\n", + "Bi-gram:\n", + "{('', ''): 2, ('', 'i'): 1, ('i', 'like'): 1, ('like', 'a'): 2, ('a', 'cat'): 2, ('cat', ''): 2, ('', 'this'): 1, ('this', 'dog'): 1, ('dog', 'is'): 1, ('is', 'like'): 1}\n" + ] + } + ], + "source": [ + "# test your code\n", + "# CODE REVIEW COMMENT: Outcome does not match expected outcome\n", + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "print(\"Uni-gram:\")\n", + "print(count_n_grams(sentences, 1))\n", + "print(\"Bi-gram:\")\n", + "print(count_n_grams(sentences, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C9 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "### GRADED FUNCTION: estimate_probability ###\n", + "def estimate_probability(word, previous_n_gram, \n", + " n_gram_counts, n_plus1_gram_counts, vocabulary_size, k=1.0):\n", + " \"\"\"\n", + " Estimate the probabilities of a next word using the n-gram counts with k-smoothing\n", + " \n", + " Args:\n", + " word: next word\n", + " previous_n_gram: A sequence of words of length n\n", + " n_gram_counts: Dictionary of counts of n-grams\n", + " n_plus1_gram_counts: Dictionary of counts of (n+1)-grams\n", + " vocabulary_size: number of words in the vocabulary\n", + " k: positive constant, smoothing parameter\n", + " \n", + " Returns:\n", + " A probability\n", + " \"\"\"\n", + " # convert list to tuple to use it as a dictionary key\n", + " previous_n_gram = tuple(previous_n_gram)\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # Set the denominator\n", + " # If the previous n-gram exists in the dictionary of n-gram counts,\n", + " # Get its count. Otherwise set the count to zero\n", + " # Use the dictionary that has counts for n-grams\n", + " previous_n_gram_count = n_gram_counts[previous_n_gram] if previous_n_gram in n_gram_counts else 0\n", + " \n", + " # Calculate the denominator using the count of the previous n gram\n", + " # and apply k-smoothing\n", + " denominator = previous_n_gram_count + k * vocabulary_size\n", + "\n", + " # Define n plus 1 gram as the previous n-gram plus the current word as a tuple\n", + " n_plus1_gram = previous_n_gram + (word,)\n", + " \n", + " # Set the count to the count in the dictionary,\n", + " # otherwise 0 if not in the dictionary\n", + " # use the dictionary that has counts for the n-gram plus current word\n", + " n_plus1_gram_count = n_plus1_gram_counts[n_plus1_gram] if n_plus1_gram in n_plus1_gram_counts else 0\n", + " \n", + " # Define the numerator use the count of the n-gram plus current word,\n", + " # and apply smoothing\n", + " numerator = n_plus1_gram_count + k\n", + "\n", + " # Calculate the probability as the numerator divided by denominator\n", + " probability =numerator /denominator\n", + " \n", + " ### END CODE HERE ###\n", + " \n", + " return probability" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7\n", + "The estimated probability of word 'cat' given the previous n-gram 'a' is: 0.3333\n" + ] + } + ], + "source": [ + "# test your code\n", + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "\n", + "unigram_counts = count_n_grams(sentences, 1)\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "print(len(unique_words))\n", + "tmp_prob = estimate_probability(\"cat\", \"a\", unigram_counts, bigram_counts, len(unique_words), k=1)\n", + "\n", + "print(f\"The estimated probability of word 'cat' given the previous n-gram 'a' is: {tmp_prob:.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "def estimate_probabilities(previous_n_gram, n_gram_counts, n_plus1_gram_counts, vocabulary, k=1.0):\n", + " \"\"\"\n", + " Estimate the probabilities of next words using the n-gram counts with k-smoothing\n", + " \n", + " Args:\n", + " previous_n_gram: A sequence of words of length n\n", + " n_gram_counts: Dictionary of counts of (n+1)-grams\n", + " n_plus1_gram_counts: Dictionary of counts of (n+1)-grams\n", + " vocabulary: List of words\n", + " k: positive constant, smoothing parameter\n", + " \n", + " Returns:\n", + " A dictionary mapping from next words to the probability.\n", + " \"\"\"\n", + " \n", + " # convert list to tuple to use it as a dictionary key\n", + " previous_n_gram = tuple(previous_n_gram)\n", + " \n", + " # add to the vocabulary\n", + " # is not needed since it should not appear as the next word\n", + " vocabulary = vocabulary + [\"\", \"\"]\n", + " vocabulary_size = len(vocabulary)\n", + " \n", + " probabilities = {}\n", + " for word in vocabulary:\n", + " probability = estimate_probability(word, previous_n_gram, \n", + " n_gram_counts, n_plus1_gram_counts, \n", + " vocabulary_size, k=k)\n", + " probabilities[word] = probability\n", + "\n", + " return probabilities" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'like': 0.09090909090909091,\n", + " 'dog': 0.09090909090909091,\n", + " 'cat': 0.2727272727272727,\n", + " 'is': 0.09090909090909091,\n", + " 'this': 0.09090909090909091,\n", + " 'a': 0.09090909090909091,\n", + " 'i': 0.09090909090909091,\n", + " '': 0.09090909090909091,\n", + " '': 0.09090909090909091}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# test your code\n", + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "unigram_counts = count_n_grams(sentences, 1)\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "estimate_probabilities(\"a\", unigram_counts, bigram_counts, unique_words, k=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "def make_count_matrix(n_plus1_gram_counts, vocabulary):\n", + " # add to the vocabulary\n", + " # is omitted since it should not appear as the next word\n", + " vocabulary = vocabulary + [\"\", \"\"]\n", + " \n", + " # obtain unique n-grams\n", + " n_grams = []\n", + " for n_plus1_gram in n_plus1_gram_counts.keys():\n", + " n_gram = n_plus1_gram[0:-1]\n", + " n_grams.append(n_gram)\n", + " n_grams = list(set(n_grams))\n", + " \n", + " # mapping from n-gram to row\n", + " row_index = {n_gram:i for i, n_gram in enumerate(n_grams)} \n", + " # mapping from next word to column\n", + " col_index = {word:j for j, word in enumerate(vocabulary)}\n", + " \n", + " nrow = len(n_grams)\n", + " ncol = len(vocabulary)\n", + " count_matrix = np.zeros((nrow, ncol))\n", + " for n_plus1_gram, count in n_plus1_gram_counts.items():\n", + " n_gram = n_plus1_gram[0:-1]\n", + " word = n_plus1_gram[-1]\n", + " if word not in vocabulary:\n", + " continue\n", + " i = row_index[n_gram]\n", + " j = col_index[word]\n", + " count_matrix[i, j] = count\n", + " \n", + " count_matrix = pd.DataFrame(count_matrix, index=n_grams, columns=vocabulary)\n", + " return count_matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bigram counts\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
likedogcatisthisai<e><unk>
(a,)0.00.02.00.00.00.00.00.00.0
(is,)1.00.00.00.00.00.00.00.00.0
(i,)1.00.00.00.00.00.00.00.00.0
(like,)0.00.00.00.00.02.00.00.00.0
(this,)0.01.00.00.00.00.00.00.00.0
(cat,)0.00.00.00.00.00.00.02.00.0
(<s>,)0.00.00.00.01.00.01.00.00.0
(dog,)0.00.00.01.00.00.00.00.00.0
\n", + "
" + ], + "text/plain": [ + " like dog cat is this a i \n", + "(a,) 0.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(is,) 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(i,) 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(like,) 0.0 0.0 0.0 0.0 0.0 2.0 0.0 0.0 0.0\n", + "(this,) 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(cat,) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0\n", + "(,) 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0\n", + "(dog,) 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "\n", + "print('bigram counts')\n", + "display(make_count_matrix(bigram_counts, unique_words))" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "trigram counts\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
likedogcatisthisai<e><unk>
(like, a)0.00.02.00.00.00.00.00.00.0
(<s>, this)0.01.00.00.00.00.00.00.00.0
(this, dog)0.00.00.01.00.00.00.00.00.0
(<s>, <s>)0.00.00.00.01.00.01.00.00.0
(a, cat)0.00.00.00.00.00.00.02.00.0
(is, like)0.00.00.00.00.01.00.00.00.0
(i, like)0.00.00.00.00.01.00.00.00.0
(dog, is)1.00.00.00.00.00.00.00.00.0
(<s>, i)1.00.00.00.00.00.00.00.00.0
\n", + "
" + ], + "text/plain": [ + " like dog cat is this a i \n", + "(like, a) 0.0 0.0 2.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(, this) 0.0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(this, dog) 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0\n", + "(, ) 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0\n", + "(a, cat) 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 0.0\n", + "(is, like) 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0\n", + "(i, like) 0.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0\n", + "(dog, is) 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n", + "(, i) 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Show trigram counts\n", + "print('\\ntrigram counts')\n", + "trigram_counts = count_n_grams(sentences, 3)\n", + "display(make_count_matrix(trigram_counts, unique_words))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "def make_probability_matrix(n_plus1_gram_counts, vocabulary, k):\n", + " count_matrix = make_count_matrix(n_plus1_gram_counts, unique_words)\n", + " count_matrix += k\n", + " prob_matrix = count_matrix.div(count_matrix.sum(axis=1), axis=0)\n", + " return prob_matrix\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bigram probabilities\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
likedogcatisthisai<e><unk>
(a,)0.0909090.0909090.2727270.0909090.0909090.0909090.0909090.0909090.090909
(is,)0.2000000.1000000.1000000.1000000.1000000.1000000.1000000.1000000.100000
(i,)0.2000000.1000000.1000000.1000000.1000000.1000000.1000000.1000000.100000
(like,)0.0909090.0909090.0909090.0909090.0909090.2727270.0909090.0909090.090909
(this,)0.1000000.2000000.1000000.1000000.1000000.1000000.1000000.1000000.100000
(cat,)0.0909090.0909090.0909090.0909090.0909090.0909090.0909090.2727270.090909
(<s>,)0.0909090.0909090.0909090.0909090.1818180.0909090.1818180.0909090.090909
(dog,)0.1000000.1000000.1000000.2000000.1000000.1000000.1000000.1000000.100000
\n", + "
" + ], + "text/plain": [ + " like dog cat is this a i \\\n", + "(a,) 0.090909 0.090909 0.272727 0.090909 0.090909 0.090909 0.090909 \n", + "(is,) 0.200000 0.100000 0.100000 0.100000 0.100000 0.100000 0.100000 \n", + "(i,) 0.200000 0.100000 0.100000 0.100000 0.100000 0.100000 0.100000 \n", + "(like,) 0.090909 0.090909 0.090909 0.090909 0.090909 0.272727 0.090909 \n", + "(this,) 0.100000 0.200000 0.100000 0.100000 0.100000 0.100000 0.100000 \n", + "(cat,) 0.090909 0.090909 0.090909 0.090909 0.090909 0.090909 0.090909 \n", + "(,) 0.090909 0.090909 0.090909 0.090909 0.181818 0.090909 0.181818 \n", + "(dog,) 0.100000 0.100000 0.100000 0.200000 0.100000 0.100000 0.100000 \n", + "\n", + " \n", + "(a,) 0.090909 0.090909 \n", + "(is,) 0.100000 0.100000 \n", + "(i,) 0.100000 0.100000 \n", + "(like,) 0.090909 0.090909 \n", + "(this,) 0.100000 0.100000 \n", + "(cat,) 0.272727 0.090909 \n", + "(,) 0.090909 0.090909 \n", + "(dog,) 0.100000 0.100000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "print(\"bigram probabilities\")\n", + "display(make_probability_matrix(bigram_counts, unique_words, k=1))" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "trigram probabilities\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
likedogcatisthisai<e><unk>
(like, a)0.0909090.0909090.2727270.0909090.0909090.0909090.0909090.0909090.090909
(<s>, this)0.1000000.2000000.1000000.1000000.1000000.1000000.1000000.1000000.100000
(this, dog)0.1000000.1000000.1000000.2000000.1000000.1000000.1000000.1000000.100000
(<s>, <s>)0.0909090.0909090.0909090.0909090.1818180.0909090.1818180.0909090.090909
(a, cat)0.0909090.0909090.0909090.0909090.0909090.0909090.0909090.2727270.090909
(is, like)0.1000000.1000000.1000000.1000000.1000000.2000000.1000000.1000000.100000
(i, like)0.1000000.1000000.1000000.1000000.1000000.2000000.1000000.1000000.100000
(dog, is)0.2000000.1000000.1000000.1000000.1000000.1000000.1000000.1000000.100000
(<s>, i)0.2000000.1000000.1000000.1000000.1000000.1000000.1000000.1000000.100000
\n", + "
" + ], + "text/plain": [ + " like dog cat is this a \\\n", + "(like, a) 0.090909 0.090909 0.272727 0.090909 0.090909 0.090909 \n", + "(, this) 0.100000 0.200000 0.100000 0.100000 0.100000 0.100000 \n", + "(this, dog) 0.100000 0.100000 0.100000 0.200000 0.100000 0.100000 \n", + "(, ) 0.090909 0.090909 0.090909 0.090909 0.181818 0.090909 \n", + "(a, cat) 0.090909 0.090909 0.090909 0.090909 0.090909 0.090909 \n", + "(is, like) 0.100000 0.100000 0.100000 0.100000 0.100000 0.200000 \n", + "(i, like) 0.100000 0.100000 0.100000 0.100000 0.100000 0.200000 \n", + "(dog, is) 0.200000 0.100000 0.100000 0.100000 0.100000 0.100000 \n", + "(, i) 0.200000 0.100000 0.100000 0.100000 0.100000 0.100000 \n", + "\n", + " i \n", + "(like, a) 0.090909 0.090909 0.090909 \n", + "(, this) 0.100000 0.100000 0.100000 \n", + "(this, dog) 0.100000 0.100000 0.100000 \n", + "(, ) 0.181818 0.090909 0.090909 \n", + "(a, cat) 0.090909 0.272727 0.090909 \n", + "(is, like) 0.100000 0.100000 0.100000 \n", + "(i, like) 0.100000 0.100000 0.100000 \n", + "(dog, is) 0.100000 0.100000 0.100000 \n", + "(, i) 0.100000 0.100000 0.100000 " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print(\"trigram probabilities\")\n", + "trigram_counts = count_n_grams(sentences, 3)\n", + "display(make_probability_matrix(trigram_counts, unique_words, k=1))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C10 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: calculate_perplexity\n", + "def calculate_perplexity(sentence, n_gram_counts, n_plus1_gram_counts, vocabulary_size, k=1.0):\n", + " \"\"\"\n", + " Calculate perplexity for a list of sentences\n", + " \n", + " Args:\n", + " sentence: List of strings\n", + " n_gram_counts: Dictionary of counts of (n+1)-grams\n", + " n_plus1_gram_counts: Dictionary of counts of (n+1)-grams\n", + " vocabulary_size: number of unique words in the vocabulary\n", + " k: Positive smoothing constant\n", + " \n", + " Returns:\n", + " Perplexity score\n", + " \"\"\"\n", + " # length of previous words\n", + " n = len(list(n_gram_counts.keys())[0]) \n", + " \n", + " # prepend and append \n", + " sentence = [\"\"] * n + sentence + [\"\"]\n", + " \n", + " # Cast the sentence from a list to a tuple\n", + " sentence = tuple(sentence)\n", + " \n", + " # length of sentence (after adding and tokens)\n", + " N = len(sentence)\n", + " \n", + " # The variable p will hold the product\n", + " # that is calculated inside the n-root\n", + " # Update this in the code below\n", + " product_pi = 1.0\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # Index t ranges from n to N - 1, inclusive on both ends\n", + " for t in range(n, N-1): # complete this line\n", + "\n", + " # get the n-gram preceding the word at position t\n", + " n_gram = sentence[t-n:t]\n", + " \n", + " # get the word at position t\n", + " word = sentence[t]\n", + " \n", + " # Estimate the probability of the word given the n-gram\n", + " # using the n-gram counts, n-plus1-gram counts,\n", + " # vocabulary size, and smoothing constant\n", + " probability = estimate_probability(word,n_gram, n_gram_counts, n_plus1_gram_counts, len(unique_words), k=1)\n", + " \n", + " # Update the product of the probabilities\n", + " # This 'product_pi' is a cumulative product \n", + " # of the (1/P) factors that are calculated in the loop\n", + " product_pi *= 1/ probability\n", + "\n", + " # Take the Nth root of the product\n", + " perplexity = product_pi**(1/float(N))\n", + " \n", + " ### END CODE HERE ### \n", + " return perplexity" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Perplexity for first train sample: 2.3348\n", + "Perplexity for test sample: 2.8040\n" + ] + } + ], + "source": [ + "# test your code\n", + "\n", + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "\n", + "unigram_counts = count_n_grams(sentences, 1)\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "\n", + "\n", + "perplexity_train1 = calculate_perplexity(sentences[0],\n", + " unigram_counts, bigram_counts,\n", + " len(unique_words), k=1.0)\n", + "print(f\"Perplexity for first train sample: {perplexity_train1:.4f}\")\n", + "\n", + "test_sentence = ['i', 'like', 'a', 'dog']\n", + "perplexity_test = calculate_perplexity(test_sentence,\n", + " unigram_counts, bigram_counts,\n", + " len(unique_words), k=1.0)\n", + "print(f\"Perplexity for test sample: {perplexity_test:.4f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "# UNQ_C11 (UNIQUE CELL IDENTIFIER, DO NOT EDIT)\n", + "# GRADED FUNCTION: suggest_a_word\n", + "def suggest_a_word(previous_tokens, n_gram_counts, n_plus1_gram_counts, vocabulary, k=1.0, start_with=None):\n", + " \"\"\"\n", + " Get suggestion for the next word\n", + " \n", + " Args:\n", + " previous_tokens: The sentence you input where each token is a word. Must have length > n \n", + " n_gram_counts: Dictionary of counts of (n+1)-grams\n", + " n_plus1_gram_counts: Dictionary of counts of (n+1)-grams\n", + " vocabulary: List of words\n", + " k: positive constant, smoothing parameter\n", + " start_with: If not None, specifies the first few letters of the next word\n", + " \n", + " Returns:\n", + " A tuple of \n", + " - string of the most likely next word\n", + " - corresponding probability\n", + " \"\"\"\n", + " \n", + " # length of previous words\n", + " n = len(list(n_gram_counts.keys())[0]) \n", + " \n", + " # From the words that the user already typed\n", + " # get the most recent 'n' words as the previous n-gram\n", + " previous_n_gram = previous_tokens[-n:]\n", + "\n", + " # Estimate the probabilities that each word in the vocabulary\n", + " # is the next word,\n", + " # given the previous n-gram, the dictionary of n-gram counts,\n", + " # the dictionary of n plus 1 gram counts, and the smoothing constant\n", + " probabilities = estimate_probabilities(previous_n_gram,\n", + " n_gram_counts, n_plus1_gram_counts,\n", + " vocabulary, k=k)\n", + " \n", + " # Initialize suggested word to None\n", + " # This will be set to the word with highest probability\n", + " suggestion = None\n", + " \n", + " # Initialize the highest word probability to 0\n", + " # this will be set to the highest probability \n", + " # of all words to be suggested\n", + " max_prob = 0\n", + " \n", + " ### START CODE HERE (Replace instances of 'None' with your code) ###\n", + " \n", + " # For each word and its probability in the probabilities dictionary:\n", + " for word, prob in probabilities.items(): # complete this line\n", + " \n", + " # If the optional start_with string is set\n", + " if start_with !=None: # complete this line\n", + " \n", + " # Check if the beginning of word does not match with the letters in 'start_with'\n", + " if not word.startswith(start_with): # complete this line\n", + " # if they don't match, skip this word (move onto the next word)\n", + " continue # complete this line\n", + " \n", + " # Check if this word's probability\n", + " # is greater than the current maximum probability\n", + " if prob> max_prob: # complete this line\n", + " \n", + " # If so, save this word as the best suggestion (so far)\n", + " suggestion = word\n", + " \n", + " # Save the new maximum probability\n", + " max_prob = prob\n", + "\n", + " ### END CODE HERE\n", + " \n", + " return suggestion, max_prob" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The previous words are 'i like',\n", + "\tand the suggested word is `a` with a probability of 0.2727\n", + "\n", + "The previous words are 'i like', the suggestion must start with `c`\n", + "\tand the suggested word is `cat` with a probability of 0.0909\n" + ] + } + ], + "source": [ + "# test your code\n", + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "\n", + "unigram_counts = count_n_grams(sentences, 1)\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "\n", + "previous_tokens = [\"i\", \"like\"]\n", + "tmp_suggest1 = suggest_a_word(previous_tokens, unigram_counts, bigram_counts, unique_words, k=1.0)\n", + "print(f\"The previous words are 'i like',\\n\\tand the suggested word is `{tmp_suggest1[0]}` with a probability of {tmp_suggest1[1]:.4f}\")\n", + "\n", + "print()\n", + "# test your code when setting the starts_with\n", + "tmp_starts_with = 'c'\n", + "tmp_suggest2 = suggest_a_word(previous_tokens, unigram_counts, bigram_counts, unique_words, k=1.0, start_with=tmp_starts_with)\n", + "print(f\"The previous words are 'i like', the suggestion must start with `{tmp_starts_with}`\\n\\tand the suggested word is `{tmp_suggest2[0]}` with a probability of {tmp_suggest2[1]:.4f}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "def get_suggestions(previous_tokens, n_gram_counts_list, vocabulary, k=1.0, start_with=None):\n", + " model_counts = len(n_gram_counts_list)\n", + " suggestions = []\n", + " for i in range(model_counts-1):\n", + " n_gram_counts = n_gram_counts_list[i]\n", + " n_plus1_gram_counts = n_gram_counts_list[i+1]\n", + " \n", + " suggestion = suggest_a_word(previous_tokens, n_gram_counts,\n", + " n_plus1_gram_counts, vocabulary,\n", + " k=k, start_with=start_with)\n", + " suggestions.append(suggestion)\n", + " return suggestions" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The previous words are 'i like', the suggestions are:\n" + ] + }, + { + "data": { + "text/plain": [ + "[('a', 0.2727272727272727),\n", + " ('a', 0.2),\n", + " ('like', 0.1111111111111111),\n", + " ('like', 0.1111111111111111)]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# test your code\n", + "sentences = [['i', 'like', 'a', 'cat'],\n", + " ['this', 'dog', 'is', 'like', 'a', 'cat']]\n", + "unique_words = list(set(sentences[0] + sentences[1]))\n", + "\n", + "unigram_counts = count_n_grams(sentences, 1)\n", + "bigram_counts = count_n_grams(sentences, 2)\n", + "trigram_counts = count_n_grams(sentences, 3)\n", + "quadgram_counts = count_n_grams(sentences, 4)\n", + "qintgram_counts = count_n_grams(sentences, 5)\n", + "\n", + "n_gram_counts_list = [unigram_counts, bigram_counts, trigram_counts, quadgram_counts, qintgram_counts]\n", + "previous_tokens = [\"i\", \"like\"]\n", + "tmp_suggest3 = get_suggestions(previous_tokens, n_gram_counts_list, unique_words, k=1.0)\n", + "\n", + "print(f\"The previous words are 'i like', the suggestions are:\")\n", + "display(tmp_suggest3)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing n-gram counts with n = 1 ...\n", + "Computing n-gram counts with n = 2 ...\n", + "Computing n-gram counts with n = 3 ...\n", + "Computing n-gram counts with n = 4 ...\n", + "Computing n-gram counts with n = 5 ...\n" + ] + } + ], + "source": [ + "n_gram_counts_list = []\n", + "for n in range(1, 6):\n", + " print(\"Computing n-gram counts with n =\", n, \"...\")\n", + " n_model_counts = count_n_grams(train_data_processed, n)\n", + " n_gram_counts_list.append(n_model_counts)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The previous words are ['i', 'am', 'to'], the suggestions are:\n" + ] + }, + { + "data": { + "text/plain": [ + "[('be', 0.02757667260886965),\n", + " ('have', 0.000134961873270801),\n", + " ('have', 0.00013499831252109347),\n", + " ('i', 6.750371270419872e-05)]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "previous_tokens = [\"i\", \"am\", \"to\"]\n", + "tmp_suggest4 = get_suggestions(previous_tokens, n_gram_counts_list, vocabulary, k=1.0)\n", + "\n", + "print(f\"The previous words are {previous_tokens}, the suggestions are:\")\n", + "display(tmp_suggest4)" + ] + } + ], + "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.11.2" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}