From f35e044c53b7f50d5703401dc2207c9a92a0bbd1 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Thu, 17 May 2018 10:38:34 +0200 Subject: [PATCH 01/15] Task2, 4 configurations done. Missing export so far --- Jonas_Solutions/Task_02_JonasWeinz.ipynb | 366 ++++++++++------------- README.md | 4 + 2 files changed, 168 insertions(+), 202 deletions(-) diff --git a/Jonas_Solutions/Task_02_JonasWeinz.ipynb b/Jonas_Solutions/Task_02_JonasWeinz.ipynb index e450952..ad668d4 100644 --- a/Jonas_Solutions/Task_02_JonasWeinz.ipynb +++ b/Jonas_Solutions/Task_02_JonasWeinz.ipynb @@ -13,7 +13,9 @@ "* Tutorial on Datacamp: https://www.datacamp.com/community/tutorials/scikit-learn-fake-news\n", "\n", "* liar dataset paper: https://www.cs.ucsb.edu/~william/papers/acl2017.pdf\n", - " * dataset: https://www.cs.ucsb.edu/~william/data/liar_dataset.zip" + " * dataset: https://www.cs.ucsb.edu/~william/data/liar_dataset.zip\n", + "\n", + "* Mex Vocabulary: http://jens-lehmann.org/files/2015/semantics_mex.pdf" ] }, { @@ -104,6 +106,9 @@ " print('Confusion matrix, without normalization')\n", "\n", " thresh = cm.max() / 2.\n", + " \n", + " pp(cm)\n", + " \n", " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n", " plt.text(j, i, cm[i, j],\n", " horizontalalignment=\"center\",\n", @@ -402,166 +407,65 @@ "metadata": {}, "outputs": [], "source": [ - "vectorizer_1 = CountVectorizer(stop_words='english')\n", + "vectorizer_1 = TfidfVectorizer(stop_words='english', max_df=0.7)\n", "vec_train_1 = vectorizer_1.fit_transform(X1)\n", "vec_test_1 = vectorizer_1.transform(Xt1)" ] }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "#tfidf_vectorizer_1 = TfidfVectorizer(stop_words='english', max_df=0.7)\n", - "#tfidf_train_1 = tfidf_vectorizer_1.fit_transform(X1)\n", - "#tfidf_test_1 = tfidf_vectorizer_1.transform(Xt1)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "#display(count_vectorizer.get_feature_names()[0:10])\n", - "#display(count_vectorizer.get_feature_names()[-10:])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "#display(tfidf_vectorizer.get_feature_names()[:10])\n", - "#display(tfidf_vectorizer.get_feature_names()[-10:])" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "#count_df = pd.DataFrame(count_train.A, columns=count_vectorizer.get_feature_names())\n", - "#tfidf_df = pd.DataFrame(count_train.A, columns=tfidf_vectorizer.get_feature_names())\n", - "#diff = set(count_df.columns) - set(tfidf_df.columns)\n", - "#pp(count_df.equals(tfidf_df))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "#clf = MultinomialNB()\n", - "#clf.fit(tfidf_train_1, y1)\n", - "#pred = clf.predict(tfidf_test_1)\n", - "#score = metrics.accuracy_score(yt1, pred)\n", - "#pp(\"score: \" + str(score))\n", - "#cm = metrics.confusion_matrix(yt1, pred, labels=[\"FAKE\", \"REAL\"])\n", - "#plot_confusion_matrix(cm, classes=[\"FAKE\", \"REAL\"], title= \"TFIDF_Vecctorizer, Multinomial Naive Bayes\")" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.9320143127762577'\n", - "Confusion matrix, without normalization\n", - "'score: 0.8838383838383839'\n", - "Confusion matrix, without normalization\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "clf_a = MultinomialNB()\n", - "clf_a.fit(vec_train_1, y1)\n", - "test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- train\", Xt=vec_train_1,yt=y1, clf=clf_a)\n", - "test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- test\", Xt=vec_test_1,yt=yt1, clf=clf_a)" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "* try to get most important features" + "* trying a Random Forest classifier " ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 10, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.9960008419280152'\n", + "Confusion matrix, without normalization\n", + "array([[2342, 3],\n", + " [ 16, 2390]])\n", + "'score: 0.8478535353535354'\n", + "Confusion matrix, without normalization\n", + "array([[737, 82],\n", + " [159, 606]])\n" + ] + }, { "data": { + "image/png": "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\n", "text/plain": [ - "'\\ndef most_informative_feature_for_binary_classification(vectorizer, classifier, n=100):\\n \"\"\"\\n See: https://stackoverflow.com/a/26980472\\n \\n Identify most important features if given a vectorizer and binary classifier. Set n to the number\\n of weighted features you would like to show. (Note: current implementation merely prints and does not \\n return top classes.)\\n \"\"\"\\n\\n class_labels = classifier.classes_\\n feature_names = vectorizer.get_feature_names()\\n topn_class1 = sorted(zip(classifier.coef_[0], feature_names))[:n]\\n topn_class2 = sorted(zip(classifier.coef_[0], feature_names))[-n:]\\n \\n l = []\\n \\n for coef, feat in topn_class1:\\n l.append((class_labels[0], coef, feat))\\n\\n display(l)\\n\\n for coef, feat in reversed(topn_class2):\\n l.append((class_labels[1], coef, feat))\\n \\n display(l)\\n\\n\\nmost_informative_feature_for_binary_classification(tfidf_vectorizer_1, linear_clf, n=30)\\n'" + "" ] }, - "execution_count": 16, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAEmCAYAAAATPUntAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XecVOX1x/HPd+mIghQJUi3YYkFFxI5iAWxoFFEjaDCosURN+Rk1RhNNTLMQoybRCGqCkhgjKhERNZaICgqI0UgRAoh0EVmQdn5/PM/AsNndGZa5OzM7583rvnbm3jv3nplhzz7PLeeRmeGcc6WoLN8BOOdcvngCdM6VLE+AzrmS5QnQOVeyPAE650qWJ0DnXMnyBFjHSGoi6WlJKyT9ZRu2c76k53MZWz5I+oekwTV87a2Slkj6NNdxucLgCTBPJJ0naaKkLyQtiL+oR+Zg02cBbYFWZnZ2TTdiZn8ysxNzEM8WJPWSZJKerDD/gDj/5Sy3c7OkRzOtZ2Z9zWxEDeLsBHwH2MfMvrK1r3fFwRNgHki6FrgL+CkhWXUC7gVOz8HmOwMfmdn6HGwrKYuBwyS1Sps3GPgoVztQsC3/vzsBS81sUQ32XX8b9utqk5n5VIsT0Bz4Aji7mnUaERLkJ3G6C2gUl/UC5hFaJ4uABcBFcdktwFpgXdzHEOBm4NG0bXcBDKgfn18IzAJWAh8D56fNfy3tdYcDbwMr4s/D05a9DPwEeD1u53mgdRXvLRX//cDlcV49YD5wE/By2rp3A3OBz4FJwFFxfp8K73NKWhy3xThWA7vHeRfH5fcBT6Rt/+fAeEAVYjw+vn5j3P7wOP804H3gs7jdvdNeMxv4P2Aq8GXq8/WpsKe8B1BqU/zlXV/dLwjwY2ACsBPQBvgX8JO4rFd8/Y+BBkA/oBzYMS6vmPCqTIDAdjG57BmXtQO+Gh9vSoBAS2A5cEF83bnxeau4/GVgJrAH0CQ+v72K95ZKgIcDb8Z5/YCxwMUVEuDXgVZxn98BPgUaV/a+0uL4L/DV+JoGFRJgU0Ir80LgKGAJ0KG6ONOe7wGsAk6I2/0+MANoGJfPBiYDHYEmcd69wL35/j/nU9WTd4FrXytgiVXfRT0f+LGZLTKzxYSW3QVpy9fF5evMbAyhlbJnDePZCOwrqYmZLTCz9ytZ52Rgupk9YmbrzWwk8CFwato6D5nZR2a2GhgFdKtup2b2L6ClpD2BQcDDlazzqJktjfv8NaFlnOl9Djez9+Nr1lXYXjnhc7wDeBS40szmZdheyjnAs2Y2Lm73V4Rkf3jaOsPMbG78DDCzb5nZt7LcvssDT4C1bynQOsNxop2BOWnP58R5m7ZRIYGWA822NhAzW0X4xb4UWCDpWUl7ZRFPKqb2ac/Tz5RmG88jwBXAscCTFRdK+q6kD+IZ7c8Ihw9aZ9jm3OoWmtmbhC6/CIk6W1t8Bma2Me4r/TOodt+u8HgCrH1vEI4R9a9mnU8IJzNSOsV5NbGK0PVL2eKMppmNNbMTCN3fD4E/ZBFPKqb5NYwp5RHgW8CY2DrbRNJRhG7mAEL3vgXh+KNSoVexzWrLG0m6nNCS/CRuP1tbfAaSROjupn8GXlqpyHgCrGVmtoJwsP+3kvpLaiqpgaS+kn4RVxsJ3CipjaTWcf2Ml3xUYTJwtKROkpoDP0gtkNRW0umStiMk5S8IXeKKxgB7xEt36ks6B9gHeKaGMQFgZh8DxwA3VLJ4e8KxzsVAfUk3ATukLV8IdNmaM72S9gBuJRxbvAD4vqRqu+ppRgEnS+otqQHhmOSXhOOzrkh5AsyDeDzrWuBGwi/4XEJX8O9xlVuBiYQziu8B78R5NdnXOODxuK1JbJm0ymIcnwDLCMnoskq2sRQ4hfBLv5TQcjrFzJbUJKYK237NzCpr3Y4FniOctJgDrGHLLmbqIu+lkt7JtJ94yOFR4OdmNsXMpgPXA49IapRFnP8hJM7fEE6enAqcamZrq9nn/ZLuz7Rtlz8y81a7c640eQvQOVeyPAE650qWJ0DnXMnyBOicK1meABNQsSRVoZWWknS9pAfyHUdtkjRb0vFZrNclVqXxggYloKQTYG2VpLKESktlI5af2uJ2LzP7qZldnMC+2kkaLemTmES65HofdV22iTqL7Vwo6bVcxFSXlWwCrAslqXJQ8inXNhKu3ftavgNxLiv5rsaQj4naL0l1IVuWljoR+A/h1q57gX+yuWLJzVRfvupl/rfk00XAB4RSVLOAS+K627FlWacvCPe0VtxHpjJP3yVcSL2CcFF14wyfb/0Yc5et+E5S7/MiwgXPywn3KB8S9/0ZcE/a+mWEC8nnxO/gYaB52vIL4rKlhDtNZgPHp732OkIFm6WEuzxaVvZ5VxJn6nUrgX8DZ+Tw/+Uj8btaHb+r78f5PQl3nHwGTAF6pb3mQiqUMwP2Jlw4viFu57N8/84V6pT3APLypmu/JNWFbC4t1ZpQgurMmCi+TUiWW5MAK5Z8OhnYjXCf7DExloPSYp1X4b1t2gfZlXl6i5A4WxIS7aUZPt9tSYD3A40JfyTWEO6O2YlQdGARcExc/xsxzl0JhRf+BjwSl+0Tf/GPJvwhuyN+X6kE+O343XaIy38HjKzs864kzrPjZ1FGKCSxCmiXw/+bs1NxxuftCUm6X9znCfF5G7IsZ+ZT1VMhdZ9qUz5LUvUD3jezv8X9D2PLSirZGG5pJZ/M7Fkzm2nBPwkFSY/KclvZlnn6xMyWAU+TodTVNvqJma0xs+cJyWVk/A7mA68CB8b1zgfuMLNZZvYF4R7ngfHkxVnAM2b2ipl9CfyQLe9xvhS4wczmxeU3A2dlc+LDzP4SP4uNZvY4MB3okZN3XrmvE4pFjIn7HEe4TbJfXJ5NOTNXhVJNgPksSbUzafe0WvhznW1NupQtyi7FQgoTJC2LZaP6kblsVHo8mco81aTUVU0tTHu8upLnqX1X9v3UJxzPrfgZryJ85ymdgSclfRY/rw8I3cW2mYKTNEjS5LTX7ksVn3U8uZaaOsV7g1PPr8+0r7RYz07tL+7zSEKrM9tyZq4KpZoAa7skVboFhK4XsKmsUoe05dWWr4o23cAdb+R/gtBya2uhbNQYMpeNSsmmzFMhquz7WU9ImAsI7wEASU0Jrf6UuUBfM2uRNjWOrcwqSepMKBd2BeEMfwtgGps/6y2YWbO06b9mdmna859WsZuK39dcQtc+PdbtzOz2uI+qypn5Tf5ZKMkEaLVfkirds8B+cb/1gcvZMslVWb6qCg0Jx7EWA+sl9SUcP0tZCLSK26pMTss8SWoc4wFoFJ+nlt2sLEd9y8JI4BpJu0hqRjib/3hslf8VOEXSkZIaEo7Vpv9fvx+4LSY04neczdn/7QiJZXF83UWEFmAuLSQc10x5FDhV0kmS6klqHC9t6pChnNlCoEN8/64KJZkAoXZLUlXY7xLCgfRfELpl+8T9fBmXV1e+qrLtrQSuIiSy5cB5wOi05R8SksWs2IXaucLrt7rMUwapM5gQWiSr05Z1JJy9zoU/Es6avkI4+7kGuBIgHge7HPgzoTW4nC0PM9xN+Iyel7SScELk0Ew7NLN/A78m9CAWAvuRu/eT8jPCH97PJH3XzOYSLs26ns3/T79H+N2trpzZi4Qz+59K2uayZXWVl8PKs3gd3zzCaGwv5TueJEmaDPS2UF/Qubwr2RZgPsXuTIt4/O56wjGkCXkOK3Fm1s2TnyskngDz4zDCxbSpLmd/iyOJOedqj3eBnXMly1uAzrmSVWdL/qh+E1PD7fMdhqvgwL075TsEV8GcObNZsmRJpdcy1lS9HTqbrc98VMdWLx5rZn1yue+tUXcTYMPtabTngHyH4Sp4/c178h2Cq+CIQ7vnfJu2fnVWv39rJv822zuWElFnE6BzLo8kKKuX7ygy8gTonEtGQZWqrJwnQOdcMpTTw4qJ8ATonEuAvAXonCtRwo8BOudKlbwL7JwrYUXQBS78CJ1zxUnKPFX7cu0Zq2+nps8lXS2ppaRxkqbHnzvG9SVpmKQZkqZKOihTiJ4AnXO5l7oOMNNUDTP7T6wg1A04mDAcw5OEkfnGm1lXYHx8DtAX6BqnocB9mcL0BOicS4bKMk/Z6w3MNLM5hAKxI+L8EWwe2uJ04OE4ONgEoIWkdtVt1I8BOucSkPVlMK0lTUx7/nsz+30l6w0kVDaHMPbNgvj4UzYPZtWeLQcMmxfnLaAKngCdc8koy+os8BIzq/Zm5DiuyWlUMj6OmZmkGtf08wTonMu93F4H2Bd4x8xSQ6QulNTOzBbELu6iOH8+aaMBEkZbrHakPz8G6JxLgHJ5DPBcNnd/IQxoNTg+Hgw8lTZ/UDwb3BNYkdZVrpS3AJ1zycjBhdBxyM8TgEvSZt8OjJI0BJgDpOpujQH6ATMIZ4wvyrR9T4DOuWTk4EJoM1vFloPaEwfW6l3JukYYDjVrngCdc7nn9QCdcyXN7wV2zpUmL4flnCtl3gJ0zpUkCcoKP70UfoTOueLkLUDnXMnyY4DOuZLlLUDnXEny6wCdc6VM3gJ0zpUi4QnQOVeqJJRdPcC88gTonEuEtwCdcyXLE6BzrmR5AnTOlST5MUDnXCnzFqBzrmR5AnTOlSxPgM650iT8GKBzrjQJeQvQOVe6iiEBFn7BLudccVIWU6ZNSC0k/VXSh5I+kHSYpJaSxkmaHn/uGNeVpGGSZkiaKumgTNv3BOicyz1BWVlZxikLdwPPmdlewAHAB8B1wHgz6wqMj88B+gJd4zQUuC/Txj0BOucSISnjlOH1zYGjgQcBzGytmX0GnA6MiKuNAPrHx6cDD1swAWghqV11+/AE6JzLudRJkCwSYGtJE9OmoWmb2QVYDDwk6V1JD0jaDmhrZgviOp8CbePj9sDctNfPi/Oq5CdB8qxr55145Off2PR8l/at+Ml9z9KyxXaccsz+bDRj8bKVDP3RoyxYvIJrBvXmnH6HAFC/Xhl77fIVOh53Hcs/L8/XW6jzht11J8MfegBJfHXf/fj9Aw9x6TeH8M47E2nQoAHdu/fgnvt+R4MGDfIdamHJ7hzIEjPrXsWy+sBBwJVm9qaku9nc3QXAzEyS1TREbwHm2fQ5i+g58HZ6Drydw8/7OeVr1jH6pSncOWI8Pc75GT0H3s4/Xp3GD4b2BeDOh8dvWv+m34zm1UnTPfklaP78+dz722G8PmEikyZPY8OGDfzl8ccYeN75TJn2IRPffY/Va1bz0IMP5DvUwpKbY4DzgHlm9mZ8/ldCQlyY6trGn4vi8vlAx7TXd4jzquQJsIAc22NPPp63mP8uWM7KVWs2zW/apBFm//tHbkCf7ox6blJthliS1q9fz+rVq8PP8nLa7bwzffr229SN6969B/Pnz8t3mAVnW48BmtmnwFxJe8ZZvYF/A6OBwXHeYOCp+Hg0MCieDe4JrEjrKlfKu8AF5OyTDt4iod18+amcf0oPVnyxmj5Dh22xbpPGDTjh8L255vZRtR1mSWnfvj1XX/Nd9ti1E02aNKH38Sdy/Aknblq+bt06Rv7pEX555915jLJA5eYywCuBP0lqCMwCLiI03EZJGgLMAQbEdccA/YAZQHlct1qJtQAlbZA0OW3qkrbsLknzpc0Dh0q6UNI98XGZpBGS/hiz+WxJ76Vta9j/7rG4Nahfj5OP2Y+/jXt307ybf/s0Xfv+kMf+MZFLzzl6i/VPPno/3pg8y7u/CVu+fDnPPP0UH0z/mFn//YRV5asY+adHNy3/9hXf4oijjubII4/KY5SFaVtbgABmNtnMupvZ/mbW38yWm9lSM+ttZl3N7HgzWxbXNTO73Mx2M7P9zGxipu0n2QVebWbd0qbZEJIbcAbhbM0xFV+k8KncDzQALrbNfb9j07Z1VYJx58VJR+7D5A/nsmjZyv9Z9viYt+nfu9sW884+6WD+4t3fxL04/gW6dNmFNm3a0KBBA/r3P5MJb/wLgNt+cguLlyzmF7+6I89RFh5JuboOMFH5iKAX8D7hIsVzK1k+DGgFDDKzjbUYV15VPJ63W6c2mx6f0mt/Ppq9cNPzHZo15siDd+fpl6fWaoylqGPHTrz11gTKy8sxM156cTx77rU3Dz34AOOeH8vDj44siF/kQpSLFmDSkjwG2ETS5Pj4YzM7Iz4+FxhJOHD5U0kNzGxdXHYe4UrvXma2vsL2XpK0IT4eYWZ3VtxhvIYoXEfUoFnu3knCmjZuyHGH7sUVt47cNO/Wq06na+ed2LjR+O+CZVx122Oblp127AGMn/Ah5WvW5iPcktLj0EM548yzOKzHQdSvX58DDjiQId8cSqvm29Gpc2d6HXkYAKefcSbX33hTnqMtMPnPbxmpsrOLOdmw9IWZNaswryHwMbCXma2U9Dfgj2b2jKQLga8DewHnmNnraa+bDXQ3syXZ7r+s6U7WaM8BmVd0tWr52/fkOwRXwRGHdmfSpIk5TVeN2na19udnPjH08Z0nT6rmOsDE1fZZ4JOAFsB7sfnbFFgNPBOXfwjcRDjDc5KZvV/L8TnnckCCsiKoB1jbBy/OJZzY6GJmXQi3upwgqWlqBTP7F3AZ8IykTrUcn3MuJ7K+FS6vaq0FGJNcH+DS1DwzWyXpNeDU9HXN7GlJrYHnJKWuL0g/BjjVzAbVRtzOuZopgPyWUWIJsOLxPzMrB1pWst6ZaU+Hp81/CHgoPu2S+widc4kpki6w3wninMs54QnQOVfCSroL7JwrbYVwkiMTT4DOuZwrlstgPAE65xJQGJe5ZOIJ0DmXiCLIf54AnXPJ8Bagc64k+TFA51xJK4IGoCdA51wyvAvsnCtZRZD/PAE653LPjwE650qYXwfonCthRZD/fGB051wyclEQtcKQuBPjvJaSxkmaHn/uGOdL0jBJMyRNlXRQpu17AnTO5VzqGGCmKUupIXFTY4dcB4w3s67A+PgcoC/QNU5DCSNPVssToHMuEQmWxD8dGBEfjwD6p81/OA6QPgFoIalddRvyBOicS4SUeQJaS5qYNg2tsBkDnpc0KW1ZWzNbEB9/CrSNj9sDc9NeOy/Oq5KfBHHOJSLLFt6SDMNiHmlm8yXtBIyT9GH6QjMzSTUe29cToHMu56StOsZXJTObH38ukvQk0ANYKKmdmS2IXdxFcfX5QMe0l3eI86rkXWDnXCKy7AJX83ptJ2n71GPgRGAaMBoYHFcbDDwVH48GBsWzwT2BFWld5Up5C9A5l4iybb8QsC3wZOxK1wf+bGbPSXobGCVpCDAHGBDXHwP0A2YA5cBFmXZQZQKUtEN1LzSzz7N5B8650rSt+c/MZgEHVDJ/KdC7kvkGXL41+6iuBfg+4QxM+ttIPTeg09bsyDlXOiSoV8z3AptZx6qWOedcJsVwL3BWJ0EkDZR0fXzcQdLByYblnCt223oSpDZkTICS7gGOBS6Is8qB+5MMyjlX3ATUkzJO+ZbNWeDDzewgSe8CmNkySQ0Tjss5V8y27Va3WpNNAlwnqYxw4gNJrYCNiUblnCt6RZD/sjoG+FvgCaCNpFuA14CfJxqVc66oiXAdYKYp3zK2AM3sYUmTgOPjrLPNbFqyYTnnil1dKolfD1hH6Ab77XPOuWoVylneTLI5C3wDMBLYmXBz8Z8l/SDpwJxzxa1OdIGBQcCBZlYOIOk24F3gZ0kG5pwrbvlPb5llkwAXVFivfpznnHOVEkV+K5ykOwnH/JYB70saG5+fCLxdO+E554pSHbgOMHWm933g2bT5E5ILxzlXVxRB/qu2GMKDtRmIc65uKfYWIACSdgNuA/YBGqfmm9keCcblnCtixXIMMJtr+oYDDxHeU19gFPB4gjE55+oAZTHlWzYJsKmZjQUws5lmdiMhETrnXKWkunMd4JexGMJMSZcSRlnaPtmwnHPFrgDyW0bZJMBrgO2AqwjHApsD30gyKOdc8asT9wKb2Zvx4Uo2F0V1zrkqicLo4mZS3YXQTxJrAFbGzM5MJCLnXPErkmII1bUA76m1KBKw7x4dGT3uV/kOw1XQ5bK/5jsEV8HS/y5PZLu5ug5QUj1gIjDfzE6RtAvwGNAKmARcYGZrJTUCHgYOBpYC55jZ7Oq2Xd2F0ONzEr1zruSkxgTJkW8DHwCpscp/DtxpZo9Juh8YAtwXfy43s90lDYzrnVPdhr22n3MuEWXKPGUiqQNwMvBAfC7gOCDVlRgB9I+PT4/Pict7K0Mz1BOgcy4RWSbA1pImpk1DK2zmLuD7bB6HqBXwmZmtj8/nAe3j4/bAXIC4fEVcv0rZVoRGUiMz+zLb9Z1zpStUhM6qC7zEzLpXvg2dAiwys0mSeuUyvpRsKkL3kPQeMD0+P0DSb5IIxjlXd9QryzxlcARwmqTZhJMexwF3Ay0kpRpvHQg3ZxB/dgSIy5sTToZUKZsu8DDglNSGzGwKYaB055yrVC5GhTOzH5hZBzPrAgwEXjSz84GXgLPiaoOBp+Lj0fE5cfmLZlblpXyQXQIsM7M5FeZtyOJ1zrkSVpbFVEP/B1wraQbhGF+qdN+DQKs4/1rgukwbyuYY4FxJPQCL1+NcCXxUo7CdcyVBUk7LYZnZy8DL8fEsoEcl66wBzt6a7WaTAC8jdIM7AQuBF+I855yrUrHfCQKAmS0i9L+dcy5rRVALIauK0H+gknuCzazi9TrOOQdsPglS6LLpAr+Q9rgxcAbxYkPnnKuUsrrMJe+y6QJvUf5e0iPAa4lF5JyrE1QQRe+rl/WdIGl2AdrmOhDnXN0RusD5jiKzbI4BLmfzMcAywkDpGa+vcc6VtqJPgLGSwgFsvtVkY6Yrq51zrk4MixmT3Rgz2xAnT37OucyUKohQ/ZRv2ZynmSzpwMQjcc7VKUU9LKak+rGm1oHA25JmAqsIrVszs4NqKUbnXJGpCydB3gIOAk6rpVicc3WGclkSPzHVJUABmNnMWorFOVdHiMI4xpdJdQmwjaRrq1poZnckEI9zri7IcsyPfKsuAdYDmkERXM7tnCs4hXCSI5PqEuACM/txrUXinKsziuU6wIzHAJ1zriaKoAFYbQLsXWtROOfqFFEcY+5WmQDNbFltBuKcq0OyHxYzr2pSDcY556olKPrrAJ1zrsYKP/15AnTOJaQIGoBFcZzSOVd0hJR5qnYLUmNJb0maIul9SbfE+btIelPSDEmPS2oY5zeKz2fE5V0yRekJ0DmXc6ljgJmmDL4EjjOzA4BuQB9JPYGfA3ea2e7AcmBIXH8IsDzOvzOuVy1PgM65RCiLqToWfBGfNoiTAccBf43zRwD94+PT43Pi8t7K0Mz0BOicy714GUwWXeDWkiamTVsMtyupnqTJwCJgHDAT+CyW6gOYB7SPj9sTR6yMy1cAraoL00+COOdybisug1liZt2rWmhmG4BukloATwJ75SbCwFuAzrlEbGsXOJ2ZfQa8BBwGtJCUarx1YPOYRfOBjhAKOgPNgaXVbdcToHMuEds6JoikNrHlh6QmwAnAB4REeFZcbTDwVHw8Oj4nLn8x0zhG3gV2zuVcuBd4my8EbAeMkFSP0FgbZWbPSPo38JikW4F3gQfj+g8Cj0iaQRi+d2CmHXgCdM4lYNsHPTKzqYQxiSrOnwX0qGT+GuDsrdmHJ0DnXCKK4U4QT4DOuZzLURc4cZ4AnXO5VyADn2fiCdA5l4hiHxPE1YLvX3UJL477B61at2Hsq5MAuOsXt/LYI3+kZas2AHzvhls49oQ+rF27lhu+cwXvTXkHlZXxo9t+Rc8jjs5n+HXWDk0acMfgg9lz5x0w4JrhE5n56Up+d0lPOrZqytyl5Qz93QRWlK8D4PA92vDjgQfQoJ5YtnItZ/zqn/l9A3lWFwZGd7XgawMvYNCQS/nOFRdvMf8bl17J0Muv2WLeY4/8EYDnXpnIksWLuGhgf54a9xplZX45Z67dOvAAXpz2KRffP4EG9USThvX5dr+9ePWDRdzz3H+4os+eXNl3L2594j12aNKA288/kHPvfpX5y1bTevtG+Q6/IKgIjgH6b06eHXr4kbTYsWVW607/z4ccdlQvAFq32Ykdmjdn6uRJCUZXmrZvUp+ee7Thz6/NBmDdBuPz1es4qdvOjHpjDgCj3phDn247A3DmoR159t35zF+2GoAlK7/MS9yFZlsvhK4NngAL1MMP3k+fYw7h+1ddworPlgOw97778cJzz7B+/XrmzpnNe1PeZcH8eXmOtO7p1Ho7lq78krsv6s64H/bm14MOpmnDerTZoRGLVqwBYNGKNbTZIbT0dm27PS2aNuBv3z2GsTf25uzDOuUz/IKQo3JYiUssAUraIGmypGmSnk67paWLpNVxWWoalPa6bpJMUp8K2/ui4j7qqvMv/Cb/fPvfjHnpTdq0/Qq33XQdAAPOG0y7ndtz2vFH8OMbv8fBh/SkXr16eY627qlfVsZ+nVow/OVZnPCT8ZR/uZ4r+v7vPfipm6zql4n9O+/I14e9xrl3vco1J+/Nrm2b1XLUhUZZ/cu3JI8BrjazbgCSRgCXA7fFZTNTyypxLvBa/PlcgvEVrDY7td30+NwLvsGQ888EoH79+vzw1l9uWva1fr3YZbeutR5fXffJ8nIWLF/Nux+HgRGfeWc+V/bZk8Wff8lOzRuzaMUadmreeFNX95Plq1m+ai3lazdQvnYDE6Yv4asdmjNrYcn8zf5fBdLFzaS2usBvsLlmV5Vi8cKzgQuBEyQ1TjiugrTo0wWbHo8d8xR77LUPAKvLyylftQqAV18eT7169em65955ibEuW/z5l8xfvprdYivuqL124qMFn/P8lE8YcFhnAAYc1pmxkz8BYOzkT+ixe2vqlYkmDetx0C4tmb5gZd7iLxS5rAaTlMTPAscbmXuz+YZlgN1ikcOUK83sVeBw4GMzmynpZeBk4Imt2NdQYCjAzh06bmvoteKqoYOY8PqrLF+2hMP2342rv/9DJvzrFT6YNhUkOnTszE9/9RsAli5ZzKABp1JWVsZX2u3MHfc+mGHrrqZuGPku917cgwb1y5izeBVXD59ImcTvL+nJeUd2YV68DAZg+qcreWnap7z0oxPYaMafXv2YDz/5PM/vIL+KZVhMZagWU/MNSxuA9wgtvw+AY81sQxyo5Bkz27eS19wDTDGzP0g6DRgwcA0vAAAMlklEQVRkZmfFZV+YWdYHVvbvdrCNfuH1HLwTl0s9f/BMvkNwFSz9+/+xbvHMnGarvfc70B76+0sZ1zts9x0nVVcQNWlJdoFTxwA7E/4gXF7dyrGl+DXgJkmzgd8QBkHZPsEYnXMJKYaTIIkfAzSzcuAq4DtpVVwr0xuYamYdzayLmXUmdH/PSDpG51zu+XWAkZm9C0wlnNmFeAwwbboqLnuywkufSHtNU0nz0qZrayN251zNFEMCTOwkSMXjdWZ2atrTJlluYzShzDVm5hdtO1ckwlneAshwGfi9wM653CuQFl4mngCdc4kogvznCdA5l4RNA58XNE+AzrlEFEH+8wTonMu9QrnVLRM/s+qcS4SkjFOG13eU9JKkf0t6X9K34/yWksZJmh5/7hjnS9IwSTMkTZV0UKYYPQE65xKRg+sA1wPfMbN9gJ7A5ZL2Aa4DxptZV2B8fA7QF+gap6HAfZl24AnQOZeIba0GY2YLzOyd+HgloaZAe+B0YERcbQTQPz4+HXjYgglAC0ntqtuHJ0DnXO5lk/1CBmwtaWLaNLTSzYUiKgcCbwJtzSxVM+5TIFVAsz0wN+1l88hQhs9Pgjjnci6MCpfVaZAlmarBSGpGuC32ajP7PP3YoZmZpBqXtPIWoHMuEbkoiCqpASH5/cnM/hZnL0x1bePPRXH+fCC9EGiHOK9KngCdc8nYxgwYK8Q/CHxgZnekLRoNDI6PBwNPpc0fFM8G9wRWpHWVK+VdYOdcInJQDOEI4ALgvbQK8tcDtwOjJA0B5gAD4rIxQD9gBlAOXJRpB54AnXOJKNvG/Gdmr1F1O7F3JesbGQovV+QJ0DmXjCK4FcQToHMu57weoHOudHk9QOdcKfME6JwrUYUx6lsmngCdc4nwFqBzriQVSz1AT4DOuUR4SXznXMkqgvznCdA5l4wiyH+eAJ1zCfDrAJ1zpUr4MUDnXAkr/PTnCdA5l5AiaAB6AnTOJcPvBHHOlSxvATrnSlKW4/7mnSdA51wivAvsnCtZ3gJ0zpUsT4DOuRLl9QCdcyUq3AmS7ygy84HRnXOJSJ0Jrm7KvA39UdIiSdPS5rWUNE7S9PhzxzhfkoZJmiFpqqSDMm3fE6BzLhHK4l8WhgN9Ksy7DhhvZl2B8fE5QF+ga5yGAvdl2rgnQOdc7mXR+sumBWhmrwDLKsw+HRgRH48A+qfNf9iCCUALSe2q274nQOdczinLCWgtaWLaNDSLzbc1swXx8adA2/i4PTA3bb15cV6V/CSIcy4RWZbDWmJm3Wu6DzMzSVbT13sL0DmXiFx0gauwMNW1jT8XxfnzgY5p63WI86rkCdA5l4gsu8A1MRoYHB8PBp5Kmz8ong3uCaxI6ypXyrvAzrlk5OA6QEkjgV6EY4XzgB8BtwOjJA0B5gAD4upjgH7ADKAcuCjT9j0BOudyTkBZDq6ENrNzq1jUu5J1Dbh8a7av8Jq6R9Jiwl+HuqA1sCTfQbgt1KXvpLOZtcnlBiU9R/iMMlliZhWv86s1dTYB1iWSJm7LmTKXe/6d1A1+EsQ5V7I8ATrnSpYnwOLw+3wH4P6Hfyd1gB8DdM6VLG8BOudKlidA51zJ8gRYhCS1yncMztUFngCLjKQTgbsk7agsy2245Ph3UNw8ARaRmPx+CTxoZsvxWxkLQSsASf67VIT8SysSkvoQkt8lZvaypI7A9ZKyud3I5VisOLITMEfSaWa20ZNg8fEvrHgcCjQ1swmS2gBPAovMrK7cj1pUYtn1RYSKIw9J6pdKgpLq5Ts+lx3vQhU4SUcAx5jZLZJ2lfQG4Q/X78zsD2nrdTSzuVVuyCXCzEZJWgs8JulcM3s21RKUdGpYxZ7Jb5SuKt4CLFBp3akTgeYAZjYYeAXYsULyOx8YJmn7Wg+0xEjqI+kmSYen5pnZ3wktwccknRJbgpcA9wMf5itWl5m3AAtXc2A5sAbY1KUys/+T1EbSS2Z2rKSvAdcAg8xsZZ5iLSVHA5cBfeJYtb8FZpnZE/GM8HBJzwA9gH5mNiOPsboMvAVYgCTtAvxM0q7AQmD7OL8JgJl9A5glaQFwPSH5/Ttf8ZaYp4EXgDMJVYfPAR6RtKuZ/ZVQnfg04Dwzm5K/MF02vAVYmBoTBnq5BNiJzUP9NZK0Jh6AHyLpu8AYT37JkrQX8KWZfWxmb0hqBFxtZldLOo8wMHczSfOBu4CvmNnafMbssuPFEAqUpH2Bk4ArgU6EAV8OBD4B1gJfAP3NbF3egiwBkvoBPwQuSHVnJe0ODAX+Q2iBX0z4Xg4HXjazj/MUrttK3gIsEJJ6Eb6PV83sSzObJmkdsB2wNzAceA9oRugSL/bklyxJJxGS381mNkNSM8CApYQ/SpcDfc3slbj+R+YtiqLiLcACIKk58AywK3A3sMHMfh2X7QoMBNoBj5jZW3kLtIRI2g+YAhxvZi9K2g34HXCtmU2Ny0cAZ5vZzHzG6mrOT4IUADNbQUiAa4GPgL6Shks6A1hMONO4HBggqbHff5qctM92NuFi8wGSuhAKoI6Nya/MzN4jXJLUyy98Ll6eAPNI0lfSfuHuAP4BrDSz44GGcd4rwDHx50/NbI13sxLVECBeUnQ+4ZDDTODvZvbLmPw2SupG6Ao/Z2Yb8heu2xaeAPNE0smEExut0y56Xgh0i93ensCFhLOKZwLvmtmyfMRaKmKxicck3SzpTDNbQzgT/2fgMICY/IYAw4A/mNn8/EXstpUfA8yDWNjgBuA2M3tOUkMzWxsLHEwknOQYkLqFSlJTMyvPY8h1XvxObgEeJlx6tDPwCzObHu+wuZdwAuR54FLgUjOblq94XW54AqxlkloSBtQ+08z+Hg+u3wR8z8wWSfomcICZXZFKjHkNuASkfSenm9nTkjoAtwH3m9kbcZ2GwOOEWxMP8Wsv6wbvAtey2I09FbhJ0v6Eg+vvxsoiEM48HidpD09+tSPtO7ld0g5mNg9oDfxS0l2SriVcjjQE2N2TX93h1wHmQawYsgGYDFxvZndJqmdmG8zsLUkj8x1jqYnfyUZgkqTnCI2DXwNtCBc6fxW4xo/D1i3eBc4jSScAvwEONbMVkhqZ2Zf5jquUSTqecJyvnZktjPPKgJZee7Hu8S5wHpnZOEIll7cktfTkl39m9gJwMvBSrPiMmW305Fc3eRc4z8zsH/EA+wuSuhOLDec7rlKW9p08J6m7mW3Md0wuGd4FLhCSmpnZF/mOw23m30nd5wnQOVey/Bigc65keQJ0zpUsT4DOuZLlCdA5V7I8AdZhkjZImixpmqS/SGq6DdvqFUc7Q9Jpkq6rZt0Wkr5Vg33cHMc5yWp+hXWGSzprK/bVJY7q5kqYJ8C6bbWZdTOzfQnFVi9NX6hgq/8PmNloM7u9mlVaAFudAJ2rbZ4AS8erwO6x5fMfSQ8D04COkk6U9Iakd2JLsRlsGgT8Q0nvEGoSEudfKOme+LitpCclTYnT4cDtwG6x9fnLuN73JL0taaqkW9K2dYOkjyS9BuyZ6U1I+mbczhRJT1Ro1R4vaWLc3ilx/XqSfpm270u29YN0dYcnwBIgqT7QlzCoEkBX4F4z+yqwCriRMPbFQYR6hNdKagz8gVAl5WDgK1VsfhjwTzM7ADgIeJ8wTOTM2Pr8Xiw02pUwWHg34GBJR0s6mDDeSTegH3BIFm/nb2Z2SNzfB4QKLSld4j5OBu6P72EIsMLMDonb/6bCuMvO+a1wdVwTSZPj41eBBwmFPueY2YQ4vyewD/B6rM7fEHgD2Av42MymA0h6lDAUZEXHAYMAYmn4FZJ2rLDOiXF6Nz5vRkiI2wNPpoq9ShqdxXvaV9KthG52M2Bs2rJR8ba16ZJmxfdwIrB/2vHB5nHfH2WxL1fHeQKs21abWbf0GTHJrUqfBYwzs3MrrLfF67aRgJ+Z2e8q7OPqGmxrOGE85CmSLgR6pS2reFuTxX1faWbpiRKFgY5cifMusJsAHKEw2DeStpO0B/Ah0CVWrAY4t4rXjwcui6+tpzDE50pC6y5lLPCNtGOL7WOllVeA/pKaxLLzp2YR7/bAAkkNCIMWpTtbUlmMeVfCwOVjgcvi+kjaQ9J2WezHlQBvAZY4M1scW1IjJTWKs280s48kDQWelVRO6EJvX8kmvg38XmGgoA3AZWb2hqTX42Um/4jHAfcG3ogt0C+Ar5vZO5IeJ1TBXgS8nUXIPwTeJAwX+maFmP4LvAXsQBizY42kBwjHBt9R2PlioH92n46r67wYgnOuZHkX2DlXsjwBOudKlidA51zJ8gTonCtZngCdcyXLE6BzrmR5AnTOlaz/B/7S2JCTsTIXAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "'''\n", - "def most_informative_feature_for_binary_classification(vectorizer, classifier, n=100):\n", - " \"\"\"\n", - " See: https://stackoverflow.com/a/26980472\n", - " \n", - " Identify most important features if given a vectorizer and binary classifier. Set n to the number\n", - " of weighted features you would like to show. (Note: current implementation merely prints and does not \n", - " return top classes.)\n", - " \"\"\"\n", - "\n", - " class_labels = classifier.classes_\n", - " feature_names = vectorizer.get_feature_names()\n", - " topn_class1 = sorted(zip(classifier.coef_[0], feature_names))[:n]\n", - " topn_class2 = sorted(zip(classifier.coef_[0], feature_names))[-n:]\n", - " \n", - " l = []\n", - " \n", - " for coef, feat in topn_class1:\n", - " l.append((class_labels[0], coef, feat))\n", - "\n", - " display(l)\n", - "\n", - " for coef, feat in reversed(topn_class2):\n", - " l.append((class_labels[1], coef, feat))\n", - " \n", - " display(l)\n", - "\n", - "\n", - "most_informative_feature_for_binary_classification(tfidf_vectorizer_1, linear_clf, n=30)\n", - "'''\n" + "from sklearn.ensemble import RandomForestClassifier as RFC\n", + "clf_a = RFC(criterion='entropy', random_state=4222)\n", + "max_size=10000\n", + "clf_a.fit(vec_train_1[:max_size], y1[:max_size])\n", + "test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- train\", Xt=vec_train_1,yt=y1, clf=clf_a)\n", + "test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- test\", Xt=vec_test_1,yt=yt1, clf=clf_a)" ] }, { @@ -576,7 +480,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -1157,7 +1061,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -1171,58 +1075,95 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "vectorizer_2 = CountVectorizer(stop_words='english', max_df=0.7)\n", + "vectorizer_2 = TfidfVectorizer(stop_words='english', max_df=0.7)\n", "vec_train_2 = vectorizer_2.fit_transform(X2)\n", "vec_test_2 = vectorizer_2.transform(Xt2)" ] }, { "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "clf_b = MultinomialNB()\n", - "clf_b.fit(vec_train_2, y2)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "'score: 0.8760555706891855'\n", + "Object `MLPClassifier` not found.\n" + ] + } + ], + "source": [ + "?MLPClassifier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* trying a MLP as classifier " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", + " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", + " hidden_layer_sizes=(100,), learning_rate='constant',\n", + " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", + " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", + " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", + " verbose=False, warm_start=False)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.neural_network import MLPClassifier\n", + "clf_b = MLPClassifier(hidden_layer_sizes=(100,), random_state=4222)\n", + "clf_b.fit(vec_train_2, y2)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.9997275946608554'\n", "Confusion matrix, without normalization\n", - "'score: 0.6105032822757112'\n", + "array([[1675, 1],\n", + " [ 0, 1995]])\n", + "'score: 0.5776805251641138'\n", "Confusion matrix, without normalization\n", - "'score: 0.6527777777777778'\n", - "Confusion matrix, without normalization\n" + "array([[109, 99],\n", + " [ 94, 155]])\n", + "'score: 0.6041666666666666'\n", + "Confusion matrix, without normalization\n", + "array([[ 92, 77],\n", + " [ 94, 169]])\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1230,9 +1171,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1240,9 +1181,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1265,22 +1206,24 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "'score: 0.4617067833698031'\n", - "Confusion matrix, without normalization\n" + "'score: 0.5142231947483589'\n", + "Confusion matrix, without normalization\n", + "array([[ 7, 201],\n", + " [ 21, 228]])\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1300,22 +1243,24 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "'score: 0.4962121212121212'\n", - "Confusion matrix, without normalization\n" + "'score: 0.5391414141414141'\n", + "Confusion matrix, without normalization\n", + "array([[274, 491],\n", + " [239, 580]])\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1343,7 +1288,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -1378,14 +1323,14 @@ "\n", " print(df3['y'].value_counts())\n", " print('done')\n", - " return train_test_split(df3['claim'], df3['y'], test_size=0.25, random_state=4222)\n", + " return train_test_split(df3['claim'], df3['y'], test_size=0.3, random_state=4222)\n", " except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -1402,7 +1347,7 @@ "6335\n", "-- liar liar\n", "Index(['y', 'claim'], dtype='object')\n", - "{'mostly-true', 'pants-fire', 'half-true', 'barely-true', 'false', 'true'} 10240\n", + "{'true', 'barely-true', 'half-true', 'false', 'pants-fire', 'mostly-true'} 10240\n", "1676\n", "1995\n", "{'true', 'false'} 3671\n", @@ -1419,56 +1364,73 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 21, "metadata": {}, "outputs": [], "source": [ - "vectorizer_3 = CountVectorizer(stop_words='english')\n", + "vectorizer_3 = TfidfVectorizer(stop_words='english', max_df=0.7)\n", "vec_train_3 = vectorizer_3.fit_transform(X3)\n", "vec_test_3 = vectorizer_3.transform(Xt3)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* using MLP again" + ] + }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)" + "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", + " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", + " hidden_layer_sizes=(16, 16), learning_rate='constant',\n", + " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", + " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", + " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", + " verbose=False, warm_start=False)" ] }, - "execution_count": 29, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "clf_3 = MultinomialNB()\n", + "clf_3 = MLPClassifier(hidden_layer_sizes=(16,16), random_state=4222)\n", "clf_3.fit(vec_train_3, y3)" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "'score: 0.8030383795309168'\n", + "'score: 0.9997144488863506'\n", "Confusion matrix, without normalization\n", - "'score: 0.746203037569944'\n", - "Confusion matrix, without normalization\n" + "array([[3367, 1],\n", + " [ 1, 3635]])\n", + "'score: 0.7714856762158561'\n", + "Confusion matrix, without normalization\n", + "array([[1136, 343],\n", + " [ 343, 1180]])\n" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1476,9 +1438,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/README.md b/README.md index cd98d00..6fb1680 100644 --- a/README.md +++ b/README.md @@ -39,4 +39,8 @@ Repository for the NLP-LAB * search for predefined Questions in Knowledge Graph +---- +## Links + +https://github.com/AKSW/NSpM From 444ea7d8761a67490a1e8335152a004e770dda45 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Thu, 17 May 2018 12:06:34 +0200 Subject: [PATCH 02/15] blubb --- Jonas_Solutions/Task_02_JonasWeinz.ipynb | 1090 ++-------------------- 1 file changed, 97 insertions(+), 993 deletions(-) diff --git a/Jonas_Solutions/Task_02_JonasWeinz.ipynb b/Jonas_Solutions/Task_02_JonasWeinz.ipynb index ad668d4..31cd70f 100644 --- a/Jonas_Solutions/Task_02_JonasWeinz.ipynb +++ b/Jonas_Solutions/Task_02_JonasWeinz.ipynb @@ -64,7 +64,7 @@ "from IPython.display import display, Markdown, Latex\n", "import collections\n", "import traceback\n", - "import os" + "import os\n" ] }, { @@ -133,6 +133,71 @@ " plot_confusion_matrix(cm, classes=labels, title=title)" ] }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"\\nfrom rdflib import Graph, Literal, BNode, RDF, Namespace\\nfrom rdflib.namespace import FOAF, DC, XSD\\n\\nmexcore = Namespace('http://mex.aksw.org/mex-core#')\\nmexperf = Namespace('http://mex.aksw.org/mex-perf#')\\nmexalgo = Namespace('http://mex.aksw.org/mex-algo#')\\nprov = Namespace('http://www.w3.org/ns/prov#')\\n\\ndef create_mex_graph():\\n graph = Graph()\\n graph.bind(mexcore)\\n graph.bind(mexperf)\\n graph.bind(mexalgo)\\n graph.bind(prov)\\n graph.bind(FOAF)\\n graph.bind(DC)\\n graph.bind(XSD)\\n \\n return graph\\n\\ndef mex_performance(experiment, model, dataset, performance, phase='Train', graph=create_mex_graph()):\\n \\n p = BNode()\\n \\n\"" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'''\n", + "from rdflib import Graph, Literal, BNode, RDF, Namespace\n", + "from rdflib.namespace import FOAF, DC, XSD\n", + "\n", + "mexcore = Namespace('http://mex.aksw.org/mex-core#')\n", + "mexperf = Namespace('http://mex.aksw.org/mex-perf#')\n", + "mexalgo = Namespace('http://mex.aksw.org/mex-algo#')\n", + "prov = Namespace('http://www.w3.org/ns/prov#')\n", + "\n", + "def create_mex_graph():\n", + " graph = Graph()\n", + " graph.bind(mexcore)\n", + " graph.bind(mexperf)\n", + " graph.bind(mexalgo)\n", + " graph.bind(prov)\n", + " graph.bind(FOAF)\n", + " graph.bind(DC)\n", + " graph.bind(XSD)\n", + " \n", + " return graph\n", + "\n", + "def mex_performance(experiment, model, dataset, performance, phase='Train', graph=create_mex_graph()):\n", + " \n", + " p = BNode()\n", + " \n", + "'''" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Namespace('http://xmlns.com/foaf/0.1/')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "FOAF\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -144,70 +209,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================================================================\n", - "checking whether unzip is installed\n", - "================================================================================\n", - "UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.\n", - "\n", - "Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;\n", - "see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.\n", - "\n", - "Compiled with gcc 6.3.0 20170415 for Unix (Linux ELF).\n", - "\n", - "UnZip special compilation options:\n", - " ACORN_FTYPE_NFS\n", - " COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)\n", - " SET_DIR_ATTRIB\n", - " SYMLINKS (symbolic links supported, if RTL and file system permit)\n", - " TIMESTAMP\n", - " UNIXBACKUP\n", - " USE_EF_UT_TIME\n", - " USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)\n", - " USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)\n", - " UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)\n", - " LARGE_FILE_SUPPORT (large files over 2 GiB supported)\n", - " ZIP64_SUPPORT (archives using Zip64 for large files supported)\n", - " USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.6, 6-Sept-2010)\n", - " VMS_TEXT_CONV\n", - " WILD_STOP_AT_DIR\n", - " [decryption, version 2.11 of 05 Jan 2007]\n", - "\n", - "UnZip and ZipInfo environment options:\n", - " UNZIP: [none]\n", - " UNZIPOPT: [none]\n", - " ZIPINFO: [none]\n", - " ZIPINFOOPT: [none]\n", - "================================================================================\n", - "successfully finished action: checking whether unzip is installed\n", - "================================================================================\n", - "================================================================================\n", - "downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n", - "================================================================================\n", - "================================================================================\n", - "successfully finished action: downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n", - "================================================================================\n", - "================================================================================\n", - "downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n", - "================================================================================\n", - "================================================================================\n", - "successfully finished action: downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n", - "================================================================================\n", - "================================================================================\n", - "downloading Helper script: script_dataset3.py\n", - "================================================================================\n", - "================================================================================\n", - "successfully finished action: downloading Helper script: script_dataset3.py\n", - "================================================================================\n" - ] - } - ], + "outputs": [], "source": [ "%%bash\n", "./Task_2_gen_data.sh" @@ -223,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -239,147 +243,9 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(6335, 3)" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
titletextlabel
Unnamed: 0
8476You Can Smell Hillary’s FearDaniel Greenfield, a Shillman Journalism Fello...FAKE
10294Watch The Exact Moment Paul Ryan Committed Pol...Google Pinterest Digg Linkedin Reddit Stumbleu...FAKE
3608Kerry to go to Paris in gesture of sympathyU.S. Secretary of State John F. Kerry said Mon...REAL
10142Bernie supporters on Twitter erupt in anger ag...— Kaydee King (@KaydeeKing) November 9, 2016 T...FAKE
875The Battle of New York: Why This Primary MattersIt's primary day in New York and front-runners...REAL
6903Tehran, USA\\nI’m not an immigrant, but my grandparents ...FAKE
7341Girl Horrified At What She Watches Boyfriend D...Share This Baylee Luciani (left), Screenshot o...FAKE
95‘Britain’s Schindler’ Dies at 106A Czech stockbroker who saved more than 650 Je...REAL
4869Fact check: Trump and Clinton at the 'commande...Hillary Clinton and Donald Trump made some ina...REAL
2909Iran reportedly makes new push for uranium con...Iranian negotiators reportedly have made a las...REAL
\n", - "
" - ], - "text/plain": [ - " title \\\n", - "Unnamed: 0 \n", - "8476 You Can Smell Hillary’s Fear \n", - "10294 Watch The Exact Moment Paul Ryan Committed Pol... \n", - "3608 Kerry to go to Paris in gesture of sympathy \n", - "10142 Bernie supporters on Twitter erupt in anger ag... \n", - "875 The Battle of New York: Why This Primary Matters \n", - "6903 Tehran, USA \n", - "7341 Girl Horrified At What She Watches Boyfriend D... \n", - "95 ‘Britain’s Schindler’ Dies at 106 \n", - "4869 Fact check: Trump and Clinton at the 'commande... \n", - "2909 Iran reportedly makes new push for uranium con... \n", - "\n", - " text label \n", - "Unnamed: 0 \n", - "8476 Daniel Greenfield, a Shillman Journalism Fello... FAKE \n", - "10294 Google Pinterest Digg Linkedin Reddit Stumbleu... FAKE \n", - "3608 U.S. Secretary of State John F. Kerry said Mon... REAL \n", - "10142 — Kaydee King (@KaydeeKing) November 9, 2016 T... FAKE \n", - "875 It's primary day in New York and front-runners... REAL \n", - "6903 \\nI’m not an immigrant, but my grandparents ... FAKE \n", - "7341 Share This Baylee Luciani (left), Screenshot o... FAKE \n", - "95 A Czech stockbroker who saved more than 650 Je... REAL \n", - "4869 Hillary Clinton and Donald Trump made some ina... REAL \n", - "2909 Iranian negotiators reportedly have made a las... REAL " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(df_1.shape)\n", "display(df_1[:10])" @@ -394,7 +260,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -403,7 +269,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -421,44 +287,9 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.9960008419280152'\n", - "Confusion matrix, without normalization\n", - "array([[2342, 3],\n", - " [ 16, 2390]])\n", - "'score: 0.8478535353535354'\n", - "Confusion matrix, without normalization\n", - "array([[737, 82],\n", - " [159, 606]])\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUcAAAEmCAYAAADx4VKUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xm8VHX9x/HX+4IgCokIuAGSprmVqLhkppim4L6vqZjmktli+cssFbeyMjNzzdwt1DLL3chEc0FFQ8VUEMUEkT0DEYTL5/fH+V4cxrl3Bpi5M3Pv+8njPO7M95w55zMzl8/9fr/ne75HEYGZmS2todoBmJnVIidHM7MCnBzNzApwcjQzK8DJ0cysACdHM7MCnBzbGEldJN0r6X1Jf1yB/Rwl6W/ljK0aJD0o6djlfO2FkmZIeq/ccVntc3KsEklHShotaa6kKek/8Y5l2PXBwJrAGhFxyPLuJCJ+HxG7lyGepUgaJCkk3Z1XvkUqH1nifoZJuq3YdhExJCJuXo44+wHfAzaNiLWW9fVW/5wcq0DS6cBlwE/IElk/4CpgvzLsfj1gXEQsKsO+KmU68AVJa+SUHQuMK9cBlFmR3+9+wMyImLYcx+64Ase1WhERXlpxAVYD5gKHtLBNZ7Lk+W5aLgM6p3WDgElktZppwBTguLTuPOAjYGE6xvHAMOC2nH33BwLomJ4PBd4E5gBvAUfllD+R87odgOeA99PPHXLWjQQuAJ5M+/kb0LOZ99YU/zXAqamsAzAZOAcYmbPtr4F3gP8BzwNfSuWD897nizlxXJTi+BD4TCo7Ia2/GrgrZ/8/Ax4BlBfjbun1i9P+b0rl+wKvAP9N+90k5zUTgR8ALwELmj5fL/W7VD2A9rak/9iLWvrPA5wPjAJ6A72Ap4AL0rpB6fXnAysBewLzgNXT+vxk2GxyBFZNieezad3awGbp8ZLkCPQAZgNHp9cdkZ6vkdaPBCYAGwFd0vOLm3lvTclxB+CZVLYn8DBwQl5y/CqwRjrm94D3gJULva+cOP4DbJZes1JeclyFrHY6FPgSMAPo01KcOc83Aj4AvpL2+3/AG0CntH4iMAboC3RJZVcBV1X7d87L8i1uVre+NYAZ0XKz9yjg/IiYFhHTyWqER+esX5jWL4yIB8hqN59dzngWA5tL6hIRUyLilQLb7AWMj4hbI2JRRAwHXgP2ydnmxogYFxEfAncCA1o6aEQ8BfSQ9FngGOCWAtvcFhEz0zF/SVajLvY+b4qIV9JrFubtbx7Z53gpcBtwWkRMKrK/JocB90fEiLTfS8j+EOyQs83lEfFO+gyIiG9ExDdK3L/VGCfH1jcT6FmkX2od4O2c52+nsiX7yEuu84CuyxpIRHxA9p/+ZGCKpPslbVxCPE0xrZvzPPeMbqnx3Ap8E9gFuDt/paTvS3o1nXn/L1mXRM8i+3ynpZUR8QxZN4LIkniplvoMImJxOlbuZ9Disa2+ODm2vqfJ+qT2b2Gbd8lOrDTpl8qWxwdkzckmS515jYiHI+IrZE3q14DrSoinKabJyxlTk1uBbwAPpFrdEpK+RNZ0PZSsy6A7WX+nmkJvZp8tTjMl6VSyGui7af+lWuozkCSyJnTuZ+AprtoQJ8dWFhHvk514uFLS/pJWkbSSpCGSfp42Gw78WFIvST3T9kWHrTRjDLCTpH6SVgN+2LRC0pqS9pO0KlnCnkvWzM73ALBRGn7UUdJhwKbAfcsZEwAR8RawM/CjAqu7kfWtTgc6SjoH+FTO+qlA/2U5Iy1pI+BCsr7Mo4H/k9Ri8z/HncBeknaVtBJZH+gCsv5ga4OcHKsg9Z+dDvyY7D//O2TNy7+kTS4ERpOd+XwZeCGVLc+xRgB3pH09z9IJrSHF8S4wiyxRnVJgHzOBvckSwkyyGtfeETFjeWLK2/cTEVGoVvww8BDZCZS3gfks3WxtGuA+U9ILxY6TujFuA34WES9GxHjgLOBWSZ1LiPN1sqT6G7ITOfsA+0TERy0c8xpJ1xTbt9UmRbglYGaWzzVHM7MCnBzNzApwcjQzK8DJ0cysACfHMsmfKqzWpvySdJak31U7jtYkaaKk3UrYrn+aEahuJ4xIZ8bPrnYcbUm7S46tNVVYVGjKr1KkacGWuiwuIn4SESdU4FhrS7pH0rspwfQv9zHaulKTeEsi4uSIuKBcMVk7S45tYaqwMkzFVW6LycYjHlTtQNqqeq7R1rVqz3zRWgutP1XYUJae8mt34HWyS+CuAh7j49lihtHytGIj+eRUXMcBr5JNEfYmcFLadlWWnm5rLtl1wfnHKDb91vfJBo6/TzaIfOUin2/HFHP/ZfhOmt7ncWQDvGeTXee9TTr2f4ErcrZvIBs4/3b6Dm4BVstZf3RaN5PsqpuJwG45rz2TbPagmWRXvPQo9HkXiLPpdXOAfwMHlPH38tb0XX2Yvqv/y4nneLJZhh5P2/6R7Br294HHSTMopXU3ARcW+131sgzfTbUDaLU32vpThQ3l4ym/epJNDXZgSiLfJkuky5Ic86fi2gvYgOxa451TLFvlxDop770tOQalTb/1LFlS7UGWhE8u8vmuSHK8BliZ7A/IfLIrhXqTTeowDdg5bf+1FOf6ZBNb/Bm4Na3blCy57ET2R+7S9H01Jcdvp++2T1p/LTC80OddIM5D0mfRQDZRxwfA2mX83ZzYFGdePLeQ/bHrkvP+u/HxH/ExOa+5iaWTY7O/q15KW2qpeVZp1ZwqbE/glYj4czr+5Sw9i00pboqcqbgi4v6ImBCZx8gmmP1SifsqdfqtdyNiFnAvRaYgW0EXRMT8iPgbWeIZnr6DycA/gS3TdkcBl0bEmxExl+w68cNTs/Ng4L6IeDwiFgBns/R14icDP4qISWn9MODgUpqsEfHH9Fksjog7gPHAtmV55y0bFhEfxMdToN0QEXNy4t8iXS9fSDmntWuX2lNyrOZUYeuQc11wZH/eS51HsMlS02GliSpGSZqVpvPak+LTeeXGU2z6reWZgmx5Tc15/GGB503HLvT9dCTrP87/jD8g+86brAfcLem/6fN6FWhMr22RpGMkjcl57eY081mnE31NS790Frnp+VnFjpVnyfuR1EHSxZImSPofWW2T5uKgTNPatWftKTm29lRhuaaQNeeAJdNd9clZ3+K0YsmSi+DTRAl3kdX41oxsOq8HKD6dV5NSpt+qRYW+n0VkyXQK2XsAQNIqZK2FJu8AQyKie86ycqqdNkvSemTTuH2TbCRCd2AsH3/WS4mIrjnLfyI7i9z0/CfNHKaU6deOJDtxuBtZ/3n/phBbit+WX7tJjtH6U4Xluh/4XDpuR+BUlk6AzU4r1oxOZP1O04FFkoaQ9dc1mQqs0UKTq6zTb0laOcUD0Dk9b1o3TCXeUbAEw4HvSvq0pK5kow7uSDWkPwF7S9pRUiey/rbc3+9rgItSsiN9x6WMUliVLElNT687jqzmWE5TyfpRW9KN7DuaSfaHtLlEa2XSbpIjtO5UYXnHnUHWqf9zsl/uTdNxFqT1LU0rVmh/c4BvkSW52WS1inty1r9GlkjeTE3BdfJev8zTbxXRdKYVsglzP8xZ15fsLHs53EB2dvdxspuBzQdOA4js9g6nAn8gq0XOZumui1+TfUZ/kzSH7OTMdsUOGBH/Bn5J1vKYCnyO8r2fJj8l+6P8X0nfb2abW8i6ESaTnTEfVeYYLI+nLKuCNE5xEtmd/h6tdjyVJGkMsGtkc0Ka1Y12VXOsJkl7SOqe+gvPIusravN//SNigBOj1SMnx9bzBbKBxE3N2P2bhmiYWe1xs9rMrADXHM3MCmizF7SrY5dQ5+ZGsli1bLlxn+IbWat6++2JzJgxo6zjJTt8ar2IRcV7jeLD6Q9HxOByHrtc2m5y7LwanTc7qtphWJ4nn/pltUOwPF/cbmDZ9xmLPqTzZw8tut38MVeWelVXq2uzydHMqkiChg7VjmKFODmaWWXU1LSjy87J0cwqQ/V92beTo5lVgFxzNDP7BOE+RzOzT5Kb1WZmBblZbWZWgGuOZmZ5PM7RzKwZblabmeXzUB4zs8Ia3OdoZrY0j3M0MyvEzWozs8I8lMfMrADXHM3M8nico5lZM9ysNjPL5xMyZmaFueZoZpZHgob6Ti/1Hb2Z1S7XHM3MCnCfo5lZAa45mpnl8ThHM7PC5JqjmdnShJOjmdknSajO53Os79NJZlazJBVdiry+r6RHJf1b0iuSvp3Ke0gaIWl8+rl6KpekyyW9IeklSVvl7OvYtP14SceWEr+To5lVxIomR2AR8L2I2BTYHjhV0qbAmcAjEbEh8Eh6DjAE2DAtJwJXpzh6AOcC2wHbAuc2JdSWODmaWUWsaHKMiCkR8UJ6PAd4FVgX2A+4OW12M7B/erwfcEtkRgHdJa0N7AGMiIhZETEbGAEMLha/+xzNrOxU5j5HSf2BLYFngDUjYkpa9R6wZnq8LvBOzssmpbLmylvk5GhmFVHi2eqekkbnPP9tRPw2bz9dgbuA70TE/3L3GxEhKcoRbz4nRzOriBKT44yIGNjCPlYiS4y/j4g/p+KpktaOiCmp2TwtlU8G+ua8vE8qmwwMyisfWSww9zmaWUWU4Wy1gOuBVyPi0pxV9wBNZ5yPBf6aU35MOmu9PfB+an4/DOwuafV0Imb3VNYi1xzNrPxEOfocvwgcDbwsaUwqOwu4GLhT0vHA28Chad0DwJ7AG8A84DiAiJgl6QLgubTd+RExq9jBnRzNrOxESUN1WhQRT5BdbFPIrgW2D+DUZvZ1A3DDshzfydHMKsKXD5qZFVLfudHJ0cwqQNDQUN/ne50czawi3Kw2M8tTjhMy1ebkWAV9enfnd8OOoHePrgRww92juPKOf3LOSYPZe6fNWBzB9FlzOfH825ky439LXrf1Jn0Zef1pHPPj27j7Hy/x+Q3X4fIzD6LbqivT2LiYn9/4CH/6+5jmD2wrbP78+ey2y058tGABixoXccCBB3P2uedVO6zaVN+50cmxGhY1NnLmr+9hzOuT6bpKZ5665bs88uw4fnXbo5x/7UMAfOPQHfnhCV/hWxffBUBDg7jwtL34+zPjluxn3oKPOH7YcCa8M4O1e36KJ2/5LiNGvcb7c+dX5X21B507d+ahEf+ga9euLFy4kC/vvCO77zGE7bbfvtqh1ZY20OdY39HXqfdmzmHM65MBmDtvAa+9NZV1eq3GnA8WLNlmlS6diJwrRr9x6I785R8vM3323CVlb/xnBhPemQHAlBn/Y/rsufRcvWvrvIl2ShJdu2af8cKFC1m0cGHdNx8rpQxTllWVk2OV9Vt7dQZ8dl2ee+VtAIadMoTx957N4YO34oJUi1yn16fYd9Dn+O1dTzW7n4Gb9qVTxw68OWlmq8TdnjU2NrLd1gPot05vvrzbV9h2u+2qHVJtUglLDatYcpTUKGlMztI/Z91lkiZLH9/YVtJQSVekxw2SbpZ0Q7pOcqKkl3P2dXml4m5Nq3bpxPCLj+WMS/+6pNY47OoH2XCfC7j9oRc4+ZAdAfjF6fvz4yvuI6Lw5CNrrdGN6887kpMuuL3Zbax8OnTowDPPj+GNiZMY/dyzvDJ2bLVDqkn1XnOsZJ/jhxExIL8wJcQDyOZX2xl4NG+9gGuAlYDj0pREALtExIwKxtuqOnZoYPjPhnLHwy/w15Evf2L9HQ+9wN2XncCF1z3MVpv04ZYLjwZgje6rsscOG7OocTH3PjaWbqt25s+/OoFhVz/Is2P/09pvo13r3r07Ow/ahb/97SE223zzaodTUyTVfZ9jNU7IDAJeAe4AjiAvOQKXA2sAh0XE4tYNrfVcc/ZhvP7WVC7/w+NLyjbo23NJH+LeO2/OuInZTEyb7P+TJdv89pzDefCJf3PvY2NZqWMH7vj5cfzhgdHc/Y+XWvcNtFPTp09npZVWonv37nz44Yc88vcRfO+MH1Q7rJpU6zXDYiqZHLvkzKTxVkQckB4fAQwnm2boJ5JWioiFad2RZFOhD4qIRXn7e1RSY3p8c0T8Kv+Akk4ku3cEdOpWvndSZjts8WmO2nMgL49/l1G3nQ7AuVc9wNB9t2PD9XqxeHHwn/dm862L/9Tifg7abQt23HJ9eqy2Cl/dexsATjzvdl4a/27F30N79d6UKXz9a8fS2NjI4ljMQQcfyp577V3tsGpTfedGVKk+KklzI6JrXlkn4C1g44iYI+nPwA0RcZ+kocBXgY3Jao1P5rxuIjBwWZrVDauuFZ03O6oM78TKafZTv6x2CJbni9sN5PnnR5c1lXVec8NY96hfF93urV/t9XxLk91WU2s3q/cAupPNzwawCvAhcF9a/xpwDtlcbXtExCutHJ+ZlYGUjc2tZ63dY3oEcEJE9I+I/sCnga9IWqVpg4h4CjgFuE9Sv1aOz8zKoviZ6lrvk2y1mmNKgIOBk5vKIuIDSU8A++RuGxH3SuoJPCTpS6k4t8/xpYg4pjXiNrPlU+O5r6iKJcf8/saImAf0KLDdgTlPb8opvxG4MT3tX/4Izaxi2kCz2tdWm1nZCSdHM7OC3Kw2Myug1k+4FOPkaGZl1xaG8jg5mlkF1P5QnWKcHM2sIuo8Nzo5mllluOZoZpbHfY5mZs2o84qjk6OZVYab1WZmBdR5bnRyNLPyc5+jmVlBHudoZlZQnedGJ0czqwzXHM3M8rSFPsf6vrGsmdWsctwmQdINkqZJGptTNkzSZElj0rJnzrofSnpD0uuS9sgpH5zK3pB0ZinxOzmaWUVIxZcS3ER2e5V8v4qIAWl5IDueNgUOBzZLr7lKUgdJHYArgSHApsARadsWuVltZhVRjj7HiHhcUv8SN98PuD0iFgBvSXoD2DateyMi3kxx3Z62/XdLO3PN0czKThINDcUXoKek0TnLiSUe4puSXkrN7tVT2brAOznbTEplzZW3yMnRzCqixGb1jIgYmLP8toRdXw1sAAwApgC/rET8blabWUU0VGgoT0RMbXos6TrgvvR0MtA3Z9M+qYwWypvVbHKU9KkiAf6v2M7NrP2q1DBHSWtHxJT09ACg6Uz2PcAfJF0KrANsCDxLdjPEDSV9miwpHg4cWew4LdUcXwEi7bhJ0/MA+pX8bsysXZGgQxnGOUoaDgwi65ucBJwLDJI0gCwPTQROAoiIVyTdSXaiZRFwakQ0pv18E3gY6ADcEBGvFDt2s8kxIvo2t87MrJgyna0+okDx9S1sfxFwUYHyB4AHluXYJZ2QkXS4pLPS4z6Stl6Wg5hZ+1OmcY5VUzQ5SroC2AU4OhXNA66pZFBmVt8EdJCKLrWslLPVO0TEVpL+BRARsyR1qnBcZlbPSrw8sJaVkhwXSmog6/xE0hrA4opGZWZ1r85zY0l9jlcCdwG9JJ0HPAH8rKJRmVldE9k4x2JLLStac4yIWyQ9D+yWig6JiLEtvcbMrN6nLCv1CpkOwEKyprUvOTSzFtXD2ehiSjlb/SNgONmI8z5kI9B/WOnAzKy+tflmNXAMsGVEzAOQdBHwL+CnlQzMzOpbbae+4kpJjlPytuuYyszMChLluXywmlqaeOJXZH2Ms4BXJD2cnu8OPNc64ZlZXWrj4xybzki/AtyfUz6qcuGYWVtR57mxxYknmr2428ysmLZccwRA0gZks1xsCqzcVB4RG1UwLjOrY22hz7GUMYs3ATeSvd8hwJ3AHRWMyczaAJWw1LJSkuMqEfEwQERMiIgfkyVJM7OCpPYxznFBmnhigqSTyaYZ71bZsMys3tV47iuqlOT4XWBV4FtkfY+rAV+rZFBmVv/a/LXVEfFMejiHjye8NTNrlqj9ZnMxLQ0Cv5s0h2MhEXFgRSIys/rXBiaeaKnmeEWrRVEBAzbuw5NPXlLtMCzP6tt8s9ohWJ4Fr/+nIvtts+McI+KR1gzEzNqOpnvI1LNS53M0M1smdX4+xsnRzCqj3SRHSZ0jYkElgzGztiGbCby+s2MpM4FvK+llYHx6voWk31Q8MjOrax0aii+1rJTwLgf2BmYCRMSLwC6VDMrM6lu7uPsg0BARb+dVkRsrFI+ZtRE1XjEsqpTk+I6kbYGQ1AE4DRhX2bDMrJ5Jqvspy0pJjqeQNa37AVOBv6cyM7Nm1XiruahSrq2eBhzeCrGYWRtS5xXHkmYCv44C11hHxIkVicjM6l7TCZl6Vkqz+u85j1cGDgDeqUw4ZtYmqPaH6hRTSrN6qVsiSLoVeKJiEZlZm6CavxFCy5Ynt38aWLPcgZhZ25E1q4svRfcj3SBpmqSxOWU9JI2QND79XD2VS9Llkt6Q9JKkrXJec2zafrykY0t5D6VcITNb0qy0/BcYAfywlJ2bWftVjuRIdoO/wXllZwKPRMSGwCPpOWT3ttowLScCV0OWTIFzge2AbYFzmxJqS1psVisb+b0F2X1jABZHRLMT4JqZQfluzRoRj0vqn1e8HzAoPb4ZGAn8IJXfknLUKEndJa2dth0REbMAJI0gS7jDWzp2izXHdJAHIqIxLU6MZlacmiafaHkBekoanbOUMgpmzYiYkh6/x8fdfOuy9MniSamsufIWlXK2eoykLSPiXyVsa2YGlDyUZ0ZEDFzeY0RESKpIpa2le8h0jIhFwJbAc5ImAB+Q1ZgjIrZq7rVm1r41nZCpkKmS1o6IKanZPC2VTwb65mzXJ5VN5uNmeFP5yGIHaanm+CywFbBv6TGbmQGokrdJuAc4Frg4/fxrTvk3Jd1OdvLl/ZRAHwZ+knMSZndKOKncUnIUQERMWL74zay9EuW5tlrScLJaX09Jk8jOOl8M3CnpeOBt4NC0+QPAnsAbwDzgOICImCXpAuC5tN35TSdnWtJScuwl6fTmVkbEpcV2bmbtVOlDdVoUEUc0s2rXAtsGcGoz+7kBuGFZjt1ScuwAdIU6H+ZuZlXRlq+tnhIR57daJGbWZpRrnGM1Fe1zNDNbHnVecWwxOX6iTW9mVgrRhm+TUMrZHDOzgtrArVlLvm+1mVmpBJUc59gqnBzNrCLqOzU6OZpZhdR5xdHJ0cwqQe5zNDPL5z5HM7Nm1HdqdHI0s0rwUB4zs09ys9rMrBn1nRqdHM2sQuq84ujkaGbll11bXd/Z0cnRzCpAbXo+RzOz5VbnudHJ0czKz81qM7NC5JqjmVlB7nO0sjnp61/joQfup1ev3owe8/KS8quv/A3XXn0VHTp0YPCQPbno4p9XMcq2qc+a3fndBcfQe41uRMANdz3JlcNHcs439mLvnT/P4gimz5rDiefexpTp79O9WxeuHfZVPt2nJws+WshJw37PvydMAeArO2zCJWccTIeGBm76y1NccuOIKr+71ifKc/fBaqr3mczblKOPGcpf7ntwqbLHRj7KfffewzPPj+H5F8fy7dO/X6Xo2rZFjYs589I/s9VBF7HzMZdw0mE7sfH6a/Grmx9h28N+yvaHX8yD/xzLD08cAsD/Hb8HL74+iW0P+ynHn30rl5xxMAANDeKyMw9lv29exZYHXcghg7dm4/XXquZbqxqV8K+WOTnWkB2/tBM9Vu+xVNl1117D9874AZ07dwagd+/e1QitzXtvxv8Y89okAObOW8Brb73HOr26M+eD+Uu2WaVLZ7JbI8PG66/FY8+NA2DcxKmst04Pevfoxjab92fCOzOYOHkmCxc18seHX2DvQZ9v/TdUA6TiSy1zcqxx48eP48kn/slOX9ye3XcdxOjRz1U7pDav39o9GPDZPjw3diIAw07dh/EPXsDhQwZywdX3A/DyuMns9+UtABi42Xr0W7sH667ZnXV6r8akqbOX7Gvy1Nms22u1Vn8P1dZ0bXWxpZZVLDlKapQ0RtJYSfdK6p7K+0v6MK1rWo7Jed0ASSFpcN7+5lYq1lrWuGgRs2fP4rEnnuaii3/O0UcetqT2YuW3apdODL/kBM645K4ltcZhV97LhkPO5vYHR3PyYTsBcMmNI1it2yqMuv1MTjl8Z158fRKNjYurGXqNKaVR3U6TI/BhRAyIiM2BWcCpOesmpHVNyy05644Ankg/2711+vRhv/0PRBLbbLMtDQ0NzJgxo9phtUkdOzYw/JKvc8eDo/nrP178xPo7HniO/XcdAMCcD+Zz0rDb2P7wizn+7FvouXpX3po8k3envU+fNVdf8pp111ydydPfb7X3UDNKaFLXeMWx1ZrVTwPrFttI2QRwhwBDga9IWrnCcdW8ffbdj8dGPgrA+HHj+Oijj+jZs2eVo2qbrjn3KF5/6z0uv+0fS8o26NdryeO9B32ecROnArBa1y6s1LEDAMcdsANPvPAGcz6Yz+hX3uYz/Xqx3jprsFLHDhyyx1bcP/Kl1n0jNUIlLLWs4kN5JHUAdgWuzyneQNKYnOenRcQ/gR2AtyJigqSRwF7AXctwrBOBEwH69uu3oqG3umO/eiSPPz6SmTNm8JlP9+XH5wzj2KFf4+SvH8/AAZ9jpU6duO76m+p+EtFatMOA9Tlq7+14edxkRt1+JgDnXnEPQ/ffgQ3X683ixcF/psziWxfdDmQnZK47/2giglcnTOHk834PQGPjYr77szu596pT6dAgbv7rKF59872qva9qaQvzOapS/VeSGoGXyWqMrwK7RESjpP7Afam5nf+aK4AXI+I6SfsCx0TEwWnd3IjoWurxt9p6YDw5yicvak2PbU+rdgiWZ8Hrd7J43rSyZrJNPrdl3PiXR4tu94XPrP58RAws57HLpeJ9jsB6ZH9ITm1p41TDPAg4R9JE4DfAYEndKhijmVWIT8gUERHzgG8B35PUUjN+V+CliOgbEf0jYj2yJvUBlY7RzMrPJ2RKEBH/Al7i4zPQG+QN5flWWnd33kvvynnNKpIm5Synt0bsZrZ86j05VuyETH7/YETsk/O0S4n7uAe4Jz32gHWzOpGdjV7x7Je62OYAjcCiiBgoqQdwB9AfmAgcGhGz02iXXwN7AvOAoRHxwvIe2wnHzMqvvOMcd0njoZtO3JwJPBIRGwKPpOcAQ4AN03IicPWKvAUnRzOriAqOc9wPuDk9vhnYP6f8lsiMArpLWnt5D+LkaGYVIKTiC9BT0uic5cS8HQXwN0nP56xbMyKmpMfvAWumx+sC7+S8dhIlXHzSHM/naGYVUWKzeUaRcY47RsRkSb2BEZJey10ZESGpIoORBsC8AAAKGElEQVS1XXM0s7IrpUldSu6MiMnp5zSy0SzbAlObmsvp57S0+WSgb87L+6Sy5eLkaGYVUWKzuqXXr9p0EYikVYHdgbFkI1iOTZsdC/w1Pb4HOEaZ7YH3c5rfy8zNajOriDKMY1wTuDsl0Y7AHyLiIUnPAXdKOh54Gzg0bf8A2TCeN8iG8hy3Igd3cjSziljR3BgRbwJbFCifSXZFXX55UOQy5WXh5Ghm5VcPc5IV4eRoZmWX3X2wvrOjk6OZVUR9p0YnRzOrlDrPjk6OZlYRtT5fYzFOjmZWEQ31nRudHM2sQpwczcyWVq75HKvJydHMyq8OZvouxsnRzCrCydHM7BNq/+6CxTg5mllFuOZoZpanDVxa7eRoZpVRbL7GWufkaGYVUee50cnRzCqjznOjk6OZVYDHOZqZfZJwn6OZWUH1nRqdHM2sQuq84ujkaGaV4StkzMwKcM3RzCyPfLbazKwwN6vNzApwzdHMrAAnRzOzT/B8jmZmn5BdIVPtKFaMk6OZVYSTo5lZAW5Wm5nl8zhHM7NP8m0SzMya4SnLzMwKqPPc6ORoZpVR57nRydHMKqTOs6OTo5mVnYCGOm9XKyKqHUNFSJoOvF3tOMqkJzCj2kHYUtrSd7JeRPQq5w4lPUT2GRUzIyIGl/PY5dJmk2NbIml0RAysdhz2MX8nbV9DtQMwM6tFTo5mZgU4OdaH31Y7APsEfydtnPsczcwKcM3RzKwAJ0czswKcHOuQpDWqHYNZW+fkWGck7Q5cJml11fu0J22Av4O2y8mxjqTE+Avg+oiYjS//rAVrAEjy/6U2xl9onZA0mCwxnhQRIyX1Bc6SVMolWlZmyvQG3pa0b0QsdoJsW/xl1o/tgFUiYpSkXsDdwLSIaCvX99aVyEwDjgNulLRnU4KU1KHa8dmKc7Osxkn6IrBzRJwnaX1JT5P9Ubs2Iq7L2a5vRLxTtUDbqYi4U9JHwO2SjoiI+5tqkJL2yTaJ+6obpS0P1xxrVE4TbXdgNYCIOBZ4HFg9LzEeBVwuqVurB9rOSBos6RxJOzSVRcRfyGqQt0vaO9UgTwKuAV6rVqy2YlxzrF2rAbOB+cCSZlpE/EBSL0mPRsQukg4CvgscExFzqhRre7ITcAowWNJY4ErgzYi4K525vknSfcC2wJ4R8UYVY7UV4JpjDZL0aeCnktYHpgLdUnkXgIj4GvCmpCnAWWSJ8d/VireduRf4O3AgMA84DLhV0voR8SfgUGBf4MiIeLF6YdqKcs2xNq0MTANOAnoDTX2JnSXNTycDjpf0feABJ8bKkrQxsCAi3oqIpyV1Br4TEd+RdCRwJtBV0mTgMmCtiPiomjHbivPEEzVK0ubAHsBpQD/gHmBL4F3gI2AusH9ELKxakO2ApD2Bs4Gjm5rIkj4DnAi8TlZzP4Hse9kBGBkRb1UpXCsj1xxrhKRBZN/HPyNiQUSMlbQQWBXYBLgJeBnoStbMnu7EWFmS9iBLjMMi4g1JXYEAZpL9wToVGBIRj6ftx4VrG22Ga441QNJqwH3A+sCvgcaI+GVatz5wOLA2cGtEPFu1QNsRSZ8DXgR2i4h/SNoAuBY4PSJeSutvBg6JiAnVjNUqwydkakBEvE+WHD8CxgFDJN0k6QBgOtkZ0dnAoZJW9vW8lZPz2U4kG2h/qKT+ZJPbPpwSY0NEvEw2rGqQB323TU6OVSRprZz/jJcCDwJzImI3oFMqexzYOf38SUTMd9OtojoBpGFRR5F1Y0wA/hIRv0iJcbGkAWTN64ciorF64VqlODlWiaS9yE6y9MwZ8D0VGJCa0tsDQ8nOfh4I/CsiZlUj1vYiTexxu6Rhkg6MiPlkIwb+AHwBICXG44HLgesiYnL1IrZKcp9jFaRJJH4EXBQRD0nqFBEfpckkRpOdcDm06bIzSatExLwqhtzmpe/kPOAWsuFT6wA/j4jx6cqjq8hOxvwNOBk4OSLGViteqzwnx1YmqQfZzeAPjIi/pI7+c4AzImKapK8DW0TEN5uSZlUDbgdyvpP9IuJeSX2Ai4BrIuLptE0n4A6yyzm38djSts/N6laWmsb7AOdI+jxZR/+/0gwvkJ0h/bKkjZwYW0fOd3KxpE9FxCSgJ/ALSZdJOp1sSNXxwGecGNsHj3OsgjRzSyMwBjgrIi6T1CEiGiPiWUnDqx1je5O+k8XA85IeIqs4/BLoRTbIezPgu+73bT/crK4iSV8BfgNsFxHvS+ocEQuqHVd7Jmk3sn7FtSNiaiprAHp47sz2xc3qKoqIEWQz6jwrqYcTY/VFxN+BvYBH00zfRMRiJ8b2x83qKouIB1Nn/98lDSRNMl3tuNqznO/kIUkDI2JxtWOy1udmdY2Q1DUi5lY7DvuYv5P2zcnRzKwA9zmamRXg5GhmVoCTo5lZAU6OZmYFODm2YZIaJY2RNFbSHyWtsgL7GpTuqoekfSWd2cK23SV9YzmOMSzdF6ek8rxtbpJ08DIcq3+6e6BZQU6ObduHETEgIjYnm0j35NyVyizz70BE3BMRF7ewSXdgmZOjWS1xcmw//gl8JtWYXpd0CzAW6Ctpd0lPS3oh1TC7wpIb2L8m6QWyOSVJ5UMlXZEerynpbkkvpmUH4GJgg1Rr/UXa7gxJz0l6SdJ5Ofv6kaRxkp4APlvsTUj6etrPi5LuyqsN7yZpdNrf3mn7DpJ+kXPsk1b0g7T2wcmxHZDUERhCdoMugA2BqyJiM+AD4Mdk90rZimw+ydMlrQxcRzZbzdbAWs3s/nLgsYjYAtgKeIXsVqUTUq31jDSJ7IZkN7ofAGwtaSdJW5PdH2cAsCewTQlv588RsU063qtkM+U06Z+OsRdwTXoPxwPvR8Q2af9fV3ZfcLMW+fLBtq2LpDHp8T+B68kmcX07Ikal8u2BTYEn0x0bOgFPAxsDb0XEeABJt5HdjjTfl4FjANLtAt6XtHreNrun5V/peVeyZNkNuLtpIl9J95TwnjaXdCFZ070r8HDOujvTpX7jJb2Z3sPuwOdz+iNXS8ceV8KxrB1zcmzbPoyIAbkFKQF+kFsEjIiII/K2W+p1K0jATyPi2rxjfGc59nUT2f26X5Q0FBiUsy7/cq9Ixz4tInKTKMpummXWLDerbRTwRWU3qkfSqpI2Al4D+qeZygGOaOb1jwCnpNd2UHab2TlktcImDwNfy+nLXDfNePM4sL+kLulWBPuUEG83YIqklchugJXrEEkNKeb1gdfTsU9J2yNpI0mrlnAca+dcc2znImJ6qoENl9Q5Ff84IsZJOhG4X9I8smZ5twK7+DbwW2U3nWoETomIpyU9mYbKPJj6HTcBnk4117nAVyPiBUl3kM1+Pg14roSQzwaeIbtl7TN5Mf0HeBb4FNk9XuZL+h1ZX+QLyg4+Hdi/tE/H2jNPPGFmVoCb1WZmBTg5mpkV4ORoZlaAk6OZWQFOjmZmBTg5mpkV4ORoZlbA/wPBsRNcA8Mu9QAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier as RFC\n", "clf_a = RFC(criterion='entropy', random_state=4222)\n", @@ -480,543 +311,9 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "----\n", - "#### Train Data:" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
idlabelstatementsubjectsspeakerjobstateparty#barely_true#false#half_true#mostly_true#pants_on_firecontext
02635.jsonfalseSays the Annies List political group supports ...abortiondwayne-bohacState representativeTexasrepublican0.01.00.00.00.0a mailer
31123.jsonfalseHealth care reform legislation is likely to ma...health-careblog-postingNaNNaNnone7.019.03.05.044.0a news release
512465.jsontrueThe Chicago Bears have had more starting quart...educationrobin-vosWisconsin Assembly speakerWisconsinrepublican0.03.02.05.01.0a an online opinion-piece
125947.jsonfalseWhen Mitt Romney was governor of Massachusetts...history,state-budgetmitt-romneyFormer governorMassachusettsrepublican34.032.058.033.019.0an interview with CBN News
16620.jsontrueMcCain opposed a requirement that the governme...federal-budgetbarack-obamaPresidentIllinoisdemocrat70.071.0160.0163.09.0a radio ad
\n", - "
" - ], - "text/plain": [ - " id label statement \\\n", - "0 2635.json false Says the Annies List political group supports ... \n", - "3 1123.json false Health care reform legislation is likely to ma... \n", - "5 12465.json true The Chicago Bears have had more starting quart... \n", - "12 5947.json false When Mitt Romney was governor of Massachusetts... \n", - "16 620.json true McCain opposed a requirement that the governme... \n", - "\n", - " subjects speaker job \\\n", - "0 abortion dwayne-bohac State representative \n", - "3 health-care blog-posting NaN \n", - "5 education robin-vos Wisconsin Assembly speaker \n", - "12 history,state-budget mitt-romney Former governor \n", - "16 federal-budget barack-obama President \n", - "\n", - " state party #barely_true #false #half_true #mostly_true \\\n", - "0 Texas republican 0.0 1.0 0.0 0.0 \n", - "3 NaN none 7.0 19.0 3.0 5.0 \n", - "5 Wisconsin republican 0.0 3.0 2.0 5.0 \n", - "12 Massachusetts republican 34.0 32.0 58.0 33.0 \n", - "16 Illinois democrat 70.0 71.0 160.0 163.0 \n", - "\n", - " #pants_on_fire context \n", - "0 0.0 a mailer \n", - "3 44.0 a news release \n", - "5 1.0 a an online opinion-piece \n", - "12 19.0 an interview with CBN News \n", - "16 9.0 a radio ad " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "----\n", - "#### Test Data:" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
idlabelstatementsubjectsspeakerjobstateparty#barely_true#false#half_true#mostly_true#pants_on_firecontext
011972.jsontrueBuilding a wall on the U.S.-Mexico border will...immigrationrick-perryGovernorTexasrepublican3030422318Radio interview
111685.jsonfalseWisconsin is on pace to double the number of l...jobskatrina-shanklandState representativeWisconsindemocrat21000a news conference
211096.jsonfalseSays John McCain has done nothing to help the ...military,veterans,voting-recorddonald-trumpPresident-ElectNew Yorkrepublican63114513761comments on ABC's This Week.
55962.jsontrueOver the past five years the federal governmen...federal-budget,pensions,retirementbrendan-dohertyNaNRhode Islandrepublican12110a campaign website
67070.jsontrueSays that Tennessee law requires that schools ...county-budget,county-government,education,taxesstand-children-tennesseeChild and education advocacy organization.Tennesseenone00000in a post on Facebook.
\n", - "
" - ], - "text/plain": [ - " id label statement \\\n", - "0 11972.json true Building a wall on the U.S.-Mexico border will... \n", - "1 11685.json false Wisconsin is on pace to double the number of l... \n", - "2 11096.json false Says John McCain has done nothing to help the ... \n", - "5 5962.json true Over the past five years the federal governmen... \n", - "6 7070.json true Says that Tennessee law requires that schools ... \n", - "\n", - " subjects speaker \\\n", - "0 immigration rick-perry \n", - "1 jobs katrina-shankland \n", - "2 military,veterans,voting-record donald-trump \n", - "5 federal-budget,pensions,retirement brendan-doherty \n", - "6 county-budget,county-government,education,taxes stand-children-tennessee \n", - "\n", - " job state party \\\n", - "0 Governor Texas republican \n", - "1 State representative Wisconsin democrat \n", - "2 President-Elect New York republican \n", - "5 NaN Rhode Island republican \n", - "6 Child and education advocacy organization. Tennessee none \n", - "\n", - " #barely_true #false #half_true #mostly_true #pants_on_fire \\\n", - "0 30 30 42 23 18 \n", - "1 2 1 0 0 0 \n", - "2 63 114 51 37 61 \n", - "5 1 2 1 1 0 \n", - "6 0 0 0 0 0 \n", - "\n", - " context \n", - "0 Radio interview \n", - "1 a news conference \n", - "2 comments on ABC's This Week. \n", - "5 a campaign website \n", - "6 in a post on Facebook. " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "----\n", - "#### Valid Data:" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "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", - "
idlabelstatementsubjectsspeakerjobstateparty#barely_true#false#half_true#mostly_true#pants_on_firecontext
27891.jsonfalseSays Having organizations parading as being so...campaign-finance,congress,taxesearl-blumenauerU.S. representativeOregondemocrat01110a U.S. Ways and Means hearing
59416.jsonfalseSays when armed civilians stop mass shootings ...gunsjim-rubensSmall business ownerNew Hampshirerepublican11010in an interview at gun shop in Hudson, N.H.
66861.jsontrueSays Tennessee is providing millions of dollar...education,state-budgetandy-berkeLawyer and state senatorTennesseedemocrat00000a letter to state Senate education committee c...
71122.jsonfalseThe health care reform plan would set limits s...health-careclub-growthNaNNaNnone45420a TV ad
813138.jsontrueSays Donald Trump started his career back in 1...candidates-biography,diversity,housinghillary-clintonPresidential candidateNew Yorkdemocrat402969767the first presidential debate
\n", - "
" - ], - "text/plain": [ - " id label statement \\\n", - "2 7891.json false Says Having organizations parading as being so... \n", - "5 9416.json false Says when armed civilians stop mass shootings ... \n", - "6 6861.json true Says Tennessee is providing millions of dollar... \n", - "7 1122.json false The health care reform plan would set limits s... \n", - "8 13138.json true Says Donald Trump started his career back in 1... \n", - "\n", - " subjects speaker \\\n", - "2 campaign-finance,congress,taxes earl-blumenauer \n", - "5 guns jim-rubens \n", - "6 education,state-budget andy-berke \n", - "7 health-care club-growth \n", - "8 candidates-biography,diversity,housing hillary-clinton \n", - "\n", - " job state party #barely_true #false \\\n", - "2 U.S. representative Oregon democrat 0 1 \n", - "5 Small business owner New Hampshire republican 1 1 \n", - "6 Lawyer and state senator Tennessee democrat 0 0 \n", - "7 NaN NaN none 4 5 \n", - "8 Presidential candidate New York democrat 40 29 \n", - "\n", - " #half_true #mostly_true #pants_on_fire \\\n", - "2 1 1 0 \n", - "5 0 1 0 \n", - "6 0 0 0 \n", - "7 4 2 0 \n", - "8 69 76 7 \n", - "\n", - " context \n", - "2 a U.S. Ways and Means hearing \n", - "5 in an interview at gun shop in Hudson, N.H. \n", - "6 a letter to state Senate education committee c... \n", - "7 a TV ad \n", - "8 the first presidential debate " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "names = [\n", " \"id\",\n", @@ -1061,7 +358,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1075,7 +372,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1086,17 +383,9 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Object `MLPClassifier` not found.\n" - ] - } - ], + "outputs": [], "source": [ "?MLPClassifier" ] @@ -1110,26 +399,9 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", - " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", - " hidden_layer_sizes=(100,), learning_rate='constant',\n", - " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", - " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", - " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", - " verbose=False, warm_start=False)" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from sklearn.neural_network import MLPClassifier\n", "clf_b = MLPClassifier(hidden_layer_sizes=(100,), random_state=4222)\n", @@ -1138,58 +410,9 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.9997275946608554'\n", - "Confusion matrix, without normalization\n", - "array([[1675, 1],\n", - " [ 0, 1995]])\n", - "'score: 0.5776805251641138'\n", - "Confusion matrix, without normalization\n", - "array([[109, 99],\n", - " [ 94, 155]])\n", - "'score: 0.6041666666666666'\n", - "Confusion matrix, without normalization\n", - "array([[ 92, 77],\n", - " [ 94, 169]])\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- train\", Xt=vec_train_2, yt=y2, clf=clf_b)\n", "test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- test\", Xt=vec_test_2, yt=yt2, clf=clf_b)\n", @@ -1206,30 +429,9 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.5142231947483589'\n", - "Confusion matrix, without normalization\n", - "array([[ 7, 201],\n", - " [ 21, 228]])\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "yt2_c3 = yt2.copy()\n", "yt2_c3[yt2_c3 == \"true\"] = \"REAL\"\n", @@ -1243,30 +445,9 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.5391414141414141'\n", - "Confusion matrix, without normalization\n", - "array([[274, 491],\n", - " [239, 580]])\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAEmCAYAAAATPUntAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XecFPX9x/HX+46mVBVEpIgNwQY2bBhQoyIW0Fgw2InYSOwao/kpKkaNJTG2mBCNYo0lErDE2BKxgAqigAUUBESagHQpn98f3+/h3nG3u3fO3d7efp485sHuzOzMZ/f2Pvf9fmfmMzIznHOuEBXlOgDnnMsVT4DOuYLlCdA5V7A8ATrnCpYnQOdcwfIE6JwrWJ4A6xBJG0n6l6TFkv7xI7YzQNK/k4wtFyS9IOm0Kr72BknzJX2TdFyu9vAEmAOSfi7pPUlLJc2Ov6g9Etj0cUBrYDMzO76qGzGzR8zs0ATiKUVSL0km6dky87vG+a9nuZ1rJQ3PtJ6ZHW5mf69CnB2AS4AdzWyLyr7e5Q9PgDVM0sXAH4AbCcmqA3AP0DeBzW8FfGZmaxLYVnWZB+wrabOUeacBnyW1AwU/5rvdAVhgZnOrsO96P2K/rqaZmU81NAHNgaXA8WnWaUhIkF/H6Q9Aw7isFzCT0DqZC8wGzojLhgDfA6vjPgYC1wLDU7bdETCgXnx+OvAFsAT4EhiQMv/NlNftB4wFFsf/90tZ9jpwPTA6buffQMsK3ltJ/PcB58d5xcAs4P+A11PW/SMwA/gOeB84IM7vXeZ9fpgSx9AYxwpguzjvF3H5vcDTKdu/GXgFUJkYfxpfvy5u/8E4/2hgIrAobrdLymumAVcAE4BVJZ+vT7V/ynkAhTTFX9416X5BgOuAd4DNgVbAW8D1cVmv+PrrgPpAH2A5sElcXjbhVZgAgcYxuewQl7UBdoqP1ydAYFNgIXBKfN1J8flmcfnrwFSgE7BRfH5TBe+tJAHuB7wb5/UBXgJ+USYBngxsFvd5CfAN0Ki895USx1fATvE19cskwI0JrczTgQOA+UC7dHGmPO8ELAMOidu9HJgCNIjLpwHjgfbARnHePcA9uf7O+ZR+8i5wzdoMmG/pu6gDgOvMbK6ZzSO07E5JWb46Ll9tZs8TWik7VDGedcDOkjYys9lmNrGcdY4APjezh81sjZk9BnwCHJWyzgNm9pmZrQCeBLql26mZvQVsKmkH4FTgoXLWGW5mC+I+byO0jDO9zwfNbGJ8zeoy21tO+BxvB4YDvzSzmRm2V+JEYJSZvRy3eysh2e+Xss6dZjYjfgaY2Xlmdl6W23c54gmwZi0AWmYYJ9oSmJ7yfHqct34bZRLocqBJZQMxs2WEX+xzgNmSRknqnEU8JTG1TXmeeqQ023geBgYDBwLPll0o6VJJk+MR7UWE4YOWGbY5I91CM3uX0OUXIVFnq9RnYGbr4r5SP4O0+3a1kyfAmvU2YYyoX5p1viYczCjRIc6rimWErl+JUkc0zewlMzuE0P39BPhLFvGUxDSrijGVeBg4D3g+ts7Wk3QAoZt5AqF734Iw/qiS0CvYZtrSRpLOJ7Qkv47bz1apz0CSCN3d1M/AyyrlIU+ANcjMFhMG+++W1E/SxpLqSzpc0i1xtceAqyW1ktQyrp/xlI8KjAd+IqmDpObAlSULJLWW1FdSY0JSXkroEpf1PNApnrpTT9KJwI7AyCrGBICZfQn0BK4qZ3FTwljnPKCepP8DmqUsnwN0rMyRXkmdgBsIY4unAJdLSttVT/EkcISkgyXVJ4xJriKMz7o85gmwhsXxrIuBqwm/4DMIXcF/xlVuAN4jHFH8CPggzqvKvl4Gnojbep/SSasoxvE18C0hGZ1bzjYWAEcSfukXEFpOR5rZ/KrEVGbbb5pZea3bl4AXCQctpgMrKd3FLDnJe4GkDzLtJw45DAduNrMPzexz4DfAw5IaZhHnp4TE+SfCwZOjgKPM7Ps0+7xP0n2Ztu1yS2becnfOFSZvATrnCpYnQOdcwfIE6JwrWJ4AnXMFq6ATYLxo/gFJCyWNkXSApE9zHVeJulKWqjKyrfQS131d0i+qsp34896pqnFmK1bAyfaKE1fDCjoBAj0I13e2M7PuZvY/M6vqZWU/iqSOsSTU+qtErPrKUu0Yy3EtjNN/JO2Y9H5quVsJ11TXGpJOl/RmbdiPpBMkvSVpebZlyvJRoSfArYBp8bKwaiWpuLr3UQlfE2oHbkq4vGwE8HhOI6p5I4ADJXm9v/J9S6hEdFOuA6lOeZMAJbWX9IykeZIWSLorzi+SdLWk6ZLmSnooXvWQ2qo6TdJXscLvVXHZQOCvhNp0SyUNKdtdkbS7pHGSlkj6h6QnJN0Ql23wVzTua7v4+EFJ90p6XtIywi/bEXF730maIenalJf/N/6/KMazb9l9SNpP0th4fexYSfulLHtd0vWSRsd4/x2vJNmAmS0ys2kWTgIVsJZQPirbn8XrChWT34qx/kvSZpIeie9trKSOWca9taQ3YswvU+Z6X0n7xP0skvShpF7Zxgk0ij+zJZI+kNQ15TNYSTg5/LBKbK/kMrh0yzeKP/uFkiYBe5VZ/mtJU2NMkyQdE+d3IZQJK/k+LorzK/zOSGokaXj8fVgUP9vWcVlzScMUCu7Oij+v4or2U5aZ/cfMnqTql2Hmh1yXo8lmItSM+xC4g1DGqRHQIy47k1CaaBvCRfjPAA/HZR0J12j+hVC9oyvhEqYucfnplK5714tYBgloQLgK4QJCCaRjCXXobijvtXGeAdvFxw8Srl/dn/CHplHc/i7x+a6ES7r6lYm1Xsr21u+DBMtSpWx/EeGSs3XA1Snzfw5MSPO61+Nnvi2hSMEkwlUbP42xPUSoEJNN3G8TKrQ0BH5CqCk4PC5rS7j6pE/8zA6Jz1ulxPGLCmK8llA557j487uUUPOwfso6dwK3V/K7+C/giDTLbwL+F993e+BjSpfWOp5QXKGIUIxiGdAmzXcq3Xfm7BjPxoTfkT2AZnHZs8CfCb8vmwNjgLMr2k+a91OqTFldm/KlBdid8KW5zMyWmdlKMytpGQ0gfIm/MLOlhOtd+6t0xZUhZrbCzD4kJNKuZLYP4Rf2Tgulp54hfIkq4zkzG21m62LMr5vZR/H5BMJ1vz2z3FZ1lKVqQUhgg4FxKfMfNbNdM8TzgJlNtXB98wvAVAuthjWES9V2yxS3Qun5vYDfmtkqM/sv4Re6xMmEYgnPx8/sZcJlgn0yxFbifTN7ykIJq9sJf4T2SVm+BGiR5bZKDAGGSTqiguUnAEPN7Fszm0FIsuuZ2T/M7Ov4fp4APid8v8uV4TuzmlBibTszW2tm75vZd7EV2Ae4MP6+zCU0HvpX8r3WeflSvrs9MN3Kr6NXXvmoeoRy8yWqUq5pS2CWxT+DUWVLHpVaX9LehBbCzoQWZkN+uK41m3gSL0tlZssUrlmdJ6mLZV8Gfk7K4xXlPC/Zd7q4twQWWukx2OmEnzeEMdrjJaUm+frAa1nGuP7zN7N1cXgjtbRYU0IreAOS3gH2TrPtRwl/PMraktI/91LvXdKphGuwO8ZZTUhT5ivDd+Zhwmf1uKQWhOudryJ8bvUJZc5KNlWEl+zaQL60AGcAHVR+Hb3yyketofQvZFXMBtqWGfNpn/K4VKkplT+YXvZC60cJg+/tzaw5YSwmU4mnEtVVlgrC92BjSifTpKSLezawiUJFmtRlJWYQhjNapEyNzSzbgfn1Py+FyjHtKD2m1YXQI9iAme1jZio7EVqscwjDBOWZTenvyfr3I2krwnDMYMIQQAtCFzndd6DC70zsmQwxsx0JxVmPJBSYnUEY6mmZ8rk1M7OS0368AECULwlwDOGLdZOkxnHwd/+47DHgojiY3oRws6EnKmgtVsbbhIMDgxXKQPWldFflQ2AnSd0kNSKMOWXSFPjWzFZK6k7pX6J5hLG4bSp4bWJlqSQdImm3OCjejNA9XAhMruy2slBh3GY2ndClHSKpgcKd8VJbe8MJXeXDYqyNFA5Utcty33tIOjb+4byQkBTegXAAgTBm9nIl3881wEAzG1XB8ieBKyVtEuP8ZcqyxoTkMy/GcAahZVdiDtBOUoOUeRV+ZyQdKGkXhTMMviN0ideZ2WzCvVluk9RM4UDhtpJ6ptlPKSWfN6E3VRQ/+/rpP5r8kxcJ0MzWEn4xtiPc92EmYQAZ4G+ErsB/CYPcKyn9pavqPr8nHPgYSOgmnUxINqvi8s8I55H9hzCOk835W+cB10laQqjzt74qsYWioEOB0fGIXupYFZZsWaoWhD8ciwkHTrYFels4MlpyAnZ55fErLYu4f07oan5LSC4Ppbx2BuFueb/hh9Jhl5H99/Y5wvek5CDMsfZDqfyjCIP7lT3KeXSa5AdhjHA64bv4b8J3EwAzmwTcRvjjOodwcGN0ymtfJdx46RtJJZ9Phd8ZQoHbpwjJbzLwRsr+TiV0mScR3v9ThMK3Fe2nrFMIQxn3Eu6hsoLyC+bmNS+HVQmS3gXuM7MHch2L+3Hiz3KgmX2c61hc7ngCTCN2GT4lFMEcQBh/2SZ2MZxzeS5fjgLnyg6ELkdjws10jvPk51zd4S1A51zByouDIM45Vx3qXBd4081aWrv2ZU87c7n22Tff5ToEV4FVc6bMN7NWSW2vuNlWZmtWZFzPVsx7ycx6J7XfqqhzCbBd+60Y9arfrbC2OfDGV3MdgqvA1Nv6lL1S50exNStouMMJGddbOf7uTDe6r3Z1LgE653JMgqLaVP2tYp4AnXPJy/6e9TnlCdA5l7z0ZRNrDU+AzrmEyVuAzrkCJXwM0DlXqORdYOdcAfMusHOuYHkL0DlXkPw8QOdcQfMusHOuMPlpMM65QlbkY4DOuUKUR+cB5kc71TmXR2IXONOUzZakaZI+kjRe0ntx3rWSZsV54yX1SVn/SklTJH0q6bBM2/cWoHMuecmeBnNgOXc/vMPMbi29S+0I9Ad2Ityg/j+SOsW7SpbLW4DOueQl1AKspL7A42a2ysy+BKZQ+l7eG/AE6JxLVsl5gJkmaCnpvZRpUDlbM+Dfkt4vs3ywpAmS/iZpkzivLeHe0SVmxnkV8i6wcy552XWB55vZnhnW6WFmsyRtDrws6RPCzdqvJyTH6wk3mz+zKmF6C9A5l7DkDoKY2az4/1zgWaC7mc0xs7Vmtg74Cz90c2cB7VNe3i7Oq5AnQOdc8qTMU8ZNqLGkpiWPgUOBjyW1SVntGODj+HgE0F9SQ0lbA9sDY9Ltw7vAzrlkSVCUSGppDTyrkCzrAY+a2YuSHpbUjdAFngacDWBmEyU9CUwC1gDnpzsCXLJR55xLVgKnwZjZF0DXcuafkuY1Q4Gh2e7DE6BzLnl+LbBzrmB5PUDnXEHyeoDOuUImbwE65wqR8ATonCtUilMe8ATonEuYKCryo8DOuQLlXWDnXMHyBOicK0w+BuicK1TyMUDnXCHzLrBzrmB5AnTOFSYfA3TOFSofA3TOFTTvAjvnCld+5D9PgM65hMlbgM65AuZjgM65giSUNy3A/EjTddTXs2ZwYt9DOWjfbhy8324M+/NdAJw38GR69+xO757d2a9bJ3r37F7qdbNmfkXnDpvx57vuyEXYBaFIMOKi/bn/zD0A2Ge7TXnuwv14/tIe3NJ/F4qLwi/4Nq0a84/B+zDppsMY2HPrXIZcuyiLqRbwFmAOFRfX4+rrbmaXrruxdMkSjjh4Xw7oeTD3DBu+fp3rf3sFTZs1K/W6666+gl4HH1bT4RaU0w/oyJQ5S2nSqB4S/L7/rpxy3ximzV/OBYdtz7F7tuUfY2ayaMVqrntuMofstHmuQ649EhwDlDQNWAKsBdaY2Z6SNgWeADoSbot5gpktVNjpH4E+wHLgdDP7IN32vQWYQ623aMMuXXcDoEnTpmy3fWe+mf3DjezNjJH/fIq+x564ft5Lo0bQYauOdOrcpcbjLRRbNG9Ery6teHLMDAA22bgBq9cY0+YvB2D0Z/M5bJfWAHy79Hs+mrGYNessZ/HWRkVFRRmnSjjQzLqZ2Z7x+a+BV8xse+CV+BzgcMLN0LcHBgH3ZoyzMlG46jPjq2lM/Gg8u+3xQ3d3zNtv0rJVa7bedjsAli1dyr133saFl12VqzALwtV9u3DzyE+xmNO+XfY9xcVi53ahJd571y1o02KjHEaYB6q3C9wX+Ht8/HegX8r8hyx4B2ghqU26DdVIApTUQtJ5NbGvfLRs6VLOPv0krhl6a6nu7nNPP0nfn52w/vkdt9zAwHN/SeMmTXIRZkE4sEsrFixdxcRZ35Waf+Hw8Vx1dBee/tW+LFu1hrXe4ktLUsYJaCnpvZRpUDmbMuDfkt5PWd7azGbHx98ArePjtsCMlNfOjPMqVFNjgC2A84B7UmdKqmdma2oohlpp9erVnH16f445rj+HH9Vv/fw1a9bw4qjnGPXKW+vnjXt/DM+PeIbfXfsbvlu8GBUV0bBhI04/69xchF4n7dFxEw7esTU9O7eiYb1imjSqx20n7colj03gpHveBaBHp5Zs3apxjiOtvVISXCbzU7q1FelhZrMkbQ68LOmT1IVmZpKq/NeophLgTcC2ksYDq4GVwEKgs6RDgZFmtjOApEuBJmZ2raRtgbuBVoRBzbPM7JNy95CHzIzLfnU223XqzFnnXVBq2ZtvvMq223eiTdt26+c9PerV9Y9vv/l6Gjdu4skvYbe+8Bm3vvAZAHtvuykDe27NJY9NYNMmDfh26fc0KC5i0IFbc88rU3Mcae2W1HmAZjYr/j9X0rNAd2COpDZmNjt2cefG1WcB7VNe3i7Oq1BNJcBfAzubWTdJvYBR8fmXkjqmed39wDlm9rmkvQktyIPKrhSbxoMA2rZrX3ZxrTX23bd45slH6bzjzutPdbn86us46JDejHjmSY5OOfjhcuusXltzYJfNKRI8+vYM3pnyLQAtmzbgnxfsT5NG9VhnxhkHdKT37//H0lUF3bFJ5DQXSY2BIjNbEh8fClwHjABOIzSsTgOeiy8ZAQyW9DiwN7A4patcrlydBjPGzL5Mt4KkJsB+wD9SmtMNy1vXzO4nJEt27bZH3gzOdN9nf75asLLcZbff/de0r734it9WR0guxbtTv+XdqSHR3TzyU24e+ekG68xf8j09bnitpkOr9RI6DaY18GzcVj3gUTN7UdJY4ElJA4HpQMlA+fOEU2CmEHqMZ2TaQa4S4LKUx2sofTCmUfy/CFhkZt1qLCrn3I+X0HmAZvYF0LWc+QuAg8uZb8D5ldlHTZ0GswRoWsGyOcDmkjaT1BA4EsDMvgO+lHQ8gIINPgznXO0S6gFmnmqDGmkBmtkCSaMlfQysICS9kmWrJV0HjCEMWKYe5BgA3CvpaqA+8DjwYU3E7Jyrujy5FLjmusBm9vM0y+4E7ixn/pdA7+qMyzmXvHwphuDXAjvnkiVvATrnCpSA4uL8yICeAJ1zifMusHOuMHkX2DlXqIS3AJ1zBav2nOeXiSdA51zivAXonCtMPgbonCtUPgbonCtoPgbonCtYedIA9ATonEtYgrfFrG6eAJ1ziQpjgLmOIjueAJ1zCfPzAJ1zBcy7wM65wuTnATrnCpWfB+icK2j5MgZYUzdFcs4VEEkZp0psq1jSOEkj4/MHJX0paXycusX5knSnpCmSJkjaPdO2vQXonEtW8mOAFwCTgWYp8y4zs6fKrHc4sH2c9gbujf9XyFuAzrlEicytv2xbgJLaAUcAf81i9b7AQxa8A7SQ1CbdCzwBOucSV1ykjBPQUtJ7KdOgcjb1B+ByYF2Z+UNjN/eOeD9xgLbAjJR1ZsZ5FaqwCyypWUXLYP2Ny51zbgNZNvDmm9meFW9DRwJzzex9Sb1SFl0JfAM0AO4HrgCuq0qc6cYAJwJGOKpdouS5AR2qskPnXN2m5K4F3h84WlIfoBHQTNJwMzs5Ll8l6QHg0vh8FtA+5fXt4rwKVZgAzax9Rcuccy6dJM6CMbMrCa09YgvwUjM7WVIbM5utkGX7AR/Hl4wABkt6nHDwY7GZzU63j6yOAkvqD2xjZjfGQcnWZvZ+ld6Vc67Oq+bzAB+R1IrQGx0PnBPnPw/0AaYAy4EzMm0oYwKUdBdQH/gJcGPc8H3AXlWJ3DlXt4lwJDhJZvY68Hp8fFAF6xhwfmW2m00LcD8z213SuLiTbyU1qMxOnHOFJU8uBMkqAa6WVEQ48IGkzdjwkLRzzgWVvNIjl7JJgHcDTwOtJA0BTgCGVGtUzrm8JSg5z6/Wy5gAzewhSe8DP42zjjezj9O9xjlX2PKkAZj1tcDFwGpCN9ivHnHOpZUvXeCMyUzSVcBjwJaEEwsflXRldQfmnMtPUnZTbZBNC/BUYDczWw4gaSgwDvhddQbmnMtfxbUlw2WQTQKcXWa9enGec86VK1+6wOmKIdxBGPP7Fpgo6aX4/FBgbM2E55zLN6JunAdYcqR3IjAqZf471ReOcy7vqQ7cFtPMhtVkIM65uiPvu8AlJG0LDAV2JJSkAcDMOlVjXM65PJVPXeBszul7EHiA8L4OB54EnqjGmJxzeS7JmyJVp2wS4MZm9hKAmU01s6sJidA55zYghdNgMk21QTanwayKxRCmSjqHUGG1afWG5ZzLZ7Ukv2WUTQK8CGgM/IowFtgcOLM6g3LO5bfa0sXNJJtiCO/Gh0uAU6o3HOdcXZAn+S/tidDPEmsAlsfMjq2WiJxzeU1SnSiHdVeNRZGg+sWiVbOGmVd0NWrWK6Myr+TqjLzvApvZKzUZiHOu7siXmnnZ1gN0zrmsiPxpAeZLonbO5ZF6RZmnbEkqljRO0sj4fGtJ70qaIumJkpu0SWoYn0+Jyztm2nbWYUjygTXnXEah4GmiV4JcAExOeX4zcIeZbQcsBAbG+QOBhXH+HXG9tLKpCN1d0kfA5/F5V0l/qkz0zrnCUqTMUzYktQOOAP4anws4CHgqrvJ3oF983Dc+Jy4/WBkybTYtwDuBI4EFAGb2IXBgduE75wpRliXxW0p6L2UaVM6m/gBczg+34t0MWGRma+LzmUDb+LgtMAMgLl8c169QNgdBisxseplEujaL1znnCpCAetl1ceeb2Z4Vbkc6EphrZu9L6pVQeKVkkwBnSOoOmKRi4JfAZ9URjHOubkjoIPD+wNGS+hBK8TUD/gi0kFQvtvLaEeoTEP9vD8yUVI9w2e6CdDvIpgt8LnAx0AGYA+wT5znn3AYkUZTFlImZXWlm7cysI9AfeNXMBgCvAcfF1U4DnouPR8TnxOWvmlmFV7NBdtcCz407d865rFTzaYBXAI9LuoFwh8qS6vXDgIclTSHcyyhj3sqmIvRfKOeaYDMrb8DSOVfgBNRL+FpgM3sdeD0+/gLoXs46K4HjK7PdbMYA/5PyuBFwDPFIi3POlSdPLgTJqgtcqvy9pIeBN6stIudcfqvEeX65VpVrgbcGWicdiHOu7hD5kQGzGQNcyA9jgEWEwcVfV2dQzrn8FcYAcx1FdtImwHgZSVd+OM9mXabDys45VyeqwcRk97yZrY2TJz/nXFol9wVO4lrg6pZNQ3W8pN2qPRLnXN2QxXXAtaWBmO6eICWXmuwGjJU0FVhGSPBmZrvXUIzOuTxSHecBVpd0Y4BjgN2Bo2soFudcHVFbWniZpEuAAjCzqTUUi3OuThBFdeA0mFaSLq5ooZndXg3xOOfyXLgnSK6jyE66BFgMNIE8SeXOudpBdWMMcLaZXVdjkTjn6oS60gLMk7fgnKttsqn3VxukS4AH11gUzrk6JU/yX8UJ0My+rclAnHN1gwTFeZIBq1INxjnn0sqP9OcJ0DmXsHAtcH6kQE+AzrnE5Uf68wTonEucKKoD5wE651yliezKTNUG+RKncy6PSMo4ZbGNRpLGSPpQ0kRJQ+L8ByV9KWl8nLrF+ZJ0p6QpkiZIylixyluAzrnEJdQBXgUcZGZLJdUH3pT0Qlx2mZk9VWb9w4Ht47Q3cG/8v0KeAJ1ziUrqPMBYgX5pfFo/Tumq0vcFHoqve0dSC0ltzGx2RS/wLrBzLnFZdoFbSnovZRpUznaKJY0H5gIvm9m7cdHQ2M29Q1LDOK8tpe9ZPjPOq5C3AJ1zicuy/TffzPZMt4KZrQW6SWoBPCtpZ+BK4BugAXA/cAVQpcIt3gJ0ziUu6XuCmNki4DWgt5nNtmAV8ADQPa42C2if8rJ2/HBHy3J5AnTOJUqEMcBMU8btSK1iyw9JGwGHAJ9IahPnCegHfBxfMgI4NR4N3gdYnG78D7wL7JxLnFAyx4HbAH+XVExorD1pZiMlvSqpFSHXjgfOies/D/QBpgDLgTMy7cAToHMucUlcCmxmEwh3pSw7/6AK1jfg/MrswxOgcy5R4UoQvxTOOVeIBEV5cnTBE2AOzZgxg1+ccSpz585BEmcOHMTgX13AkGt+y8gRz1FUVESrzTfn/mEPsuWWW7Jw4ULOPutMvpw6lYaNGvHnv/yNnXbeOddvo076ZNQQlixbxdp161izdh09BtzCrp3a8qer+tOwYX3WrF3HhTc+wXsTpwNw2+XHcdj+O7F85fcMuuZhxn8yM8fvILcSGgOsdnmSp+umevXqcdMttzFuwiTeePMd/nzf3UyeNImLLrmMseMm8O774zm8z5H87oZwitMtN91I167dGDtuAsMeeIhLL74gx++gbus96I/s0/8megy4BYChF/Zj6P0vsE//m7j+3pEMvbAfAIf12JFtO7Ri575DGHzDY9z5m/65DDvnQj3AzFNt4Akwh9q0acNuu4frtZs2bUrnzl34+utZNGvWbP06y5cvW3/h+CeTJ9HzwDD+u0PnzkyfPo05c+bUfOAFygyaNW4EQPMmGzF73mIAjuy5K4+OHAPAmI+m0bzpRmzRslmF2ykEyuJfbeBd4Fpi+rRpjB8/jr26h2u3r/ntVTwy/CGaN2/Oiy+/BsAuu3bluWefoUePAxg7ZgxfTZ/OrJkzad26dS5Dr5PMjH/dMxgzY9jTo/nbM6O57Nan+Nfd5/O7i46hqEgcePptAGy5eQtmfrNw/WtnzVnElpu34Jv53+Uq/JzLl4rQ1dYClPQrSZMlPVLB8l6SRlbX/vPJ0qVLOemEn/H72/6wvvU35Pqfgth+AAAOhklEQVShTPlyBv1PGsB999wFwKWX/5rFixax9x7duPfuP9G1224UFxfnMvQ66+Az7mC/n99Mv8H3cPaJB7D/7tsy6PgDuPy2Z9j+8N9y+a1Pc+81A3IdZq3kXeDgPOAQM/NvSRqrV6/mpBN+xoknDaDfMcdusPzEkwbwz2efBqBZs2bcP+wB3n1/PMMefIj58+ex9Tbb1HTIBeHr2L2dt3ApI16dwF47dWTAkXvzz1fGA/D0y+PYc6etwrpzF9Fui03Wv7Zt6xZ8PXdRzQdda2TTAa4dGbBaEqCk+4BtgBckXSHpbUnjJL0laYdy1u+ZUtxwnKSmcf5lksbGqg9DqiPWXDIzzjlrIDt07sIFF128fv6Uzz9f/3jkiOfotENnABYtWsT3338PwAPD/kqPHj8pNV7okrFxowY02bjh+sc/3bczE6d+zex5izlgj+0B6NW9E1O+mgfAqDc+4udHhstRu+/Ske+Wrijo7i9ZXAdcW3rI1TIGaGbnSOoNHAh8D9xmZmsk/RS4EfhZmZdcCpxvZqMlNQFWSjqUUNiwO6FVPULST8zsv9URcy68NXo0jz7yMDvvvAt779ENgCE33MiDDwzj888+pUhFdNhqK+68+z4APpk8mbMGnoYkuuy4E/fdPyyX4ddZm2/WlCduPwuAesXFPPHCe7z81mTOX/4ov7/sOOrVK2LVqjUMvuExAF58cyKH9diJiSOuYfnK1Zx97fBchp9zJdcC54OaOAjSnHA93/aEYob1y1lnNHB7HC98xsxmxgR4KDAurtOEkBA3SICxjtgggPYdOiT/DqrJ/j16sGL1hvUdex/ep9z199l3Xz6a9Fl1h1Xwps1awN4n3rTB/LfGf8H+8ZSYsi666cnqDiuv5Ef6q5nTYK4HXjOznYGjgEZlVzCzm4BfABsBoyV1JnyGvzOzbnHazszKbfKY2f1mtqeZ7dmqZavqeyfOuewoi6kWqIkE2JwfanKdXt4KkrY1s4/M7GZgLNAZeAk4M3aJkdRW0uY1EK9z7kfKl4MgNdEFvoXQBb4aGFXBOhdKOhBYB0wEXjCzVZK6AG/HE4GXAicTSmM752qx2nKaSybVlgDNrGN8OB/olLLo6rj8deD1+PiXFWzjj8AfqytG51w1KfQE6JwrTGGILz8yoCdA51yyatF5fpl4AnTOJc4ToHOuQNWeo7yZeAJ0ziXOW4DOuYJUi85zzsgLojrnEicp45TFNhpJGiPpQ0kTSwqiSNpa0ruSpkh6QlKDOL9hfD4lLu+YaR+eAJ1ziUuoGswq4CAz6wp0A3rHG57fDNxhZtsBC4GBcf2BwMI4/464XlqeAJ1ziUviUmALlsan9eNkwEHAU3H+34F+8XHf+Jy4/GBlaGp6AnTOJSub7BfSUktJ76VMgzbYlFQsaTzhEtiXganAIjNbE1eZCbSNj9sCMwDi8sXAZulC9YMgzrlEhZL4WfVx55vZnulWMLO1QDdJLYBnCYVSEuMtQOdc4pKuhmVmi4DXgH2BFpJKGm/t+KHa1CygPUBc3hxYkG67ngCdc8lLIANKahVbfkjaCDgEmExIhMfF1U4DnouPR8TnxOWvmtmGFYdTeBfYOZe4hK4EaUMopVdMaKw9aWYjJU0CHpd0A6FifEmh5GHAw5KmAN8CGe9Q7wnQOZe4JOoBmtkEYLdy5n9BuFdQ2fkrgeMrsw9PgM655OXJpSCeAJ1zifJ6gM65wuX1AJ1zhcwToHOuQHk9QOdcAfMWoHOuIOVTPUBPgM65xGVT76828ATonEtcnuQ/T4DOueTlSf7zBOicS5ifB+icK1TCxwCdcwUsP9KfJ0DnXDXIkwagJ0DnXPK8C+ycK1j5kf48ATrnElaJ+/7mnCdA51zivBiCc65geQvQOVewPAE65wpU/tQD9PsCO+cSFa4EyTxl3I7UXtJrkiZJmijpgjj/WkmzJI2PU5+U11wpaYqkTyUdlmkf3gJ0ziUuoS7wGuASM/tAUlPgfUkvx2V3mNmtpfepHQn3At4J2BL4j6ROZra2oh14C9A5lzhl8S8TM5ttZh/Ex0uAyUDbNC/pCzxuZqvM7EtgCuXcPziVJ0DnXLKy6P7GFmJLSe+lTIMq3KTUkXCT9HfjrMGSJkj6m6RN4ry2wIyUl80kfcL0BOicS5aynID5ZrZnynR/uduTmgBPAxea2XfAvcC2QDdgNnBbVWP1MUDnXOKSuhZYUn1C8nvEzJ4BMLM5Kcv/AoyMT2cB7VNe3i7Oq5C3AJ1ziUvoKLCAYcBkM7s9ZX6blNWOAT6Oj0cA/SU1lLQ1sD0wJt0+vAXonEtcQmcB7g+cAnwkaXyc9xvgJEndAAOmAWcDmNlESU8CkwhHkM9PdwQYPAE656pDAhnQzN6sYEvPp3nNUGBotvvwBOicS5SAojy5Fk5mlusYEiVpHjA913EkpCUwP9dBuA3UtZ/LVmbWKqmNSXqR8BllMt/Meie136qocwmwLpH0npntmes4XGn+c6k7/Ciwc65geQJ0zhUsT4C1W7lnxruc859LHeFjgM65guUtQOdcwfIE6JwrWJ4AnXMFyxOgc1WkMiVPyj53tZ8nQOeqQJIsHkGUtBmA+RHFvONHgfOApGOAZUCRmb2Y63jcDyT9EtiXUJjzDeAFM1ud26hctrwFWMtJGgxcCmwKPC3pgByH5CJJxwPHA+cChwI9PPnlF0+AtZSCrYBDgIMI9zZ4A3grVsl1NaxkjE9Sye9NW+AmQlHOr4Gr4vItchKgqzRPgLWXgHmEG7v8H9ATOC4WeDxNUqdcBldoUsf8gJIE9wVwI3CqmR1mZqslXQKck5IkXS3m9QBrIUk9gF3N7B5JGwMDzaxRXPZz4BekKQrpklPS6ks54HEh0E/SEcBUwq0ax0raA+gEDABOMbN1OQrZVYIfBKlFYqtBwEBgD+A14DlgONCCcO+D/YAzzeyjXMVZSCQ1NLNV8fFA4CzgeDObEYciDiD8rHoCK4Dr/GeTPzwB1iKSOpjZV7HVdzzhF+sdM3tU0tHAWsINYr7IaaAFQtJ2hDG+S8xsuqSLCTfbXgl0Bc4E7iH8gVpJ+H1anqt4XeX5OEUtIWlL4H+SDo+/RE8RWnynSToVeN7MRnnyq1HfE7q5v4t3IpsCnAdcDHxFOOjxE6C5ma3w5Jd/PAHWApIuJ5xL9hvgRkmHmtmyeKPoBsCuQJNcxliIzOwr4G7CwY7bCEfhjwN+ZmZPAEsI955dlbMg3Y/iCTDHJPUBegFjzewR4PfA7ZKOiN3eFcBtZrYoh2EWhHjqUanfiZgEbye0+P4MbGpmyySdB9wMDDKz2TUfrUuCjwHWMEkNgO3MbJKk04FfA1PM7MiUdY4DLiEkvwvNbEJOgi0wkpqY2dL4+GygGeHqm5slNQeuADoSusBtgMU+JJHfPAHWsDiwfg/h0qkOwN+AC4G/m9mdKes1B9aY2bKcBFpgYmu7r5kNlHQR0A/4LXAX8JGZDZDUlHDP2Y0JLT8/1SXP+XmANczMpkiaAAwCrjCzhyXNB86O59r+Ka63OKeBFpBYzOBXwGBJOwB7AofHeVOBjSQ9ZWbHSboK2MiTX93gCTA37gM+BC6W9K2ZPSFpLnCPpPlm9liO4ys03wNrgGsAA64EuhNahPtK6g68IGm4mZ1MOPjh6gBPgDlgZlOAKZIWAUPj/40Iv4jv5DS4AmRmSyS9Srjk8NZ4zt/WwNtxlc6Eg1OP5ypGVz08AeaQmf1L0mrgVkK5q4Fm9mWOwypUTwDvA3dJWgC8AOwm6W+E7nBPM5uWw/hcNfCDILWApM0Jl5vOy3UshU7S7oRk+BvgTULFlwX+h6lu8gToXBmSugKvAlfGk9FdHeUJ0LlySNoZWGFmU3Mdi6s+ngCdcwXLL4VzzhUsT4DOuYLlCdA5V7A8ATrnCpYnQOdcwfIEWEdJWitpvKSPJf0jltmv6rZ6SRoZHx8t6ddp1m0Ra+VVdh/XSro02/ll1nkwlhDLdl8dJX1c2Rhd3eMJsO5aYWbdzGxnwjXG56QuLK/4ZzbMbISZ3ZRmlRaEsvHO1XqeAAvD/4DtYsvnU0kPEe430l7SoZLelvRBbCk2AZDUW9Inkj4Aji3ZkKTTJd0VH7eW9KykD+O0H+EmQtvG1ufv43qXSRoraYKkISnbukrSZ5LeBHbI9CYknRW386Gkp8u0an8q6b24vSPj+sWSfp+y77N/7Afp6hZPgHWcpHqEi/lLbtW4PXCPme1EKMBwNfBTM9sdeI9QoqsR8BfgKMKd6bbYYMPBncAbZtYV2B2YSKhwPTW2Pi+TdGjcZ3egG7CHpJ8o3Ee3f5zXB9gri7fzjJntFfc3mXD70BId4z6OAO6L72EgoWrzXnH7Z8UqL84BXg2mLttI0vj4+H/AMGBLYLqZlZTc2gfYERitcP/vBoQSUJ2BL83scwBJwwkFXMs6CDgVwMzWAoslbVJmnUPjNC4+b0JIiE2BZ0vupCZpRBbvaWdJNxC62U2Al1KWPRmLlH4u6Yv4Hg4Fdk0ZH2we9/1ZFvtyBcATYN21wsy6pc6ISS61xL6Al83spDLrlXrdjyTgd2b25zL7uLAK23oQ6GdmH8b7qfRKWVb2mk6L+/6lmaUmSiR1rMK+XR3kXeDC9g6wf7xPCZIaS+oEfAJ0lLRtXO+kCl7/CnBufG1xvI/JEkLrrsRLwJkpY4ttY/mv/wL9JG0U77VxVBbxNgVmS6oPDCiz7HhJRTHmbYBP477PjesjqZOkxlnsxxUIbwEWMDObF1tSj0lqGGdfbWafSRoEjJK0nNCFblrOJi4A7pc0EFgLnGtmb0saHU8zeSGOA3YB3o4t0KXAyWb2gaQnCLcGmAuMzSLk3wLvAvPi/6kxfQWMIdzJ7RwzWynpr4SxwQ8Udj6PcLMj5wCvBuOcK2DeBXbOFSxPgM65guUJ0DlXsDwBOucKlidA51zB8gTonCtYngCdcwXr/wFZyiJzo91pCQAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "yt1_c3 = yt1.copy()\n", "yt1_c3[yt1_c3 == \"REAL\"] = \"true\"\n", @@ -1288,7 +469,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1330,41 +511,16 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing datasets\n", - "ds1= data/fake_or_real_news.csv\n", - "ds2= data/train.tsv\n", - "-- fake news\n", - "Index(['y', 'claim'], dtype='object')\n", - "3171\n", - "3164\n", - "6335\n", - "-- liar liar\n", - "Index(['y', 'claim'], dtype='object')\n", - "{'true', 'barely-true', 'half-true', 'false', 'pants-fire', 'mostly-true'} 10240\n", - "1676\n", - "1995\n", - "{'true', 'false'} 3671\n", - "false 5159\n", - "true 4847\n", - "Name: y, dtype: int64\n", - "done\n" - ] - } - ], + "outputs": [], "source": [ "X3, Xt3, y3, yt3 = get_dataset3_split('data/fake_or_real_news.csv', 'data/train.tsv')" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1382,26 +538,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", - " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", - " hidden_layer_sizes=(16, 16), learning_rate='constant',\n", - " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", - " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", - " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", - " verbose=False, warm_start=False)" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clf_3 = MLPClassifier(hidden_layer_sizes=(16,16), random_state=4222)\n", "clf_3.fit(vec_train_3, y3)" @@ -1409,44 +548,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.9997144488863506'\n", - "Confusion matrix, without normalization\n", - "array([[3367, 1],\n", - " [ 1, 3635]])\n", - "'score: 0.7714856762158561'\n", - "Confusion matrix, without normalization\n", - "array([[1136, 343],\n", - " [ 343, 1180]])\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- train\", Xt=vec_train_3, yt=y3, clf=clf_3)\n", "test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- test\", Xt=vec_test_3, yt=yt3, clf=clf_3)" From 21ed9312355b1e4ddc7b7cee628fc7ed225c9906 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Thu, 17 May 2018 13:47:30 +0200 Subject: [PATCH 03/15] created Task 04 --- Jonas_Solutions/Task03_Instructions.py | 84 +++++++ Jonas_Solutions/Task_03.ipynb | 293 +++++++++++++++++++++++++ 2 files changed, 377 insertions(+) create mode 100644 Jonas_Solutions/Task03_Instructions.py create mode 100644 Jonas_Solutions/Task_03.ipynb diff --git a/Jonas_Solutions/Task03_Instructions.py b/Jonas_Solutions/Task03_Instructions.py new file mode 100644 index 0000000..17e8fe3 --- /dev/null +++ b/Jonas_Solutions/Task03_Instructions.py @@ -0,0 +1,84 @@ +import numpy as np +import pandas as pd +from sklearn.feature_extraction.text import CountVectorizer +from keras.preprocessing.text import Tokenizer +from keras.preprocessing.sequence import pad_sequences +from keras.models import Sequential +from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D +from sklearn.model_selection import train_test_split +from keras.utils.np_utils import to_categorical +import re + +''' +Task 3: playing with NN framwork/keras and basic sentiment analysis +- use the following model as a baseline and improve it! +- export your metadata (just basic hyperparameters and outcomes for test data!) +- test data = 0.3 (not in this example, change it!) +- random_state = 4222 +- no need to cross-validation! +''' + +# parameters +max_fatures = 500 +embed_dim = 128 +lstm_out = 196 +dropout = 0.1 +dropout_1d = 0.4 +recurrent_dropout = 0.1 +random_state = 1324 +validation_size = 1000 +batch_size = 16 +epochs=2 +verbose= 2 + +df = pd.read_csv('dataset_sentiment.csv') +df = df[['text','sentiment']] +print(df[0:10]) + +df = df[df.sentiment != "Neutral"] +df['text'] = df['text'].apply(lambda x: x.lower()) +df['text'] = df['text'].apply(lambda x: x.replace('rt',' ')) +df['text'] = df['text'].apply((lambda x: re.sub('[^a-zA-z0-9\s]','',x))) + +tok = Tokenizer(num_words=max_fatures, split=' ') +tok.fit_on_texts(df['text'].values) +X = tok.texts_to_sequences(df['text'].values) +X = pad_sequences(X) + +nn = Sequential() +nn.add(Embedding(max_fatures, embed_dim, input_length = X.shape[1])) +nn.add(SpatialDropout1D(dropout_1d)) +nn.add(LSTM(lstm_out, dropout=dropout, recurrent_dropout=recurrent_dropout)) +nn.add(Dense(2, activation='softmax')) +nn.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy']) +print(nn.summary()) + +Y = pd.get_dummies(df['sentiment']).values +X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.30, random_state = random_state) +nn.fit(X_train, Y_train, epochs = epochs, batch_size=batch_size, verbose=verbose) + +X_validate = X_test[-validation_size:] +Y_validate = Y_test[-validation_size:] +X_test = X_test[:-validation_size] +Y_test = Y_test[:-validation_size] +score, accuracy = nn.evaluate(X_test, Y_test, verbose = 2, batch_size = batch_size) +print("score: %.2f" % (score)) +print("acc: %.2f" % (accuracy)) + +pos_cnt, neg_cnt, pos_ok, neg_ok = 0, 0, 0, 0 +for x in range(len(X_validate)): + result = nn.predict(X_validate[x].reshape(1,X_test.shape[1]),batch_size=1,verbose = 2)[0] + if np.argmax(result) == np.argmax(Y_validate[x]): + if np.argmax(Y_validate[x]) == 0: neg_ok += 1 + else: pos_ok += 1 + if np.argmax(Y_validate[x]) == 0: neg_cnt += 1 + else: pos_cnt += 1 + +print("pos_acc", pos_ok/pos_cnt*100, "%") +print("neg_acc", neg_ok/neg_cnt*100, "%") + +X2 = ['what are u going to say about that? the truth, wassock?!'] +X2 = tok.texts_to_sequences(X2) +X2 = pad_sequences(X2, maxlen=26, dtype='int32', value=0) +print(X2) +print(nn.predict(X2, batch_size=1, verbose = 2)[0]) diff --git a/Jonas_Solutions/Task_03.ipynb b/Jonas_Solutions/Task_03.ipynb new file mode 100644 index 0000000..49e0899 --- /dev/null +++ b/Jonas_Solutions/Task_03.ipynb @@ -0,0 +1,293 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np \n", + "import pandas as pd \n", + "from sklearn.feature_extraction.text import CountVectorizer\n", + "from keras.preprocessing.text import Tokenizer\n", + "from keras.preprocessing.sequence import pad_sequences\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D\n", + "from sklearn.model_selection import train_test_split\n", + "from keras.utils.np_utils import to_categorical\n", + "import re\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dataset already downloaded\n" + ] + } + ], + "source": [ + "%%bash\n", + "\n", + "if [ ! -e 'dataset_sentiment.csv' ]\n", + "then\n", + " echo \"downloading dataset\"\n", + " wget https://raw.githubusercontent.com/SmartDataAnalytics/MA-INF-4222-NLP-Lab/master/2018_SoSe/exercises/dataset_sentiment.csv\n", + "else\n", + " echo \"dataset already downloaded\"\n", + "fi" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# parameters\n", + "max_fatures = 500\n", + "embed_dim = 128\n", + "lstm_out = 196\n", + "dropout = 0.1\n", + "dropout_1d = 0.4\n", + "recurrent_dropout = 0.1\n", + "random_state = 1324\n", + "validation_size = 1000\n", + "batch_size = 16\n", + "epochs=2\n", + "verbose= 2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " text sentiment\n", + "0 RT @NancyLeeGrahn: How did everyone feel about... Neutral\n", + "1 RT @ScottWalker: Didn't catch the full #GOPdeb... Positive\n", + "2 RT @TJMShow: No mention of Tamir Rice and the ... Neutral\n", + "3 RT @RobGeorge: That Carly Fiorina is trending ... Positive\n", + "4 RT @DanScavino: #GOPDebate w/ @realDonaldTrump... Positive\n", + "5 RT @GregAbbott_TX: @TedCruz: \"On my first day ... Positive\n", + "6 RT @warriorwoman91: I liked her and was happy ... Negative\n", + "7 Going on #MSNBC Live with @ThomasARoberts arou... Neutral\n", + "8 Deer in the headlights RT @lizzwinstead: Ben C... Negative\n", + "9 RT @NancyOsborne180: Last night's debate prove... Negative\n" + ] + } + ], + "source": [ + "df = pd.read_csv('dataset_sentiment.csv')\n", + "df = df[['text','sentiment']]\n", + "print(df[0:10])\n", + "\n", + "df = df[df.sentiment != \"Neutral\"]\n", + "df['text'] = df['text'].apply(lambda x: x.lower())\n", + "df['text'] = df['text'].apply(lambda x: x.replace('rt',' '))\n", + "df['text'] = df['text'].apply((lambda x: re.sub('[^a-zA-z0-9\\s]','',x)))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "tok = Tokenizer(num_words=max_fatures, split=' ')\n", + "tok.fit_on_texts(df['text'].values)\n", + "X = tok.texts_to_sequences(df['text'].values)\n", + "X = pad_sequences(X)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "embedding_1 (Embedding) (None, 26, 128) 64000 \n", + "_________________________________________________________________\n", + "spatial_dropout1d_1 (Spatial (None, 26, 128) 0 \n", + "_________________________________________________________________\n", + "lstm_1 (LSTM) (None, 196) 254800 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 2) 394 \n", + "=================================================================\n", + "Total params: 319,194\n", + "Trainable params: 319,194\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n", + "None\n" + ] + } + ], + "source": [ + "nn = Sequential()\n", + "nn.add(Embedding(max_fatures, embed_dim, input_length = X.shape[1]))\n", + "nn.add(SpatialDropout1D(dropout_1d))\n", + "nn.add(LSTM(lstm_out, dropout=dropout, recurrent_dropout=recurrent_dropout))\n", + "nn.add(Dense(2, activation='softmax'))\n", + "nn.compile(loss = 'categorical_crossentropy', optimizer='adam', metrics = ['accuracy'])\n", + "print(nn.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/2\n", + " - 30s - loss: 0.4374 - acc: 0.8161\n", + "Epoch 2/2\n", + " - 30s - loss: 0.3614 - acc: 0.8487\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y = pd.get_dummies(df['sentiment']).values\n", + "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.30, random_state = random_state)\n", + "nn.fit(X_train, Y_train, epochs = epochs, batch_size=batch_size, verbose=verbose)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "score: 0.37\n", + "acc: 0.85\n" + ] + } + ], + "source": [ + "X_validate = X_test[-validation_size:]\n", + "Y_validate = Y_test[-validation_size:]\n", + "X_test = X_test[:-validation_size]\n", + "Y_test = Y_test[:-validation_size]\n", + "score, accuracy = nn.evaluate(X_test, Y_test, verbose = 2, batch_size = batch_size)\n", + "print(\"score: %.2f\" % (score))\n", + "print(\"acc: %.2f\" % (accuracy))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "pos_cnt, neg_cnt, pos_ok, neg_ok = 0, 0, 0, 0\n", + "for x in range(len(X_validate)):\n", + " result = nn.predict(X_validate[x].reshape(1,X_test.shape[1]),batch_size=1,verbose = 2)[0]\n", + " if np.argmax(result) == np.argmax(Y_validate[x]):\n", + " if np.argmax(Y_validate[x]) == 0: neg_ok += 1\n", + " else: pos_ok += 1\n", + " if np.argmax(Y_validate[x]) == 0: neg_cnt += 1\n", + " else: pos_cnt += 1" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pos_acc 31.770833333333332 %\n", + "neg_acc 97.27722772277228 %\n" + ] + } + ], + "source": [ + "print(\"pos_acc\", pos_ok/pos_cnt*100, \"%\")\n", + "print(\"neg_acc\", neg_ok/neg_cnt*100, \"%\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 37\n", + " 311 189 4 144 22 16 1 281]]\n", + "[0.93431044 0.06568963]\n" + ] + } + ], + "source": [ + "X2 = ['what are u going to say about that? the truth, wassock?!']\n", + "X2 = tok.texts_to_sequences(X2)\n", + "X2 = pad_sequences(X2, maxlen=26, dtype='int32', value=0)\n", + "print(X2)\n", + "print(nn.predict(X2, batch_size=1, verbose = 2)[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From f819ae113e3bc31f12b2c3075834bc7d14937ac9 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Thu, 17 May 2018 18:58:11 +0200 Subject: [PATCH 04/15] whatsapp to csv converter --- Project/Tools/whatsapp2csv.sh | 85 +++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 Project/Tools/whatsapp2csv.sh diff --git a/Project/Tools/whatsapp2csv.sh b/Project/Tools/whatsapp2csv.sh new file mode 100755 index 0000000..6583d4a --- /dev/null +++ b/Project/Tools/whatsapp2csv.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + +# toolset:--------------------------------------------------------------------- + +command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done) + +function lineprint { + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +} + +function message { + lineprint + printf "$1\n" + lineprint +} + +function error_message { + lineprint + printf "$1\n" >&2 + lineprint +} + +current_action="IDLE" + +function confirm_action { + message "successfully finished action: $current_action" +} + +function set_action { + current_action="$1" + message "$1" +} + +function perform { + "$@" + local status=$? + if [ $status -ne 0 ] + then + error_message "$current_action failed!" + fi + return $status +} + +function perform_and_exit { + perform "$@" || exit 1 +} + +# ----------------------------------------------------------------------------- +# reading input + +INPUT=$1 +OUTPUT="$INPUT.csv" + +if [ $# -eq 0 ] +then + error_message "Error: no input file given. Usage: $0 " + exit 1 +fi + +set_action "processing File: ${INPUT}" + +if [ ! -e "$INPUT" ] +then + error_message "Error: file '$INPUT' not found" + exit 1 +fi + +perform_and_exit echo -e "date\ttime\tperson\tmessage" > "$OUTPUT" + +# doing the following things in the pipeline below: +# +# 1. merging multiline messages by replacing newlines with spaces if they are not starting with a number followed by '/' (not stating with a date) +# 2. delete all lines containing the keywords: "added, creates, end-to-end, Media ommited" (which are most probably system messages) +# 3. replace separators of whatsapp's txt-format with '\t' as separator for csv +# 4. delete all double-quotes. Because people are too stupid to type them in pairs and that breaks some csv-interpreters 🤦‍♂ + +perform_and_exit sed ':a;N;/\n[0-9]\{1,\}\+\//!s/\n/ /;ta;P;D' "$INPUT" | grep -v -E 'added|created|end-to-end|Media omitted' | sed 's/, /\t/1; s/- /\t/1; s/: /\t/1;' | tr -d '"' >> "$OUTPUT" + +confirm_action + +message "Wrote output to $OUTPUT" + From 44227edef515d8aea78a88bebf0e3a09c17f0d38 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Fri, 18 May 2018 15:38:36 +0200 Subject: [PATCH 05/15] emoji stuff --- Project/Tools/emoji tester.ipynb | 2735 ++++++++++++++++++++++++++++++ Project/Tools/emoji-data.txt | 714 ++++++++ Project/Tools/whatsapp2csv.sh | 2 +- 3 files changed, 3450 insertions(+), 1 deletion(-) create mode 100644 Project/Tools/emoji tester.ipynb create mode 100644 Project/Tools/emoji-data.txt diff --git a/Project/Tools/emoji tester.ipynb b/Project/Tools/emoji tester.ipynb new file mode 100644 index 0000000..1f3ad70 --- /dev/null +++ b/Project/Tools/emoji tester.ipynb @@ -0,0 +1,2735 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from IPython.display import clear_output, Markdown, Math" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* read table `test.csv` exported by `whatsapp2csv.sh`" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datetimepersonmessage
010/18/1611:18Lena CartaHallo Jonas 😉
110/18/1611:21Jonas WeinzMoin moin ;) Vllt. bin ich aber gar nicht Jona...
210/18/1611:21Lena Carta😱🤕
310/18/1611:21Sonja Vorwerk🙈😂
410/18/1611:22Caner Ucar😂😂😂
510/18/1611:22Patrick (Arithmeum)hallo jeff
610/18/1611:22Caner UcarPatrick kein Handy am Empfang
710/18/1611:26Patrick (Arithmeum)halts maul und geh ma duschen
810/18/1611:34Simon (Arithmeum)Hab dich als Carsten abgespeichert, selber Schuld
910/18/1611:36Caner UcarPatrick ich hab geduscht mit Kristina und Sonja v
1010/18/1611:36Lena Cartaähm....
1110/18/1611:37Jonathan (Arithmeum)Caner benutzt das Damen-Bad
1210/18/1611:37Jonas WeinzLüg doch nicht, du tanzt die ganze Zeit aufm T...
1310/18/1611:37Jonathan (Arithmeum)bääh😱
1410/18/1611:40Patrick (Arithmeum)ja caner so ist das unter frauen..da geht man ...
1510/18/1612:02Thomas KoppelbergEeemmm was?
1610/18/1612:12Kristina StellwagThomas, du wolltest gestern ja nicht 😜
1710/18/1612:14Thomas KoppelbergIch wollte einiges, aber ich kann mich zurückh...
1810/18/1612:19Simon (Arithmeum)Genau 🙊
1910/18/1613:36Caner UcarSex
\n", + "
" + ], + "text/plain": [ + " date time person \\\n", + "0 10/18/16 11:18 Lena Carta \n", + "1 10/18/16 11:21 Jonas Weinz \n", + "2 10/18/16 11:21 Lena Carta \n", + "3 10/18/16 11:21 Sonja Vorwerk \n", + "4 10/18/16 11:22 Caner Ucar \n", + "5 10/18/16 11:22 Patrick (Arithmeum) \n", + "6 10/18/16 11:22 Caner Ucar \n", + "7 10/18/16 11:26 Patrick (Arithmeum) \n", + "8 10/18/16 11:34 Simon (Arithmeum) \n", + "9 10/18/16 11:36 Caner Ucar \n", + "10 10/18/16 11:36 Lena Carta \n", + "11 10/18/16 11:37 Jonathan (Arithmeum) \n", + "12 10/18/16 11:37 Jonas Weinz \n", + "13 10/18/16 11:37 Jonathan (Arithmeum) \n", + "14 10/18/16 11:40 Patrick (Arithmeum) \n", + "15 10/18/16 12:02 Thomas Koppelberg \n", + "16 10/18/16 12:12 Kristina Stellwag \n", + "17 10/18/16 12:14 Thomas Koppelberg \n", + "18 10/18/16 12:19 Simon (Arithmeum) \n", + "19 10/18/16 13:36 Caner Ucar \n", + "\n", + " message \n", + "0 Hallo Jonas 😉 \n", + "1 Moin moin ;) Vllt. bin ich aber gar nicht Jona... \n", + "2 😱🤕 \n", + "3 🙈😂 \n", + "4 😂😂😂 \n", + "5 hallo jeff \n", + "6 Patrick kein Handy am Empfang \n", + "7 halts maul und geh ma duschen \n", + "8 Hab dich als Carsten abgespeichert, selber Schuld \n", + "9 Patrick ich hab geduscht mit Kristina und Sonja v \n", + "10 ähm.... \n", + "11 Caner benutzt das Damen-Bad \n", + "12 Lüg doch nicht, du tanzt die ganze Zeit aufm T... \n", + "13 bääh😱 \n", + "14 ja caner so ist das unter frauen..da geht man ... \n", + "15 Eeemmm was? \n", + "16 Thomas, du wolltest gestern ja nicht 😜 \n", + "17 Ich wollte einiges, aber ich kann mich zurückh... \n", + "18 Genau 🙊 \n", + "19 Sex " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "messages = pd.read_csv('test.csv', delimiter='\\t')\n", + "messages[:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* read emoji-data (can be found here: https://www.unicode.org/Public/emoji/11.0/emoji-data.txt) and generate a table file out of it" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_blacklist = set([\n", + " 0x1F3FB,\n", + " 0x1F3FC,\n", + " 0x1F3FD,\n", + " 0x1F3FE,\n", + " 0x1F3FF\n", + "])" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
unicodetype
228231A..231BEmoji_Presentation
22923E9..23ECEmoji_Presentation
23023F0Emoji_Presentation
23123F3Emoji_Presentation
23225FD..25FEEmoji_Presentation
2332614..2615Emoji_Presentation
2342648..2653Emoji_Presentation
235267FEmoji_Presentation
2362693Emoji_Presentation
23726A1Emoji_Presentation
23826AA..26ABEmoji_Presentation
23926BD..26BEEmoji_Presentation
24026C4..26C5Emoji_Presentation
24126CEEmoji_Presentation
24226D4Emoji_Presentation
24326EAEmoji_Presentation
24426F2..26F3Emoji_Presentation
24526F5Emoji_Presentation
24626FAEmoji_Presentation
24726FDEmoji_Presentation
2482705Emoji_Presentation
249270A..270BEmoji_Presentation
2502728Emoji_Presentation
251274CEmoji_Presentation
252274EEmoji_Presentation
2532753..2755Emoji_Presentation
2542757Emoji_Presentation
2552795..2797Emoji_Presentation
25627B0Emoji_Presentation
25727BFEmoji_Presentation
.........
3291F6F7..1F6F8Emoji_Presentation
3301F6F9Emoji_Presentation
3311F910..1F918Emoji_Presentation
3321F919..1F91EEmoji_Presentation
3331F91FEmoji_Presentation
3341F920..1F927Emoji_Presentation
3351F928..1F92FEmoji_Presentation
3361F930Emoji_Presentation
3371F931..1F932Emoji_Presentation
3381F933..1F93AEmoji_Presentation
3391F93C..1F93EEmoji_Presentation
3401F940..1F945Emoji_Presentation
3411F947..1F94BEmoji_Presentation
3421F94CEmoji_Presentation
3431F94D..1F94FEmoji_Presentation
3441F950..1F95EEmoji_Presentation
3451F95F..1F96BEmoji_Presentation
3461F96C..1F970Emoji_Presentation
3471F973..1F976Emoji_Presentation
3481F97AEmoji_Presentation
3491F97C..1F97FEmoji_Presentation
3501F980..1F984Emoji_Presentation
3511F985..1F991Emoji_Presentation
3521F992..1F997Emoji_Presentation
3531F998..1F9A2Emoji_Presentation
3541F9B0..1F9B9Emoji_Presentation
3551F9C0Emoji_Presentation
3561F9C1..1F9C2Emoji_Presentation
3571F9D0..1F9E6Emoji_Presentation
3581F9E7..1F9FFEmoji_Presentation
\n", + "

131 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " unicode type\n", + "228 231A..231B Emoji_Presentation\n", + "229 23E9..23EC Emoji_Presentation\n", + "230 23F0 Emoji_Presentation\n", + "231 23F3 Emoji_Presentation\n", + "232 25FD..25FE Emoji_Presentation\n", + "233 2614..2615 Emoji_Presentation\n", + "234 2648..2653 Emoji_Presentation\n", + "235 267F Emoji_Presentation\n", + "236 2693 Emoji_Presentation\n", + "237 26A1 Emoji_Presentation\n", + "238 26AA..26AB Emoji_Presentation\n", + "239 26BD..26BE Emoji_Presentation\n", + "240 26C4..26C5 Emoji_Presentation\n", + "241 26CE Emoji_Presentation\n", + "242 26D4 Emoji_Presentation\n", + "243 26EA Emoji_Presentation\n", + "244 26F2..26F3 Emoji_Presentation\n", + "245 26F5 Emoji_Presentation\n", + "246 26FA Emoji_Presentation\n", + "247 26FD Emoji_Presentation\n", + "248 2705 Emoji_Presentation\n", + "249 270A..270B Emoji_Presentation\n", + "250 2728 Emoji_Presentation\n", + "251 274C Emoji_Presentation\n", + "252 274E Emoji_Presentation\n", + "253 2753..2755 Emoji_Presentation\n", + "254 2757 Emoji_Presentation\n", + "255 2795..2797 Emoji_Presentation\n", + "256 27B0 Emoji_Presentation\n", + "257 27BF Emoji_Presentation\n", + ".. ... ...\n", + "329 1F6F7..1F6F8 Emoji_Presentation\n", + "330 1F6F9 Emoji_Presentation\n", + "331 1F910..1F918 Emoji_Presentation\n", + "332 1F919..1F91E Emoji_Presentation\n", + "333 1F91F Emoji_Presentation\n", + "334 1F920..1F927 Emoji_Presentation\n", + "335 1F928..1F92F Emoji_Presentation\n", + "336 1F930 Emoji_Presentation\n", + "337 1F931..1F932 Emoji_Presentation\n", + "338 1F933..1F93A Emoji_Presentation\n", + "339 1F93C..1F93E Emoji_Presentation\n", + "340 1F940..1F945 Emoji_Presentation\n", + "341 1F947..1F94B Emoji_Presentation\n", + "342 1F94C Emoji_Presentation\n", + "343 1F94D..1F94F Emoji_Presentation\n", + "344 1F950..1F95E Emoji_Presentation\n", + "345 1F95F..1F96B Emoji_Presentation\n", + "346 1F96C..1F970 Emoji_Presentation\n", + "347 1F973..1F976 Emoji_Presentation\n", + "348 1F97A Emoji_Presentation\n", + "349 1F97C..1F97F Emoji_Presentation\n", + "350 1F980..1F984 Emoji_Presentation\n", + "351 1F985..1F991 Emoji_Presentation\n", + "352 1F992..1F997 Emoji_Presentation\n", + "353 1F998..1F9A2 Emoji_Presentation\n", + "354 1F9B0..1F9B9 Emoji_Presentation\n", + "355 1F9C0 Emoji_Presentation\n", + "356 1F9C1..1F9C2 Emoji_Presentation\n", + "357 1F9D0..1F9E6 Emoji_Presentation\n", + "358 1F9E7..1F9FF Emoji_Presentation\n", + "\n", + "[131 rows x 2 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "emoji_data = pd.read_csv('emoji-data.txt', delimiter=';', comment='#', names=[\"unicode\",\"type\"])\n", + "emoji_data['type'] = emoji_data['type'].str.strip()\n", + "emoji_data = emoji_data[emoji_data['type'] == \"Emoji_Presentation\"]\n", + "emoji_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* now build a set out of the unicode types" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ord(\"😀\") == int('0x1f600',16)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "228 231A..231B \n", + "229 23E9..23EC \n", + "230 23F0 \n", + "231 23F3 \n", + "232 25FD..25FE \n", + "Name: unicode, dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "emoji_codes = emoji_data['unicode']\n", + "emoji_codes.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* we have to iterate over the whole list and extract all given ranges:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_code_list = []\n", + "for entry in emoji_codes:\n", + " # testing whether we have an entry or a range:\n", + " if '.' in entry:\n", + " # range\n", + " a,b = entry.split(\"..\")\n", + " for i in range(int(a,16),int(b,16) +1):\n", + " if i not in emoji_blacklist:\n", + " emoji_code_list.append(i)\n", + " else:\n", + " # single entry\n", + " if i not in emoji_blacklist:\n", + " emoji_code_list.append(int(entry,16))\n", + "emoji_code_set = set(emoji_code_list)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True False\n" + ] + } + ], + "source": [ + "# simple test:\n", + "print(ord(\"😀\") in emoji_code_set, ord(\"a\") in emoji_code_set)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* expanding column and fill new emojis" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "messages[\"emojis\"] = None" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "for i in messages.index:\n", + " emoji_list = []\n", + " to_remove = []\n", + " m = messages.iloc[i]['message']\n", + " for c in str(m):\n", + " if ord(c) in emoji_code_set:\n", + " emoji_list.append(c)\n", + " elif ord(c) in emoji_blacklist:\n", + " to_remove.append(c)\n", + " \n", + " messages.loc[i,'emojis'] = emoji_list\n", + " #remove emiójis from message\n", + " for e in (emoji_list + to_remove):\n", + " m = m.replace(e,\"\")\n", + " messages.loc[i,'message'] = m\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datetimepersonmessageemojis
010/18/1611:18Lena CartaHallo Jonas[😉]
110/18/1611:21Jonas WeinzMoin moin ;) Vllt. bin ich aber gar nicht Jona...[🤔]
210/18/1611:21Lena Carta[😱, 🤕]
310/18/1611:21Sonja Vorwerk[🙈, 😂]
410/18/1611:22Caner Ucar[😂, 😂, 😂]
510/18/1611:22Patrick (Arithmeum)hallo jeff[]
610/18/1611:22Caner UcarPatrick kein Handy am Empfang[]
710/18/1611:26Patrick (Arithmeum)halts maul und geh ma duschen[]
810/18/1611:34Simon (Arithmeum)Hab dich als Carsten abgespeichert, selber Schuld[]
910/18/1611:36Caner UcarPatrick ich hab geduscht mit Kristina und Sonja v[]
1010/18/1611:36Lena Cartaähm....[]
1110/18/1611:37Jonathan (Arithmeum)Caner benutzt das Damen-Bad[]
1210/18/1611:37Jonas WeinzLüg doch nicht, du tanzt die ganze Zeit aufm T...[]
1310/18/1611:37Jonathan (Arithmeum)bääh[😱]
1410/18/1611:40Patrick (Arithmeum)ja caner so ist das unter frauen..da geht man ...[]
1510/18/1612:02Thomas KoppelbergEeemmm was?[]
1610/18/1612:12Kristina StellwagThomas, du wolltest gestern ja nicht[😜]
1710/18/1612:14Thomas KoppelbergIch wollte einiges, aber ich kann mich zurückh...[]
1810/18/1612:19Simon (Arithmeum)Genau[🙊]
1910/18/1613:36Caner UcarSex[]
\n", + "
" + ], + "text/plain": [ + " date time person \\\n", + "0 10/18/16 11:18 Lena Carta \n", + "1 10/18/16 11:21 Jonas Weinz \n", + "2 10/18/16 11:21 Lena Carta \n", + "3 10/18/16 11:21 Sonja Vorwerk \n", + "4 10/18/16 11:22 Caner Ucar \n", + "5 10/18/16 11:22 Patrick (Arithmeum) \n", + "6 10/18/16 11:22 Caner Ucar \n", + "7 10/18/16 11:26 Patrick (Arithmeum) \n", + "8 10/18/16 11:34 Simon (Arithmeum) \n", + "9 10/18/16 11:36 Caner Ucar \n", + "10 10/18/16 11:36 Lena Carta \n", + "11 10/18/16 11:37 Jonathan (Arithmeum) \n", + "12 10/18/16 11:37 Jonas Weinz \n", + "13 10/18/16 11:37 Jonathan (Arithmeum) \n", + "14 10/18/16 11:40 Patrick (Arithmeum) \n", + "15 10/18/16 12:02 Thomas Koppelberg \n", + "16 10/18/16 12:12 Kristina Stellwag \n", + "17 10/18/16 12:14 Thomas Koppelberg \n", + "18 10/18/16 12:19 Simon (Arithmeum) \n", + "19 10/18/16 13:36 Caner Ucar \n", + "\n", + " message emojis \n", + "0 Hallo Jonas [😉] \n", + "1 Moin moin ;) Vllt. bin ich aber gar nicht Jona... [🤔] \n", + "2 [😱, 🤕] \n", + "3 [🙈, 😂] \n", + "4 [😂, 😂, 😂] \n", + "5 hallo jeff [] \n", + "6 Patrick kein Handy am Empfang [] \n", + "7 halts maul und geh ma duschen [] \n", + "8 Hab dich als Carsten abgespeichert, selber Schuld [] \n", + "9 Patrick ich hab geduscht mit Kristina und Sonja v [] \n", + "10 ähm.... [] \n", + "11 Caner benutzt das Damen-Bad [] \n", + "12 Lüg doch nicht, du tanzt die ganze Zeit aufm T... [] \n", + "13 bääh [😱] \n", + "14 ja caner so ist das unter frauen..da geht man ... [] \n", + "15 Eeemmm was? [] \n", + "16 Thomas, du wolltest gestern ja nicht [😜] \n", + "17 Ich wollte einiges, aber ich kann mich zurückh... [] \n", + "18 Genau [🙊] \n", + "19 Sex [] " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "messages[:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* get a list only containing messaged with emojis" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_messages = messages[[True if len(e) > 0 else False for e in messages['emojis']]]\n", + "emoji_messages = emoji_messages[emoji_messages['message'] != \"\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
datetimepersonmessageemojis
010/18/1611:18Lena CartaHallo Jonas[😉]
110/18/1611:21Jonas WeinzMoin moin ;) Vllt. bin ich aber gar nicht Jona...[🤔]
1310/18/1611:37Jonathan (Arithmeum)bääh[😱]
1610/18/1612:12Kristina StellwagThomas, du wolltest gestern ja nicht[😜]
1810/18/1612:19Simon (Arithmeum)Genau[🙊]
2910/18/1618:38Lena Cartawas du bist morgen nicht da ???[😱, 😯, 😔]
3110/18/1618:39Lena Cartaich dachte diese Woche komplett noch. Aber gut...[😇]
3210/18/1618:40Kristina StellwagNee das Semester hat doch angefangen[😜]
3310/18/1618:42Lena Cartaja hatte ich gerade vergessen . Dabei hatte ic...[😂, 😶]
4110/20/1612:50Steffi (Arithmeum)Klar[👹]
4410/20/1617:54Steffi (Arithmeum)Mein Zug lässt sich auch heute Zeit[😞]
4510/20/1618:08Steffi (Arithmeum)Wir fangen doch wahrscheinlich nicht vor halb ...[😳]
5110/20/1620:58Anna BorutzkyIst das dein Ernst?[🙄]
5210/20/1620:58Patrick (Arithmeum)Habs voll vercheckt sry ..gerade erst gemerkt[🙄]
7010/20/1622:59Jonathan (Arithmeum)Ich bitte darum Caner....[😍, 😍, 😍]
7810/25/1601:03Caner UcarHaaaaaalloooo[🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 😏, 🤗, 🤗, 😏]
7910/25/1601:04Michael (Arithmeum)Keine sorge, das hat bei dir nichts mit der St...[😉]
8810/25/1609:02Lena Cartaich wollte eigentlich schon da sein, aber ich ...[😇]
8910/25/1609:04Jonathan (Arithmeum)SIIIIEG...⚔[🎉]
9010/25/1610:00Lena Cartabesser spät als nie. ich bin immerhin auf dem ...[😁]
9310/25/1621:49Jonathan (Arithmeum)Ich nicht[😄]
9410/25/1621:50Lena Cartaich auch nicht[😳]
9510/25/1622:13Konstantin (Arithmeum)Wer hat den zuletzt was laminiert? lena und i...[🤔]
9610/25/1623:28Caner UcarIch auch nicht[🤔]
10210/27/1614:43Sonja Vorwerkhm müsste das am besten heute schon wissen...w...[🙈, 😄]
11510/28/1608:32Lena CartaGuten Morgen liebe Kollegen, könnte einer von ...[🙁]
11610/28/1609:48Lena CartaIst noch niemand im Büro?[😇]
11710/28/1609:50Caner Ucar10:10 ca.[🙌]
11810/28/1609:51Caner UcarWann hat das woki geöffnet[😄]
12110/28/1610:54Lena CartaDa hätte ich jetzt auch nicht gesucht[😝]
..................
86635/9/1817:42Jonas Weinzmehrere Bürostühle hintereinander?[🤔]
86655/9/1817:43Lena CartaWollte Kristina das nicht immer schonmal machen[😁]
86755/10/1814:06Lena KlöcknerErledigt[👍]
86765/10/1814:07Caner UcarDanke[😊]
86775/10/1814:23Anna ZensIch hatte es auch schon erledigt[😄]
86785/11/1808:16Lena CartaGute morgen, ich habe gesehen neben dem Buch l...[🙂]
86795/11/1808:25Anna ZensDie handschriftlichen sind die, von denen kein...[😄]
86805/11/1808:26Lena Cartaachso ich denke mal dann wird sich Ingo melden[😀, 😀]
86815/11/1813:18Freya (Arithmeum)Mein Kalender funktioniert nicht - könnte mir ...[🤔]
86825/12/1814:53Freya (Arithmeum)Könnte jemand für Montag Abend zwei Karten für...[😇]
86835/12/1815:05Anna BorutzkyUnd eine Freikarte für Sonja bitte![😀]
86895/12/1815:16Lena CartaDanke Wieso kommen solche Fragen immer am Woc...[😀]
86925/12/1815:17Anna BorutzkyMurphy‘s Gesetz?[😉]
86935/12/1815:17Caner UcarCool[😍]
86955/12/1815:23Jonas Weinz...und die kommt auf Annas Tisch[😉]
86965/12/1815:23Freya (Arithmeum)Vielen, vielen Dank ☺ Sowas passiert immer am ...[🙈]
86975/12/1815:23Lena CartaDas war nicht auf dich bezogen .[😀]
86985/12/1815:24Freya (Arithmeum)Na gut[😄]
86995/12/1815:24Lena CartaEigentlich ist es halbwegs entspannt heute Ic...[😀, 😛]
87005/12/1815:25Freya (Arithmeum)Es gibt keine doofen Fragen[😋]
87025/12/1815:25Lena Cartahttps://www.youtube.com/watch?v=uPHi5xn_q5c[😛]
87085/12/1817:56Freya (Arithmeum)Ich möchte arbeiten und habe mega Bock drauf! ...[😇]
87195/12/1820:09Lena Cartabin leider verabredet .... mit Thilo[😬, 🤗]
87255/13/1817:24Thomas Koppelberg[😍]
87265/14/1817:00Sonja SchäferKann mir jemand noch eine zweite Freikarte res...[😊]
87395/14/1822:40Jonas WeinzHab Ingo beim vorbeilaufenden nicht gesehen, h...[💁]
87445/15/1817:16Caner Ucar‍♀[🤷]
87555/17/1810:43Lena Cartasuper perfekt dann ist beiden geholfen[🙂, 😎]
87595/17/1810:43Lena Cartaob das so sinnvoll ist?[😀]
87635/17/1810:45Lena Cartaich dachte es ging konkret um den Termin[😀]
\n", + "

2455 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " date time person \\\n", + "0 10/18/16 11:18 Lena Carta \n", + "1 10/18/16 11:21 Jonas Weinz \n", + "13 10/18/16 11:37 Jonathan (Arithmeum) \n", + "16 10/18/16 12:12 Kristina Stellwag \n", + "18 10/18/16 12:19 Simon (Arithmeum) \n", + "29 10/18/16 18:38 Lena Carta \n", + "31 10/18/16 18:39 Lena Carta \n", + "32 10/18/16 18:40 Kristina Stellwag \n", + "33 10/18/16 18:42 Lena Carta \n", + "41 10/20/16 12:50 Steffi (Arithmeum) \n", + "44 10/20/16 17:54 Steffi (Arithmeum) \n", + "45 10/20/16 18:08 Steffi (Arithmeum) \n", + "51 10/20/16 20:58 Anna Borutzky \n", + "52 10/20/16 20:58 Patrick (Arithmeum) \n", + "70 10/20/16 22:59 Jonathan (Arithmeum) \n", + "78 10/25/16 01:03 Caner Ucar \n", + "79 10/25/16 01:04 Michael (Arithmeum) \n", + "88 10/25/16 09:02 Lena Carta \n", + "89 10/25/16 09:04 Jonathan (Arithmeum) \n", + "90 10/25/16 10:00 Lena Carta \n", + "93 10/25/16 21:49 Jonathan (Arithmeum) \n", + "94 10/25/16 21:50 Lena Carta \n", + "95 10/25/16 22:13 Konstantin (Arithmeum) \n", + "96 10/25/16 23:28 Caner Ucar \n", + "102 10/27/16 14:43 Sonja Vorwerk \n", + "115 10/28/16 08:32 Lena Carta \n", + "116 10/28/16 09:48 Lena Carta \n", + "117 10/28/16 09:50 Caner Ucar \n", + "118 10/28/16 09:51 Caner Ucar \n", + "121 10/28/16 10:54 Lena Carta \n", + "... ... ... ... \n", + "8663 5/9/18 17:42 Jonas Weinz \n", + "8665 5/9/18 17:43 Lena Carta \n", + "8675 5/10/18 14:06 Lena Klöckner \n", + "8676 5/10/18 14:07 Caner Ucar \n", + "8677 5/10/18 14:23 Anna Zens \n", + "8678 5/11/18 08:16 Lena Carta \n", + "8679 5/11/18 08:25 Anna Zens \n", + "8680 5/11/18 08:26 Lena Carta \n", + "8681 5/11/18 13:18 Freya (Arithmeum) \n", + "8682 5/12/18 14:53 Freya (Arithmeum) \n", + "8683 5/12/18 15:05 Anna Borutzky \n", + "8689 5/12/18 15:16 Lena Carta \n", + "8692 5/12/18 15:17 Anna Borutzky \n", + "8693 5/12/18 15:17 Caner Ucar \n", + "8695 5/12/18 15:23 Jonas Weinz \n", + "8696 5/12/18 15:23 Freya (Arithmeum) \n", + "8697 5/12/18 15:23 Lena Carta \n", + "8698 5/12/18 15:24 Freya (Arithmeum) \n", + "8699 5/12/18 15:24 Lena Carta \n", + "8700 5/12/18 15:25 Freya (Arithmeum) \n", + "8702 5/12/18 15:25 Lena Carta \n", + "8708 5/12/18 17:56 Freya (Arithmeum) \n", + "8719 5/12/18 20:09 Lena Carta \n", + "8725 5/13/18 17:24 Thomas Koppelberg \n", + "8726 5/14/18 17:00 Sonja Schäfer \n", + "8739 5/14/18 22:40 Jonas Weinz \n", + "8744 5/15/18 17:16 Caner Ucar \n", + "8755 5/17/18 10:43 Lena Carta \n", + "8759 5/17/18 10:43 Lena Carta \n", + "8763 5/17/18 10:45 Lena Carta \n", + "\n", + " message \\\n", + "0 Hallo Jonas \n", + "1 Moin moin ;) Vllt. bin ich aber gar nicht Jona... \n", + "13 bääh \n", + "16 Thomas, du wolltest gestern ja nicht \n", + "18 Genau \n", + "29 was du bist morgen nicht da ??? \n", + "31 ich dachte diese Woche komplett noch. Aber gut... \n", + "32 Nee das Semester hat doch angefangen \n", + "33 ja hatte ich gerade vergessen . Dabei hatte ic... \n", + "41 Klar \n", + "44 Mein Zug lässt sich auch heute Zeit \n", + "45 Wir fangen doch wahrscheinlich nicht vor halb ... \n", + "51 Ist das dein Ernst? \n", + "52 Habs voll vercheckt sry ..gerade erst gemerkt \n", + "70 Ich bitte darum Caner.... \n", + "78 Haaaaaalloooo \n", + "79 Keine sorge, das hat bei dir nichts mit der St... \n", + "88 ich wollte eigentlich schon da sein, aber ich ... \n", + "89 SIIIIEG...⚔ \n", + "90 besser spät als nie. ich bin immerhin auf dem ... \n", + "93 Ich nicht \n", + "94 ich auch nicht \n", + "95 Wer hat den zuletzt was laminiert? lena und i... \n", + "96 Ich auch nicht \n", + "102 hm müsste das am besten heute schon wissen...w... \n", + "115 Guten Morgen liebe Kollegen, könnte einer von ... \n", + "116 Ist noch niemand im Büro? \n", + "117 10:10 ca. \n", + "118 Wann hat das woki geöffnet \n", + "121 Da hätte ich jetzt auch nicht gesucht \n", + "... ... \n", + "8663 mehrere Bürostühle hintereinander? \n", + "8665 Wollte Kristina das nicht immer schonmal machen \n", + "8675 Erledigt \n", + "8676 Danke \n", + "8677 Ich hatte es auch schon erledigt \n", + "8678 Gute morgen, ich habe gesehen neben dem Buch l... \n", + "8679 Die handschriftlichen sind die, von denen kein... \n", + "8680 achso ich denke mal dann wird sich Ingo melden \n", + "8681 Mein Kalender funktioniert nicht - könnte mir ... \n", + "8682 Könnte jemand für Montag Abend zwei Karten für... \n", + "8683 Und eine Freikarte für Sonja bitte! \n", + "8689 Danke Wieso kommen solche Fragen immer am Woc... \n", + "8692 Murphy‘s Gesetz? \n", + "8693 Cool \n", + "8695 ...und die kommt auf Annas Tisch \n", + "8696 Vielen, vielen Dank ☺ Sowas passiert immer am ... \n", + "8697 Das war nicht auf dich bezogen . \n", + "8698 Na gut \n", + "8699 Eigentlich ist es halbwegs entspannt heute Ic... \n", + "8700 Es gibt keine doofen Fragen \n", + "8702 https://www.youtube.com/watch?v=uPHi5xn_q5c \n", + "8708 Ich möchte arbeiten und habe mega Bock drauf! ... \n", + "8719 bin leider verabredet .... mit Thilo \n", + "8725 ♥ \n", + "8726 Kann mir jemand noch eine zweite Freikarte res... \n", + "8739 Hab Ingo beim vorbeilaufenden nicht gesehen, h... \n", + "8744 ‍♀ \n", + "8755 super perfekt dann ist beiden geholfen \n", + "8759 ob das so sinnvoll ist? \n", + "8763 ich dachte es ging konkret um den Termin \n", + "\n", + " emojis \n", + "0 [😉] \n", + "1 [🤔] \n", + "13 [😱] \n", + "16 [😜] \n", + "18 [🙊] \n", + "29 [😱, 😯, 😔] \n", + "31 [😇] \n", + "32 [😜] \n", + "33 [😂, 😶] \n", + "41 [👹] \n", + "44 [😞] \n", + "45 [😳] \n", + "51 [🙄] \n", + "52 [🙄] \n", + "70 [😍, 😍, 😍] \n", + "78 [🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 😏, 🤗, 🤗, 😏] \n", + "79 [😉] \n", + "88 [😇] \n", + "89 [🎉] \n", + "90 [😁] \n", + "93 [😄] \n", + "94 [😳] \n", + "95 [🤔] \n", + "96 [🤔] \n", + "102 [🙈, 😄] \n", + "115 [🙁] \n", + "116 [😇] \n", + "117 [🙌] \n", + "118 [😄] \n", + "121 [😝] \n", + "... ... \n", + "8663 [🤔] \n", + "8665 [😁] \n", + "8675 [👍] \n", + "8676 [😊] \n", + "8677 [😄] \n", + "8678 [🙂] \n", + "8679 [😄] \n", + "8680 [😀, 😀] \n", + "8681 [🤔] \n", + "8682 [😇] \n", + "8683 [😀] \n", + "8689 [😀] \n", + "8692 [😉] \n", + "8693 [😍] \n", + "8695 [😉] \n", + "8696 [🙈] \n", + "8697 [😀] \n", + "8698 [😄] \n", + "8699 [😀, 😛] \n", + "8700 [😋] \n", + "8702 [😛] \n", + "8708 [😇] \n", + "8719 [😬, 🤗] \n", + "8725 [😍] \n", + "8726 [😊] \n", + "8739 [💁] \n", + "8744 [🤷] \n", + "8755 [🙂, 😎] \n", + "8759 [😀] \n", + "8763 [😀] \n", + "\n", + "[2455 rows x 5 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(emoji_messages)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----\n", + "## learning part" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import itertools\n", + "import sklearn.utils as sku\n", + "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "labels=[e[-1] for e in emoji_messages['emojis']]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['😉', '🤔', '😱', '😜', '🙊', '😔', '😇', '😜', '😶', '👹']" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "labels[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "X1, Xt1, y1, yt1 = train_test_split(emoji_messages['message'], labels, test_size=0.1, random_state=4222)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "vectorizer = TfidfVectorizer(stop_words='english')\n", + "vec_train = vectorizer.fit_transform(X1)\n", + "vec_test = vectorizer.transform(Xt1)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jonas/.local/lib/python3.6/site-packages/sklearn/neural_network/multilayer_perceptron.py:564: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n", + " % self.max_iter, ConvergenceWarning)\n" + ] + }, + { + "data": { + "text/plain": [ + "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", + " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", + " hidden_layer_sizes=(100,), learning_rate='constant',\n", + " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", + " nesterovs_momentum=True, power_t=0.5, random_state=None,\n", + " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", + " verbose=False, warm_start=False)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.ensemble import RandomForestClassifier as RFC\n", + "from sklearn.neural_network import MLPClassifier as MLP\n", + "from sklearn.naive_bayes import MultinomialNB as MNB\n", + "#clf_a = RFC(criterion='entropy', random_state=4222)\n", + "clf_a = MLP()\n", + "clf_a.fit(vec_train, y1)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "pred = clf_a.predict(vectorizer.transform(Xt1))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
messagepredtrainedemojis
8663mehrere Bürostühle hintereinander?🙈🤔[🤔]
1862Ich will auch Essen😉😞[😞]
39212x orange🙂🙂[🙂]
2222Man soll auch keine Lernsachen da lassen😀😀[😀]
761Wir können auch gerne wieder bei mir zusammen ...😇😉[😉]
3600Hab den Bus verpasst, den ich eigentlich nehme...😟👸[👸]
1794Klaro, gerne😎🙂[🙂]
861Sehr gut, Jan! Wenn sich noch jemand melden wü...😘😇[😇]
1469Jaaa aber mein Mitbewohner ist messy😬🙊[😱, 😔, 🌚, 🙊]
6254Hallöchen Es hat ein Herr angerufen, der gern...💁🙂[🙂]
7968Iwo🤦😂[😂]
8102Keine Ahnung wer da haariger ist😅🧐[🧐]
6835Danke😊😊[😊]
7135Wurde bestimmt von Big Bang geklaut🤷😂[😂, 😂, 😂]
4556Ich kann leider nicht, aber arbeiten da nicht ...😂😀[😀]
6705Ist von heute, aber halt 3x in englisch😇🙄[🙄]
2058..🤦😅[😅]
2072Oder fang endlich mal wieder an, was fürs Stud...😄😈[😈]
756Ich hab vom letzten Jahr noch ein Trauma😂😆[😆]
5966Ist Freitag schon Wochenende?😍🤔[🤔]
7007Wenn wir die Klimaanlage im Museum ausschalten...🤔🤪[🤪]
6968Ein Vorbild für uns alle🤔🤩[🤩]
5665Kein Problem. Du kannst mich eintragen.🙂🙂[🙂]
2641Jonas, du bist gelb markiert! Du kannst keine ...😉🙃[🙃]
1981Da bin ich mir sehr sicher!😘😄[😄]
3334Das wäre auf jeden Fall hilfreich! Danke😍🙂[🙂]
4447Ist das Schild denn auch laminiert?!🤔😏[😏]
288da bin ich mal gespannt wie das aussieht, wen...😂👍[👍]
4265Aber es ist doch gebrochen...🤔😢[😢]
7405Partey🤦🤪[🤪]
...............
4910Vllt gilt das Schild auch nur für schwarze Hun...😂😱[😱]
2047Ich erprobe mich morgen mit Freya an Addieren ...🙂😄[😄]
2650Ich kann leider nicht😕😕[😕]
299Das schafft meine Handykamera aber nicht😂😉[😉]
2499also ihr lieben ich arbeite gerade im arithmeu...😁😅[😅]
4783danke😊💸[💸, 💸, 💸]
4040Herrlich🤦😅[🤗, 😅]
7553babbage, meine Autokerrektur ‍♂🤔🤦[🤦]
6232Bin erst um 9.15Uhr da.....👍🔪[💣, 🔪]
3514Dankeschön! Dann trage ich dich ein😘😊[😊]
3422Schnitzel😅😍[😍]
2294Club discreto?😂😳[😳, 😳, 😳]
8218auch da bin ich etwas neidisch🙄😅[😅]
4463Möchte jemand was vom Café Roller?🤧😂[😂]
8032Frohe Ostern an Euch alle...😊🐥[🐰, 🐣, 🐥]
4505okay, ihr geht eigentlich ganz verantwortungsv...😊💁[💁]
4810Meine Meinung: Wenn das Personal da ist, dann ...😂🤷[🤷]
5762Ein shk ist aber billiger👵🙄[🙄]
4247Alle die morgen auf der Arbeit sind: nachher k...🙈😂[😂]
2501ich glaube das wäre eine stilvolle und romanti...😍😊[😊]
5278Ich kann das machen💁[✋]
5747In der Küche im Kühlschrank steht eine grüne T...😉🙂[😉, 🙂]
7022Dann halt nicht ‍♂🤷🤷[🤷]
1736Ich hab absolut keine Ahnung davon😂😞[😞]
5909Wir bekommen es bestimmt zu zweit hin, aber we...🙈😉[😉]
5890Pass bloß auf, wenn du die isst mutierst du be...😄😱[😱]
566Das sind 5 Maß pro Abend🙄😋[😋]
6044Sind sehr lecker😀👌[👌]
1472Ich werde die alle drillen das sage ich dir, a...🤔😇[😇]
5702Oh man, das wird ein Tag😀😄[😄]
\n", + "

246 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " message pred trained \\\n", + "8663 mehrere Bürostühle hintereinander? 🙈 🤔 \n", + "1862 Ich will auch Essen 😉 😞 \n", + "3921 2x orange 🙂 🙂 \n", + "2222 Man soll auch keine Lernsachen da lassen 😀 😀 \n", + "761 Wir können auch gerne wieder bei mir zusammen ... 😇 😉 \n", + "3600 Hab den Bus verpasst, den ich eigentlich nehme... 😟 👸 \n", + "1794 Klaro, gerne 😎 🙂 \n", + "861 Sehr gut, Jan! Wenn sich noch jemand melden wü... 😘 😇 \n", + "1469 Jaaa aber mein Mitbewohner ist messy 😬 🙊 \n", + "6254 Hallöchen Es hat ein Herr angerufen, der gern... 💁 🙂 \n", + "7968 Iwo 🤦 😂 \n", + "8102 Keine Ahnung wer da haariger ist 😅 🧐 \n", + "6835 Danke 😊 😊 \n", + "7135 Wurde bestimmt von Big Bang geklaut 🤷 😂 \n", + "4556 Ich kann leider nicht, aber arbeiten da nicht ... 😂 😀 \n", + "6705 Ist von heute, aber halt 3x in englisch 😇 🙄 \n", + "2058 .. 🤦 😅 \n", + "2072 Oder fang endlich mal wieder an, was fürs Stud... 😄 😈 \n", + "756 Ich hab vom letzten Jahr noch ein Trauma 😂 😆 \n", + "5966 Ist Freitag schon Wochenende? 😍 🤔 \n", + "7007 Wenn wir die Klimaanlage im Museum ausschalten... 🤔 🤪 \n", + "6968 Ein Vorbild für uns alle 🤔 🤩 \n", + "5665 Kein Problem. Du kannst mich eintragen. 🙂 🙂 \n", + "2641 Jonas, du bist gelb markiert! Du kannst keine ... 😉 🙃 \n", + "1981 Da bin ich mir sehr sicher! 😘 😄 \n", + "3334 Das wäre auf jeden Fall hilfreich! Danke 😍 🙂 \n", + "4447 Ist das Schild denn auch laminiert?! 🤔 😏 \n", + "288 da bin ich mal gespannt wie das aussieht, wen... 😂 👍 \n", + "4265 Aber es ist doch gebrochen... 🤔 😢 \n", + "7405 Partey 🤦 🤪 \n", + "... ... ... ... \n", + "4910 Vllt gilt das Schild auch nur für schwarze Hun... 😂 😱 \n", + "2047 Ich erprobe mich morgen mit Freya an Addieren ... 🙂 😄 \n", + "2650 Ich kann leider nicht 😕 😕 \n", + "299 Das schafft meine Handykamera aber nicht 😂 😉 \n", + "2499 also ihr lieben ich arbeite gerade im arithmeu... 😁 😅 \n", + "4783 danke 😊 💸 \n", + "4040 Herrlich 🤦 😅 \n", + "7553 babbage, meine Autokerrektur ‍♂ 🤔 🤦 \n", + "6232 Bin erst um 9.15Uhr da..... 👍 🔪 \n", + "3514 Dankeschön! Dann trage ich dich ein 😘 😊 \n", + "3422 Schnitzel 😅 😍 \n", + "2294 Club discreto? 😂 😳 \n", + "8218 auch da bin ich etwas neidisch 🙄 😅 \n", + "4463 Möchte jemand was vom Café Roller? 🤧 😂 \n", + "8032 Frohe Ostern an Euch alle... 😊 🐥 \n", + "4505 okay, ihr geht eigentlich ganz verantwortungsv... 😊 💁 \n", + "4810 Meine Meinung: Wenn das Personal da ist, dann ... 😂 🤷 \n", + "5762 Ein shk ist aber billiger 👵 🙄 \n", + "4247 Alle die morgen auf der Arbeit sind: nachher k... 🙈 😂 \n", + "2501 ich glaube das wäre eine stilvolle und romanti... 😍 😊 \n", + "5278 Ich kann das machen 💁 ✋ \n", + "5747 In der Küche im Kühlschrank steht eine grüne T... 😉 🙂 \n", + "7022 Dann halt nicht ‍♂ 🤷 🤷 \n", + "1736 Ich hab absolut keine Ahnung davon 😂 😞 \n", + "5909 Wir bekommen es bestimmt zu zweit hin, aber we... 🙈 😉 \n", + "5890 Pass bloß auf, wenn du die isst mutierst du be... 😄 😱 \n", + "566 Das sind 5 Maß pro Abend 🙄 😋 \n", + "6044 Sind sehr lecker 😀 👌 \n", + "1472 Ich werde die alle drillen das sage ich dir, a... 🤔 😇 \n", + "5702 Oh man, das wird ein Tag 😀 😄 \n", + "\n", + " emojis \n", + "8663 [🤔] \n", + "1862 [😞] \n", + "3921 [🙂] \n", + "2222 [😀] \n", + "761 [😉] \n", + "3600 [👸] \n", + "1794 [🙂] \n", + "861 [😇] \n", + "1469 [😱, 😔, 🌚, 🙊] \n", + "6254 [🙂] \n", + "7968 [😂] \n", + "8102 [🧐] \n", + "6835 [😊] \n", + "7135 [😂, 😂, 😂] \n", + "4556 [😀] \n", + "6705 [🙄] \n", + "2058 [😅] \n", + "2072 [😈] \n", + "756 [😆] \n", + "5966 [🤔] \n", + "7007 [🤪] \n", + "6968 [🤩] \n", + "5665 [🙂] \n", + "2641 [🙃] \n", + "1981 [😄] \n", + "3334 [🙂] \n", + "4447 [😏] \n", + "288 [👍] \n", + "4265 [😢] \n", + "7405 [🤪] \n", + "... ... \n", + "4910 [😱] \n", + "2047 [😄] \n", + "2650 [😕] \n", + "299 [😉] \n", + "2499 [😅] \n", + "4783 [💸, 💸, 💸] \n", + "4040 [🤗, 😅] \n", + "7553 [🤦] \n", + "6232 [💣, 🔪] \n", + "3514 [😊] \n", + "3422 [😍] \n", + "2294 [😳, 😳, 😳] \n", + "8218 [😅] \n", + "4463 [😂] \n", + "8032 [🐰, 🐣, 🐥] \n", + "4505 [💁] \n", + "4810 [🤷] \n", + "5762 [🙄] \n", + "4247 [😂] \n", + "2501 [😊] \n", + "5278 [✋] \n", + "5747 [😉, 🙂] \n", + "7022 [🤷] \n", + "1736 [😞] \n", + "5909 [😉] \n", + "5890 [😱] \n", + "566 [😋] \n", + "6044 [👌] \n", + "1472 [😇] \n", + "5702 [😄] \n", + "\n", + "[246 rows x 4 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "testlist = pd.DataFrame({'message': Xt1, 'pred': pred, 'trained': yt1})\n", + "testlist = pd.merge(testlist, emoji_messages['emojis'].to_frame(), left_index=True, right_index=True)\n", + "testlist.to_csv('export.csv')\n", + "testlist" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'🙄'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(clf_a.predict(vectorizer.transform([\"Boah Caner\"]))[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ἷ\n" + ] + } + ], + "source": [ + "print(chr(0x1F3F))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<1x3931 sparse matrix of type ''\n", + "\twith 2 stored elements in Compressed Sparse Row format>" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vec_train[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0b212fa64d5e457d89ad798983002a1c", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type Text.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "Text(value='')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f1d5e13f70a24e80acc95372e3f3db0d", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(Button(description='get smiley', icon='check', style=ButtonStyle(), tooltip='Click me'), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import ipywidgets as widgets \n", + "\n", + "out = widgets.Output()\n", + "\n", + "t = widgets.Text()\n", + "b = widgets.Button(\n", + " description='get smiley',\n", + " disabled=False,\n", + " button_style='', # 'success', 'info', 'warning', 'danger' or ''\n", + " tooltip='Click me',\n", + " icon='check'\n", + ")\n", + "\n", + "\n", + "\n", + "def handle_submit(sender):\n", + " with out:\n", + " clear_output()\n", + " with out:\n", + " display(Markdown(\"# \" + str(clf_a.predict(vectorizer.transform([t.value]))[0])))\n", + "\n", + "b.on_click(handle_submit)\n", + " \n", + "display(t)\n", + "display(widgets.VBox([b, out])) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Project/Tools/emoji-data.txt b/Project/Tools/emoji-data.txt new file mode 100644 index 0000000..6e66455 --- /dev/null +++ b/Project/Tools/emoji-data.txt @@ -0,0 +1,714 @@ +# emoji-data.txt +# Date: 2018-02-07, 07:55:18 GMT +# © 2018 Unicode®, Inc. +# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries. +# For terms of use, see http://www.unicode.org/terms_of_use.html +# +# Emoji Data for UTS #51 +# Version: 11.0 +# +# For documentation and usage, see http://www.unicode.org/reports/tr51 +# +# Format: +# ; # +# Note: there is no guarantee as to the structure of whitespace or comments +# +# Characters and sequences are listed in code point order. Users should be shown a more natural order. +# See the CLDR collation order for Emoji. + + +# ================================================ + +# All omitted code points have Emoji=No +# @missing: 0000..10FFFF ; Emoji ; No + +0023 ; Emoji # 1.1 [1] (#️) number sign +002A ; Emoji # 1.1 [1] (*️) asterisk +0030..0039 ; Emoji # 1.1 [10] (0️..9️) digit zero..digit nine +00A9 ; Emoji # 1.1 [1] (©️) copyright +00AE ; Emoji # 1.1 [1] (®️) registered +203C ; Emoji # 1.1 [1] (‼️) double exclamation mark +2049 ; Emoji # 3.0 [1] (⁉️) exclamation question mark +2122 ; Emoji # 1.1 [1] (™️) trade mark +2139 ; Emoji # 3.0 [1] (ℹ️) information +2194..2199 ; Emoji # 1.1 [6] (↔️..↙️) left-right arrow..down-left arrow +21A9..21AA ; Emoji # 1.1 [2] (↩️..↪️) right arrow curving left..left arrow curving right +231A..231B ; Emoji # 1.1 [2] (⌚..⌛) watch..hourglass done +2328 ; Emoji # 1.1 [1] (⌨️) keyboard +23CF ; Emoji # 4.0 [1] (⏏️) eject button +23E9..23F3 ; Emoji # 6.0 [11] (⏩..⏳) fast-forward button..hourglass not done +23F8..23FA ; Emoji # 7.0 [3] (⏸️..⏺️) pause button..record button +24C2 ; Emoji # 1.1 [1] (Ⓜ️) circled M +25AA..25AB ; Emoji # 1.1 [2] (▪️..▫️) black small square..white small square +25B6 ; Emoji # 1.1 [1] (▶️) play button +25C0 ; Emoji # 1.1 [1] (◀️) reverse button +25FB..25FE ; Emoji # 3.2 [4] (◻️..◾) white medium square..black medium-small square +2600..2604 ; Emoji # 1.1 [5] (☀️..☄️) sun..comet +260E ; Emoji # 1.1 [1] (☎️) telephone +2611 ; Emoji # 1.1 [1] (☑️) ballot box with check +2614..2615 ; Emoji # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2618 ; Emoji # 4.1 [1] (☘️) shamrock +261D ; Emoji # 1.1 [1] (☝️) index pointing up +2620 ; Emoji # 1.1 [1] (☠️) skull and crossbones +2622..2623 ; Emoji # 1.1 [2] (☢️..☣️) radioactive..biohazard +2626 ; Emoji # 1.1 [1] (☦️) orthodox cross +262A ; Emoji # 1.1 [1] (☪️) star and crescent +262E..262F ; Emoji # 1.1 [2] (☮️..☯️) peace symbol..yin yang +2638..263A ; Emoji # 1.1 [3] (☸️..☺️) wheel of dharma..smiling face +2640 ; Emoji # 1.1 [1] (♀️) female sign +2642 ; Emoji # 1.1 [1] (♂️) male sign +2648..2653 ; Emoji # 1.1 [12] (♈..♓) Aries..Pisces +265F..2660 ; Emoji # 1.1 [2] (♟️..♠️) chess pawn..spade suit +2663 ; Emoji # 1.1 [1] (♣️) club suit +2665..2666 ; Emoji # 1.1 [2] (♥️..♦️) heart suit..diamond suit +2668 ; Emoji # 1.1 [1] (♨️) hot springs +267B ; Emoji # 3.2 [1] (♻️) recycling symbol +267E..267F ; Emoji # 4.1 [2] (♾️..♿) infinity..wheelchair symbol +2692..2697 ; Emoji # 4.1 [6] (⚒️..⚗️) hammer and pick..alembic +2699 ; Emoji # 4.1 [1] (⚙️) gear +269B..269C ; Emoji # 4.1 [2] (⚛️..⚜️) atom symbol..fleur-de-lis +26A0..26A1 ; Emoji # 4.0 [2] (⚠️..⚡) warning..high voltage +26AA..26AB ; Emoji # 4.1 [2] (⚪..⚫) white circle..black circle +26B0..26B1 ; Emoji # 4.1 [2] (⚰️..⚱️) coffin..funeral urn +26BD..26BE ; Emoji # 5.2 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 ; Emoji # 5.2 [2] (⛄..⛅) snowman without snow..sun behind cloud +26C8 ; Emoji # 5.2 [1] (⛈️) cloud with lightning and rain +26CE ; Emoji # 6.0 [1] (⛎) Ophiuchus +26CF ; Emoji # 5.2 [1] (⛏️) pick +26D1 ; Emoji # 5.2 [1] (⛑️) rescue worker’s helmet +26D3..26D4 ; Emoji # 5.2 [2] (⛓️..⛔) chains..no entry +26E9..26EA ; Emoji # 5.2 [2] (⛩️..⛪) shinto shrine..church +26F0..26F5 ; Emoji # 5.2 [6] (⛰️..⛵) mountain..sailboat +26F7..26FA ; Emoji # 5.2 [4] (⛷️..⛺) skier..tent +26FD ; Emoji # 5.2 [1] (⛽) fuel pump +2702 ; Emoji # 1.1 [1] (✂️) scissors +2705 ; Emoji # 6.0 [1] (✅) white heavy check mark +2708..2709 ; Emoji # 1.1 [2] (✈️..✉️) airplane..envelope +270A..270B ; Emoji # 6.0 [2] (✊..✋) raised fist..raised hand +270C..270D ; Emoji # 1.1 [2] (✌️..✍️) victory hand..writing hand +270F ; Emoji # 1.1 [1] (✏️) pencil +2712 ; Emoji # 1.1 [1] (✒️) black nib +2714 ; Emoji # 1.1 [1] (✔️) heavy check mark +2716 ; Emoji # 1.1 [1] (✖️) heavy multiplication x +271D ; Emoji # 1.1 [1] (✝️) latin cross +2721 ; Emoji # 1.1 [1] (✡️) star of David +2728 ; Emoji # 6.0 [1] (✨) sparkles +2733..2734 ; Emoji # 1.1 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star +2744 ; Emoji # 1.1 [1] (❄️) snowflake +2747 ; Emoji # 1.1 [1] (❇️) sparkle +274C ; Emoji # 6.0 [1] (❌) cross mark +274E ; Emoji # 6.0 [1] (❎) cross mark button +2753..2755 ; Emoji # 6.0 [3] (❓..❕) question mark..white exclamation mark +2757 ; Emoji # 5.2 [1] (❗) exclamation mark +2763..2764 ; Emoji # 1.1 [2] (❣️..❤️) heavy heart exclamation..red heart +2795..2797 ; Emoji # 6.0 [3] (➕..➗) heavy plus sign..heavy division sign +27A1 ; Emoji # 1.1 [1] (➡️) right arrow +27B0 ; Emoji # 6.0 [1] (➰) curly loop +27BF ; Emoji # 6.0 [1] (➿) double curly loop +2934..2935 ; Emoji # 3.2 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down +2B05..2B07 ; Emoji # 4.0 [3] (⬅️..⬇️) left arrow..down arrow +2B1B..2B1C ; Emoji # 5.1 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji # 5.1 [1] (⭐) star +2B55 ; Emoji # 5.2 [1] (⭕) heavy large circle +3030 ; Emoji # 1.1 [1] (〰️) wavy dash +303D ; Emoji # 3.2 [1] (〽️) part alternation mark +3297 ; Emoji # 1.1 [1] (㊗️) Japanese “congratulations” button +3299 ; Emoji # 1.1 [1] (㊙️) Japanese “secret” button +1F004 ; Emoji # 5.1 [1] (🀄) mahjong red dragon +1F0CF ; Emoji # 6.0 [1] (🃏) joker +1F170..1F171 ; Emoji # 6.0 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) +1F17E ; Emoji # 6.0 [1] (🅾️) O button (blood type) +1F17F ; Emoji # 5.2 [1] (🅿️) P button +1F18E ; Emoji # 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji # 6.0 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201..1F202 ; Emoji # 6.0 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button +1F21A ; Emoji # 5.2 [1] (🈚) Japanese “free of charge” button +1F22F ; Emoji # 5.2 [1] (🈯) Japanese “reserved” button +1F232..1F23A ; Emoji # 6.0 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button +1F250..1F251 ; Emoji # 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F320 ; Emoji # 6.0 [33] (🌀..🌠) cyclone..shooting star +1F321 ; Emoji # 7.0 [1] (🌡️) thermometer +1F324..1F32C ; Emoji # 7.0 [9] (🌤️..🌬️) sun behind small cloud..wind face +1F32D..1F32F ; Emoji # 8.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F335 ; Emoji # 6.0 [6] (🌰..🌵) chestnut..cactus +1F336 ; Emoji # 7.0 [1] (🌶️) hot pepper +1F337..1F37C ; Emoji # 6.0 [70] (🌷..🍼) tulip..baby bottle +1F37D ; Emoji # 7.0 [1] (🍽️) fork and knife with plate +1F37E..1F37F ; Emoji # 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji # 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F396..1F397 ; Emoji # 7.0 [2] (🎖️..🎗️) military medal..reminder ribbon +1F399..1F39B ; Emoji # 7.0 [3] (🎙️..🎛️) studio microphone..control knobs +1F39E..1F39F ; Emoji # 7.0 [2] (🎞️..🎟️) film frames..admission tickets +1F3A0..1F3C4 ; Emoji # 6.0 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Emoji # 7.0 [1] (🏅) sports medal +1F3C6..1F3CA ; Emoji # 6.0 [5] (🏆..🏊) trophy..person swimming +1F3CB..1F3CE ; Emoji # 7.0 [4] (🏋️..🏎️) person lifting weights..racing car +1F3CF..1F3D3 ; Emoji # 8.0 [5] (🏏..🏓) cricket game..ping pong +1F3D4..1F3DF ; Emoji # 7.0 [12] (🏔️..🏟️) snow-capped mountain..stadium +1F3E0..1F3F0 ; Emoji # 6.0 [17] (🏠..🏰) house..castle +1F3F3..1F3F5 ; Emoji # 7.0 [3] (🏳️..🏵️) white flag..rosette +1F3F7 ; Emoji # 7.0 [1] (🏷️) label +1F3F8..1F3FF ; Emoji # 8.0 [8] (🏸..🏿) badminton..dark skin tone +1F400..1F43E ; Emoji # 6.0 [63] (🐀..🐾) rat..paw prints +1F43F ; Emoji # 7.0 [1] (🐿️) chipmunk +1F440 ; Emoji # 6.0 [1] (👀) eyes +1F441 ; Emoji # 7.0 [1] (👁️) eye +1F442..1F4F7 ; Emoji # 6.0[182] (👂..📷) ear..camera +1F4F8 ; Emoji # 7.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji # 6.0 [4] (📹..📼) video camera..videocassette +1F4FD ; Emoji # 7.0 [1] (📽️) film projector +1F4FF ; Emoji # 8.0 [1] (📿) prayer beads +1F500..1F53D ; Emoji # 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button +1F549..1F54A ; Emoji # 7.0 [2] (🕉️..🕊️) om..dove +1F54B..1F54E ; Emoji # 8.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F567 ; Emoji # 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty +1F56F..1F570 ; Emoji # 7.0 [2] (🕯️..🕰️) candle..mantelpiece clock +1F573..1F579 ; Emoji # 7.0 [7] (🕳️..🕹️) hole..joystick +1F57A ; Emoji # 9.0 [1] (🕺) man dancing +1F587 ; Emoji # 7.0 [1] (🖇️) linked paperclips +1F58A..1F58D ; Emoji # 7.0 [4] (🖊️..🖍️) pen..crayon +1F590 ; Emoji # 7.0 [1] (🖐️) hand with fingers splayed +1F595..1F596 ; Emoji # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji # 9.0 [1] (🖤) black heart +1F5A5 ; Emoji # 7.0 [1] (🖥️) desktop computer +1F5A8 ; Emoji # 7.0 [1] (🖨️) printer +1F5B1..1F5B2 ; Emoji # 7.0 [2] (🖱️..🖲️) computer mouse..trackball +1F5BC ; Emoji # 7.0 [1] (🖼️) framed picture +1F5C2..1F5C4 ; Emoji # 7.0 [3] (🗂️..🗄️) card index dividers..file cabinet +1F5D1..1F5D3 ; Emoji # 7.0 [3] (🗑️..🗓️) wastebasket..spiral calendar +1F5DC..1F5DE ; Emoji # 7.0 [3] (🗜️..🗞️) clamp..rolled-up newspaper +1F5E1 ; Emoji # 7.0 [1] (🗡️) dagger +1F5E3 ; Emoji # 7.0 [1] (🗣️) speaking head +1F5E8 ; Emoji # 7.0 [1] (🗨️) left speech bubble +1F5EF ; Emoji # 7.0 [1] (🗯️) right anger bubble +1F5F3 ; Emoji # 7.0 [1] (🗳️) ballot box with ballot +1F5FA ; Emoji # 7.0 [1] (🗺️) world map +1F5FB..1F5FF ; Emoji # 6.0 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji # 6.1 [1] (😀) grinning face +1F601..1F610 ; Emoji # 6.0 [16] (😁..😐) beaming face with smiling eyes..neutral face +1F611 ; Emoji # 6.1 [1] (😑) expressionless face +1F612..1F614 ; Emoji # 6.0 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji # 6.1 [1] (😕) confused face +1F616 ; Emoji # 6.0 [1] (😖) confounded face +1F617 ; Emoji # 6.1 [1] (😗) kissing face +1F618 ; Emoji # 6.0 [1] (😘) face blowing a kiss +1F619 ; Emoji # 6.1 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji # 6.0 [1] (😚) kissing face with closed eyes +1F61B ; Emoji # 6.1 [1] (😛) face with tongue +1F61C..1F61E ; Emoji # 6.0 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji # 6.1 [1] (😟) worried face +1F620..1F625 ; Emoji # 6.0 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji # 6.0 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji # 6.1 [1] (😬) grimacing face +1F62D ; Emoji # 6.0 [1] (😭) loudly crying face +1F62E..1F62F ; Emoji # 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji # 6.0 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji # 6.1 [1] (😴) sleeping face +1F635..1F640 ; Emoji # 6.0 [12] (😵..🙀) dizzy face..weary cat face +1F641..1F642 ; Emoji # 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face +1F643..1F644 ; Emoji # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F ; Emoji # 6.0 [11] (🙅..🙏) person gesturing NO..folded hands +1F680..1F6C5 ; Emoji # 6.0 [70] (🚀..🛅) rocket..left luggage +1F6CB..1F6CF ; Emoji # 7.0 [5] (🛋️..🛏️) couch and lamp..bed +1F6D0 ; Emoji # 8.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Emoji # 9.0 [2] (🛑..🛒) stop sign..shopping cart +1F6E0..1F6E5 ; Emoji # 7.0 [6] (🛠️..🛥️) hammer and wrench..motor boat +1F6E9 ; Emoji # 7.0 [1] (🛩️) small airplane +1F6EB..1F6EC ; Emoji # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F0 ; Emoji # 7.0 [1] (🛰️) satellite +1F6F3 ; Emoji # 7.0 [1] (🛳️) passenger ship +1F6F4..1F6F6 ; Emoji # 9.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji # 10.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji # 11.0 [1] (🛹) skateboard +1F910..1F918 ; Emoji # 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji # 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji # 10.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji # 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji # 9.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji # 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F940..1F945 ; Emoji # 9.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji # 10.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji # 11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Emoji # 9.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Emoji # 10.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji # 11.0 [5] (🥬..🥰) leafy green..smiling face with 3 hearts +1F973..1F976 ; Emoji # 11.0 [4] (🥳..🥶) partying face..cold face +1F97A ; Emoji # 11.0 [1] (🥺) pleading face +1F97C..1F97F ; Emoji # 11.0 [4] (🥼..🥿) lab coat..woman’s flat shoe +1F980..1F984 ; Emoji # 8.0 [5] (🦀..🦄) crab..unicorn face +1F985..1F991 ; Emoji # 9.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji # 10.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji # 11.0 [11] (🦘..🦢) kangaroo..swan +1F9B0..1F9B9 ; Emoji # 11.0 [10] (🦰..🦹) red-haired..supervillain +1F9C0 ; Emoji # 8.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji # 11.0 [2] (🧁..🧂) cupcake..salt +1F9D0..1F9E6 ; Emoji # 10.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji # 11.0 [25] (🧧..🧿) red envelope..nazar amulet + +# Total elements: 1250 + +# ================================================ + +# All omitted code points have Emoji_Presentation=No +# @missing: 0000..10FFFF ; Emoji_Presentation ; No + +231A..231B ; Emoji_Presentation # 1.1 [2] (⌚..⌛) watch..hourglass done +23E9..23EC ; Emoji_Presentation # 6.0 [4] (⏩..⏬) fast-forward button..fast down button +23F0 ; Emoji_Presentation # 6.0 [1] (⏰) alarm clock +23F3 ; Emoji_Presentation # 6.0 [1] (⏳) hourglass not done +25FD..25FE ; Emoji_Presentation # 3.2 [2] (◽..◾) white medium-small square..black medium-small square +2614..2615 ; Emoji_Presentation # 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2648..2653 ; Emoji_Presentation # 1.1 [12] (♈..♓) Aries..Pisces +267F ; Emoji_Presentation # 4.1 [1] (♿) wheelchair symbol +2693 ; Emoji_Presentation # 4.1 [1] (⚓) anchor +26A1 ; Emoji_Presentation # 4.0 [1] (⚡) high voltage +26AA..26AB ; Emoji_Presentation # 4.1 [2] (⚪..⚫) white circle..black circle +26BD..26BE ; Emoji_Presentation # 5.2 [2] (⚽..⚾) soccer ball..baseball +26C4..26C5 ; Emoji_Presentation # 5.2 [2] (⛄..⛅) snowman without snow..sun behind cloud +26CE ; Emoji_Presentation # 6.0 [1] (⛎) Ophiuchus +26D4 ; Emoji_Presentation # 5.2 [1] (⛔) no entry +26EA ; Emoji_Presentation # 5.2 [1] (⛪) church +26F2..26F3 ; Emoji_Presentation # 5.2 [2] (⛲..⛳) fountain..flag in hole +26F5 ; Emoji_Presentation # 5.2 [1] (⛵) sailboat +26FA ; Emoji_Presentation # 5.2 [1] (⛺) tent +26FD ; Emoji_Presentation # 5.2 [1] (⛽) fuel pump +2705 ; Emoji_Presentation # 6.0 [1] (✅) white heavy check mark +270A..270B ; Emoji_Presentation # 6.0 [2] (✊..✋) raised fist..raised hand +2728 ; Emoji_Presentation # 6.0 [1] (✨) sparkles +274C ; Emoji_Presentation # 6.0 [1] (❌) cross mark +274E ; Emoji_Presentation # 6.0 [1] (❎) cross mark button +2753..2755 ; Emoji_Presentation # 6.0 [3] (❓..❕) question mark..white exclamation mark +2757 ; Emoji_Presentation # 5.2 [1] (❗) exclamation mark +2795..2797 ; Emoji_Presentation # 6.0 [3] (➕..➗) heavy plus sign..heavy division sign +27B0 ; Emoji_Presentation # 6.0 [1] (➰) curly loop +27BF ; Emoji_Presentation # 6.0 [1] (➿) double curly loop +2B1B..2B1C ; Emoji_Presentation # 5.1 [2] (⬛..⬜) black large square..white large square +2B50 ; Emoji_Presentation # 5.1 [1] (⭐) star +2B55 ; Emoji_Presentation # 5.2 [1] (⭕) heavy large circle +1F004 ; Emoji_Presentation # 5.1 [1] (🀄) mahjong red dragon +1F0CF ; Emoji_Presentation # 6.0 [1] (🃏) joker +1F18E ; Emoji_Presentation # 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A ; Emoji_Presentation # 6.0 [10] (🆑..🆚) CL button..VS button +1F1E6..1F1FF ; Emoji_Presentation # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F201 ; Emoji_Presentation # 6.0 [1] (🈁) Japanese “here” button +1F21A ; Emoji_Presentation # 5.2 [1] (🈚) Japanese “free of charge” button +1F22F ; Emoji_Presentation # 5.2 [1] (🈯) Japanese “reserved” button +1F232..1F236 ; Emoji_Presentation # 6.0 [5] (🈲..🈶) Japanese “prohibited” button..Japanese “not free of charge” button +1F238..1F23A ; Emoji_Presentation # 6.0 [3] (🈸..🈺) Japanese “application” button..Japanese “open for business” button +1F250..1F251 ; Emoji_Presentation # 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F300..1F320 ; Emoji_Presentation # 6.0 [33] (🌀..🌠) cyclone..shooting star +1F32D..1F32F ; Emoji_Presentation # 8.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F335 ; Emoji_Presentation # 6.0 [6] (🌰..🌵) chestnut..cactus +1F337..1F37C ; Emoji_Presentation # 6.0 [70] (🌷..🍼) tulip..baby bottle +1F37E..1F37F ; Emoji_Presentation # 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Emoji_Presentation # 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F3A0..1F3C4 ; Emoji_Presentation # 6.0 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Emoji_Presentation # 7.0 [1] (🏅) sports medal +1F3C6..1F3CA ; Emoji_Presentation # 6.0 [5] (🏆..🏊) trophy..person swimming +1F3CF..1F3D3 ; Emoji_Presentation # 8.0 [5] (🏏..🏓) cricket game..ping pong +1F3E0..1F3F0 ; Emoji_Presentation # 6.0 [17] (🏠..🏰) house..castle +1F3F4 ; Emoji_Presentation # 7.0 [1] (🏴) black flag +1F3F8..1F3FF ; Emoji_Presentation # 8.0 [8] (🏸..🏿) badminton..dark skin tone +1F400..1F43E ; Emoji_Presentation # 6.0 [63] (🐀..🐾) rat..paw prints +1F440 ; Emoji_Presentation # 6.0 [1] (👀) eyes +1F442..1F4F7 ; Emoji_Presentation # 6.0[182] (👂..📷) ear..camera +1F4F8 ; Emoji_Presentation # 7.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Emoji_Presentation # 6.0 [4] (📹..📼) video camera..videocassette +1F4FF ; Emoji_Presentation # 8.0 [1] (📿) prayer beads +1F500..1F53D ; Emoji_Presentation # 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button +1F54B..1F54E ; Emoji_Presentation # 8.0 [4] (🕋..🕎) kaaba..menorah +1F550..1F567 ; Emoji_Presentation # 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty +1F57A ; Emoji_Presentation # 9.0 [1] (🕺) man dancing +1F595..1F596 ; Emoji_Presentation # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +1F5A4 ; Emoji_Presentation # 9.0 [1] (🖤) black heart +1F5FB..1F5FF ; Emoji_Presentation # 6.0 [5] (🗻..🗿) mount fuji..moai +1F600 ; Emoji_Presentation # 6.1 [1] (😀) grinning face +1F601..1F610 ; Emoji_Presentation # 6.0 [16] (😁..😐) beaming face with smiling eyes..neutral face +1F611 ; Emoji_Presentation # 6.1 [1] (😑) expressionless face +1F612..1F614 ; Emoji_Presentation # 6.0 [3] (😒..😔) unamused face..pensive face +1F615 ; Emoji_Presentation # 6.1 [1] (😕) confused face +1F616 ; Emoji_Presentation # 6.0 [1] (😖) confounded face +1F617 ; Emoji_Presentation # 6.1 [1] (😗) kissing face +1F618 ; Emoji_Presentation # 6.0 [1] (😘) face blowing a kiss +1F619 ; Emoji_Presentation # 6.1 [1] (😙) kissing face with smiling eyes +1F61A ; Emoji_Presentation # 6.0 [1] (😚) kissing face with closed eyes +1F61B ; Emoji_Presentation # 6.1 [1] (😛) face with tongue +1F61C..1F61E ; Emoji_Presentation # 6.0 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Emoji_Presentation # 6.1 [1] (😟) worried face +1F620..1F625 ; Emoji_Presentation # 6.0 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Emoji_Presentation # 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Emoji_Presentation # 6.0 [4] (😨..😫) fearful face..tired face +1F62C ; Emoji_Presentation # 6.1 [1] (😬) grimacing face +1F62D ; Emoji_Presentation # 6.0 [1] (😭) loudly crying face +1F62E..1F62F ; Emoji_Presentation # 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Emoji_Presentation # 6.0 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Emoji_Presentation # 6.1 [1] (😴) sleeping face +1F635..1F640 ; Emoji_Presentation # 6.0 [12] (😵..🙀) dizzy face..weary cat face +1F641..1F642 ; Emoji_Presentation # 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face +1F643..1F644 ; Emoji_Presentation # 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F ; Emoji_Presentation # 6.0 [11] (🙅..🙏) person gesturing NO..folded hands +1F680..1F6C5 ; Emoji_Presentation # 6.0 [70] (🚀..🛅) rocket..left luggage +1F6CC ; Emoji_Presentation # 7.0 [1] (🛌) person in bed +1F6D0 ; Emoji_Presentation # 8.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Emoji_Presentation # 9.0 [2] (🛑..🛒) stop sign..shopping cart +1F6EB..1F6EC ; Emoji_Presentation # 7.0 [2] (🛫..🛬) airplane departure..airplane arrival +1F6F4..1F6F6 ; Emoji_Presentation # 9.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Emoji_Presentation # 10.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Emoji_Presentation # 11.0 [1] (🛹) skateboard +1F910..1F918 ; Emoji_Presentation # 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Emoji_Presentation # 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Emoji_Presentation # 10.0 [1] (🤟) love-you gesture +1F920..1F927 ; Emoji_Presentation # 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Emoji_Presentation # 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Emoji_Presentation # 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Presentation # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Emoji_Presentation # 9.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Emoji_Presentation # 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F940..1F945 ; Emoji_Presentation # 9.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Emoji_Presentation # 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Emoji_Presentation # 10.0 [1] (🥌) curling stone +1F94D..1F94F ; Emoji_Presentation # 11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Emoji_Presentation # 9.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Emoji_Presentation # 10.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Emoji_Presentation # 11.0 [5] (🥬..🥰) leafy green..smiling face with 3 hearts +1F973..1F976 ; Emoji_Presentation # 11.0 [4] (🥳..🥶) partying face..cold face +1F97A ; Emoji_Presentation # 11.0 [1] (🥺) pleading face +1F97C..1F97F ; Emoji_Presentation # 11.0 [4] (🥼..🥿) lab coat..woman’s flat shoe +1F980..1F984 ; Emoji_Presentation # 8.0 [5] (🦀..🦄) crab..unicorn face +1F985..1F991 ; Emoji_Presentation # 9.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Emoji_Presentation # 10.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Emoji_Presentation # 11.0 [11] (🦘..🦢) kangaroo..swan +1F9B0..1F9B9 ; Emoji_Presentation # 11.0 [10] (🦰..🦹) red-haired..supervillain +1F9C0 ; Emoji_Presentation # 8.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Emoji_Presentation # 11.0 [2] (🧁..🧂) cupcake..salt +1F9D0..1F9E6 ; Emoji_Presentation # 10.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Emoji_Presentation # 11.0 [25] (🧧..🧿) red envelope..nazar amulet + +# Total elements: 1032 + +# ================================================ + +# All omitted code points have Emoji_Modifier=No +# @missing: 0000..10FFFF ; Emoji_Modifier ; No + +1F3FB..1F3FF ; Emoji_Modifier # 8.0 [5] (🏻..🏿) light skin tone..dark skin tone + +# Total elements: 5 + +# ================================================ + +# All omitted code points have Emoji_Modifier_Base=No +# @missing: 0000..10FFFF ; Emoji_Modifier_Base ; No + +261D ; Emoji_Modifier_Base # 1.1 [1] (☝️) index pointing up +26F9 ; Emoji_Modifier_Base # 5.2 [1] (⛹️) person bouncing ball +270A..270B ; Emoji_Modifier_Base # 6.0 [2] (✊..✋) raised fist..raised hand +270C..270D ; Emoji_Modifier_Base # 1.1 [2] (✌️..✍️) victory hand..writing hand +1F385 ; Emoji_Modifier_Base # 6.0 [1] (🎅) Santa Claus +1F3C2..1F3C4 ; Emoji_Modifier_Base # 6.0 [3] (🏂..🏄) snowboarder..person surfing +1F3C7 ; Emoji_Modifier_Base # 6.0 [1] (🏇) horse racing +1F3CA ; Emoji_Modifier_Base # 6.0 [1] (🏊) person swimming +1F3CB..1F3CC ; Emoji_Modifier_Base # 7.0 [2] (🏋️..🏌️) person lifting weights..person golfing +1F442..1F443 ; Emoji_Modifier_Base # 6.0 [2] (👂..👃) ear..nose +1F446..1F450 ; Emoji_Modifier_Base # 6.0 [11] (👆..👐) backhand index pointing up..open hands +1F466..1F469 ; Emoji_Modifier_Base # 6.0 [4] (👦..👩) boy..woman +1F46E ; Emoji_Modifier_Base # 6.0 [1] (👮) police officer +1F470..1F478 ; Emoji_Modifier_Base # 6.0 [9] (👰..👸) bride with veil..princess +1F47C ; Emoji_Modifier_Base # 6.0 [1] (👼) baby angel +1F481..1F483 ; Emoji_Modifier_Base # 6.0 [3] (💁..💃) person tipping hand..woman dancing +1F485..1F487 ; Emoji_Modifier_Base # 6.0 [3] (💅..💇) nail polish..person getting haircut +1F4AA ; Emoji_Modifier_Base # 6.0 [1] (💪) flexed biceps +1F574..1F575 ; Emoji_Modifier_Base # 7.0 [2] (🕴️..🕵️) man in suit levitating..detective +1F57A ; Emoji_Modifier_Base # 9.0 [1] (🕺) man dancing +1F590 ; Emoji_Modifier_Base # 7.0 [1] (🖐️) hand with fingers splayed +1F595..1F596 ; Emoji_Modifier_Base # 7.0 [2] (🖕..🖖) middle finger..vulcan salute +1F645..1F647 ; Emoji_Modifier_Base # 6.0 [3] (🙅..🙇) person gesturing NO..person bowing +1F64B..1F64F ; Emoji_Modifier_Base # 6.0 [5] (🙋..🙏) person raising hand..folded hands +1F6A3 ; Emoji_Modifier_Base # 6.0 [1] (🚣) person rowing boat +1F6B4..1F6B6 ; Emoji_Modifier_Base # 6.0 [3] (🚴..🚶) person biking..person walking +1F6C0 ; Emoji_Modifier_Base # 6.0 [1] (🛀) person taking bath +1F6CC ; Emoji_Modifier_Base # 7.0 [1] (🛌) person in bed +1F918 ; Emoji_Modifier_Base # 8.0 [1] (🤘) sign of the horns +1F919..1F91C ; Emoji_Modifier_Base # 9.0 [4] (🤙..🤜) call me hand..right-facing fist +1F91E ; Emoji_Modifier_Base # 9.0 [1] (🤞) crossed fingers +1F91F ; Emoji_Modifier_Base # 10.0 [1] (🤟) love-you gesture +1F926 ; Emoji_Modifier_Base # 9.0 [1] (🤦) person facepalming +1F930 ; Emoji_Modifier_Base # 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Emoji_Modifier_Base # 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F939 ; Emoji_Modifier_Base # 9.0 [7] (🤳..🤹) selfie..person juggling +1F93D..1F93E ; Emoji_Modifier_Base # 9.0 [2] (🤽..🤾) person playing water polo..person playing handball +1F9B5..1F9B6 ; Emoji_Modifier_Base # 11.0 [2] (🦵..🦶) leg..foot +1F9B8..1F9B9 ; Emoji_Modifier_Base # 11.0 [2] (🦸..🦹) superhero..supervillain +1F9D1..1F9DD ; Emoji_Modifier_Base # 10.0 [13] (🧑..🧝) adult..elf + +# Total elements: 106 + +# ================================================ + +# All omitted code points have Emoji_Component=No +# @missing: 0000..10FFFF ; Emoji_Component ; No + +0023 ; Emoji_Component # 1.1 [1] (#️) number sign +002A ; Emoji_Component # 1.1 [1] (*️) asterisk +0030..0039 ; Emoji_Component # 1.1 [10] (0️..9️) digit zero..digit nine +200D ; Emoji_Component # 1.1 [1] (‍) zero width joiner +20E3 ; Emoji_Component # 3.0 [1] (⃣) combining enclosing keycap +FE0F ; Emoji_Component # 3.2 [1] () VARIATION SELECTOR-16 +1F1E6..1F1FF ; Emoji_Component # 6.0 [26] (🇦..🇿) regional indicator symbol letter a..regional indicator symbol letter z +1F3FB..1F3FF ; Emoji_Component # 8.0 [5] (🏻..🏿) light skin tone..dark skin tone +1F9B0..1F9B3 ; Emoji_Component # 11.0 [4] (🦰..🦳) red-haired..white-haired +E0020..E007F ; Emoji_Component # 3.1 [96] (󠀠..󠁿) tag space..cancel tag + +# Total elements: 146 + +# ================================================ + +# All omitted code points have Extended_Pictographic=No +# @missing: 0000..10FFFF ; Extended_Pictographic ; No + +00A9 ; Extended_Pictographic# 1.1 [1] (©️) copyright +00AE ; Extended_Pictographic# 1.1 [1] (®️) registered +203C ; Extended_Pictographic# 1.1 [1] (‼️) double exclamation mark +2049 ; Extended_Pictographic# 3.0 [1] (⁉️) exclamation question mark +2122 ; Extended_Pictographic# 1.1 [1] (™️) trade mark +2139 ; Extended_Pictographic# 3.0 [1] (ℹ️) information +2194..2199 ; Extended_Pictographic# 1.1 [6] (↔️..↙️) left-right arrow..down-left arrow +21A9..21AA ; Extended_Pictographic# 1.1 [2] (↩️..↪️) right arrow curving left..left arrow curving right +231A..231B ; Extended_Pictographic# 1.1 [2] (⌚..⌛) watch..hourglass done +2328 ; Extended_Pictographic# 1.1 [1] (⌨️) keyboard +2388 ; Extended_Pictographic# 3.0 [1] (⎈️) HELM SYMBOL +23CF ; Extended_Pictographic# 4.0 [1] (⏏️) eject button +23E9..23F3 ; Extended_Pictographic# 6.0 [11] (⏩..⏳) fast-forward button..hourglass not done +23F8..23FA ; Extended_Pictographic# 7.0 [3] (⏸️..⏺️) pause button..record button +24C2 ; Extended_Pictographic# 1.1 [1] (Ⓜ️) circled M +25AA..25AB ; Extended_Pictographic# 1.1 [2] (▪️..▫️) black small square..white small square +25B6 ; Extended_Pictographic# 1.1 [1] (▶️) play button +25C0 ; Extended_Pictographic# 1.1 [1] (◀️) reverse button +25FB..25FE ; Extended_Pictographic# 3.2 [4] (◻️..◾) white medium square..black medium-small square +2600..2605 ; Extended_Pictographic# 1.1 [6] (☀️..★️) sun..BLACK STAR +2607..2612 ; Extended_Pictographic# 1.1 [12] (☇️..☒️) LIGHTNING..BALLOT BOX WITH X +2614..2615 ; Extended_Pictographic# 4.0 [2] (☔..☕) umbrella with rain drops..hot beverage +2616..2617 ; Extended_Pictographic# 3.2 [2] (☖️..☗️) WHITE SHOGI PIECE..BLACK SHOGI PIECE +2618 ; Extended_Pictographic# 4.1 [1] (☘️) shamrock +2619 ; Extended_Pictographic# 3.0 [1] (☙️) REVERSED ROTATED FLORAL HEART BULLET +261A..266F ; Extended_Pictographic# 1.1 [86] (☚️..♯️) BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN +2670..2671 ; Extended_Pictographic# 3.0 [2] (♰️..♱️) WEST SYRIAC CROSS..EAST SYRIAC CROSS +2672..267D ; Extended_Pictographic# 3.2 [12] (♲️..♽️) UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL +267E..267F ; Extended_Pictographic# 4.1 [2] (♾️..♿) infinity..wheelchair symbol +2680..2685 ; Extended_Pictographic# 3.2 [6] (⚀️..⚅️) DIE FACE-1..DIE FACE-6 +2690..2691 ; Extended_Pictographic# 4.0 [2] (⚐️..⚑️) WHITE FLAG..BLACK FLAG +2692..269C ; Extended_Pictographic# 4.1 [11] (⚒️..⚜️) hammer and pick..fleur-de-lis +269D ; Extended_Pictographic# 5.1 [1] (⚝️) OUTLINED WHITE STAR +269E..269F ; Extended_Pictographic# 5.2 [2] (⚞️..⚟️) THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT +26A0..26A1 ; Extended_Pictographic# 4.0 [2] (⚠️..⚡) warning..high voltage +26A2..26B1 ; Extended_Pictographic# 4.1 [16] (⚢️..⚱️) DOUBLED FEMALE SIGN..funeral urn +26B2 ; Extended_Pictographic# 5.0 [1] (⚲️) NEUTER +26B3..26BC ; Extended_Pictographic# 5.1 [10] (⚳️..⚼️) CERES..SESQUIQUADRATE +26BD..26BF ; Extended_Pictographic# 5.2 [3] (⚽..⚿️) soccer ball..SQUARED KEY +26C0..26C3 ; Extended_Pictographic# 5.1 [4] (⛀️..⛃️) WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING +26C4..26CD ; Extended_Pictographic# 5.2 [10] (⛄..⛍️) snowman without snow..DISABLED CAR +26CE ; Extended_Pictographic# 6.0 [1] (⛎) Ophiuchus +26CF..26E1 ; Extended_Pictographic# 5.2 [19] (⛏️..⛡️) pick..RESTRICTED LEFT ENTRY-2 +26E2 ; Extended_Pictographic# 6.0 [1] (⛢️) ASTRONOMICAL SYMBOL FOR URANUS +26E3 ; Extended_Pictographic# 5.2 [1] (⛣️) HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE +26E4..26E7 ; Extended_Pictographic# 6.0 [4] (⛤️..⛧️) PENTAGRAM..INVERTED PENTAGRAM +26E8..26FF ; Extended_Pictographic# 5.2 [24] (⛨️..⛿️) BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE +2700 ; Extended_Pictographic# 7.0 [1] (✀️) BLACK SAFETY SCISSORS +2701..2704 ; Extended_Pictographic# 1.1 [4] (✁️..✄️) UPPER BLADE SCISSORS..WHITE SCISSORS +2705 ; Extended_Pictographic# 6.0 [1] (✅) white heavy check mark +2708..2709 ; Extended_Pictographic# 1.1 [2] (✈️..✉️) airplane..envelope +270A..270B ; Extended_Pictographic# 6.0 [2] (✊..✋) raised fist..raised hand +270C..2712 ; Extended_Pictographic# 1.1 [7] (✌️..✒️) victory hand..black nib +2714 ; Extended_Pictographic# 1.1 [1] (✔️) heavy check mark +2716 ; Extended_Pictographic# 1.1 [1] (✖️) heavy multiplication x +271D ; Extended_Pictographic# 1.1 [1] (✝️) latin cross +2721 ; Extended_Pictographic# 1.1 [1] (✡️) star of David +2728 ; Extended_Pictographic# 6.0 [1] (✨) sparkles +2733..2734 ; Extended_Pictographic# 1.1 [2] (✳️..✴️) eight-spoked asterisk..eight-pointed star +2744 ; Extended_Pictographic# 1.1 [1] (❄️) snowflake +2747 ; Extended_Pictographic# 1.1 [1] (❇️) sparkle +274C ; Extended_Pictographic# 6.0 [1] (❌) cross mark +274E ; Extended_Pictographic# 6.0 [1] (❎) cross mark button +2753..2755 ; Extended_Pictographic# 6.0 [3] (❓..❕) question mark..white exclamation mark +2757 ; Extended_Pictographic# 5.2 [1] (❗) exclamation mark +2763..2767 ; Extended_Pictographic# 1.1 [5] (❣️..❧️) heavy heart exclamation..ROTATED FLORAL HEART BULLET +2795..2797 ; Extended_Pictographic# 6.0 [3] (➕..➗) heavy plus sign..heavy division sign +27A1 ; Extended_Pictographic# 1.1 [1] (➡️) right arrow +27B0 ; Extended_Pictographic# 6.0 [1] (➰) curly loop +27BF ; Extended_Pictographic# 6.0 [1] (➿) double curly loop +2934..2935 ; Extended_Pictographic# 3.2 [2] (⤴️..⤵️) right arrow curving up..right arrow curving down +2B05..2B07 ; Extended_Pictographic# 4.0 [3] (⬅️..⬇️) left arrow..down arrow +2B1B..2B1C ; Extended_Pictographic# 5.1 [2] (⬛..⬜) black large square..white large square +2B50 ; Extended_Pictographic# 5.1 [1] (⭐) star +2B55 ; Extended_Pictographic# 5.2 [1] (⭕) heavy large circle +3030 ; Extended_Pictographic# 1.1 [1] (〰️) wavy dash +303D ; Extended_Pictographic# 3.2 [1] (〽️) part alternation mark +3297 ; Extended_Pictographic# 1.1 [1] (㊗️) Japanese “congratulations” button +3299 ; Extended_Pictographic# 1.1 [1] (㊙️) Japanese “secret” button +1F000..1F02B ; Extended_Pictographic# 5.1 [44] (🀀️..🀫️) MAHJONG TILE EAST WIND..MAHJONG TILE BACK +1F02C..1F02F ; Extended_Pictographic# NA [4] (🀬️..🀯️) .. +1F030..1F093 ; Extended_Pictographic# 5.1[100] (🀰️..🂓️) DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06 +1F094..1F09F ; Extended_Pictographic# NA [12] (🂔️..🂟️) .. +1F0A0..1F0AE ; Extended_Pictographic# 6.0 [15] (🂠️..🂮️) PLAYING CARD BACK..PLAYING CARD KING OF SPADES +1F0AF..1F0B0 ; Extended_Pictographic# NA [2] (🂯️..🂰️) .. +1F0B1..1F0BE ; Extended_Pictographic# 6.0 [14] (🂱️..🂾️) PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS +1F0BF ; Extended_Pictographic# 7.0 [1] (🂿️) PLAYING CARD RED JOKER +1F0C0 ; Extended_Pictographic# NA [1] (🃀️) +1F0C1..1F0CF ; Extended_Pictographic# 6.0 [15] (🃁️..🃏) PLAYING CARD ACE OF DIAMONDS..joker +1F0D0 ; Extended_Pictographic# NA [1] (🃐️) +1F0D1..1F0DF ; Extended_Pictographic# 6.0 [15] (🃑️..🃟️) PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER +1F0E0..1F0F5 ; Extended_Pictographic# 7.0 [22] (🃠️..🃵️) PLAYING CARD FOOL..PLAYING CARD TRUMP-21 +1F0F6..1F0FF ; Extended_Pictographic# NA [10] (🃶️..🃿️) .. +1F10D..1F10F ; Extended_Pictographic# NA [3] (🄍️..🄏️) .. +1F12F ; Extended_Pictographic# 11.0 [1] (🄯️) COPYLEFT SYMBOL +1F16C..1F16F ; Extended_Pictographic# NA [4] (🅬️..🅯️) .. +1F170..1F171 ; Extended_Pictographic# 6.0 [2] (🅰️..🅱️) A button (blood type)..B button (blood type) +1F17E ; Extended_Pictographic# 6.0 [1] (🅾️) O button (blood type) +1F17F ; Extended_Pictographic# 5.2 [1] (🅿️) P button +1F18E ; Extended_Pictographic# 6.0 [1] (🆎) AB button (blood type) +1F191..1F19A ; Extended_Pictographic# 6.0 [10] (🆑..🆚) CL button..VS button +1F1AD..1F1E5 ; Extended_Pictographic# NA [57] (🆭️..🇥️) .. +1F201..1F202 ; Extended_Pictographic# 6.0 [2] (🈁..🈂️) Japanese “here” button..Japanese “service charge” button +1F203..1F20F ; Extended_Pictographic# NA [13] (🈃️..🈏️) .. +1F21A ; Extended_Pictographic# 5.2 [1] (🈚) Japanese “free of charge” button +1F22F ; Extended_Pictographic# 5.2 [1] (🈯) Japanese “reserved” button +1F232..1F23A ; Extended_Pictographic# 6.0 [9] (🈲..🈺) Japanese “prohibited” button..Japanese “open for business” button +1F23C..1F23F ; Extended_Pictographic# NA [4] (🈼️..🈿️) .. +1F249..1F24F ; Extended_Pictographic# NA [7] (🉉️..🉏️) .. +1F250..1F251 ; Extended_Pictographic# 6.0 [2] (🉐..🉑) Japanese “bargain” button..Japanese “acceptable” button +1F252..1F25F ; Extended_Pictographic# NA [14] (🉒️..🉟️) .. +1F260..1F265 ; Extended_Pictographic# 10.0 [6] (🉠️..🉥️) ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI +1F266..1F2FF ; Extended_Pictographic# NA[154] (🉦️..🋿️) .. +1F300..1F320 ; Extended_Pictographic# 6.0 [33] (🌀..🌠) cyclone..shooting star +1F321..1F32C ; Extended_Pictographic# 7.0 [12] (🌡️..🌬️) thermometer..wind face +1F32D..1F32F ; Extended_Pictographic# 8.0 [3] (🌭..🌯) hot dog..burrito +1F330..1F335 ; Extended_Pictographic# 6.0 [6] (🌰..🌵) chestnut..cactus +1F336 ; Extended_Pictographic# 7.0 [1] (🌶️) hot pepper +1F337..1F37C ; Extended_Pictographic# 6.0 [70] (🌷..🍼) tulip..baby bottle +1F37D ; Extended_Pictographic# 7.0 [1] (🍽️) fork and knife with plate +1F37E..1F37F ; Extended_Pictographic# 8.0 [2] (🍾..🍿) bottle with popping cork..popcorn +1F380..1F393 ; Extended_Pictographic# 6.0 [20] (🎀..🎓) ribbon..graduation cap +1F394..1F39F ; Extended_Pictographic# 7.0 [12] (🎔️..🎟️) HEART WITH TIP ON THE LEFT..admission tickets +1F3A0..1F3C4 ; Extended_Pictographic# 6.0 [37] (🎠..🏄) carousel horse..person surfing +1F3C5 ; Extended_Pictographic# 7.0 [1] (🏅) sports medal +1F3C6..1F3CA ; Extended_Pictographic# 6.0 [5] (🏆..🏊) trophy..person swimming +1F3CB..1F3CE ; Extended_Pictographic# 7.0 [4] (🏋️..🏎️) person lifting weights..racing car +1F3CF..1F3D3 ; Extended_Pictographic# 8.0 [5] (🏏..🏓) cricket game..ping pong +1F3D4..1F3DF ; Extended_Pictographic# 7.0 [12] (🏔️..🏟️) snow-capped mountain..stadium +1F3E0..1F3F0 ; Extended_Pictographic# 6.0 [17] (🏠..🏰) house..castle +1F3F1..1F3F7 ; Extended_Pictographic# 7.0 [7] (🏱️..🏷️) WHITE PENNANT..label +1F3F8..1F3FA ; Extended_Pictographic# 8.0 [3] (🏸..🏺) badminton..amphora +1F400..1F43E ; Extended_Pictographic# 6.0 [63] (🐀..🐾) rat..paw prints +1F43F ; Extended_Pictographic# 7.0 [1] (🐿️) chipmunk +1F440 ; Extended_Pictographic# 6.0 [1] (👀) eyes +1F441 ; Extended_Pictographic# 7.0 [1] (👁️) eye +1F442..1F4F7 ; Extended_Pictographic# 6.0[182] (👂..📷) ear..camera +1F4F8 ; Extended_Pictographic# 7.0 [1] (📸) camera with flash +1F4F9..1F4FC ; Extended_Pictographic# 6.0 [4] (📹..📼) video camera..videocassette +1F4FD..1F4FE ; Extended_Pictographic# 7.0 [2] (📽️..📾️) film projector..PORTABLE STEREO +1F4FF ; Extended_Pictographic# 8.0 [1] (📿) prayer beads +1F500..1F53D ; Extended_Pictographic# 6.0 [62] (🔀..🔽) shuffle tracks button..downwards button +1F546..1F54A ; Extended_Pictographic# 7.0 [5] (🕆️..🕊️) WHITE LATIN CROSS..dove +1F54B..1F54F ; Extended_Pictographic# 8.0 [5] (🕋..🕏️) kaaba..BOWL OF HYGIEIA +1F550..1F567 ; Extended_Pictographic# 6.0 [24] (🕐..🕧) one o’clock..twelve-thirty +1F568..1F579 ; Extended_Pictographic# 7.0 [18] (🕨️..🕹️) RIGHT SPEAKER..joystick +1F57A ; Extended_Pictographic# 9.0 [1] (🕺) man dancing +1F57B..1F5A3 ; Extended_Pictographic# 7.0 [41] (🕻️..🖣️) LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX +1F5A4 ; Extended_Pictographic# 9.0 [1] (🖤) black heart +1F5A5..1F5FA ; Extended_Pictographic# 7.0 [86] (🖥️..🗺️) desktop computer..world map +1F5FB..1F5FF ; Extended_Pictographic# 6.0 [5] (🗻..🗿) mount fuji..moai +1F600 ; Extended_Pictographic# 6.1 [1] (😀) grinning face +1F601..1F610 ; Extended_Pictographic# 6.0 [16] (😁..😐) beaming face with smiling eyes..neutral face +1F611 ; Extended_Pictographic# 6.1 [1] (😑) expressionless face +1F612..1F614 ; Extended_Pictographic# 6.0 [3] (😒..😔) unamused face..pensive face +1F615 ; Extended_Pictographic# 6.1 [1] (😕) confused face +1F616 ; Extended_Pictographic# 6.0 [1] (😖) confounded face +1F617 ; Extended_Pictographic# 6.1 [1] (😗) kissing face +1F618 ; Extended_Pictographic# 6.0 [1] (😘) face blowing a kiss +1F619 ; Extended_Pictographic# 6.1 [1] (😙) kissing face with smiling eyes +1F61A ; Extended_Pictographic# 6.0 [1] (😚) kissing face with closed eyes +1F61B ; Extended_Pictographic# 6.1 [1] (😛) face with tongue +1F61C..1F61E ; Extended_Pictographic# 6.0 [3] (😜..😞) winking face with tongue..disappointed face +1F61F ; Extended_Pictographic# 6.1 [1] (😟) worried face +1F620..1F625 ; Extended_Pictographic# 6.0 [6] (😠..😥) angry face..sad but relieved face +1F626..1F627 ; Extended_Pictographic# 6.1 [2] (😦..😧) frowning face with open mouth..anguished face +1F628..1F62B ; Extended_Pictographic# 6.0 [4] (😨..😫) fearful face..tired face +1F62C ; Extended_Pictographic# 6.1 [1] (😬) grimacing face +1F62D ; Extended_Pictographic# 6.0 [1] (😭) loudly crying face +1F62E..1F62F ; Extended_Pictographic# 6.1 [2] (😮..😯) face with open mouth..hushed face +1F630..1F633 ; Extended_Pictographic# 6.0 [4] (😰..😳) anxious face with sweat..flushed face +1F634 ; Extended_Pictographic# 6.1 [1] (😴) sleeping face +1F635..1F640 ; Extended_Pictographic# 6.0 [12] (😵..🙀) dizzy face..weary cat face +1F641..1F642 ; Extended_Pictographic# 7.0 [2] (🙁..🙂) slightly frowning face..slightly smiling face +1F643..1F644 ; Extended_Pictographic# 8.0 [2] (🙃..🙄) upside-down face..face with rolling eyes +1F645..1F64F ; Extended_Pictographic# 6.0 [11] (🙅..🙏) person gesturing NO..folded hands +1F680..1F6C5 ; Extended_Pictographic# 6.0 [70] (🚀..🛅) rocket..left luggage +1F6C6..1F6CF ; Extended_Pictographic# 7.0 [10] (🛆️..🛏️) TRIANGLE WITH ROUNDED CORNERS..bed +1F6D0 ; Extended_Pictographic# 8.0 [1] (🛐) place of worship +1F6D1..1F6D2 ; Extended_Pictographic# 9.0 [2] (🛑..🛒) stop sign..shopping cart +1F6D3..1F6D4 ; Extended_Pictographic# 10.0 [2] (🛓️..🛔️) STUPA..PAGODA +1F6D5..1F6DF ; Extended_Pictographic# NA [11] (🛕️..🛟️) .. +1F6E0..1F6EC ; Extended_Pictographic# 7.0 [13] (🛠️..🛬) hammer and wrench..airplane arrival +1F6ED..1F6EF ; Extended_Pictographic# NA [3] (🛭️..🛯️) .. +1F6F0..1F6F3 ; Extended_Pictographic# 7.0 [4] (🛰️..🛳️) satellite..passenger ship +1F6F4..1F6F6 ; Extended_Pictographic# 9.0 [3] (🛴..🛶) kick scooter..canoe +1F6F7..1F6F8 ; Extended_Pictographic# 10.0 [2] (🛷..🛸) sled..flying saucer +1F6F9 ; Extended_Pictographic# 11.0 [1] (🛹) skateboard +1F6FA..1F6FF ; Extended_Pictographic# NA [6] (🛺️..🛿️) .. +1F774..1F77F ; Extended_Pictographic# NA [12] (🝴️..🝿️) .. +1F7D5..1F7D8 ; Extended_Pictographic# 11.0 [4] (🟕️..🟘️) CIRCLED TRIANGLE..NEGATIVE CIRCLED SQUARE +1F7D9..1F7FF ; Extended_Pictographic# NA [39] (🟙️..🟿️) .. +1F80C..1F80F ; Extended_Pictographic# NA [4] (🠌️..🠏️) .. +1F848..1F84F ; Extended_Pictographic# NA [8] (🡈️..🡏️) .. +1F85A..1F85F ; Extended_Pictographic# NA [6] (🡚️..🡟️) .. +1F888..1F88F ; Extended_Pictographic# NA [8] (🢈️..🢏️) .. +1F8AE..1F8FF ; Extended_Pictographic# NA [82] (🢮️..🣿️) .. +1F90C..1F90F ; Extended_Pictographic# NA [4] (🤌️..🤏️) .. +1F910..1F918 ; Extended_Pictographic# 8.0 [9] (🤐..🤘) zipper-mouth face..sign of the horns +1F919..1F91E ; Extended_Pictographic# 9.0 [6] (🤙..🤞) call me hand..crossed fingers +1F91F ; Extended_Pictographic# 10.0 [1] (🤟) love-you gesture +1F920..1F927 ; Extended_Pictographic# 9.0 [8] (🤠..🤧) cowboy hat face..sneezing face +1F928..1F92F ; Extended_Pictographic# 10.0 [8] (🤨..🤯) face with raised eyebrow..exploding head +1F930 ; Extended_Pictographic# 9.0 [1] (🤰) pregnant woman +1F931..1F932 ; Extended_Pictographic# 10.0 [2] (🤱..🤲) breast-feeding..palms up together +1F933..1F93A ; Extended_Pictographic# 9.0 [8] (🤳..🤺) selfie..person fencing +1F93C..1F93E ; Extended_Pictographic# 9.0 [3] (🤼..🤾) people wrestling..person playing handball +1F93F ; Extended_Pictographic# NA [1] (🤿️) +1F940..1F945 ; Extended_Pictographic# 9.0 [6] (🥀..🥅) wilted flower..goal net +1F947..1F94B ; Extended_Pictographic# 9.0 [5] (🥇..🥋) 1st place medal..martial arts uniform +1F94C ; Extended_Pictographic# 10.0 [1] (🥌) curling stone +1F94D..1F94F ; Extended_Pictographic# 11.0 [3] (🥍..🥏) lacrosse..flying disc +1F950..1F95E ; Extended_Pictographic# 9.0 [15] (🥐..🥞) croissant..pancakes +1F95F..1F96B ; Extended_Pictographic# 10.0 [13] (🥟..🥫) dumpling..canned food +1F96C..1F970 ; Extended_Pictographic# 11.0 [5] (🥬..🥰) leafy green..smiling face with 3 hearts +1F971..1F972 ; Extended_Pictographic# NA [2] (🥱️..🥲️) .. +1F973..1F976 ; Extended_Pictographic# 11.0 [4] (🥳..🥶) partying face..cold face +1F977..1F979 ; Extended_Pictographic# NA [3] (🥷️..🥹️) .. +1F97A ; Extended_Pictographic# 11.0 [1] (🥺) pleading face +1F97B ; Extended_Pictographic# NA [1] (🥻️) +1F97C..1F97F ; Extended_Pictographic# 11.0 [4] (🥼..🥿) lab coat..woman’s flat shoe +1F980..1F984 ; Extended_Pictographic# 8.0 [5] (🦀..🦄) crab..unicorn face +1F985..1F991 ; Extended_Pictographic# 9.0 [13] (🦅..🦑) eagle..squid +1F992..1F997 ; Extended_Pictographic# 10.0 [6] (🦒..🦗) giraffe..cricket +1F998..1F9A2 ; Extended_Pictographic# 11.0 [11] (🦘..🦢) kangaroo..swan +1F9A3..1F9AF ; Extended_Pictographic# NA [13] (🦣️..🦯️) .. +1F9B0..1F9B9 ; Extended_Pictographic# 11.0 [10] (🦰..🦹) red-haired..supervillain +1F9BA..1F9BF ; Extended_Pictographic# NA [6] (🦺️..🦿️) .. +1F9C0 ; Extended_Pictographic# 8.0 [1] (🧀) cheese wedge +1F9C1..1F9C2 ; Extended_Pictographic# 11.0 [2] (🧁..🧂) cupcake..salt +1F9C3..1F9CF ; Extended_Pictographic# NA [13] (🧃️..🧏️) .. +1F9D0..1F9E6 ; Extended_Pictographic# 10.0 [23] (🧐..🧦) face with monocle..socks +1F9E7..1F9FF ; Extended_Pictographic# 11.0 [25] (🧧..🧿) red envelope..nazar amulet +1FA00..1FA5F ; Extended_Pictographic# NA [96] (🨀️..🩟️) .. +1FA60..1FA6D ; Extended_Pictographic# 11.0 [14] (🩠️..🩭️) XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER +1FA6E..1FFFD ; Extended_Pictographic# NA[1424] (🩮️..🿽️) .. + +# Total elements: 3793 + +#EOF diff --git a/Project/Tools/whatsapp2csv.sh b/Project/Tools/whatsapp2csv.sh index 6583d4a..ad59d5d 100755 --- a/Project/Tools/whatsapp2csv.sh +++ b/Project/Tools/whatsapp2csv.sh @@ -77,7 +77,7 @@ perform_and_exit echo -e "date\ttime\tperson\tmessage" > "$OUTPUT" # 3. replace separators of whatsapp's txt-format with '\t' as separator for csv # 4. delete all double-quotes. Because people are too stupid to type them in pairs and that breaks some csv-interpreters 🤦‍♂ -perform_and_exit sed ':a;N;/\n[0-9]\{1,\}\+\//!s/\n/ /;ta;P;D' "$INPUT" | grep -v -E 'added|created|end-to-end|Media omitted' | sed 's/, /\t/1; s/- /\t/1; s/: /\t/1;' | tr -d '"' >> "$OUTPUT" +perform_and_exit sed ':a;N;/\n[0-9]\{1,\}\+\//!s/\n/ /;ta;P;D' "$INPUT" | grep -v -E 'left|added|created|end-to-end|Media omitted' | sed 's/, /\t/1; s/- /\t/1; s/: /\t/1;' | tr -d '"' >> "$OUTPUT" confirm_action From ef5422bb0c8ac594d02299f0c80eef4977903c80 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Sat, 19 May 2018 20:43:06 +0200 Subject: [PATCH 06/15] more emoji stuff --- Project/Tools/emoji tester.ipynb | 2590 +++--------------------------- Project/Tools/whatsapp2csv.sh | 2 +- 2 files changed, 180 insertions(+), 2412 deletions(-) diff --git a/Project/Tools/emoji tester.ipynb b/Project/Tools/emoji tester.ipynb index 1f3ad70..23f3462 100644 --- a/Project/Tools/emoji tester.ipynb +++ b/Project/Tools/emoji tester.ipynb @@ -7,7 +7,45 @@ "outputs": [], "source": [ "import pandas as pd\n", - "from IPython.display import clear_output, Markdown, Math" + "from IPython.display import clear_output, Markdown, Math\n", + "import ipywidgets as widgets\n", + "import os" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----\n", + "## file input stuff:\n", + "\n", + "* replace `test.txt` with your whatsapp log file" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================================================================\n", + "processing File: test.txt\n", + "================================================================================\n", + "================================================================================\n", + "successfully finished action: processing File: test.txt\n", + "================================================================================\n", + "================================================================================\n", + "Wrote output to test.txt.csv\n", + "================================================================================\n" + ] + } + ], + "source": [ + "%%bash\n", + "./whatsapp2csv.sh test.txt" ] }, { @@ -19,235 +57,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
datetimepersonmessage
010/18/1611:18Lena CartaHallo Jonas 😉
110/18/1611:21Jonas WeinzMoin moin ;) Vllt. bin ich aber gar nicht Jona...
210/18/1611:21Lena Carta😱🤕
310/18/1611:21Sonja Vorwerk🙈😂
410/18/1611:22Caner Ucar😂😂😂
510/18/1611:22Patrick (Arithmeum)hallo jeff
610/18/1611:22Caner UcarPatrick kein Handy am Empfang
710/18/1611:26Patrick (Arithmeum)halts maul und geh ma duschen
810/18/1611:34Simon (Arithmeum)Hab dich als Carsten abgespeichert, selber Schuld
910/18/1611:36Caner UcarPatrick ich hab geduscht mit Kristina und Sonja v
1010/18/1611:36Lena Cartaähm....
1110/18/1611:37Jonathan (Arithmeum)Caner benutzt das Damen-Bad
1210/18/1611:37Jonas WeinzLüg doch nicht, du tanzt die ganze Zeit aufm T...
1310/18/1611:37Jonathan (Arithmeum)bääh😱
1410/18/1611:40Patrick (Arithmeum)ja caner so ist das unter frauen..da geht man ...
1510/18/1612:02Thomas KoppelbergEeemmm was?
1610/18/1612:12Kristina StellwagThomas, du wolltest gestern ja nicht 😜
1710/18/1612:14Thomas KoppelbergIch wollte einiges, aber ich kann mich zurückh...
1810/18/1612:19Simon (Arithmeum)Genau 🙊
1910/18/1613:36Caner UcarSex
\n", - "
" - ], - "text/plain": [ - " date time person \\\n", - "0 10/18/16 11:18 Lena Carta \n", - "1 10/18/16 11:21 Jonas Weinz \n", - "2 10/18/16 11:21 Lena Carta \n", - "3 10/18/16 11:21 Sonja Vorwerk \n", - "4 10/18/16 11:22 Caner Ucar \n", - "5 10/18/16 11:22 Patrick (Arithmeum) \n", - "6 10/18/16 11:22 Caner Ucar \n", - "7 10/18/16 11:26 Patrick (Arithmeum) \n", - "8 10/18/16 11:34 Simon (Arithmeum) \n", - "9 10/18/16 11:36 Caner Ucar \n", - "10 10/18/16 11:36 Lena Carta \n", - "11 10/18/16 11:37 Jonathan (Arithmeum) \n", - "12 10/18/16 11:37 Jonas Weinz \n", - "13 10/18/16 11:37 Jonathan (Arithmeum) \n", - "14 10/18/16 11:40 Patrick (Arithmeum) \n", - "15 10/18/16 12:02 Thomas Koppelberg \n", - "16 10/18/16 12:12 Kristina Stellwag \n", - "17 10/18/16 12:14 Thomas Koppelberg \n", - "18 10/18/16 12:19 Simon (Arithmeum) \n", - "19 10/18/16 13:36 Caner Ucar \n", - "\n", - " message \n", - "0 Hallo Jonas 😉 \n", - "1 Moin moin ;) Vllt. bin ich aber gar nicht Jona... \n", - "2 😱🤕 \n", - "3 🙈😂 \n", - "4 😂😂😂 \n", - "5 hallo jeff \n", - "6 Patrick kein Handy am Empfang \n", - "7 halts maul und geh ma duschen \n", - "8 Hab dich als Carsten abgespeichert, selber Schuld \n", - "9 Patrick ich hab geduscht mit Kristina und Sonja v \n", - "10 ähm.... \n", - "11 Caner benutzt das Damen-Bad \n", - "12 Lüg doch nicht, du tanzt die ganze Zeit aufm T... \n", - "13 bääh😱 \n", - "14 ja caner so ist das unter frauen..da geht man ... \n", - "15 Eeemmm was? \n", - "16 Thomas, du wolltest gestern ja nicht 😜 \n", - "17 Ich wollte einiges, aber ich kann mich zurückh... \n", - "18 Genau 🙊 \n", - "19 Sex " - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "messages = pd.read_csv('test.csv', delimiter='\\t')\n", - "messages[:20]" + "messages = pd.read_csv('test.txt.csv', delimiter='\\t')\n", + "messages.head()" ] }, { @@ -259,7 +74,31 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "found existing emoji specification\n" + ] + } + ], + "source": [ + "%%bash\n", + "if [ ! -e emoji-data.txt ]\n", + "then\n", + " echo \"downloading emoji specification\"\n", + " wget https://www.unicode.org/Public/emoji/11.0/emoji-data.txt\n", + "else\n", + " echo \"found existing emoji specification\"\n", + "fi\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -268,428 +107,21 @@ " 0x1F3FC,\n", " 0x1F3FD,\n", " 0x1F3FE,\n", - " 0x1F3FF\n", + " 0x1F3FF,\n", + " 0x2642,\n", + " 0x2640\n", "])" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
unicodetype
228231A..231BEmoji_Presentation
22923E9..23ECEmoji_Presentation
23023F0Emoji_Presentation
23123F3Emoji_Presentation
23225FD..25FEEmoji_Presentation
2332614..2615Emoji_Presentation
2342648..2653Emoji_Presentation
235267FEmoji_Presentation
2362693Emoji_Presentation
23726A1Emoji_Presentation
23826AA..26ABEmoji_Presentation
23926BD..26BEEmoji_Presentation
24026C4..26C5Emoji_Presentation
24126CEEmoji_Presentation
24226D4Emoji_Presentation
24326EAEmoji_Presentation
24426F2..26F3Emoji_Presentation
24526F5Emoji_Presentation
24626FAEmoji_Presentation
24726FDEmoji_Presentation
2482705Emoji_Presentation
249270A..270BEmoji_Presentation
2502728Emoji_Presentation
251274CEmoji_Presentation
252274EEmoji_Presentation
2532753..2755Emoji_Presentation
2542757Emoji_Presentation
2552795..2797Emoji_Presentation
25627B0Emoji_Presentation
25727BFEmoji_Presentation
.........
3291F6F7..1F6F8Emoji_Presentation
3301F6F9Emoji_Presentation
3311F910..1F918Emoji_Presentation
3321F919..1F91EEmoji_Presentation
3331F91FEmoji_Presentation
3341F920..1F927Emoji_Presentation
3351F928..1F92FEmoji_Presentation
3361F930Emoji_Presentation
3371F931..1F932Emoji_Presentation
3381F933..1F93AEmoji_Presentation
3391F93C..1F93EEmoji_Presentation
3401F940..1F945Emoji_Presentation
3411F947..1F94BEmoji_Presentation
3421F94CEmoji_Presentation
3431F94D..1F94FEmoji_Presentation
3441F950..1F95EEmoji_Presentation
3451F95F..1F96BEmoji_Presentation
3461F96C..1F970Emoji_Presentation
3471F973..1F976Emoji_Presentation
3481F97AEmoji_Presentation
3491F97C..1F97FEmoji_Presentation
3501F980..1F984Emoji_Presentation
3511F985..1F991Emoji_Presentation
3521F992..1F997Emoji_Presentation
3531F998..1F9A2Emoji_Presentation
3541F9B0..1F9B9Emoji_Presentation
3551F9C0Emoji_Presentation
3561F9C1..1F9C2Emoji_Presentation
3571F9D0..1F9E6Emoji_Presentation
3581F9E7..1F9FFEmoji_Presentation
\n", - "

131 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " unicode type\n", - "228 231A..231B Emoji_Presentation\n", - "229 23E9..23EC Emoji_Presentation\n", - "230 23F0 Emoji_Presentation\n", - "231 23F3 Emoji_Presentation\n", - "232 25FD..25FE Emoji_Presentation\n", - "233 2614..2615 Emoji_Presentation\n", - "234 2648..2653 Emoji_Presentation\n", - "235 267F Emoji_Presentation\n", - "236 2693 Emoji_Presentation\n", - "237 26A1 Emoji_Presentation\n", - "238 26AA..26AB Emoji_Presentation\n", - "239 26BD..26BE Emoji_Presentation\n", - "240 26C4..26C5 Emoji_Presentation\n", - "241 26CE Emoji_Presentation\n", - "242 26D4 Emoji_Presentation\n", - "243 26EA Emoji_Presentation\n", - "244 26F2..26F3 Emoji_Presentation\n", - "245 26F5 Emoji_Presentation\n", - "246 26FA Emoji_Presentation\n", - "247 26FD Emoji_Presentation\n", - "248 2705 Emoji_Presentation\n", - "249 270A..270B Emoji_Presentation\n", - "250 2728 Emoji_Presentation\n", - "251 274C Emoji_Presentation\n", - "252 274E Emoji_Presentation\n", - "253 2753..2755 Emoji_Presentation\n", - "254 2757 Emoji_Presentation\n", - "255 2795..2797 Emoji_Presentation\n", - "256 27B0 Emoji_Presentation\n", - "257 27BF Emoji_Presentation\n", - ".. ... ...\n", - "329 1F6F7..1F6F8 Emoji_Presentation\n", - "330 1F6F9 Emoji_Presentation\n", - "331 1F910..1F918 Emoji_Presentation\n", - "332 1F919..1F91E Emoji_Presentation\n", - "333 1F91F Emoji_Presentation\n", - "334 1F920..1F927 Emoji_Presentation\n", - "335 1F928..1F92F Emoji_Presentation\n", - "336 1F930 Emoji_Presentation\n", - "337 1F931..1F932 Emoji_Presentation\n", - "338 1F933..1F93A Emoji_Presentation\n", - "339 1F93C..1F93E Emoji_Presentation\n", - "340 1F940..1F945 Emoji_Presentation\n", - "341 1F947..1F94B Emoji_Presentation\n", - "342 1F94C Emoji_Presentation\n", - "343 1F94D..1F94F Emoji_Presentation\n", - "344 1F950..1F95E Emoji_Presentation\n", - "345 1F95F..1F96B Emoji_Presentation\n", - "346 1F96C..1F970 Emoji_Presentation\n", - "347 1F973..1F976 Emoji_Presentation\n", - "348 1F97A Emoji_Presentation\n", - "349 1F97C..1F97F Emoji_Presentation\n", - "350 1F980..1F984 Emoji_Presentation\n", - "351 1F985..1F991 Emoji_Presentation\n", - "352 1F992..1F997 Emoji_Presentation\n", - "353 1F998..1F9A2 Emoji_Presentation\n", - "354 1F9B0..1F9B9 Emoji_Presentation\n", - "355 1F9C0 Emoji_Presentation\n", - "356 1F9C1..1F9C2 Emoji_Presentation\n", - "357 1F9D0..1F9E6 Emoji_Presentation\n", - "358 1F9E7..1F9FF Emoji_Presentation\n", - "\n", - "[131 rows x 2 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "emoji_data = pd.read_csv('emoji-data.txt', delimiter=';', comment='#', names=[\"unicode\",\"type\"])\n", "emoji_data['type'] = emoji_data['type'].str.strip()\n", - "emoji_data = emoji_data[emoji_data['type'] == \"Emoji_Presentation\"]\n", - "emoji_data" + "emoji_data = emoji_data[emoji_data['type'] == \"Emoji_Presentation\"]" ] }, { @@ -701,7 +133,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -710,7 +142,7 @@ "True" ] }, - "execution_count": 5, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -721,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -735,7 +167,7 @@ "Name: unicode, dtype: object" ] }, - "execution_count": 6, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -754,9 +186,52 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "**used Emojis:**" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'🀄\\U0001f9f1\\U0001f9f2\\U0001f9f3\\U0001f9f4\\U0001f9f5\\U0001f9f6🃏🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞\\U0001f91f🤠🤡🤢🤣🤤🤥🤦🤧\\U0001f928\\U0001f929\\U0001f92a\\U0001f92b\\U0001f92c\\U0001f92d\\U0001f92e\\U0001f92f🤰\\U0001f931\\U0001f932🤳🤴🤵🤶🤷🤸🤹🤺🤼🤽🤾🥀🥁🥂🥃🥄🥅🥇🥈🥉🥊🥋\\U0001f94c\\U0001f94d\\U0001f94e\\U0001f94f🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛🥜🥝🥞\\U0001f95f\\U0001f960\\U0001f961\\U0001f962\\U0001f963\\U0001f964\\U0001f965\\U0001f966\\U0001f967\\U0001f968\\U0001f969\\U0001f96a\\U0001f96b\\U0001f96c\\U0001f96d\\U0001f96e\\U0001f96f\\U0001f970\\U0001f9ec\\U0001f9ed\\U0001f973\\U0001f974\\U0001f975\\U0001f976\\U0001f9ee\\U0001f97a\\U0001f9ef\\U0001f97c\\U0001f97d\\U0001f97e\\U0001f97f🦀🦁🦂🦃🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🆎🦎🦏🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚\\U0001f992\\U0001f993\\U0001f994\\U0001f995\\U0001f996\\U0001f997\\U0001f998\\U0001f999\\U0001f99a\\U0001f99b\\U0001f99c\\U0001f99d\\U0001f99e\\U0001f99f\\U0001f9a0\\U0001f9a1\\U0001f9a2\\U0001f9f8\\U0001f9b0\\U0001f9b1\\U0001f9b2\\U0001f9b3\\U0001f9b4\\U0001f9b5\\U0001f9b6\\U0001f9b7\\U0001f9b8\\U0001f9b9🧀\\U0001f9c1\\U0001f9c2\\U0001f9d0\\U0001f9d1\\U0001f9d2\\U0001f9d3\\U0001f9d4\\U0001f9d5\\U0001f9d6\\U0001f9d7\\U0001f9d8\\U0001f9d9\\U0001f9da\\U0001f9db\\U0001f9dc\\U0001f9dd\\U0001f9de\\U0001f9df\\U0001f9e0\\U0001f9e1\\U0001f9e2\\U0001f9e3\\U0001f9e4\\U0001f9e5🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿\\U0001f9f7🈁\\U0001f9f9\\U0001f9fa\\U0001f9fb\\U0001f9fc\\U0001f9fd\\U0001f9fe\\U0001f9ff🈚🈯🈲🈳🈴🈵🈶🈸🈹🈺🉐🉑🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙⌚⌛⬛⬜🌚🌛🌜🌝🌞🌟🌠🌭🌮🌯🌰🌱🌲🌳🌴🌵🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏⭐🍐🍑🍒🍓⭕🍔🍕🍖🍗🍘🍙🍚🍛🍜🍟🍝🍞🍠🍡🍤🍢🍣🍥🍦🍩🍧🍨🍪🍫🍮🍬🍭🍯🍰🍳🍱🍲🍴🍵🍸🍶🍷🍹🍺🍻🍼🍾🍿🎀🎁🎂🎃🎅🎄🎆🎈🎉🎊🎋🎌🎍🎇🎏🎐🎎🎑🎒🎓🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏏🏐🏑🏒🏓🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰⏩⏪⏫🏴⏬⏰⏳🏸🏹🏺🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾👀👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼💽💾💿📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙📚📛📜📝📞📟📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📿🔀🔁🔂🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔟🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🔴🔵🔶🔷🔸🔹🔺🔻🔼🔽🕋🕌🕍🕎🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜🕝🕞🕟🕠🕡🕢🕣🕤🕥🕦🕧🕺🖕🖖🖤🗻🗼◽◾🗽🗾🗿😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑☔☕😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃♈♉♊♋♌♍♎♏♐♑♒♓🙋🙌🙍🙎🙏♿🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒⚓🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟⚡🚠🚡🚢🚣🚤🚥🚦🚧⚪⚫🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸⚽⚾🚹🚺🚻🚼🚽⛄⛅🚾🚿🛀🛁🛂🛃🛄🛅⛎🛌🛐🛑🛒⛔⛪🛫🛬⛲⛳🛴⛵🛵🛶\\U0001f6f7\\U0001f6f8⛺\\U0001f6f9⛽✅\\U0001f9e6🙄✊✋🙅🙆🙇🙈\\U0001f9e7🙉🙊✨\\U0001f9e8❌❎\\U0001f9e9❓❔❕❗\\U0001f9ea\\U0001f9eb➕➖➗🦐🦑➰➿\\U0001f9f0'" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "**blacklisted Emojis:**" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "'♀♂🏻🏼🏽🏾🏿'" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "emoji_code_list = []\n", "for entry in emoji_codes:\n", @@ -771,12 +246,16 @@ " # single entry\n", " if i not in emoji_blacklist:\n", " emoji_code_list.append(int(entry,16))\n", - "emoji_code_set = set(emoji_code_list)" + "emoji_code_set = set(emoji_code_list)\n", + "display(Markdown(\"**used Emojis:**\"))\n", + "display(\"\".join([chr(x) for x in emoji_code_set]))\n", + "display(Markdown(\"**blacklisted Emojis:**\"))\n", + "display(\"\".join([chr(x) for x in emoji_blacklist]))" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -801,7 +280,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -810,276 +289,30 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "for i in messages.index:\n", " emoji_list = []\n", - " to_remove = []\n", " m = messages.iloc[i]['message']\n", + " m_new = \"\"\n", " for c in str(m):\n", " if ord(c) in emoji_code_set:\n", " emoji_list.append(c)\n", - " elif ord(c) in emoji_blacklist:\n", - " to_remove.append(c)\n", + " elif ord(c) not in emoji_blacklist:\n", + " m_new += c\n", " \n", - " messages.loc[i,'emojis'] = emoji_list\n", + " messages.loc[i,'emojis'] = set(emoji_list)\n", " #remove emiójis from message\n", - " for e in (emoji_list + to_remove):\n", - " m = m.replace(e,\"\")\n", - " messages.loc[i,'message'] = m\n" + " messages.loc[i,'message'] = m_new\n" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
datetimepersonmessageemojis
010/18/1611:18Lena CartaHallo Jonas[😉]
110/18/1611:21Jonas WeinzMoin moin ;) Vllt. bin ich aber gar nicht Jona...[🤔]
210/18/1611:21Lena Carta[😱, 🤕]
310/18/1611:21Sonja Vorwerk[🙈, 😂]
410/18/1611:22Caner Ucar[😂, 😂, 😂]
510/18/1611:22Patrick (Arithmeum)hallo jeff[]
610/18/1611:22Caner UcarPatrick kein Handy am Empfang[]
710/18/1611:26Patrick (Arithmeum)halts maul und geh ma duschen[]
810/18/1611:34Simon (Arithmeum)Hab dich als Carsten abgespeichert, selber Schuld[]
910/18/1611:36Caner UcarPatrick ich hab geduscht mit Kristina und Sonja v[]
1010/18/1611:36Lena Cartaähm....[]
1110/18/1611:37Jonathan (Arithmeum)Caner benutzt das Damen-Bad[]
1210/18/1611:37Jonas WeinzLüg doch nicht, du tanzt die ganze Zeit aufm T...[]
1310/18/1611:37Jonathan (Arithmeum)bääh[😱]
1410/18/1611:40Patrick (Arithmeum)ja caner so ist das unter frauen..da geht man ...[]
1510/18/1612:02Thomas KoppelbergEeemmm was?[]
1610/18/1612:12Kristina StellwagThomas, du wolltest gestern ja nicht[😜]
1710/18/1612:14Thomas KoppelbergIch wollte einiges, aber ich kann mich zurückh...[]
1810/18/1612:19Simon (Arithmeum)Genau[🙊]
1910/18/1613:36Caner UcarSex[]
\n", - "
" - ], - "text/plain": [ - " date time person \\\n", - "0 10/18/16 11:18 Lena Carta \n", - "1 10/18/16 11:21 Jonas Weinz \n", - "2 10/18/16 11:21 Lena Carta \n", - "3 10/18/16 11:21 Sonja Vorwerk \n", - "4 10/18/16 11:22 Caner Ucar \n", - "5 10/18/16 11:22 Patrick (Arithmeum) \n", - "6 10/18/16 11:22 Caner Ucar \n", - "7 10/18/16 11:26 Patrick (Arithmeum) \n", - "8 10/18/16 11:34 Simon (Arithmeum) \n", - "9 10/18/16 11:36 Caner Ucar \n", - "10 10/18/16 11:36 Lena Carta \n", - "11 10/18/16 11:37 Jonathan (Arithmeum) \n", - "12 10/18/16 11:37 Jonas Weinz \n", - "13 10/18/16 11:37 Jonathan (Arithmeum) \n", - "14 10/18/16 11:40 Patrick (Arithmeum) \n", - "15 10/18/16 12:02 Thomas Koppelberg \n", - "16 10/18/16 12:12 Kristina Stellwag \n", - "17 10/18/16 12:14 Thomas Koppelberg \n", - "18 10/18/16 12:19 Simon (Arithmeum) \n", - "19 10/18/16 13:36 Caner Ucar \n", - "\n", - " message emojis \n", - "0 Hallo Jonas [😉] \n", - "1 Moin moin ;) Vllt. bin ich aber gar nicht Jona... [🤔] \n", - "2 [😱, 🤕] \n", - "3 [🙈, 😂] \n", - "4 [😂, 😂, 😂] \n", - "5 hallo jeff [] \n", - "6 Patrick kein Handy am Empfang [] \n", - "7 halts maul und geh ma duschen [] \n", - "8 Hab dich als Carsten abgespeichert, selber Schuld [] \n", - "9 Patrick ich hab geduscht mit Kristina und Sonja v [] \n", - "10 ähm.... [] \n", - "11 Caner benutzt das Damen-Bad [] \n", - "12 Lüg doch nicht, du tanzt die ganze Zeit aufm T... [] \n", - "13 bääh [😱] \n", - "14 ja caner so ist das unter frauen..da geht man ... [] \n", - "15 Eeemmm was? [] \n", - "16 Thomas, du wolltest gestern ja nicht [😜] \n", - "17 Ich wollte einiges, aber ich kann mich zurückh... [] \n", - "18 Genau [🙊] \n", - "19 Sex [] " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "messages[:20]" ] @@ -1093,7 +326,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -1103,728 +336,9 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
datetimepersonmessageemojis
010/18/1611:18Lena CartaHallo Jonas[😉]
110/18/1611:21Jonas WeinzMoin moin ;) Vllt. bin ich aber gar nicht Jona...[🤔]
1310/18/1611:37Jonathan (Arithmeum)bääh[😱]
1610/18/1612:12Kristina StellwagThomas, du wolltest gestern ja nicht[😜]
1810/18/1612:19Simon (Arithmeum)Genau[🙊]
2910/18/1618:38Lena Cartawas du bist morgen nicht da ???[😱, 😯, 😔]
3110/18/1618:39Lena Cartaich dachte diese Woche komplett noch. Aber gut...[😇]
3210/18/1618:40Kristina StellwagNee das Semester hat doch angefangen[😜]
3310/18/1618:42Lena Cartaja hatte ich gerade vergessen . Dabei hatte ic...[😂, 😶]
4110/20/1612:50Steffi (Arithmeum)Klar[👹]
4410/20/1617:54Steffi (Arithmeum)Mein Zug lässt sich auch heute Zeit[😞]
4510/20/1618:08Steffi (Arithmeum)Wir fangen doch wahrscheinlich nicht vor halb ...[😳]
5110/20/1620:58Anna BorutzkyIst das dein Ernst?[🙄]
5210/20/1620:58Patrick (Arithmeum)Habs voll vercheckt sry ..gerade erst gemerkt[🙄]
7010/20/1622:59Jonathan (Arithmeum)Ich bitte darum Caner....[😍, 😍, 😍]
7810/25/1601:03Caner UcarHaaaaaalloooo[🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 😏, 🤗, 🤗, 😏]
7910/25/1601:04Michael (Arithmeum)Keine sorge, das hat bei dir nichts mit der St...[😉]
8810/25/1609:02Lena Cartaich wollte eigentlich schon da sein, aber ich ...[😇]
8910/25/1609:04Jonathan (Arithmeum)SIIIIEG...⚔[🎉]
9010/25/1610:00Lena Cartabesser spät als nie. ich bin immerhin auf dem ...[😁]
9310/25/1621:49Jonathan (Arithmeum)Ich nicht[😄]
9410/25/1621:50Lena Cartaich auch nicht[😳]
9510/25/1622:13Konstantin (Arithmeum)Wer hat den zuletzt was laminiert? lena und i...[🤔]
9610/25/1623:28Caner UcarIch auch nicht[🤔]
10210/27/1614:43Sonja Vorwerkhm müsste das am besten heute schon wissen...w...[🙈, 😄]
11510/28/1608:32Lena CartaGuten Morgen liebe Kollegen, könnte einer von ...[🙁]
11610/28/1609:48Lena CartaIst noch niemand im Büro?[😇]
11710/28/1609:50Caner Ucar10:10 ca.[🙌]
11810/28/1609:51Caner UcarWann hat das woki geöffnet[😄]
12110/28/1610:54Lena CartaDa hätte ich jetzt auch nicht gesucht[😝]
..................
86635/9/1817:42Jonas Weinzmehrere Bürostühle hintereinander?[🤔]
86655/9/1817:43Lena CartaWollte Kristina das nicht immer schonmal machen[😁]
86755/10/1814:06Lena KlöcknerErledigt[👍]
86765/10/1814:07Caner UcarDanke[😊]
86775/10/1814:23Anna ZensIch hatte es auch schon erledigt[😄]
86785/11/1808:16Lena CartaGute morgen, ich habe gesehen neben dem Buch l...[🙂]
86795/11/1808:25Anna ZensDie handschriftlichen sind die, von denen kein...[😄]
86805/11/1808:26Lena Cartaachso ich denke mal dann wird sich Ingo melden[😀, 😀]
86815/11/1813:18Freya (Arithmeum)Mein Kalender funktioniert nicht - könnte mir ...[🤔]
86825/12/1814:53Freya (Arithmeum)Könnte jemand für Montag Abend zwei Karten für...[😇]
86835/12/1815:05Anna BorutzkyUnd eine Freikarte für Sonja bitte![😀]
86895/12/1815:16Lena CartaDanke Wieso kommen solche Fragen immer am Woc...[😀]
86925/12/1815:17Anna BorutzkyMurphy‘s Gesetz?[😉]
86935/12/1815:17Caner UcarCool[😍]
86955/12/1815:23Jonas Weinz...und die kommt auf Annas Tisch[😉]
86965/12/1815:23Freya (Arithmeum)Vielen, vielen Dank ☺ Sowas passiert immer am ...[🙈]
86975/12/1815:23Lena CartaDas war nicht auf dich bezogen .[😀]
86985/12/1815:24Freya (Arithmeum)Na gut[😄]
86995/12/1815:24Lena CartaEigentlich ist es halbwegs entspannt heute Ic...[😀, 😛]
87005/12/1815:25Freya (Arithmeum)Es gibt keine doofen Fragen[😋]
87025/12/1815:25Lena Cartahttps://www.youtube.com/watch?v=uPHi5xn_q5c[😛]
87085/12/1817:56Freya (Arithmeum)Ich möchte arbeiten und habe mega Bock drauf! ...[😇]
87195/12/1820:09Lena Cartabin leider verabredet .... mit Thilo[😬, 🤗]
87255/13/1817:24Thomas Koppelberg[😍]
87265/14/1817:00Sonja SchäferKann mir jemand noch eine zweite Freikarte res...[😊]
87395/14/1822:40Jonas WeinzHab Ingo beim vorbeilaufenden nicht gesehen, h...[💁]
87445/15/1817:16Caner Ucar‍♀[🤷]
87555/17/1810:43Lena Cartasuper perfekt dann ist beiden geholfen[🙂, 😎]
87595/17/1810:43Lena Cartaob das so sinnvoll ist?[😀]
87635/17/1810:45Lena Cartaich dachte es ging konkret um den Termin[😀]
\n", - "

2455 rows × 5 columns

\n", - "
" - ], - "text/plain": [ - " date time person \\\n", - "0 10/18/16 11:18 Lena Carta \n", - "1 10/18/16 11:21 Jonas Weinz \n", - "13 10/18/16 11:37 Jonathan (Arithmeum) \n", - "16 10/18/16 12:12 Kristina Stellwag \n", - "18 10/18/16 12:19 Simon (Arithmeum) \n", - "29 10/18/16 18:38 Lena Carta \n", - "31 10/18/16 18:39 Lena Carta \n", - "32 10/18/16 18:40 Kristina Stellwag \n", - "33 10/18/16 18:42 Lena Carta \n", - "41 10/20/16 12:50 Steffi (Arithmeum) \n", - "44 10/20/16 17:54 Steffi (Arithmeum) \n", - "45 10/20/16 18:08 Steffi (Arithmeum) \n", - "51 10/20/16 20:58 Anna Borutzky \n", - "52 10/20/16 20:58 Patrick (Arithmeum) \n", - "70 10/20/16 22:59 Jonathan (Arithmeum) \n", - "78 10/25/16 01:03 Caner Ucar \n", - "79 10/25/16 01:04 Michael (Arithmeum) \n", - "88 10/25/16 09:02 Lena Carta \n", - "89 10/25/16 09:04 Jonathan (Arithmeum) \n", - "90 10/25/16 10:00 Lena Carta \n", - "93 10/25/16 21:49 Jonathan (Arithmeum) \n", - "94 10/25/16 21:50 Lena Carta \n", - "95 10/25/16 22:13 Konstantin (Arithmeum) \n", - "96 10/25/16 23:28 Caner Ucar \n", - "102 10/27/16 14:43 Sonja Vorwerk \n", - "115 10/28/16 08:32 Lena Carta \n", - "116 10/28/16 09:48 Lena Carta \n", - "117 10/28/16 09:50 Caner Ucar \n", - "118 10/28/16 09:51 Caner Ucar \n", - "121 10/28/16 10:54 Lena Carta \n", - "... ... ... ... \n", - "8663 5/9/18 17:42 Jonas Weinz \n", - "8665 5/9/18 17:43 Lena Carta \n", - "8675 5/10/18 14:06 Lena Klöckner \n", - "8676 5/10/18 14:07 Caner Ucar \n", - "8677 5/10/18 14:23 Anna Zens \n", - "8678 5/11/18 08:16 Lena Carta \n", - "8679 5/11/18 08:25 Anna Zens \n", - "8680 5/11/18 08:26 Lena Carta \n", - "8681 5/11/18 13:18 Freya (Arithmeum) \n", - "8682 5/12/18 14:53 Freya (Arithmeum) \n", - "8683 5/12/18 15:05 Anna Borutzky \n", - "8689 5/12/18 15:16 Lena Carta \n", - "8692 5/12/18 15:17 Anna Borutzky \n", - "8693 5/12/18 15:17 Caner Ucar \n", - "8695 5/12/18 15:23 Jonas Weinz \n", - "8696 5/12/18 15:23 Freya (Arithmeum) \n", - "8697 5/12/18 15:23 Lena Carta \n", - "8698 5/12/18 15:24 Freya (Arithmeum) \n", - "8699 5/12/18 15:24 Lena Carta \n", - "8700 5/12/18 15:25 Freya (Arithmeum) \n", - "8702 5/12/18 15:25 Lena Carta \n", - "8708 5/12/18 17:56 Freya (Arithmeum) \n", - "8719 5/12/18 20:09 Lena Carta \n", - "8725 5/13/18 17:24 Thomas Koppelberg \n", - "8726 5/14/18 17:00 Sonja Schäfer \n", - "8739 5/14/18 22:40 Jonas Weinz \n", - "8744 5/15/18 17:16 Caner Ucar \n", - "8755 5/17/18 10:43 Lena Carta \n", - "8759 5/17/18 10:43 Lena Carta \n", - "8763 5/17/18 10:45 Lena Carta \n", - "\n", - " message \\\n", - "0 Hallo Jonas \n", - "1 Moin moin ;) Vllt. bin ich aber gar nicht Jona... \n", - "13 bääh \n", - "16 Thomas, du wolltest gestern ja nicht \n", - "18 Genau \n", - "29 was du bist morgen nicht da ??? \n", - "31 ich dachte diese Woche komplett noch. Aber gut... \n", - "32 Nee das Semester hat doch angefangen \n", - "33 ja hatte ich gerade vergessen . Dabei hatte ic... \n", - "41 Klar \n", - "44 Mein Zug lässt sich auch heute Zeit \n", - "45 Wir fangen doch wahrscheinlich nicht vor halb ... \n", - "51 Ist das dein Ernst? \n", - "52 Habs voll vercheckt sry ..gerade erst gemerkt \n", - "70 Ich bitte darum Caner.... \n", - "78 Haaaaaalloooo \n", - "79 Keine sorge, das hat bei dir nichts mit der St... \n", - "88 ich wollte eigentlich schon da sein, aber ich ... \n", - "89 SIIIIEG...⚔ \n", - "90 besser spät als nie. ich bin immerhin auf dem ... \n", - "93 Ich nicht \n", - "94 ich auch nicht \n", - "95 Wer hat den zuletzt was laminiert? lena und i... \n", - "96 Ich auch nicht \n", - "102 hm müsste das am besten heute schon wissen...w... \n", - "115 Guten Morgen liebe Kollegen, könnte einer von ... \n", - "116 Ist noch niemand im Büro? \n", - "117 10:10 ca. \n", - "118 Wann hat das woki geöffnet \n", - "121 Da hätte ich jetzt auch nicht gesucht \n", - "... ... \n", - "8663 mehrere Bürostühle hintereinander? \n", - "8665 Wollte Kristina das nicht immer schonmal machen \n", - "8675 Erledigt \n", - "8676 Danke \n", - "8677 Ich hatte es auch schon erledigt \n", - "8678 Gute morgen, ich habe gesehen neben dem Buch l... \n", - "8679 Die handschriftlichen sind die, von denen kein... \n", - "8680 achso ich denke mal dann wird sich Ingo melden \n", - "8681 Mein Kalender funktioniert nicht - könnte mir ... \n", - "8682 Könnte jemand für Montag Abend zwei Karten für... \n", - "8683 Und eine Freikarte für Sonja bitte! \n", - "8689 Danke Wieso kommen solche Fragen immer am Woc... \n", - "8692 Murphy‘s Gesetz? \n", - "8693 Cool \n", - "8695 ...und die kommt auf Annas Tisch \n", - "8696 Vielen, vielen Dank ☺ Sowas passiert immer am ... \n", - "8697 Das war nicht auf dich bezogen . \n", - "8698 Na gut \n", - "8699 Eigentlich ist es halbwegs entspannt heute Ic... \n", - "8700 Es gibt keine doofen Fragen \n", - "8702 https://www.youtube.com/watch?v=uPHi5xn_q5c \n", - "8708 Ich möchte arbeiten und habe mega Bock drauf! ... \n", - "8719 bin leider verabredet .... mit Thilo \n", - "8725 ♥ \n", - "8726 Kann mir jemand noch eine zweite Freikarte res... \n", - "8739 Hab Ingo beim vorbeilaufenden nicht gesehen, h... \n", - "8744 ‍♀ \n", - "8755 super perfekt dann ist beiden geholfen \n", - "8759 ob das so sinnvoll ist? \n", - "8763 ich dachte es ging konkret um den Termin \n", - "\n", - " emojis \n", - "0 [😉] \n", - "1 [🤔] \n", - "13 [😱] \n", - "16 [😜] \n", - "18 [🙊] \n", - "29 [😱, 😯, 😔] \n", - "31 [😇] \n", - "32 [😜] \n", - "33 [😂, 😶] \n", - "41 [👹] \n", - "44 [😞] \n", - "45 [😳] \n", - "51 [🙄] \n", - "52 [🙄] \n", - "70 [😍, 😍, 😍] \n", - "78 [🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 🤗, 😏, 🤗, 🤗, 😏] \n", - "79 [😉] \n", - "88 [😇] \n", - "89 [🎉] \n", - "90 [😁] \n", - "93 [😄] \n", - "94 [😳] \n", - "95 [🤔] \n", - "96 [🤔] \n", - "102 [🙈, 😄] \n", - "115 [🙁] \n", - "116 [😇] \n", - "117 [🙌] \n", - "118 [😄] \n", - "121 [😝] \n", - "... ... \n", - "8663 [🤔] \n", - "8665 [😁] \n", - "8675 [👍] \n", - "8676 [😊] \n", - "8677 [😄] \n", - "8678 [🙂] \n", - "8679 [😄] \n", - "8680 [😀, 😀] \n", - "8681 [🤔] \n", - "8682 [😇] \n", - "8683 [😀] \n", - "8689 [😀] \n", - "8692 [😉] \n", - "8693 [😍] \n", - "8695 [😉] \n", - "8696 [🙈] \n", - "8697 [😀] \n", - "8698 [😄] \n", - "8699 [😀, 😛] \n", - "8700 [😋] \n", - "8702 [😛] \n", - "8708 [😇] \n", - "8719 [😬, 🤗] \n", - "8725 [😍] \n", - "8726 [😊] \n", - "8739 [💁] \n", - "8744 [🤷] \n", - "8755 [🙂, 😎] \n", - "8759 [😀] \n", - "8763 [😀] \n", - "\n", - "[2455 rows x 5 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "display(emoji_messages)" ] @@ -1839,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -1847,36 +361,8 @@ "import itertools\n", "import sklearn.utils as sku\n", "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n", - "from sklearn.model_selection import train_test_split" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "labels=[e[-1] for e in emoji_messages['emojis']]" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['😉', '🤔', '😱', '😜', '🙊', '😔', '😇', '😜', '😶', '👹']" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "labels[:10]" + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import MultiLabelBinarizer" ] }, { @@ -1884,13 +370,31 @@ "execution_count": 17, "metadata": {}, "outputs": [], + "source": [ + "mlb = MultiLabelBinarizer()\n", + "\n", + "labels=mlb.fit_transform(emoji_messages['emojis'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], "source": [ "X1, Xt1, y1, yt1 = train_test_split(emoji_messages['message'], labels, test_size=0.1, random_state=4222)" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -1901,782 +405,46 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/jonas/.local/lib/python3.6/site-packages/sklearn/neural_network/multilayer_perceptron.py:564: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n", - " % self.max_iter, ConvergenceWarning)\n" - ] - }, - { - "data": { - "text/plain": [ - "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", - " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", - " hidden_layer_sizes=(100,), learning_rate='constant',\n", - " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", - " nesterovs_momentum=True, power_t=0.5, random_state=None,\n", - " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", - " verbose=False, warm_start=False)" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier as RFC\n", "from sklearn.neural_network import MLPClassifier as MLP\n", "from sklearn.naive_bayes import MultinomialNB as MNB\n", - "#clf_a = RFC(criterion='entropy', random_state=4222)\n", - "clf_a = MLP()\n", + "from sklearn.multiclass import OneVsRestClassifier as OVRC\n", + "#clf_a = OVRC(RFC(criterion='entropy', random_state=4222))\n", + "clf_a = OVRC(MLP(hidden_layer_sizes=(10,)))\n", + "#clf_a = OVRC(MNB())\n", "clf_a.fit(vec_train, y1)" ] }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "pred = clf_a.predict(vectorizer.transform(Xt1))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
messagepredtrainedemojis
8663mehrere Bürostühle hintereinander?🙈🤔[🤔]
1862Ich will auch Essen😉😞[😞]
39212x orange🙂🙂[🙂]
2222Man soll auch keine Lernsachen da lassen😀😀[😀]
761Wir können auch gerne wieder bei mir zusammen ...😇😉[😉]
3600Hab den Bus verpasst, den ich eigentlich nehme...😟👸[👸]
1794Klaro, gerne😎🙂[🙂]
861Sehr gut, Jan! Wenn sich noch jemand melden wü...😘😇[😇]
1469Jaaa aber mein Mitbewohner ist messy😬🙊[😱, 😔, 🌚, 🙊]
6254Hallöchen Es hat ein Herr angerufen, der gern...💁🙂[🙂]
7968Iwo🤦😂[😂]
8102Keine Ahnung wer da haariger ist😅🧐[🧐]
6835Danke😊😊[😊]
7135Wurde bestimmt von Big Bang geklaut🤷😂[😂, 😂, 😂]
4556Ich kann leider nicht, aber arbeiten da nicht ...😂😀[😀]
6705Ist von heute, aber halt 3x in englisch😇🙄[🙄]
2058..🤦😅[😅]
2072Oder fang endlich mal wieder an, was fürs Stud...😄😈[😈]
756Ich hab vom letzten Jahr noch ein Trauma😂😆[😆]
5966Ist Freitag schon Wochenende?😍🤔[🤔]
7007Wenn wir die Klimaanlage im Museum ausschalten...🤔🤪[🤪]
6968Ein Vorbild für uns alle🤔🤩[🤩]
5665Kein Problem. Du kannst mich eintragen.🙂🙂[🙂]
2641Jonas, du bist gelb markiert! Du kannst keine ...😉🙃[🙃]
1981Da bin ich mir sehr sicher!😘😄[😄]
3334Das wäre auf jeden Fall hilfreich! Danke😍🙂[🙂]
4447Ist das Schild denn auch laminiert?!🤔😏[😏]
288da bin ich mal gespannt wie das aussieht, wen...😂👍[👍]
4265Aber es ist doch gebrochen...🤔😢[😢]
7405Partey🤦🤪[🤪]
...............
4910Vllt gilt das Schild auch nur für schwarze Hun...😂😱[😱]
2047Ich erprobe mich morgen mit Freya an Addieren ...🙂😄[😄]
2650Ich kann leider nicht😕😕[😕]
299Das schafft meine Handykamera aber nicht😂😉[😉]
2499also ihr lieben ich arbeite gerade im arithmeu...😁😅[😅]
4783danke😊💸[💸, 💸, 💸]
4040Herrlich🤦😅[🤗, 😅]
7553babbage, meine Autokerrektur ‍♂🤔🤦[🤦]
6232Bin erst um 9.15Uhr da.....👍🔪[💣, 🔪]
3514Dankeschön! Dann trage ich dich ein😘😊[😊]
3422Schnitzel😅😍[😍]
2294Club discreto?😂😳[😳, 😳, 😳]
8218auch da bin ich etwas neidisch🙄😅[😅]
4463Möchte jemand was vom Café Roller?🤧😂[😂]
8032Frohe Ostern an Euch alle...😊🐥[🐰, 🐣, 🐥]
4505okay, ihr geht eigentlich ganz verantwortungsv...😊💁[💁]
4810Meine Meinung: Wenn das Personal da ist, dann ...😂🤷[🤷]
5762Ein shk ist aber billiger👵🙄[🙄]
4247Alle die morgen auf der Arbeit sind: nachher k...🙈😂[😂]
2501ich glaube das wäre eine stilvolle und romanti...😍😊[😊]
5278Ich kann das machen💁[✋]
5747In der Küche im Kühlschrank steht eine grüne T...😉🙂[😉, 🙂]
7022Dann halt nicht ‍♂🤷🤷[🤷]
1736Ich hab absolut keine Ahnung davon😂😞[😞]
5909Wir bekommen es bestimmt zu zweit hin, aber we...🙈😉[😉]
5890Pass bloß auf, wenn du die isst mutierst du be...😄😱[😱]
566Das sind 5 Maß pro Abend🙄😋[😋]
6044Sind sehr lecker😀👌[👌]
1472Ich werde die alle drillen das sage ich dir, a...🤔😇[😇]
5702Oh man, das wird ein Tag😀😄[😄]
\n", - "

246 rows × 4 columns

\n", - "
" - ], - "text/plain": [ - " message pred trained \\\n", - "8663 mehrere Bürostühle hintereinander? 🙈 🤔 \n", - "1862 Ich will auch Essen 😉 😞 \n", - "3921 2x orange 🙂 🙂 \n", - "2222 Man soll auch keine Lernsachen da lassen 😀 😀 \n", - "761 Wir können auch gerne wieder bei mir zusammen ... 😇 😉 \n", - "3600 Hab den Bus verpasst, den ich eigentlich nehme... 😟 👸 \n", - "1794 Klaro, gerne 😎 🙂 \n", - "861 Sehr gut, Jan! Wenn sich noch jemand melden wü... 😘 😇 \n", - "1469 Jaaa aber mein Mitbewohner ist messy 😬 🙊 \n", - "6254 Hallöchen Es hat ein Herr angerufen, der gern... 💁 🙂 \n", - "7968 Iwo 🤦 😂 \n", - "8102 Keine Ahnung wer da haariger ist 😅 🧐 \n", - "6835 Danke 😊 😊 \n", - "7135 Wurde bestimmt von Big Bang geklaut 🤷 😂 \n", - "4556 Ich kann leider nicht, aber arbeiten da nicht ... 😂 😀 \n", - "6705 Ist von heute, aber halt 3x in englisch 😇 🙄 \n", - "2058 .. 🤦 😅 \n", - "2072 Oder fang endlich mal wieder an, was fürs Stud... 😄 😈 \n", - "756 Ich hab vom letzten Jahr noch ein Trauma 😂 😆 \n", - "5966 Ist Freitag schon Wochenende? 😍 🤔 \n", - "7007 Wenn wir die Klimaanlage im Museum ausschalten... 🤔 🤪 \n", - "6968 Ein Vorbild für uns alle 🤔 🤩 \n", - "5665 Kein Problem. Du kannst mich eintragen. 🙂 🙂 \n", - "2641 Jonas, du bist gelb markiert! Du kannst keine ... 😉 🙃 \n", - "1981 Da bin ich mir sehr sicher! 😘 😄 \n", - "3334 Das wäre auf jeden Fall hilfreich! Danke 😍 🙂 \n", - "4447 Ist das Schild denn auch laminiert?! 🤔 😏 \n", - "288 da bin ich mal gespannt wie das aussieht, wen... 😂 👍 \n", - "4265 Aber es ist doch gebrochen... 🤔 😢 \n", - "7405 Partey 🤦 🤪 \n", - "... ... ... ... \n", - "4910 Vllt gilt das Schild auch nur für schwarze Hun... 😂 😱 \n", - "2047 Ich erprobe mich morgen mit Freya an Addieren ... 🙂 😄 \n", - "2650 Ich kann leider nicht 😕 😕 \n", - "299 Das schafft meine Handykamera aber nicht 😂 😉 \n", - "2499 also ihr lieben ich arbeite gerade im arithmeu... 😁 😅 \n", - "4783 danke 😊 💸 \n", - "4040 Herrlich 🤦 😅 \n", - "7553 babbage, meine Autokerrektur ‍♂ 🤔 🤦 \n", - "6232 Bin erst um 9.15Uhr da..... 👍 🔪 \n", - "3514 Dankeschön! Dann trage ich dich ein 😘 😊 \n", - "3422 Schnitzel 😅 😍 \n", - "2294 Club discreto? 😂 😳 \n", - "8218 auch da bin ich etwas neidisch 🙄 😅 \n", - "4463 Möchte jemand was vom Café Roller? 🤧 😂 \n", - "8032 Frohe Ostern an Euch alle... 😊 🐥 \n", - "4505 okay, ihr geht eigentlich ganz verantwortungsv... 😊 💁 \n", - "4810 Meine Meinung: Wenn das Personal da ist, dann ... 😂 🤷 \n", - "5762 Ein shk ist aber billiger 👵 🙄 \n", - "4247 Alle die morgen auf der Arbeit sind: nachher k... 🙈 😂 \n", - "2501 ich glaube das wäre eine stilvolle und romanti... 😍 😊 \n", - "5278 Ich kann das machen 💁 ✋ \n", - "5747 In der Küche im Kühlschrank steht eine grüne T... 😉 🙂 \n", - "7022 Dann halt nicht ‍♂ 🤷 🤷 \n", - "1736 Ich hab absolut keine Ahnung davon 😂 😞 \n", - "5909 Wir bekommen es bestimmt zu zweit hin, aber we... 🙈 😉 \n", - "5890 Pass bloß auf, wenn du die isst mutierst du be... 😄 😱 \n", - "566 Das sind 5 Maß pro Abend 🙄 😋 \n", - "6044 Sind sehr lecker 😀 👌 \n", - "1472 Ich werde die alle drillen das sage ich dir, a... 🤔 😇 \n", - "5702 Oh man, das wird ein Tag 😀 😄 \n", - "\n", - " emojis \n", - "8663 [🤔] \n", - "1862 [😞] \n", - "3921 [🙂] \n", - "2222 [😀] \n", - "761 [😉] \n", - "3600 [👸] \n", - "1794 [🙂] \n", - "861 [😇] \n", - "1469 [😱, 😔, 🌚, 🙊] \n", - "6254 [🙂] \n", - "7968 [😂] \n", - "8102 [🧐] \n", - "6835 [😊] \n", - "7135 [😂, 😂, 😂] \n", - "4556 [😀] \n", - "6705 [🙄] \n", - "2058 [😅] \n", - "2072 [😈] \n", - "756 [😆] \n", - "5966 [🤔] \n", - "7007 [🤪] \n", - "6968 [🤩] \n", - "5665 [🙂] \n", - "2641 [🙃] \n", - "1981 [😄] \n", - "3334 [🙂] \n", - "4447 [😏] \n", - "288 [👍] \n", - "4265 [😢] \n", - "7405 [🤪] \n", - "... ... \n", - "4910 [😱] \n", - "2047 [😄] \n", - "2650 [😕] \n", - "299 [😉] \n", - "2499 [😅] \n", - "4783 [💸, 💸, 💸] \n", - "4040 [🤗, 😅] \n", - "7553 [🤦] \n", - "6232 [💣, 🔪] \n", - "3514 [😊] \n", - "3422 [😍] \n", - "2294 [😳, 😳, 😳] \n", - "8218 [😅] \n", - "4463 [😂] \n", - "8032 [🐰, 🐣, 🐥] \n", - "4505 [💁] \n", - "4810 [🤷] \n", - "5762 [🙄] \n", - "4247 [😂] \n", - "2501 [😊] \n", - "5278 [✋] \n", - "5747 [😉, 🙂] \n", - "7022 [🤷] \n", - "1736 [😞] \n", - "5909 [😉] \n", - "5890 [😱] \n", - "566 [😋] \n", - "6044 [👌] \n", - "1472 [😇] \n", - "5702 [😄] \n", - "\n", - "[246 rows x 4 columns]" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "testlist = pd.DataFrame({'message': Xt1, 'pred': pred, 'trained': yt1})\n", - "testlist = pd.merge(testlist, emoji_messages['emojis'].to_frame(), left_index=True, right_index=True)\n", - "testlist.to_csv('export.csv')\n", - "testlist" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'🙄'" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "display(clf_a.predict(vectorizer.transform([\"Boah Caner\"]))[0])" - ] - }, { "cell_type": "code", "execution_count": 23, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ἷ\n" - ] - } - ], + "outputs": [], "source": [ - "print(chr(0x1F3F))" + "pred = clf_a.predict(vectorizer.transform(Xt1))" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "<1x3931 sparse matrix of type ''\n", - "\twith 2 stored elements in Compressed Sparse Row format>" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "vec_train[0]" + "testlist = pd.DataFrame({'message': Xt1, 'pred': mlb.inverse_transform(pred), 'teacher': mlb.inverse_transform(yt1)})\n", + "testlist.to_csv('export.csv')\n", + "testlist" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "0b212fa64d5e457d89ad798983002a1c", - "version_major": 2, - "version_minor": 0 - }, - "text/html": [ - "

Failed to display Jupyter Widget of type Text.

\n", - "

\n", - " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", - " that the widgets JavaScript is still loading. If this message persists, it\n", - " likely means that the widgets JavaScript library is either not installed or\n", - " not enabled. See the Jupyter\n", - " Widgets Documentation for setup instructions.\n", - "

\n", - "

\n", - " If you're reading this message in another frontend (for example, a static\n", - " rendering on GitHub or NBViewer),\n", - " it may mean that your frontend doesn't currently support widgets.\n", - "

\n" - ], - "text/plain": [ - "Text(value='')" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "f1d5e13f70a24e80acc95372e3f3db0d", - "version_major": 2, - "version_minor": 0 - }, - "text/html": [ - "

Failed to display Jupyter Widget of type VBox.

\n", - "

\n", - " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", - " that the widgets JavaScript is still loading. If this message persists, it\n", - " likely means that the widgets JavaScript library is either not installed or\n", - " not enabled. See the Jupyter\n", - " Widgets Documentation for setup instructions.\n", - "

\n", - "

\n", - " If you're reading this message in another frontend (for example, a static\n", - " rendering on GitHub or NBViewer),\n", - " it may mean that your frontend doesn't currently support widgets.\n", - "

\n" - ], - "text/plain": [ - "VBox(children=(Button(description='get smiley', icon='check', style=ButtonStyle(), tooltip='Click me'), Output()))" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import ipywidgets as widgets \n", "\n", "out = widgets.Output()\n", "\n", @@ -2695,7 +463,7 @@ " with out:\n", " clear_output()\n", " with out:\n", - " display(Markdown(\"# \" + str(clf_a.predict(vectorizer.transform([t.value]))[0])))\n", + " display(Markdown(\"# \" + str(mlb.inverse_transform(clf_a.predict(vectorizer.transform([t.value])))[0])))\n", "\n", "b.on_click(handle_submit)\n", " \n", diff --git a/Project/Tools/whatsapp2csv.sh b/Project/Tools/whatsapp2csv.sh index ad59d5d..178f170 100755 --- a/Project/Tools/whatsapp2csv.sh +++ b/Project/Tools/whatsapp2csv.sh @@ -77,7 +77,7 @@ perform_and_exit echo -e "date\ttime\tperson\tmessage" > "$OUTPUT" # 3. replace separators of whatsapp's txt-format with '\t' as separator for csv # 4. delete all double-quotes. Because people are too stupid to type them in pairs and that breaks some csv-interpreters 🤦‍♂ -perform_and_exit sed ':a;N;/\n[0-9]\{1,\}\+\//!s/\n/ /;ta;P;D' "$INPUT" | grep -v -E 'left|added|created|end-to-end|Media omitted' | sed 's/, /\t/1; s/- /\t/1; s/: /\t/1;' | tr -d '"' >> "$OUTPUT" +perform_and_exit sed ':a;N;/\n[0-9]\{1,\}\+\//!s/\n/ /;ta;P;D' "$INPUT" | grep -v -E 'left|added|created|end-to-end|Media omitted|import java|> "$OUTPUT" confirm_action From 4b31d44b877aa34fd45a483e3990e4fab5a72f93 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Sun, 20 May 2018 10:38:14 +0200 Subject: [PATCH 07/15] blubb --- Project/Tools/emoji tester old.ipynb | 423 ++++++++++++++++ Project/Tools/emoji tester.ipynb | 716 ++++++++++++--------------- 2 files changed, 737 insertions(+), 402 deletions(-) create mode 100644 Project/Tools/emoji tester old.ipynb diff --git a/Project/Tools/emoji tester old.ipynb b/Project/Tools/emoji tester old.ipynb new file mode 100644 index 0000000..054473e --- /dev/null +++ b/Project/Tools/emoji tester old.ipynb @@ -0,0 +1,423 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from IPython.display import clear_output, Markdown, Math\n", + "import ipywidgets as widgets\n", + "import os" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----\n", + "## file input stuff:\n", + "\n", + "* replace `test.txt` with yout whatsapp log file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "./whatsapp2csv.sh test.txt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* read table `test.csv` exported by `whatsapp2csv.sh`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "messages = pd.read_csv('test.txt.csv', delimiter='\\t')\n", + "messages.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* read emoji-data (can be found here: https://www.unicode.org/Public/emoji/11.0/emoji-data.txt) and generate a table file out of it" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%bash\n", + "if [ ! -e emoji-data.txt ]\n", + "then\n", + " echo \"downloading emoji specification\"\n", + " wget https://www.unicode.org/Public/emoji/11.0/emoji-data.txt\n", + "else\n", + " echo \"found existing emoji specification\"\n", + "fi\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_blacklist = set([\n", + " 0x1F3FB,\n", + " 0x1F3FC,\n", + " 0x1F3FD,\n", + " 0x1F3FE,\n", + " 0x1F3FF\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_data = pd.read_csv('emoji-data.txt', delimiter=';', comment='#', names=[\"unicode\",\"type\"])\n", + "emoji_data['type'] = emoji_data['type'].str.strip()\n", + "emoji_data = emoji_data[emoji_data['type'] == \"Emoji_Presentation\"]\n", + "emoji_data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* now build a set out of the unicode types" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ord(\"😀\") == int('0x1f600',16)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_codes = emoji_data['unicode']\n", + "emoji_codes.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* we have to iterate over the whole list and extract all given ranges:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_code_list = []\n", + "for entry in emoji_codes:\n", + " # testing whether we have an entry or a range:\n", + " if '.' in entry:\n", + " # range\n", + " a,b = entry.split(\"..\")\n", + " for i in range(int(a,16),int(b,16) +1):\n", + " if i not in emoji_blacklist:\n", + " emoji_code_list.append(i)\n", + " else:\n", + " # single entry\n", + " if i not in emoji_blacklist:\n", + " emoji_code_list.append(int(entry,16))\n", + "emoji_code_set = set(emoji_code_list)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# simple test:\n", + "print(ord(\"😀\") in emoji_code_set, ord(\"a\") in emoji_code_set)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* expanding column and fill new emojis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "messages[\"emojis\"] = None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for i in messages.index:\n", + " emoji_list = []\n", + " to_remove = []\n", + " m = messages.iloc[i]['message']\n", + " for c in str(m):\n", + " if ord(c) in emoji_code_set:\n", + " emoji_list.append(c)\n", + " elif ord(c) in emoji_blacklist:\n", + " to_remove.append(c)\n", + " \n", + " messages.loc[i,'emojis'] = emoji_list\n", + " #remove emiójis from message\n", + " for e in (emoji_list + to_remove):\n", + " m = m.replace(e,\"\")\n", + " messages.loc[i,'message'] = m\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "messages[:20]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* get a list only containing messaged with emojis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "emoji_messages = messages[[True if len(e) > 0 else False for e in messages['emojis']]]\n", + "emoji_messages = emoji_messages[emoji_messages['message'] != \"\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(emoji_messages)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "----\n", + "## learning part" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import itertools\n", + "import sklearn.utils as sku\n", + "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "labels=[e[-1] for e in emoji_messages['emojis']]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "labels[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X1, Xt1, y1, yt1 = train_test_split(emoji_messages['message'], labels, test_size=0.1, random_state=4222)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "vectorizer = TfidfVectorizer(stop_words='english')\n", + "vec_train = vectorizer.fit_transform(X1)\n", + "vec_test = vectorizer.transform(Xt1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.ensemble import RandomForestClassifier as RFC\n", + "from sklearn.neural_network import MLPClassifier as MLP\n", + "from sklearn.naive_bayes import MultinomialNB as MNB\n", + "#clf_a = RFC(criterion='entropy', random_state=4222)\n", + "clf_a = MLP()\n", + "clf_a.fit(vec_train, y1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pred = clf_a.predict(vectorizer.transform(Xt1))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "testlist = pd.DataFrame({'message': Xt1, 'pred': pred, 'trained': yt1})\n", + "testlist = pd.merge(testlist, emoji_messages['emojis'].to_frame(), left_index=True, right_index=True)\n", + "testlist.to_csv('export.csv')\n", + "testlist" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "display(clf_a.predict(vectorizer.transform([\"Boah Caner\"]))[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(chr(0x1F3F))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "vec_train[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "out = widgets.Output()\n", + "\n", + "t = widgets.Text()\n", + "b = widgets.Button(\n", + " description='get smiley',\n", + " disabled=False,\n", + " button_style='', # 'success', 'info', 'warning', 'danger' or ''\n", + " tooltip='Click me',\n", + " icon='check'\n", + ")\n", + "\n", + "\n", + "\n", + "def handle_submit(sender):\n", + " with out:\n", + " clear_output()\n", + " with out:\n", + " display(Markdown(\"# \" + str(clf_a.predict(vectorizer.transform([t.value]))[0])))\n", + "\n", + "b.on_click(handle_submit)\n", + " \n", + "display(t)\n", + "display(widgets.VBox([b, out])) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Project/Tools/emoji tester.ipynb b/Project/Tools/emoji tester.ipynb index 23f3462..f9b59db 100644 --- a/Project/Tools/emoji tester.ipynb +++ b/Project/Tools/emoji tester.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -12,47 +12,45 @@ "import os" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "----\n", - "## file input stuff:\n", - "\n", - "* replace `test.txt` with your whatsapp log file" - ] - }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================================================================\n", - "processing File: test.txt\n", - "================================================================================\n", - "================================================================================\n", - "successfully finished action: processing File: test.txt\n", - "================================================================================\n", - "================================================================================\n", - "Wrote output to test.txt.csv\n", - "================================================================================\n" - ] - } - ], + "outputs": [], "source": [ - "%%bash\n", - "./whatsapp2csv.sh test.txt" + "def create_widgets(t_text, b_text, out, additional_widgets=[]):\n", + " texts = []\n", + " for t in t_text:\n", + " texts.append(widgets.Text(t))\n", + " \n", + " button = widgets.Button(\n", + " description=b_text,\n", + " disabled=False,\n", + " button_style='', # 'success', 'info', 'warning', 'danger' or ''\n", + " tooltip=b_text,\n", + " icon='check'\n", + " )\n", + " display(widgets.VBox([widgets.HBox(texts + additional_widgets + [button]), out]))\n", + " return texts + [button]\n", + "\n", + "out_convert = widgets.Output()\n", + "out_build = widgets.Output()\n", + "out_train = widgets.Output()\n", + "out_save = widgets.Output()\n", + "out_read = widgets.Output()\n", + "out_test = widgets.Output()\n", + "\n", + "def mp(msg):\n", + " display(Markdown(msg))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "* read table `test.csv` exported by `whatsapp2csv.sh`" + "# Emoji Tester\n", + "\n", + "just run all cells at first. Then select on of the actions below." ] }, { @@ -61,30 +59,63 @@ "metadata": {}, "outputs": [], "source": [ - "messages = pd.read_csv('test.txt.csv', delimiter='\\t')\n", - "messages.head()" + "mp(\"## converting plain whatsapp export to csv\")\n", + "t_convert, b_convert = create_widgets([\"test.txt\"], \"convert whatsapp file to csv\", out_convert)\n", + "mp(\"## read csv and build database\")\n", + "single_label = widgets.Checkbox(value=False, description='using only last emoji', disable=False)\n", + "t_build, b_build = create_widgets([\"test.txt.csv\"], \"read\", out_build, [single_label])\n", + "mp(\"## Train\")\n", + "d = widgets.Dropdown(options=['DecisionTree', 'MLP', 'RandomForest'], value='MLP', description='Learning Method', disabled=False)\n", + "ova = widgets.Checkbox(value=False, description='Using one vs all (very slow, only with multi-label!)', disabled=False)\n", + "b_train = button = widgets.Button(description=\"train\", disabled=False, button_style='', tooltip=\"train\",icon='check')\n", + "display(widgets.VBox([widgets.HBox([d,ova,b_train]), out_train]))\n", + "mp(\"## save trained classifier\")\n", + "t_save_c, t_save_m, t_save_v, b_save = create_widgets([\"clf.pkl\", \"mlb.pkl\", \"vectorizer.pkl\"], \"save classifier\", out_save)\n", + "mp(\"## import trained classifier\")\n", + "t_read_c, t_read_m, t_read_v, b_read = create_widgets([\"clf.pkl\", \"mlb.pkl\", \"vectorizer.pkl\"], \"import classifier\", out_read)\n", + "mp(\"## predict emoji on custom text\")\n", + "b_prop = widgets.Checkbox(value=False, description='Show probabilities (only on trees)', disabled=False)\n", + "t_test, b_test = create_widgets([\"\"], \"get emoji\", out_test,[b_prop])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "* read emoji-data (can be found here: https://www.unicode.org/Public/emoji/11.0/emoji-data.txt) and generate a table file out of it" + "----\n", + "## Code Section:" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "found existing emoji specification\n" - ] - } - ], + "outputs": [], + "source": [ + "def convert(b):\n", + " with out_convert:\n", + " clear_output()\n", + " with out_convert:\n", + " mp(\"**converting \" + t_convert.value + \"…**\")\n", + " import subprocess\n", + " print(str(subprocess.check_output([\"./whatsapp2csv.sh\", t_convert.value])).strip())\n", + " mp(\"**done**\")\n", + "\n", + "b_convert.on_click(convert)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* download emoji specification if not already existing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "%%bash\n", "if [ ! -e emoji-data.txt ]\n", @@ -96,9 +127,16 @@ "fi\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* stuff for creating emoji database" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -110,365 +148,239 @@ " 0x1F3FF,\n", " 0x2642,\n", " 0x2640\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "emoji_data = pd.read_csv('emoji-data.txt', delimiter=';', comment='#', names=[\"unicode\",\"type\"])\n", - "emoji_data['type'] = emoji_data['type'].str.strip()\n", - "emoji_data = emoji_data[emoji_data['type'] == \"Emoji_Presentation\"]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* now build a set out of the unicode types" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ord(\"😀\") == int('0x1f600',16)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "228 231A..231B \n", - "229 23E9..23EC \n", - "230 23F0 \n", - "231 23F3 \n", - "232 25FD..25FE \n", - "Name: unicode, dtype: object" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "emoji_codes = emoji_data['unicode']\n", - "emoji_codes.head()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* we have to iterate over the whole list and extract all given ranges:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/markdown": [ - "**used Emojis:**" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "'🀄\\U0001f9f1\\U0001f9f2\\U0001f9f3\\U0001f9f4\\U0001f9f5\\U0001f9f6🃏🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞\\U0001f91f🤠🤡🤢🤣🤤🤥🤦🤧\\U0001f928\\U0001f929\\U0001f92a\\U0001f92b\\U0001f92c\\U0001f92d\\U0001f92e\\U0001f92f🤰\\U0001f931\\U0001f932🤳🤴🤵🤶🤷🤸🤹🤺🤼🤽🤾🥀🥁🥂🥃🥄🥅🥇🥈🥉🥊🥋\\U0001f94c\\U0001f94d\\U0001f94e\\U0001f94f🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛🥜🥝🥞\\U0001f95f\\U0001f960\\U0001f961\\U0001f962\\U0001f963\\U0001f964\\U0001f965\\U0001f966\\U0001f967\\U0001f968\\U0001f969\\U0001f96a\\U0001f96b\\U0001f96c\\U0001f96d\\U0001f96e\\U0001f96f\\U0001f970\\U0001f9ec\\U0001f9ed\\U0001f973\\U0001f974\\U0001f975\\U0001f976\\U0001f9ee\\U0001f97a\\U0001f9ef\\U0001f97c\\U0001f97d\\U0001f97e\\U0001f97f🦀🦁🦂🦃🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🆎🦎🦏🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚\\U0001f992\\U0001f993\\U0001f994\\U0001f995\\U0001f996\\U0001f997\\U0001f998\\U0001f999\\U0001f99a\\U0001f99b\\U0001f99c\\U0001f99d\\U0001f99e\\U0001f99f\\U0001f9a0\\U0001f9a1\\U0001f9a2\\U0001f9f8\\U0001f9b0\\U0001f9b1\\U0001f9b2\\U0001f9b3\\U0001f9b4\\U0001f9b5\\U0001f9b6\\U0001f9b7\\U0001f9b8\\U0001f9b9🧀\\U0001f9c1\\U0001f9c2\\U0001f9d0\\U0001f9d1\\U0001f9d2\\U0001f9d3\\U0001f9d4\\U0001f9d5\\U0001f9d6\\U0001f9d7\\U0001f9d8\\U0001f9d9\\U0001f9da\\U0001f9db\\U0001f9dc\\U0001f9dd\\U0001f9de\\U0001f9df\\U0001f9e0\\U0001f9e1\\U0001f9e2\\U0001f9e3\\U0001f9e4\\U0001f9e5🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿\\U0001f9f7🈁\\U0001f9f9\\U0001f9fa\\U0001f9fb\\U0001f9fc\\U0001f9fd\\U0001f9fe\\U0001f9ff🈚🈯🈲🈳🈴🈵🈶🈸🈹🈺🉐🉑🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙⌚⌛⬛⬜🌚🌛🌜🌝🌞🌟🌠🌭🌮🌯🌰🌱🌲🌳🌴🌵🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏⭐🍐🍑🍒🍓⭕🍔🍕🍖🍗🍘🍙🍚🍛🍜🍟🍝🍞🍠🍡🍤🍢🍣🍥🍦🍩🍧🍨🍪🍫🍮🍬🍭🍯🍰🍳🍱🍲🍴🍵🍸🍶🍷🍹🍺🍻🍼🍾🍿🎀🎁🎂🎃🎅🎄🎆🎈🎉🎊🎋🎌🎍🎇🎏🎐🎎🎑🎒🎓🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏏🏐🏑🏒🏓🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰⏩⏪⏫🏴⏬⏰⏳🏸🏹🏺🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾👀👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼💽💾💿📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📑📒📓📔📕📖📗📘📙📚📛📜📝📞📟📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📿🔀🔁🔂🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔟🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🔴🔵🔶🔷🔸🔹🔺🔻🔼🔽🕋🕌🕍🕎🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜🕝🕞🕟🕠🕡🕢🕣🕤🕥🕦🕧🕺🖕🖖🖤🗻🗼◽◾🗽🗾🗿😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑☔☕😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃♈♉♊♋♌♍♎♏♐♑♒♓🙋🙌🙍🙎🙏♿🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒⚓🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟⚡🚠🚡🚢🚣🚤🚥🚦🚧⚪⚫🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸⚽⚾🚹🚺🚻🚼🚽⛄⛅🚾🚿🛀🛁🛂🛃🛄🛅⛎🛌🛐🛑🛒⛔⛪🛫🛬⛲⛳🛴⛵🛵🛶\\U0001f6f7\\U0001f6f8⛺\\U0001f6f9⛽✅\\U0001f9e6🙄✊✋🙅🙆🙇🙈\\U0001f9e7🙉🙊✨\\U0001f9e8❌❎\\U0001f9e9❓❔❕❗\\U0001f9ea\\U0001f9eb➕➖➗🦐🦑➰➿\\U0001f9f0'" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/markdown": [ - "**blacklisted Emojis:**" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "'♀♂🏻🏼🏽🏾🏿'" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "emoji_code_list = []\n", - "for entry in emoji_codes:\n", - " # testing whether we have an entry or a range:\n", - " if '.' in entry:\n", - " # range\n", - " a,b = entry.split(\"..\")\n", - " for i in range(int(a,16),int(b,16) +1):\n", - " if i not in emoji_blacklist:\n", - " emoji_code_list.append(i)\n", - " else:\n", - " # single entry\n", - " if i not in emoji_blacklist:\n", - " emoji_code_list.append(int(entry,16))\n", - "emoji_code_set = set(emoji_code_list)\n", - "display(Markdown(\"**used Emojis:**\"))\n", - "display(\"\".join([chr(x) for x in emoji_code_set]))\n", - "display(Markdown(\"**blacklisted Emojis:**\"))\n", - "display(\"\".join([chr(x) for x in emoji_blacklist]))" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True False\n" - ] - } - ], - "source": [ - "# simple test:\n", - "print(ord(\"😀\") in emoji_code_set, ord(\"a\") in emoji_code_set)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* expanding column and fill new emojis" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "messages[\"emojis\"] = None" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "for i in messages.index:\n", - " emoji_list = []\n", - " m = messages.iloc[i]['message']\n", - " m_new = \"\"\n", - " for c in str(m):\n", - " if ord(c) in emoji_code_set:\n", - " emoji_list.append(c)\n", - " elif ord(c) not in emoji_blacklist:\n", - " m_new += c\n", - " \n", - " messages.loc[i,'emojis'] = set(emoji_list)\n", - " #remove emiójis from message\n", - " messages.loc[i,'message'] = m_new\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "messages[:20]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* get a list only containing messaged with emojis" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "emoji_messages = messages[[True if len(e) > 0 else False for e in messages['emojis']]]\n", - "emoji_messages = emoji_messages[emoji_messages['message'] != \"\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "display(emoji_messages)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "----\n", - "## learning part" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import itertools\n", - "import sklearn.utils as sku\n", - "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.preprocessing import MultiLabelBinarizer" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "mlb = MultiLabelBinarizer()\n", + "])\n", "\n", - "labels=mlb.fit_transform(emoji_messages['emojis'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "X1, Xt1, y1, yt1 = train_test_split(emoji_messages['message'], labels, test_size=0.1, random_state=4222)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "vectorizer = TfidfVectorizer(stop_words='english')\n", - "vec_train = vectorizer.fit_transform(X1)\n", - "vec_test = vectorizer.transform(Xt1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.ensemble import RandomForestClassifier as RFC\n", - "from sklearn.neural_network import MLPClassifier as MLP\n", - "from sklearn.naive_bayes import MultinomialNB as MNB\n", - "from sklearn.multiclass import OneVsRestClassifier as OVRC\n", - "#clf_a = OVRC(RFC(criterion='entropy', random_state=4222))\n", - "clf_a = OVRC(MLP(hidden_layer_sizes=(10,)))\n", - "#clf_a = OVRC(MNB())\n", - "clf_a.fit(vec_train, y1)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "pred = clf_a.predict(vectorizer.transform(Xt1))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "testlist = pd.DataFrame({'message': Xt1, 'pred': mlb.inverse_transform(pred), 'teacher': mlb.inverse_transform(yt1)})\n", - "testlist.to_csv('export.csv')\n", - "testlist" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "emoji_code_set = None\n", "\n", - "out = widgets.Output()\n", - "\n", - "t = widgets.Text()\n", - "b = widgets.Button(\n", - " description='get smiley',\n", - " disabled=False,\n", - " button_style='', # 'success', 'info', 'warning', 'danger' or ''\n", - " tooltip='Click me',\n", - " icon='check'\n", - ")\n", - "\n", - "\n", - "\n", - "def handle_submit(sender):\n", - " with out:\n", - " clear_output()\n", - " with out:\n", - " display(Markdown(\"# \" + str(mlb.inverse_transform(clf_a.predict(vectorizer.transform([t.value])))[0])))\n", - "\n", - "b.on_click(handle_submit)\n", + "def create_emoji_set():\n", + " global emoji_code_set\n", " \n", - "display(t)\n", - "display(widgets.VBox([b, out])) " + " emoji_data = pd.read_csv('emoji-data.txt', delimiter=';', comment='#', names=[\"unicode\",\"type\"])\n", + " emoji_data['type'] = emoji_data['type'].str.strip()\n", + " emoji_data = emoji_data[emoji_data['type'] == \"Emoji_Presentation\"]\n", + " \n", + " emoji_codes = emoji_data['unicode']\n", + " emoji_codes.head()\n", + " \n", + " emoji_code_list = []\n", + " for entry in emoji_codes:\n", + " # testing whether we have an entry or a range:\n", + " if '.' in entry:\n", + " # range\n", + " a,b = entry.split(\"..\")\n", + " for i in range(int(a,16),int(b,16) +1):\n", + " if i not in emoji_blacklist:\n", + " emoji_code_list.append(i)\n", + " else:\n", + " # single entry\n", + " if i not in emoji_blacklist:\n", + " emoji_code_list.append(int(entry,16))\n", + " emoji_code_set = set(emoji_code_list)\n", + " display(Markdown(\"**imported Emojis** (without modifier):\\n>\" + \"\".join([chr(x) for x in emoji_code_set])))\n", + " display(Markdown(\"**blacklisted Emojis:**\\n>\" + \"\".join([chr(x) for x in emoji_blacklist])))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* stuff for reading whatsapp messages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "messages = None\n", + "vectorizer = None\n", + "clf_a = None\n", + "mlb = None\n", + "\n", + "emoji_messages=None" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def read_message_and_build_db(filename):\n", + " global messages\n", + " global emoji_messages\n", + " global vectorizer\n", + " global clf_a\n", + " global mlb\n", + " \n", + " messages = pd.read_csv(filename, delimiter='\\t')\n", + " mp(\"**filter messages and creating labels. This can take a while...**\")\n", + " messages[\"emojis\"] = None\n", + " \n", + " msg_batchsize = 1000\n", + " msg_counter = 0\n", + " \n", + " for i in messages.index:\n", + " \n", + " msg_counter+=1\n", + " if msg_counter >= msg_batchsize:\n", + " print(str(100 * i / messages.shape[0]) + \"%\")\n", + " msg_counter=0\n", + " \n", + " emoji_list = []\n", + " m = messages.iloc[i]['message']\n", + " m_new = \"\"\n", + " for c in str(m):\n", + " if ord(c) in emoji_code_set:\n", + " emoji_list.append(c)\n", + " elif ord(c) not in emoji_blacklist:\n", + " m_new += c\n", + " # if single label: only use last found emoji\n", + " messages.loc[i,'emojis'] = set(emoji_list) if (not single_label.value) or len(emoji_list)==0 else set(emoji_list[-1])\n", + " #remove emiójis from message\n", + " messages.loc[i,'message'] = m_new\n", + " \n", + " emoji_messages = messages[[True if len(e) > 0 else False for e in messages['emojis']]]\n", + " emoji_messages = emoji_messages[emoji_messages['message'] != \"\"]\n", + " \n", + " mp(\"**Done**\")\n", + " \n", + " display(emoji_messages)\n", + "\n", + "def train(b):\n", + " global messages\n", + " global emoji_messages\n", + " global vectorizer\n", + " global clf_a\n", + " global mlb\n", + " with out_train:\n", + " clear_output()\n", + " # train part:\n", + " import numpy as np\n", + " import itertools\n", + " import sklearn.utils as sku\n", + " from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer, HashingVectorizer\n", + " from sklearn.model_selection import train_test_split\n", + " from sklearn.preprocessing import MultiLabelBinarizer\n", + "\n", + " mlb = MultiLabelBinarizer() if not single_label.value else None\n", + " \n", + " if not mlb:\n", + " l = [list(e)[-1] for e in emoji_messages['emojis']]\n", + " \n", + " labels=mlb.fit_transform(emoji_messages['emojis']) if mlb else l\n", + " \n", + " if mlb:\n", + " display(Markdown(\"**emojis contained in Dataset:**\\n >\" + \"\".join(mlb.classes_ )))\n", + " else:\n", + " display(Markdown(\"**emojis contained in Dataset:**\\n >\" + \"\".join(set(l))))\n", + "\n", + " X1, Xt1, y1, yt1 = train_test_split(emoji_messages['message'], labels, test_size=0.1, random_state=4222)\n", + "\n", + " vectorizer = TfidfVectorizer(stop_words='english')\n", + " vec_train = vectorizer.fit_transform(X1)\n", + " vec_test = vectorizer.transform(Xt1)\n", + "\n", + " mp(\"**train classifier. This can take a very long time… Grab a coffe! 😀**\")\n", + "\n", + " from sklearn.ensemble import RandomForestClassifier as RFC\n", + " from sklearn.neural_network import MLPClassifier as MLP\n", + " #from sklearn.naive_bayes import MultinomialNB as MNB\n", + " from sklearn.tree import DecisionTreeClassifier as DTC\n", + " from sklearn.multiclass import OneVsRestClassifier as OVRC\n", + " clf_a = None\n", + " if (d.value == \"DecisionTree\"):\n", + " clf_a = DTC()\n", + " elif d.value == \"MLP\":\n", + " clf_a = MLP(hidden_layer_sizes=(64,))\n", + " elif d.value == \"RandomForest\":\n", + " RFC(criterion='entropy', random_state=4222)\n", + "\n", + " if ova.value:\n", + " clf_a=OVRC(clf_a)\n", + "\n", + " display(clf_a)\n", + " clf_a.fit(vec_train, y1)\n", + "\n", + " mp(\"**training done**\")\n", + "\n", + " pred = clf_a.predict(vectorizer.transform(Xt1))\n", + "\n", + " testlist = pd.DataFrame({'message': Xt1, 'pred': mlb.inverse_transform(pred) if mlb else pred, 'teacher': mlb.inverse_transform(yt1) if mlb else yt1})\n", + " testlist.to_csv('export.csv')\n", + " display(testlist)\n", + " \n", + "def build_db(b):\n", + " with out_build:\n", + " clear_output()\n", + " create_emoji_set()\n", + " read_message_and_build_db(t_build.value)\n", + "b_build.on_click(build_db)\n", + "b_train.on_click(train)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.externals import joblib\n", + "def write_to_file(b):\n", + " global vectorizer\n", + " global clf_a\n", + " global mlb\n", + " \n", + " with out_save:\n", + " clear_output()\n", + " mp(\"**write to file...**\")\n", + " joblib.dump(clf_a, t_save_c.value)\n", + " if mlb:\n", + " joblib.dump(mlb, t_save_m.value) \n", + " joblib.dump(vectorizer, t_save_v.value)\n", + " mp(\"**done**\")\n", + "b_save.on_click(write_to_file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def read_from_file(b):\n", + " global vectorizer\n", + " global clf_a\n", + " global mlb\n", + " \n", + " with out_read:\n", + " clear_output()\n", + " mp(\"**read from file…**\")\n", + " clf_a = joblib.load(t_read_c.value)\n", + " if t_read_m.value != \"\":\n", + " mlb = joblib.load(t_read_m.value)\n", + " vectorizer = joblib.load(t_read_v.value)\n", + " mp(\"**done**\")\n", + "b_read.on_click(read_from_file)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(b):\n", + " with out_test:\n", + " clear_output()\n", + " v = mlb.inverse_transform(clf_a.predict(vectorizer.transform([t_test.value])))[0] if mlb else clf_a.predict(vectorizer.transform([t_test.value]))[0]\n", + " mp(\"**prediction:**\\n# \" + (\"\".join(v) if len(v)>0 else \" \"))\n", + " if b_prop.value:\n", + " pred = clf_a.predict_proba(vectorizer.transform([t_test.value]))\n", + " print(mlb.inverse_transform(pred))\n", + "\n", + "b_test.on_click(predict)" ] }, { From 1eb68b1bbc93930297bc77761e7a70b2051e1ca5 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Mon, 21 May 2018 22:46:36 +0200 Subject: [PATCH 08/15] TWITTER! yeah! --- Project/Tools/emoji tester.ipynb | 289 +++++++- Project/Tools/emoji-list.txt | 1027 +++++++++++++++++++++++++++++ Project/Tools/twitter2messages.sh | 70 ++ 3 files changed, 1372 insertions(+), 14 deletions(-) create mode 100644 Project/Tools/emoji-list.txt create mode 100755 Project/Tools/twitter2messages.sh diff --git a/Project/Tools/emoji tester.ipynb b/Project/Tools/emoji tester.ipynb index f9b59db..e47d039 100644 --- a/Project/Tools/emoji tester.ipynb +++ b/Project/Tools/emoji tester.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -14,7 +14,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -55,9 +55,256 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "## converting plain whatsapp export to csv" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "8c94a8d3b3724ad08359817b2086cf85", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HBox(children=(Text(value='test.txt'), Button(description='convert whatsapp file to csv', icon='check', style=ButtonStyle(), tooltip='convert whatsapp file to csv'))), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "## read csv and build database" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ee22e300097e49f1ac24b11662f7dc69", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HBox(children=(Text(value='test.txt.csv'), Checkbox(value=False, description='using only last emoji'), Button(description='read', icon='check', style=ButtonStyle(), tooltip='read'))), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "## Train" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "de06136ee346492d80ef39d304cbc31c", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HBox(children=(Dropdown(description='Learning Method', index=1, options=('DecisionTree', 'MLP', 'RandomForest'), value='MLP'), Checkbox(value=False, description='Using one vs all (very slow, only with multi-label!)'), Button(description='train', icon='check', style=ButtonStyle(), tooltip='train'))), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "## save trained classifier" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b046f3ada7ec4ba7a17965d718552d21", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HBox(children=(Text(value='clf.pkl'), Text(value='mlb.pkl'), Text(value='vectorizer.pkl'), Button(description='save classifier', icon='check', style=ButtonStyle(), tooltip='save classifier'))), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "## import trained classifier" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ac4054e75d8a4214ad040b1b21d6c925", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HBox(children=(Text(value='clf.pkl'), Text(value='mlb.pkl'), Text(value='vectorizer.pkl'), Button(description='import classifier', icon='check', style=ButtonStyle(), tooltip='import classifier'))), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "## predict emoji on custom text" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "db631acbe9c94cac907efaf501a69c6a", + "version_major": 2, + "version_minor": 0 + }, + "text/html": [ + "

Failed to display Jupyter Widget of type VBox.

\n", + "

\n", + " If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean\n", + " that the widgets JavaScript is still loading. If this message persists, it\n", + " likely means that the widgets JavaScript library is either not installed or\n", + " not enabled. See the Jupyter\n", + " Widgets Documentation for setup instructions.\n", + "

\n", + "

\n", + " If you're reading this message in another frontend (for example, a static\n", + " rendering on GitHub or NBViewer),\n", + " it may mean that your frontend doesn't currently support widgets.\n", + "

\n" + ], + "text/plain": [ + "VBox(children=(HBox(children=(Text(value=''), Checkbox(value=False, description='Show probabilities (only on trees)'), Button(description='get emoji', icon='check', style=ButtonStyle(), tooltip='get emoji'))), Output()))" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "mp(\"## converting plain whatsapp export to csv\")\n", "t_convert, b_convert = create_widgets([\"test.txt\"], \"convert whatsapp file to csv\", out_convert)\n", @@ -88,7 +335,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -113,9 +360,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "found existing emoji specification\n" + ] + } + ], "source": [ "%%bash\n", "if [ ! -e emoji-data.txt ]\n", @@ -136,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -177,7 +432,11 @@ " emoji_code_list.append(int(entry,16))\n", " emoji_code_set = set(emoji_code_list)\n", " display(Markdown(\"**imported Emojis** (without modifier):\\n>\" + \"\".join([chr(x) for x in emoji_code_set])))\n", - " display(Markdown(\"**blacklisted Emojis:**\\n>\" + \"\".join([chr(x) for x in emoji_blacklist])))" + " display(Markdown(\"**blacklisted Emojis:**\\n>\" + \"\".join([chr(x) for x in emoji_blacklist])))\n", + " f = open('emoji-list.txt', 'w')\n", + " for e in emoji_code_set:\n", + " f.write(chr(e) + \"\\n\")\n", + " f.close()" ] }, { @@ -189,7 +448,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -203,7 +462,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -322,7 +581,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -345,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -360,6 +619,8 @@ " clf_a = joblib.load(t_read_c.value)\n", " if t_read_m.value != \"\":\n", " mlb = joblib.load(t_read_m.value)\n", + " else:\n", + " mlb = None\n", " vectorizer = joblib.load(t_read_v.value)\n", " mp(\"**done**\")\n", "b_read.on_click(read_from_file)" @@ -367,7 +628,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ diff --git a/Project/Tools/emoji-list.txt b/Project/Tools/emoji-list.txt new file mode 100644 index 0000000..9bc456f --- /dev/null +++ b/Project/Tools/emoji-list.txt @@ -0,0 +1,1027 @@ +🀄 +🧱 +🧲 +🧳 +🧴 +🧵 +🧶 +🃏 +🤐 +🤑 +🤒 +🤓 +🤔 +🤕 +🤖 +🤗 +🤘 +🤙 +🤚 +🤛 +🤜 +🤝 +🤞 +🤟 +🤠 +🤡 +🤢 +🤣 +🤤 +🤥 +🤦 +🤧 +🤨 +🤩 +🤪 +🤫 +🤬 +🤭 +🤮 +🤯 +🤰 +🤱 +🤲 +🤳 +🤴 +🤵 +🤶 +🤷 +🤸 +🤹 +🤺 +🤼 +🤽 +🤾 +🥀 +🥁 +🥂 +🥃 +🥄 +🥅 +🥇 +🥈 +🥉 +🥊 +🥋 +🥌 +🥍 +🥎 +🥏 +🥐 +🥑 +🥒 +🥓 +🥔 +🥕 +🥖 +🥗 +🥘 +🥙 +🥚 +🥛 +🥜 +🥝 +🥞 +🥟 +🥠 +🥡 +🥢 +🥣 +🥤 +🥥 +🥦 +🥧 +🥨 +🥩 +🥪 +🥫 +🥬 +🥭 +🥮 +🥯 +🥰 +🧬 +🧭 +🥳 +🥴 +🥵 +🥶 +🧮 +🥺 +🧯 +🥼 +🥽 +🥾 +🥿 +🦀 +🦁 +🦂 +🦃 +🦄 +🦅 +🦆 +🦇 +🦈 +🦉 +🦊 +🦋 +🦌 +🦍 +🆎 +🦎 +🦏 +🆑 +🆒 +🆓 +🆔 +🆕 +🆖 +🆗 +🆘 +🆙 +🆚 +🦒 +🦓 +🦔 +🦕 +🦖 +🦗 +🦘 +🦙 +🦚 +🦛 +🦜 +🦝 +🦞 +🦟 +🦠 +🦡 +🦢 +🧸 +🦰 +🦱 +🦲 +🦳 +🦴 +🦵 +🦶 +🦷 +🦸 +🦹 +🧀 +🧁 +🧂 +🧐 +🧑 +🧒 +🧓 +🧔 +🧕 +🧖 +🧗 +🧘 +🧙 +🧚 +🧛 +🧜 +🧝 +🧞 +🧟 +🧠 +🧡 +🧢 +🧣 +🧤 +🧥 +🇦 +🇧 +🇨 +🇩 +🇪 +🇫 +🇬 +🇭 +🇮 +🇯 +🇰 +🇱 +🇲 +🇳 +🇴 +🇵 +🇶 +🇷 +🇸 +🇹 +🇺 +🇻 +🇼 +🇽 +🇾 +🇿 +🧷 +🈁 +🧹 +🧺 +🧻 +🧼 +🧽 +🧾 +🧿 +🈚 +🈯 +🈲 +🈳 +🈴 +🈵 +🈶 +🈸 +🈹 +🈺 +🉐 +🉑 +🌀 +🌁 +🌂 +🌃 +🌄 +🌅 +🌆 +🌇 +🌈 +🌉 +🌊 +🌋 +🌌 +🌍 +🌎 +🌏 +🌐 +🌑 +🌒 +🌓 +🌔 +🌕 +🌖 +🌗 +🌘 +🌙 +⌚ +⌛ +⬛ +⬜ +🌚 +🌛 +🌜 +🌝 +🌞 +🌟 +🌠 +🌭 +🌮 +🌯 +🌰 +🌱 +🌲 +🌳 +🌴 +🌵 +🌷 +🌸 +🌹 +🌺 +🌻 +🌼 +🌽 +🌾 +🌿 +🍀 +🍁 +🍂 +🍃 +🍄 +🍅 +🍆 +🍇 +🍈 +🍉 +🍊 +🍋 +🍌 +🍍 +🍎 +🍏 +⭐ +🍐 +🍑 +🍒 +🍓 +⭕ +🍔 +🍕 +🍖 +🍗 +🍘 +🍙 +🍚 +🍛 +🍜 +🍟 +🍝 +🍞 +🍠 +🍡 +🍤 +🍢 +🍣 +🍥 +🍦 +🍩 +🍧 +🍨 +🍪 +🍫 +🍮 +🍬 +🍭 +🍯 +🍰 +🍳 +🍱 +🍲 +🍴 +🍵 +🍸 +🍶 +🍷 +🍹 +🍺 +🍻 +🍼 +🍾 +🍿 +🎀 +🎁 +🎂 +🎃 +🎅 +🎄 +🎆 +🎈 +🎉 +🎊 +🎋 +🎌 +🎍 +🎇 +🎏 +🎐 +🎎 +🎑 +🎒 +🎓 +🎠 +🎡 +🎢 +🎣 +🎤 +🎥 +🎦 +🎧 +🎨 +🎩 +🎪 +🎫 +🎬 +🎭 +🎮 +🎯 +🎰 +🎱 +🎲 +🎳 +🎴 +🎵 +🎶 +🎷 +🎸 +🎹 +🎺 +🎻 +🎼 +🎽 +🎾 +🎿 +🏀 +🏁 +🏂 +🏃 +🏄 +🏅 +🏆 +🏇 +🏈 +🏉 +🏊 +🏏 +🏐 +🏑 +🏒 +🏓 +🏠 +🏡 +🏢 +🏣 +🏤 +🏥 +🏦 +🏧 +🏨 +🏩 +🏪 +🏫 +🏬 +🏭 +🏮 +🏯 +🏰 +⏩ +⏪ +⏫ +🏴 +⏬ +⏰ +⏳ +🏸 +🏹 +🏺 +🐀 +🐁 +🐂 +🐃 +🐄 +🐅 +🐆 +🐇 +🐈 +🐉 +🐊 +🐋 +🐌 +🐍 +🐎 +🐏 +🐐 +🐑 +🐒 +🐓 +🐔 +🐕 +🐖 +🐗 +🐘 +🐙 +🐚 +🐛 +🐜 +🐝 +🐞 +🐟 +🐠 +🐡 +🐢 +🐣 +🐤 +🐥 +🐦 +🐧 +🐨 +🐩 +🐪 +🐫 +🐬 +🐭 +🐮 +🐯 +🐰 +🐱 +🐲 +🐳 +🐴 +🐵 +🐶 +🐷 +🐸 +🐹 +🐺 +🐻 +🐼 +🐽 +🐾 +👀 +👂 +👃 +👄 +👅 +👆 +👇 +👈 +👉 +👊 +👋 +👌 +👍 +👎 +👏 +👐 +👑 +👒 +👓 +👔 +👕 +👖 +👗 +👘 +👙 +👚 +👛 +👜 +👝 +👞 +👟 +👠 +👡 +👢 +👣 +👤 +👥 +👦 +👧 +👨 +👩 +👪 +👫 +👬 +👭 +👮 +👯 +👰 +👱 +👲 +👳 +👴 +👵 +👶 +👷 +👸 +👹 +👺 +👻 +👼 +👽 +👾 +👿 +💀 +💁 +💂 +💃 +💄 +💅 +💆 +💇 +💈 +💉 +💊 +💋 +💌 +💍 +💎 +💏 +💐 +💑 +💒 +💓 +💔 +💕 +💖 +💗 +💘 +💙 +💚 +💛 +💜 +💝 +💞 +💟 +💠 +💡 +💢 +💣 +💤 +💥 +💦 +💧 +💨 +💩 +💪 +💫 +💬 +💭 +💮 +💯 +💰 +💱 +💲 +💳 +💴 +💵 +💶 +💷 +💸 +💹 +💺 +💻 +💼 +💽 +💾 +💿 +📀 +📁 +📂 +📃 +📄 +📅 +📆 +📇 +📈 +📉 +📊 +📋 +📌 +📍 +📎 +📏 +📐 +📑 +📒 +📓 +📔 +📕 +📖 +📗 +📘 +📙 +📚 +📛 +📜 +📝 +📞 +📟 +📠 +📡 +📢 +📣 +📤 +📥 +📦 +📧 +📨 +📩 +📪 +📫 +📬 +📭 +📮 +📯 +📰 +📱 +📲 +📳 +📴 +📵 +📶 +📷 +📸 +📹 +📺 +📻 +📼 +📿 +🔀 +🔁 +🔂 +🔃 +🔄 +🔅 +🔆 +🔇 +🔈 +🔉 +🔊 +🔋 +🔌 +🔍 +🔎 +🔏 +🔐 +🔑 +🔒 +🔓 +🔔 +🔕 +🔖 +🔗 +🔘 +🔙 +🔚 +🔛 +🔜 +🔝 +🔞 +🔟 +🔠 +🔡 +🔢 +🔣 +🔤 +🔥 +🔦 +🔧 +🔨 +🔩 +🔪 +🔫 +🔬 +🔭 +🔮 +🔯 +🔰 +🔱 +🔲 +🔳 +🔴 +🔵 +🔶 +🔷 +🔸 +🔹 +🔺 +🔻 +🔼 +🔽 +🕋 +🕌 +🕍 +🕎 +🕐 +🕑 +🕒 +🕓 +🕔 +🕕 +🕖 +🕗 +🕘 +🕙 +🕚 +🕛 +🕜 +🕝 +🕞 +🕟 +🕠 +🕡 +🕢 +🕣 +🕤 +🕥 +🕦 +🕧 +🕺 +🖕 +🖖 +🖤 +🗻 +🗼 +◽ +◾ +🗽 +🗾 +🗿 +😀 +😁 +😂 +😃 +😄 +😅 +😆 +😇 +😈 +😉 +😊 +😋 +😌 +😍 +😎 +😏 +😐 +😑 +☔ +☕ +😒 +😓 +😔 +😕 +😖 +😗 +😘 +😙 +😚 +😛 +😜 +😝 +😞 +😟 +😠 +😡 +😢 +😣 +😤 +😥 +😦 +😧 +😨 +😩 +😪 +😫 +😬 +😭 +😮 +😯 +😰 +😱 +😲 +😳 +😴 +😵 +😶 +😷 +😸 +😹 +😺 +😻 +😼 +😽 +😾 +😿 +🙀 +🙁 +🙂 +🙃 +♈ +♉ +♊ +♋ +♌ +♍ +♎ +♏ +♐ +♑ +♒ +♓ +🙋 +🙌 +🙍 +🙎 +🙏 +♿ +🚀 +🚁 +🚂 +🚃 +🚄 +🚅 +🚆 +🚇 +🚈 +🚉 +🚊 +🚋 +🚌 +🚍 +🚎 +🚏 +🚐 +🚑 +🚒 +⚓ +🚓 +🚔 +🚕 +🚖 +🚗 +🚘 +🚙 +🚚 +🚛 +🚜 +🚝 +🚞 +🚟 +⚡ +🚠 +🚡 +🚢 +🚣 +🚤 +🚥 +🚦 +🚧 +⚪ +⚫ +🚨 +🚩 +🚪 +🚫 +🚬 +🚭 +🚮 +🚯 +🚰 +🚱 +🚲 +🚳 +🚴 +🚵 +🚶 +🚷 +🚸 +⚽ +⚾ +🚹 +🚺 +🚻 +🚼 +🚽 +⛄ +⛅ +🚾 +🚿 +🛀 +🛁 +🛂 +🛃 +🛄 +🛅 +⛎ +🛌 +🛐 +🛑 +🛒 +⛔ +⛪ +🛫 +🛬 +⛲ +⛳ +🛴 +⛵ +🛵 +🛶 +🛷 +🛸 +⛺ +🛹 +⛽ +✅ +🧦 +🙄 +✊ +✋ +🙅 +🙆 +🙇 +🙈 +🧧 +🙉 +🙊 +✨ +🧨 +❌ +❎ +🧩 +❓ +❔ +❕ +❗ +🧪 +🧫 +➕ +➖ +➗ +🦐 +🦑 +➰ +➿ +🧰 diff --git a/Project/Tools/twitter2messages.sh b/Project/Tools/twitter2messages.sh new file mode 100755 index 0000000..9bb20a3 --- /dev/null +++ b/Project/Tools/twitter2messages.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash + +SCRIPT=`realpath $0` +SCRIPTPATH=`dirname $SCRIPT` + +# toolset:--------------------------------------------------------------------- + +command 2> >(while read line; do echo -e "\e[01;31m$line\e[0m" >&2; done) + +function lineprint { + printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' = +} + +function message { + lineprint + printf "$1\n" + lineprint +} + +function error_message { + lineprint + printf "$1\n" >&2 + lineprint +} + +current_action="IDLE" + +function confirm_action { + message "successfully finished action: $current_action" +} + +function set_action { + current_action="$1" + message "$1" +} + +function perform { + "$@" + local status=$? + if [ $status -ne 0 ] + then + error_message "$current_action failed!" + fi + return $status +} + +function perform_and_exit { + perform "$@" || exit 1 +} + +# ----------------------------------------------------------------------------- + +INPUT=$1 +OUTPUT=$2 +if [ $# -ne 2 ] +then + error_message "Error: no input file given. Usage: $0 " + exit 1 +fi + +set_action "processing all files in $INPUT and write to $OUTPUT" + +perform_and_exit export elist=\"`head -c -1 "$SCRIPTPATH/emoji-list.txt" | tr '\n' ',' | sed 's/,/\",\"/g'`\" +perform_and_exit echo "filter by emoji list:" +perform_and_exit echo $elist | tr -d '"' | tr -d ',' + +perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null) | [select(.text | contains($elist))] | select(any)| unique_by(.id) | .[]" | tee /dev/tty > "$OUTPUT" +# ↑ such obvious, much selfexplaining 💁😈 + +confirm_action From c71e761bab5ea6c17c257b9816f64ad127544d43 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Mon, 21 May 2018 23:42:55 +0200 Subject: [PATCH 09/15] faster twitter parsing --- Project/Tools/twitter2messages.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Project/Tools/twitter2messages.sh b/Project/Tools/twitter2messages.sh index 9bb20a3..d5538ef 100755 --- a/Project/Tools/twitter2messages.sh +++ b/Project/Tools/twitter2messages.sh @@ -64,7 +64,9 @@ perform_and_exit export elist=\"`head -c -1 "$SCRIPTPATH/emoji-list.txt" | tr '\ perform_and_exit echo "filter by emoji list:" perform_and_exit echo $elist | tr -d '"' | tr -d ',' -perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null) | [select(.text | contains($elist))] | select(any)| unique_by(.id) | .[]" | tee /dev/tty > "$OUTPUT" +#perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null) | [select(.text | contains($elist))] | select(any)| unique_by(.id) | .[]" | tee /dev/tty > "$OUTPUT" +perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 1 -B 4 | tee /dev/tty > "$OUTPUT" + # ↑ such obvious, much selfexplaining 💁😈 confirm_action From 952aa6b676581fa0d8a399b5ebe324f1ac68261a Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Mon, 21 May 2018 23:50:07 +0200 Subject: [PATCH 10/15] fixing twitter parsing --- Project/Tools/twitter2messages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project/Tools/twitter2messages.sh b/Project/Tools/twitter2messages.sh index d5538ef..3d22b0e 100755 --- a/Project/Tools/twitter2messages.sh +++ b/Project/Tools/twitter2messages.sh @@ -65,7 +65,7 @@ perform_and_exit echo "filter by emoji list:" perform_and_exit echo $elist | tr -d '"' | tr -d ',' #perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null) | [select(.text | contains($elist))] | select(any)| unique_by(.id) | .[]" | tee /dev/tty > "$OUTPUT" -perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 1 -B 4 | tee /dev/tty > "$OUTPUT" +perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.id, text: .text} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 1 -B 4 | tee /dev/tty > "$OUTPUT" # ↑ such obvious, much selfexplaining 💁😈 From d5d1c34aa4d6188bff41cf2ba8bd968850c03de4 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Tue, 22 May 2018 16:40:46 +0200 Subject: [PATCH 11/15] Task 2 complete --- Jonas_Solutions/Task_02_JonasWeinz.ipynb | 1218 ++++++++++++++++++++-- Jonas_Solutions/output.ttl | 94 ++ 2 files changed, 1253 insertions(+), 59 deletions(-) create mode 100644 Jonas_Solutions/output.ttl diff --git a/Jonas_Solutions/Task_02_JonasWeinz.ipynb b/Jonas_Solutions/Task_02_JonasWeinz.ipynb index 31cd70f..b3825f2 100644 --- a/Jonas_Solutions/Task_02_JonasWeinz.ipynb +++ b/Jonas_Solutions/Task_02_JonasWeinz.ipynb @@ -130,12 +130,13 @@ " score = metrics.accuracy_score(yt, pred)\n", " pp(\"score: \" + str(score))\n", " cm = metrics.confusion_matrix(yt, pred, labels=labels)\n", - " plot_confusion_matrix(cm, classes=labels, title=title)" + " plot_confusion_matrix(cm, classes=labels, title=title)\n", + " return cm" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -144,7 +145,7 @@ "\"\\nfrom rdflib import Graph, Literal, BNode, RDF, Namespace\\nfrom rdflib.namespace import FOAF, DC, XSD\\n\\nmexcore = Namespace('http://mex.aksw.org/mex-core#')\\nmexperf = Namespace('http://mex.aksw.org/mex-perf#')\\nmexalgo = Namespace('http://mex.aksw.org/mex-algo#')\\nprov = Namespace('http://www.w3.org/ns/prov#')\\n\\ndef create_mex_graph():\\n graph = Graph()\\n graph.bind(mexcore)\\n graph.bind(mexperf)\\n graph.bind(mexalgo)\\n graph.bind(prov)\\n graph.bind(FOAF)\\n graph.bind(DC)\\n graph.bind(XSD)\\n \\n return graph\\n\\ndef mex_performance(experiment, model, dataset, performance, phase='Train', graph=create_mex_graph()):\\n \\n p = BNode()\\n \\n\"" ] }, - "execution_count": 11, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -178,26 +179,6 @@ "'''" ] }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Namespace('http://xmlns.com/foaf/0.1/')" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "FOAF\n" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -209,9 +190,70 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "================================================================================\n", + "checking whether unzip is installed\n", + "================================================================================\n", + "UnZip 6.00 of 20 April 2009, by Debian. Original by Info-ZIP.\n", + "\n", + "Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;\n", + "see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.\n", + "\n", + "Compiled with gcc 6.3.0 20170415 for Unix (Linux ELF).\n", + "\n", + "UnZip special compilation options:\n", + " ACORN_FTYPE_NFS\n", + " COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)\n", + " SET_DIR_ATTRIB\n", + " SYMLINKS (symbolic links supported, if RTL and file system permit)\n", + " TIMESTAMP\n", + " UNIXBACKUP\n", + " USE_EF_UT_TIME\n", + " USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)\n", + " USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)\n", + " UNICODE_SUPPORT [wide-chars, char coding: UTF-8] (handle UTF-8 paths)\n", + " LARGE_FILE_SUPPORT (large files over 2 GiB supported)\n", + " ZIP64_SUPPORT (archives using Zip64 for large files supported)\n", + " USE_BZIP2 (PKZIP 4.6+, using bzip2 lib version 1.0.6, 6-Sept-2010)\n", + " VMS_TEXT_CONV\n", + " WILD_STOP_AT_DIR\n", + " [decryption, version 2.11 of 05 Jan 2007]\n", + "\n", + "UnZip and ZipInfo environment options:\n", + " UNZIP: [none]\n", + " UNZIPOPT: [none]\n", + " ZIPINFO: [none]\n", + " ZIPINFOOPT: [none]\n", + "================================================================================\n", + "successfully finished action: checking whether unzip is installed\n", + "================================================================================\n", + "================================================================================\n", + "downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n", + "================================================================================\n", + "================================================================================\n", + "successfully finished action: downloading and unpacking https://www.cs.ucsb.edu/~william/data/liar_dataset.zip if not already existing\n", + "================================================================================\n", + "================================================================================\n", + "downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n", + "================================================================================\n", + "================================================================================\n", + "successfully finished action: downloading and unpacking https://raw.githubusercontent.com/GeorgeMcIntire/fake_real_news_dataset/master/fake_or_real_news.csv.zip if not already existing\n", + "================================================================================\n", + "================================================================================\n", + "downloading Helper script: script_dataset3.py\n", + "================================================================================\n", + "================================================================================\n", + "successfully finished action: downloading Helper script: script_dataset3.py\n", + "================================================================================\n" + ] + } + ], "source": [ "%%bash\n", "./Task_2_gen_data.sh" @@ -227,7 +269,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -243,9 +285,147 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(6335, 3)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
titletextlabel
Unnamed: 0
8476You Can Smell Hillary’s FearDaniel Greenfield, a Shillman Journalism Fello...FAKE
10294Watch The Exact Moment Paul Ryan Committed Pol...Google Pinterest Digg Linkedin Reddit Stumbleu...FAKE
3608Kerry to go to Paris in gesture of sympathyU.S. Secretary of State John F. Kerry said Mon...REAL
10142Bernie supporters on Twitter erupt in anger ag...— Kaydee King (@KaydeeKing) November 9, 2016 T...FAKE
875The Battle of New York: Why This Primary MattersIt's primary day in New York and front-runners...REAL
6903Tehran, USA\\nI’m not an immigrant, but my grandparents ...FAKE
7341Girl Horrified At What She Watches Boyfriend D...Share This Baylee Luciani (left), Screenshot o...FAKE
95‘Britain’s Schindler’ Dies at 106A Czech stockbroker who saved more than 650 Je...REAL
4869Fact check: Trump and Clinton at the 'commande...Hillary Clinton and Donald Trump made some ina...REAL
2909Iran reportedly makes new push for uranium con...Iranian negotiators reportedly have made a las...REAL
\n", + "
" + ], + "text/plain": [ + " title \\\n", + "Unnamed: 0 \n", + "8476 You Can Smell Hillary’s Fear \n", + "10294 Watch The Exact Moment Paul Ryan Committed Pol... \n", + "3608 Kerry to go to Paris in gesture of sympathy \n", + "10142 Bernie supporters on Twitter erupt in anger ag... \n", + "875 The Battle of New York: Why This Primary Matters \n", + "6903 Tehran, USA \n", + "7341 Girl Horrified At What She Watches Boyfriend D... \n", + "95 ‘Britain’s Schindler’ Dies at 106 \n", + "4869 Fact check: Trump and Clinton at the 'commande... \n", + "2909 Iran reportedly makes new push for uranium con... \n", + "\n", + " text label \n", + "Unnamed: 0 \n", + "8476 Daniel Greenfield, a Shillman Journalism Fello... FAKE \n", + "10294 Google Pinterest Digg Linkedin Reddit Stumbleu... FAKE \n", + "3608 U.S. Secretary of State John F. Kerry said Mon... REAL \n", + "10142 — Kaydee King (@KaydeeKing) November 9, 2016 T... FAKE \n", + "875 It's primary day in New York and front-runners... REAL \n", + "6903 \\nI’m not an immigrant, but my grandparents ... FAKE \n", + "7341 Share This Baylee Luciani (left), Screenshot o... FAKE \n", + "95 A Czech stockbroker who saved more than 650 Je... REAL \n", + "4869 Hillary Clinton and Donald Trump made some ina... REAL \n", + "2909 Iranian negotiators reportedly have made a las... REAL " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "display(df_1.shape)\n", "display(df_1[:10])" @@ -260,7 +440,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -269,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -287,16 +467,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.9960008419280152'\n", + "Confusion matrix, without normalization\n", + "array([[2342, 3],\n", + " [ 16, 2390]])\n", + "'score: 0.8478535353535354'\n", + "Confusion matrix, without normalization\n", + "array([[737, 82],\n", + " [159, 606]])\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from sklearn.ensemble import RandomForestClassifier as RFC\n", "clf_a = RFC(criterion='entropy', random_state=4222)\n", "max_size=10000\n", "clf_a.fit(vec_train_1[:max_size], y1[:max_size])\n", "test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- train\", Xt=vec_train_1,yt=y1, clf=clf_a)\n", - "test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- test\", Xt=vec_test_1,yt=yt1, clf=clf_a)" + "cm_1 = test_classifier(labels=[\"FAKE\",\"REAL\"], title=\"Configuration 1, model a -- test\", Xt=vec_test_1,yt=yt1, clf=clf_a)" ] }, { @@ -311,9 +526,543 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/markdown": [ + "----\n", + "#### Train Data:" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
idlabelstatementsubjectsspeakerjobstateparty#barely_true#false#half_true#mostly_true#pants_on_firecontext
02635.jsonfalseSays the Annies List political group supports ...abortiondwayne-bohacState representativeTexasrepublican0.01.00.00.00.0a mailer
31123.jsonfalseHealth care reform legislation is likely to ma...health-careblog-postingNaNNaNnone7.019.03.05.044.0a news release
512465.jsontrueThe Chicago Bears have had more starting quart...educationrobin-vosWisconsin Assembly speakerWisconsinrepublican0.03.02.05.01.0a an online opinion-piece
125947.jsonfalseWhen Mitt Romney was governor of Massachusetts...history,state-budgetmitt-romneyFormer governorMassachusettsrepublican34.032.058.033.019.0an interview with CBN News
16620.jsontrueMcCain opposed a requirement that the governme...federal-budgetbarack-obamaPresidentIllinoisdemocrat70.071.0160.0163.09.0a radio ad
\n", + "
" + ], + "text/plain": [ + " id label statement \\\n", + "0 2635.json false Says the Annies List political group supports ... \n", + "3 1123.json false Health care reform legislation is likely to ma... \n", + "5 12465.json true The Chicago Bears have had more starting quart... \n", + "12 5947.json false When Mitt Romney was governor of Massachusetts... \n", + "16 620.json true McCain opposed a requirement that the governme... \n", + "\n", + " subjects speaker job \\\n", + "0 abortion dwayne-bohac State representative \n", + "3 health-care blog-posting NaN \n", + "5 education robin-vos Wisconsin Assembly speaker \n", + "12 history,state-budget mitt-romney Former governor \n", + "16 federal-budget barack-obama President \n", + "\n", + " state party #barely_true #false #half_true #mostly_true \\\n", + "0 Texas republican 0.0 1.0 0.0 0.0 \n", + "3 NaN none 7.0 19.0 3.0 5.0 \n", + "5 Wisconsin republican 0.0 3.0 2.0 5.0 \n", + "12 Massachusetts republican 34.0 32.0 58.0 33.0 \n", + "16 Illinois democrat 70.0 71.0 160.0 163.0 \n", + "\n", + " #pants_on_fire context \n", + "0 0.0 a mailer \n", + "3 44.0 a news release \n", + "5 1.0 a an online opinion-piece \n", + "12 19.0 an interview with CBN News \n", + "16 9.0 a radio ad " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "----\n", + "#### Test Data:" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
idlabelstatementsubjectsspeakerjobstateparty#barely_true#false#half_true#mostly_true#pants_on_firecontext
011972.jsontrueBuilding a wall on the U.S.-Mexico border will...immigrationrick-perryGovernorTexasrepublican3030422318Radio interview
111685.jsonfalseWisconsin is on pace to double the number of l...jobskatrina-shanklandState representativeWisconsindemocrat21000a news conference
211096.jsonfalseSays John McCain has done nothing to help the ...military,veterans,voting-recorddonald-trumpPresident-ElectNew Yorkrepublican63114513761comments on ABC's This Week.
55962.jsontrueOver the past five years the federal governmen...federal-budget,pensions,retirementbrendan-dohertyNaNRhode Islandrepublican12110a campaign website
67070.jsontrueSays that Tennessee law requires that schools ...county-budget,county-government,education,taxesstand-children-tennesseeChild and education advocacy organization.Tennesseenone00000in a post on Facebook.
\n", + "
" + ], + "text/plain": [ + " id label statement \\\n", + "0 11972.json true Building a wall on the U.S.-Mexico border will... \n", + "1 11685.json false Wisconsin is on pace to double the number of l... \n", + "2 11096.json false Says John McCain has done nothing to help the ... \n", + "5 5962.json true Over the past five years the federal governmen... \n", + "6 7070.json true Says that Tennessee law requires that schools ... \n", + "\n", + " subjects speaker \\\n", + "0 immigration rick-perry \n", + "1 jobs katrina-shankland \n", + "2 military,veterans,voting-record donald-trump \n", + "5 federal-budget,pensions,retirement brendan-doherty \n", + "6 county-budget,county-government,education,taxes stand-children-tennessee \n", + "\n", + " job state party \\\n", + "0 Governor Texas republican \n", + "1 State representative Wisconsin democrat \n", + "2 President-Elect New York republican \n", + "5 NaN Rhode Island republican \n", + "6 Child and education advocacy organization. Tennessee none \n", + "\n", + " #barely_true #false #half_true #mostly_true #pants_on_fire \\\n", + "0 30 30 42 23 18 \n", + "1 2 1 0 0 0 \n", + "2 63 114 51 37 61 \n", + "5 1 2 1 1 0 \n", + "6 0 0 0 0 0 \n", + "\n", + " context \n", + "0 Radio interview \n", + "1 a news conference \n", + "2 comments on ABC's This Week. \n", + "5 a campaign website \n", + "6 in a post on Facebook. " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/markdown": [ + "----\n", + "#### Valid Data:" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "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", + "
idlabelstatementsubjectsspeakerjobstateparty#barely_true#false#half_true#mostly_true#pants_on_firecontext
27891.jsonfalseSays Having organizations parading as being so...campaign-finance,congress,taxesearl-blumenauerU.S. representativeOregondemocrat01110a U.S. Ways and Means hearing
59416.jsonfalseSays when armed civilians stop mass shootings ...gunsjim-rubensSmall business ownerNew Hampshirerepublican11010in an interview at gun shop in Hudson, N.H.
66861.jsontrueSays Tennessee is providing millions of dollar...education,state-budgetandy-berkeLawyer and state senatorTennesseedemocrat00000a letter to state Senate education committee c...
71122.jsonfalseThe health care reform plan would set limits s...health-careclub-growthNaNNaNnone45420a TV ad
813138.jsontrueSays Donald Trump started his career back in 1...candidates-biography,diversity,housinghillary-clintonPresidential candidateNew Yorkdemocrat402969767the first presidential debate
\n", + "
" + ], + "text/plain": [ + " id label statement \\\n", + "2 7891.json false Says Having organizations parading as being so... \n", + "5 9416.json false Says when armed civilians stop mass shootings ... \n", + "6 6861.json true Says Tennessee is providing millions of dollar... \n", + "7 1122.json false The health care reform plan would set limits s... \n", + "8 13138.json true Says Donald Trump started his career back in 1... \n", + "\n", + " subjects speaker \\\n", + "2 campaign-finance,congress,taxes earl-blumenauer \n", + "5 guns jim-rubens \n", + "6 education,state-budget andy-berke \n", + "7 health-care club-growth \n", + "8 candidates-biography,diversity,housing hillary-clinton \n", + "\n", + " job state party #barely_true #false \\\n", + "2 U.S. representative Oregon democrat 0 1 \n", + "5 Small business owner New Hampshire republican 1 1 \n", + "6 Lawyer and state senator Tennessee democrat 0 0 \n", + "7 NaN NaN none 4 5 \n", + "8 Presidential candidate New York democrat 40 29 \n", + "\n", + " #half_true #mostly_true #pants_on_fire \\\n", + "2 1 1 0 \n", + "5 0 1 0 \n", + "6 0 0 0 \n", + "7 4 2 0 \n", + "8 69 76 7 \n", + "\n", + " context \n", + "2 a U.S. Ways and Means hearing \n", + "5 in an interview at gun shop in Hudson, N.H. \n", + "6 a letter to state Senate education committee c... \n", + "7 a TV ad \n", + "8 the first presidential debate " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "names = [\n", " \"id\",\n", @@ -358,7 +1107,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -372,7 +1121,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -383,9 +1132,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Object `MLPClassifier` not found.\n" + ] + } + ], "source": [ "?MLPClassifier" ] @@ -399,9 +1156,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", + " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", + " hidden_layer_sizes=(100,), learning_rate='constant',\n", + " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", + " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", + " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", + " verbose=False, warm_start=False)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.neural_network import MLPClassifier\n", "clf_b = MLPClassifier(hidden_layer_sizes=(100,), random_state=4222)\n", @@ -410,12 +1184,72 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.9997275946608554'\n", + "Confusion matrix, without normalization\n", + "array([[1675, 1],\n", + " [ 0, 1995]])\n", + "'score: 0.5776805251641138'\n", + "Confusion matrix, without normalization\n", + "array([[109, 99],\n", + " [ 94, 155]])\n", + "'score: 0.6041666666666666'\n", + "Confusion matrix, without normalization\n", + "array([[ 92, 77],\n", + " [ 94, 169]])\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 92, 77],\n", + " [ 94, 169]])" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- train\", Xt=vec_train_2, yt=y2, clf=clf_b)\n", - "test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- test\", Xt=vec_test_2, yt=yt2, clf=clf_b)\n", + "cm_2 = test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- test\", Xt=vec_test_2, yt=yt2, clf=clf_b)\n", "test_classifier(labels=[\"true\", \"false\"], title=\"configuration 2 -- valid\", Xt=vectorizer_2.transform(Xv2), yt=yv2, clf=clf_b)" ] }, @@ -429,15 +1263,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.5142231947483589'\n", + "Confusion matrix, without normalization\n", + "array([[ 7, 201],\n", + " [ 21, 228]])\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "yt2_c3 = yt2.copy()\n", "yt2_c3[yt2_c3 == \"true\"] = \"REAL\"\n", "yt2_c3[yt2_c3 == \"false\"] = \"FAKE\"\n", "\n", - "test_classifier(labels=[\"REAL\", \"FAKE\"], \n", + "cm_3b=test_classifier(labels=[\"REAL\", \"FAKE\"], \n", " title=\"configuration 3: model a) → dataset 2\",\n", " Xt=vectorizer_1.transform(Xt2),\n", " yt=yt2_c3, clf=clf_a)" @@ -445,15 +1300,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.5391414141414141'\n", + "Confusion matrix, without normalization\n", + "array([[274, 491],\n", + " [239, 580]])\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "yt1_c3 = yt1.copy()\n", "yt1_c3[yt1_c3 == \"REAL\"] = \"true\"\n", "yt1_c3[yt1_c3 == \"FAKE\"] = \"false\"\n", "\n", - "test_classifier(labels=[\"true\", \"false\"], \n", + "cm_3a=test_classifier(labels=[\"true\", \"false\"], \n", " title=\"configuration 3: model b) → dataset 1\",\n", " Xt=vectorizer_2.transform(Xt1),\n", " yt=yt1_c3, clf=clf_b)" @@ -469,7 +1345,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -511,16 +1387,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing datasets\n", + "ds1= data/fake_or_real_news.csv\n", + "ds2= data/train.tsv\n", + "-- fake news\n", + "Index(['y', 'claim'], dtype='object')\n", + "3171\n", + "3164\n", + "6335\n", + "-- liar liar\n", + "Index(['y', 'claim'], dtype='object')\n", + "{'half-true', 'false', 'pants-fire', 'mostly-true', 'true', 'barely-true'} 10240\n", + "1676\n", + "1995\n", + "{'false', 'true'} 3671\n", + "false 5159\n", + "true 4847\n", + "Name: y, dtype: int64\n", + "done\n" + ] + } + ], "source": [ "X3, Xt3, y3, yt3 = get_dataset3_split('data/fake_or_real_news.csv', 'data/train.tsv')" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -538,9 +1439,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", + " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", + " hidden_layer_sizes=(16, 16), learning_rate='constant',\n", + " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", + " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", + " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", + " verbose=False, warm_start=False)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "clf_3 = MLPClassifier(hidden_layer_sizes=(16,16), random_state=4222)\n", "clf_3.fit(vec_train_3, y3)" @@ -548,12 +1466,194 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "'score: 0.9997144488863506'\n", + "Confusion matrix, without normalization\n", + "array([[3367, 1],\n", + " [ 1, 3635]])\n", + "'score: 0.7714856762158561'\n", + "Confusion matrix, without normalization\n", + "array([[1136, 343],\n", + " [ 343, 1180]])\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- train\", Xt=vec_train_3, yt=y3, clf=clf_3)\n", + "cm_4=test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- test\", Xt=vec_test_3, yt=yt3, clf=clf_3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### exporting" + ] + }, + { + "cell_type": "code", + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ - "test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- train\", Xt=vec_train_3, yt=y3, clf=clf_3)\n", - "test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- test\", Xt=vec_test_3, yt=yt3, clf=clf_3)" + "def recall(cm):\n", + " return cm[0,0] / (cm[0,0] + cm[0,1])\n", + "def precision(cm):\n", + " return cm[0,0] / (cm[0,0] + cm[1,0])\n", + "\n", + "def accuracy(cm):\n", + " return (cm[0,0] + cm[1,1]) / np.sum(cm)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "from rdflib import Namespace, Graph, Literal\n", + "from rdflib.namespace import DCTERMS, RDF" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "nsp = {\n", + " \"this\": Namespace(\"http://mex.aksw.org/examples/\"),\n", + " \"xsd\": Namespace(\"http://www.w3.org/2001/XMLSchema#\"),\n", + " \"rdfs\": Namespace(\"http://www.w3.org/2000/01/rdf-schema#\"),\n", + " \"mexcore\": Namespace(\"http://mex.aksw.org/mex-core#\"),\n", + " \"mexperf\": Namespace(\"http://mex.aksw.org/mex-perf#\"),\n", + " \"mexalgo\": Namespace(\"http://mex.aksw.org/mex-algo#\"),\n", + " \"prov\": Namespace(\"http://www.w3.org/ns/prov#\"),\n", + " \"dct\": DCTERMS,\n", + " \"rdf\": RDF\n", + "}\n", + "g = Graph()\n", + "\n", + "for i in nsp.items():\n", + " g.bind(i[0],i[1])\n", + "\n", + "g.add((nsp[\"this\"].jonas_weinz_task_2, nsp[\"rdf\"].type, nsp[\"mexcore\"].Experiment))\n", + "\n", + "g.add((nsp[\"this\"].ds1, nsp[\"rdf\"].type, nsp[\"mexcore\"].dataset))\n", + "g.add((nsp[\"this\"].ds1, nsp[\"rdfs\"].label, Literal(\"Dataset01\")))\n", + "\n", + "g.add((nsp[\"this\"].ds2, nsp[\"rdf\"].type, nsp[\"mexcore\"].dataset))\n", + "g.add((nsp[\"this\"].ds2, nsp[\"rdfs\"].label, Literal(\"Dataset02\")))\n", + "\n", + "g.add((nsp[\"this\"].ds3, nsp[\"rdf\"].type, nsp[\"mexcore\"].dataset))\n", + "g.add((nsp[\"this\"].ds3, nsp[\"rdfs\"].label, Literal(\"Dataset03\")))\n", + "\n", + "g.add((nsp[\"this\"].modela,nsp[\"rdf\"].type,nsp[\"mexalgo\"].Algorithm))\n", + "g.add((nsp[\"this\"].modela,nsp[\"rdfs\"].label,Literal('model a')))\n", + "g.add((nsp[\"this\"].modela,nsp[\"dct\"].identifier,Literal('RandomForestClassifier')))\n", + "\n", + "g.add((nsp[\"this\"].modelb,nsp[\"rdf\"].type,nsp[\"mexalgo\"].Algorithm))\n", + "g.add((nsp[\"this\"].modelb,nsp[\"rdfs\"].label,Literal('model b')))\n", + "g.add((nsp[\"this\"].modelb,nsp[\"dct\"].identifier,Literal('MLPClassifier')))\n", + "\n", + "g.add((nsp[\"this\"].modelc,nsp[\"rdf\"].type,nsp[\"mexalgo\"].Algorithm))\n", + "g.add((nsp[\"this\"].modelc,nsp[\"rdfs\"].label,Literal('model c')))\n", + "g.add((nsp[\"this\"].modelc,nsp[\"dct\"].identifier,Literal('MLPClassifier')))\n", + "\n", + "g.add((nsp[\"this\"].conf1,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", + "g.add((nsp[\"this\"].conf1,nsp[\"rdfs\"].label,Literal('configuration 1')))\n", + "g.add((nsp[\"this\"].conf1,nsp[\"prov\"].used, nsp[\"this\"].modela))\n", + "g.add((nsp[\"this\"].conf1,nsp[\"prov\"].used, nsp[\"this\"].ds1))\n", + "g.add((nsp[\"this\"].conf1,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", + "\n", + "g.add((nsp[\"this\"].conf2,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", + "g.add((nsp[\"this\"].conf2,nsp[\"rdfs\"].label,Literal('configuration 2')))\n", + "g.add((nsp[\"this\"].conf2,nsp[\"prov\"].used, nsp[\"this\"].modelb))\n", + "g.add((nsp[\"this\"].conf2,nsp[\"prov\"].used, nsp[\"this\"].ds2))\n", + "g.add((nsp[\"this\"].conf2,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", + "\n", + "g.add((nsp[\"this\"].conf3a,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", + "g.add((nsp[\"this\"].conf3a,nsp[\"rdfs\"].label,Literal('configuration 3a')))\n", + "g.add((nsp[\"this\"].conf3a,nsp[\"prov\"].used, nsp[\"this\"].modelb))\n", + "g.add((nsp[\"this\"].conf3a,nsp[\"prov\"].used, nsp[\"this\"].ds1))\n", + "g.add((nsp[\"this\"].conf3a,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", + "\n", + "g.add((nsp[\"this\"].conf3b,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", + "g.add((nsp[\"this\"].conf3b,nsp[\"rdfs\"].label,Literal('configuration 3b')))\n", + "g.add((nsp[\"this\"].conf3b,nsp[\"prov\"].used, nsp[\"this\"].modela))\n", + "g.add((nsp[\"this\"].conf3b,nsp[\"prov\"].used, nsp[\"this\"].ds2))\n", + "g.add((nsp[\"this\"].conf3b,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", + " \n", + "g.add((nsp[\"this\"].conf4,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", + "g.add((nsp[\"this\"].conf4,nsp[\"rdfs\"].label,Literal('configuration 4')))\n", + "g.add((nsp[\"this\"].conf4,nsp[\"prov\"].used, nsp[\"this\"].modelc))\n", + "g.add((nsp[\"this\"].conf4,nsp[\"prov\"].used, nsp[\"this\"].ds3))\n", + "g.add((nsp[\"this\"].conf4,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", + "\n", + "g.add((nsp[\"this\"].measure1,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", + "g.add((nsp[\"this\"].measure1,nsp[\"mexperf\"].precision,Literal(str(precision(cm_1)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure1,nsp[\"mexperf\"].recall,Literal(str(recall(cm_1)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure1,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_1)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure1,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf1))\n", + "\n", + "g.add((nsp[\"this\"].measure2,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", + "g.add((nsp[\"this\"].measure2,nsp[\"mexperf\"].precision,Literal(str(precision(cm_2)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure2,nsp[\"mexperf\"].recall,Literal(str(recall(cm_2)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure2,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_2)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure2,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf2))\n", + "\n", + "g.add((nsp[\"this\"].measure3a,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", + "g.add((nsp[\"this\"].measure3a,nsp[\"mexperf\"].precision,Literal(str(precision(cm_3a)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure3a,nsp[\"mexperf\"].recall,Literal(str(recall(cm_3a)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure3a,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_3a)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure3a,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf3a))\n", + "\n", + "g.add((nsp[\"this\"].measure3b,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", + "g.add((nsp[\"this\"].measure3b,nsp[\"mexperf\"].precision,Literal(str(precision(cm_3b)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure3b,nsp[\"mexperf\"].recall,Literal(str(recall(cm_3b)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure3b,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_3b)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure3b,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf3b))\n", + "\n", + "g.add((nsp[\"this\"].measure4,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", + "g.add((nsp[\"this\"].measure4,nsp[\"mexperf\"].precision,Literal(str(precision(cm_4)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure4,nsp[\"mexperf\"].recall,Literal(str(recall(cm_4)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure4,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_4)),datatype=nsp[\"xsd\"].float)))\n", + "g.add((nsp[\"this\"].measure4,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf4))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "g.serialize(destination='output.ttl', format='turtle')" ] }, { diff --git a/Jonas_Solutions/output.ttl b/Jonas_Solutions/output.ttl new file mode 100644 index 0000000..104e95b --- /dev/null +++ b/Jonas_Solutions/output.ttl @@ -0,0 +1,94 @@ +@prefix dct: . +@prefix mexalgo: . +@prefix mexcore: . +@prefix mexperf: . +@prefix prov: . +@prefix rdf: . +@prefix rdfs: . +@prefix this: . +@prefix xml: . +@prefix xsd: . + +this:measure1 a mexcore:PerformanceMeasure ; + mexperf:accuracy "0.8478535353535354"^^xsd:float ; + mexperf:precision "0.8225446428571429"^^xsd:float ; + mexperf:recall "0.8998778998778999"^^xsd:float ; + prov:wasGeneratedBy this:conf1 . + +this:measure2 a mexcore:PerformanceMeasure ; + mexperf:accuracy "0.5776805251641138"^^xsd:float ; + mexperf:precision "0.5369458128078818"^^xsd:float ; + mexperf:recall "0.5240384615384616"^^xsd:float ; + prov:wasGeneratedBy this:conf2 . + +this:measure3a a mexcore:PerformanceMeasure ; + mexperf:accuracy "0.5391414141414141"^^xsd:float ; + mexperf:precision "0.5341130604288499"^^xsd:float ; + mexperf:recall "0.3581699346405229"^^xsd:float ; + prov:wasGeneratedBy this:conf3a . + +this:measure3b a mexcore:PerformanceMeasure ; + mexperf:accuracy "0.5142231947483589"^^xsd:float ; + mexperf:precision "0.25"^^xsd:float ; + mexperf:recall "0.03365384615384615"^^xsd:float ; + prov:wasGeneratedBy this:conf3b . + +this:measure4 a mexcore:PerformanceMeasure ; + mexperf:accuracy "0.7714856762158561"^^xsd:float ; + mexperf:precision "0.7680865449628127"^^xsd:float ; + mexperf:recall "0.7680865449628127"^^xsd:float ; + prov:wasGeneratedBy this:conf4 . + +this:conf1 a mexcore:ExperimentConfiguration ; + rdfs:label "configuration 1" ; + prov:used this:ds1, + this:modela ; + prov:wasStartedBy this:jonas_weinz_task_2 . + +this:conf2 a mexcore:ExperimentConfiguration ; + rdfs:label "configuration 2" ; + prov:used this:ds2, + this:modelb ; + prov:wasStartedBy this:jonas_weinz_task_2 . + +this:conf3a a mexcore:ExperimentConfiguration ; + rdfs:label "configuration 3a" ; + prov:used this:ds1, + this:modelb ; + prov:wasStartedBy this:jonas_weinz_task_2 . + +this:conf3b a mexcore:ExperimentConfiguration ; + rdfs:label "configuration 3b" ; + prov:used this:ds2, + this:modela ; + prov:wasStartedBy this:jonas_weinz_task_2 . + +this:conf4 a mexcore:ExperimentConfiguration ; + rdfs:label "configuration 4" ; + prov:used this:ds3, + this:modelc ; + prov:wasStartedBy this:jonas_weinz_task_2 . + +this:ds3 a mexcore:dataset ; + rdfs:label "Dataset03" . + +this:modelc a mexalgo:Algorithm ; + rdfs:label "model c" ; + dct:identifier "MLPClassifier" . + +this:ds1 a mexcore:dataset ; + rdfs:label "Dataset01" . + +this:ds2 a mexcore:dataset ; + rdfs:label "Dataset02" . + +this:modela a mexalgo:Algorithm ; + rdfs:label "model a" ; + dct:identifier "RandomForestClassifier" . + +this:modelb a mexalgo:Algorithm ; + rdfs:label "model b" ; + dct:identifier "MLPClassifier" . + +this:jonas_weinz_task_2 a mexcore:Experiment . + From 8c4b167057bbdc0d9cf017bd14e98774870055d7 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Tue, 22 May 2018 20:17:24 +0200 Subject: [PATCH 12/15] stream language detector --- Project/Tools/stream_language_detector.py | 19 +++++++++++++++++++ Project/Tools/twitter2messages.sh | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100755 Project/Tools/stream_language_detector.py diff --git a/Project/Tools/stream_language_detector.py b/Project/Tools/stream_language_detector.py new file mode 100755 index 0000000..23666d5 --- /dev/null +++ b/Project/Tools/stream_language_detector.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +from langdetect import detect +import fileinput as fi +import sys + +# just a little script to detect languages of lines starting +# with the json keyword 'text' and writing the language as json value to stdout. +# other lines are just passing through so that this script can be used in a shell pipeline + +for line in fi.input(): + s = str.split(line.lstrip(' '), ":") + if s[0] == '"text"': + try: + sys.stdout.write(' "lang": "' + detect(s[1]) + '"\n') + except Exception: + sys.stdout.write(' "lang": "NaN"\n') + sys.stdout.write(line) + + diff --git a/Project/Tools/twitter2messages.sh b/Project/Tools/twitter2messages.sh index 3d22b0e..bf80470 100755 --- a/Project/Tools/twitter2messages.sh +++ b/Project/Tools/twitter2messages.sh @@ -65,7 +65,7 @@ perform_and_exit echo "filter by emoji list:" perform_and_exit echo $elist | tr -d '"' | tr -d ',' #perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null) | [select(.text | contains($elist))] | select(any)| unique_by(.id) | .[]" | tee /dev/tty > "$OUTPUT" -perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.id, text: .text} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 1 -B 4 | tee /dev/tty > "$OUTPUT" +perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.id, text: .text} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 1 -B 4 | tee /dev/tty > "$OUTPUT" # ↑ such obvious, much selfexplaining 💁😈 From c9e182b5fa13afb04f1781e69cb3f89c018a247e Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Wed, 23 May 2018 19:34:38 +0200 Subject: [PATCH 13/15] save reply also --- Project/Tools/twitter2messages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project/Tools/twitter2messages.sh b/Project/Tools/twitter2messages.sh index bf80470..0920e0a 100755 --- a/Project/Tools/twitter2messages.sh +++ b/Project/Tools/twitter2messages.sh @@ -65,7 +65,7 @@ perform_and_exit echo "filter by emoji list:" perform_and_exit echo $elist | tr -d '"' | tr -d ',' #perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.name, text: .text} | select(.text != null) | [select(.text | contains($elist))] | select(any)| unique_by(.id) | .[]" | tee /dev/tty > "$OUTPUT" -perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.id, text: .text} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 1 -B 4 | tee /dev/tty > "$OUTPUT" +perform_and_exit find ./ -type f -name '*.bz2' -exec bzip2 -dc "{}" \; | jq ". | {id: .id, datetime: .created_at, person: .user.id, text: .text, lang: .lang, reply_to: .in_reply_to_status_id} | select(.text != null)" | grep --no-group-separator -Ff "$SCRIPTPATH/emoji-list.txt" -A 3 -B 4 | tee /dev/tty > "$OUTPUT" # ↑ such obvious, much selfexplaining 💁😈 From 7e1af5ac2c675e0edba8e0587a44ccd23da48172 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Mon, 28 May 2018 14:55:43 +0200 Subject: [PATCH 14/15] changed language detector streamer --- Project/Tools/stream_language_detector.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Project/Tools/stream_language_detector.py b/Project/Tools/stream_language_detector.py index 23666d5..08d4a2e 100755 --- a/Project/Tools/stream_language_detector.py +++ b/Project/Tools/stream_language_detector.py @@ -8,10 +8,9 @@ import sys # other lines are just passing through so that this script can be used in a shell pipeline for line in fi.input(): - s = str.split(line.lstrip(' '), ":") - if s[0] == '"text"': + if line.startswith(' "text"'): try: - sys.stdout.write(' "lang": "' + detect(s[1]) + '"\n') + sys.stdout.write(' "lang": "' + detect(line[10:]) + '"\n') except Exception: sys.stdout.write(' "lang": "NaN"\n') sys.stdout.write(line) From c055f72af75999ba751e106581e03af6f9d2c500 Mon Sep 17 00:00:00 2001 From: Jonas Weinz Date: Mon, 28 May 2018 19:13:57 +0200 Subject: [PATCH 15/15] simple improvements on tasks --- Jonas_Solutions/Task_02_JonasWeinz.ipynb | 250 ++++++++--------------- Jonas_Solutions/Task_03.ipynb | 67 ++++-- Jonas_Solutions/output.ttl | 52 ++--- 3 files changed, 156 insertions(+), 213 deletions(-) diff --git a/Jonas_Solutions/Task_02_JonasWeinz.ipynb b/Jonas_Solutions/Task_02_JonasWeinz.ipynb index b3825f2..52e963d 100644 --- a/Jonas_Solutions/Task_02_JonasWeinz.ipynb +++ b/Jonas_Solutions/Task_02_JonasWeinz.ipynb @@ -488,7 +488,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -498,7 +498,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1220,7 +1220,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1230,7 +1230,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1240,7 +1240,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1280,7 +1280,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1317,7 +1317,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAEmCAYAAAATPUntAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3XecFPX9x/HX+46mVBVEpIgNwQY2bBhQoyIW0Fgw2InYSOwao/kpKkaNJTG2mBCNYo0lErDE2BKxgAqigAUUBESagHQpn98f3+/h3nG3u3fO3d7efp485sHuzOzMZ/f2Pvf9fmfmMzIznHOuEBXlOgDnnMsVT4DOuYLlCdA5V7A8ATrnCpYnQOdcwfIE6JwrWJ4A6xBJG0n6l6TFkv7xI7YzQNK/k4wtFyS9IOm0Kr72BknzJX2TdFyu9vAEmAOSfi7pPUlLJc2Ov6g9Etj0cUBrYDMzO76qGzGzR8zs0ATiKUVSL0km6dky87vG+a9nuZ1rJQ3PtJ6ZHW5mf69CnB2AS4AdzWyLyr7e5Q9PgDVM0sXAH4AbCcmqA3AP0DeBzW8FfGZmaxLYVnWZB+wrabOUeacBnyW1AwU/5rvdAVhgZnOrsO96P2K/rqaZmU81NAHNgaXA8WnWaUhIkF/H6Q9Aw7isFzCT0DqZC8wGzojLhgDfA6vjPgYC1wLDU7bdETCgXnx+OvAFsAT4EhiQMv/NlNftB4wFFsf/90tZ9jpwPTA6buffQMsK3ltJ/PcB58d5xcAs4P+A11PW/SMwA/gOeB84IM7vXeZ9fpgSx9AYxwpguzjvF3H5vcDTKdu/GXgFUJkYfxpfvy5u/8E4/2hgIrAobrdLymumAVcAE4BVJZ+vT7V/ynkAhTTFX9416X5BgOuAd4DNgVbAW8D1cVmv+PrrgPpAH2A5sElcXjbhVZgAgcYxuewQl7UBdoqP1ydAYFNgIXBKfN1J8flmcfnrwFSgE7BRfH5TBe+tJAHuB7wb5/UBXgJ+USYBngxsFvd5CfAN0Ki895USx1fATvE19cskwI0JrczTgQOA+UC7dHGmPO8ELAMOidu9HJgCNIjLpwHjgfbARnHePcA9uf7O+ZR+8i5wzdoMmG/pu6gDgOvMbK6ZzSO07E5JWb46Ll9tZs8TWik7VDGedcDOkjYys9lmNrGcdY4APjezh81sjZk9BnwCHJWyzgNm9pmZrQCeBLql26mZvQVsKmkH4FTgoXLWGW5mC+I+byO0jDO9zwfNbGJ8zeoy21tO+BxvB4YDvzSzmRm2V+JEYJSZvRy3eysh2e+Xss6dZjYjfgaY2Xlmdl6W23c54gmwZi0AWmYYJ9oSmJ7yfHqct34bZRLocqBJZQMxs2WEX+xzgNmSRknqnEU8JTG1TXmeeqQ023geBgYDBwLPll0o6VJJk+MR7UWE4YOWGbY5I91CM3uX0OUXIVFnq9RnYGbr4r5SP4O0+3a1kyfAmvU2YYyoX5p1viYczCjRIc6rimWErl+JUkc0zewlMzuE0P39BPhLFvGUxDSrijGVeBg4D3g+ts7Wk3QAoZt5AqF734Iw/qiS0CvYZtrSRpLOJ7Qkv47bz1apz0CSCN3d1M/AyyrlIU+ANcjMFhMG+++W1E/SxpLqSzpc0i1xtceAqyW1ktQyrp/xlI8KjAd+IqmDpObAlSULJLWW1FdSY0JSXkroEpf1PNApnrpTT9KJwI7AyCrGBICZfQn0BK4qZ3FTwljnPKCepP8DmqUsnwN0rMyRXkmdgBsIY4unAJdLSttVT/EkcISkgyXVJ4xJriKMz7o85gmwhsXxrIuBqwm/4DMIXcF/xlVuAN4jHFH8CPggzqvKvl4Gnojbep/SSasoxvE18C0hGZ1bzjYWAEcSfukXEFpOR5rZ/KrEVGbbb5pZea3bl4AXCQctpgMrKd3FLDnJe4GkDzLtJw45DAduNrMPzexz4DfAw5IaZhHnp4TE+SfCwZOjgKPM7Ps0+7xP0n2Ztu1yS2becnfOFSZvATrnCpYnQOdcwfIE6JwrWJ4AnXMFq6ATYLxo/gFJCyWNkXSApE9zHVeJulKWqjKyrfQS131d0i+qsp34896pqnFmK1bAyfaKE1fDCjoBAj0I13e2M7PuZvY/M6vqZWU/iqSOsSTU+qtErPrKUu0Yy3EtjNN/JO2Y9H5quVsJ11TXGpJOl/RmbdiPpBMkvSVpebZlyvJRoSfArYBp8bKwaiWpuLr3UQlfE2oHbkq4vGwE8HhOI6p5I4ADJXm9v/J9S6hEdFOuA6lOeZMAJbWX9IykeZIWSLorzi+SdLWk6ZLmSnooXvWQ2qo6TdJXscLvVXHZQOCvhNp0SyUNKdtdkbS7pHGSlkj6h6QnJN0Ql23wVzTua7v4+EFJ90p6XtIywi/bEXF730maIenalJf/N/6/KMazb9l9SNpP0th4fexYSfulLHtd0vWSRsd4/x2vJNmAmS0ys2kWTgIVsJZQPirbn8XrChWT34qx/kvSZpIeie9trKSOWca9taQ3YswvU+Z6X0n7xP0skvShpF7Zxgk0ij+zJZI+kNQ15TNYSTg5/LBKbK/kMrh0yzeKP/uFkiYBe5VZ/mtJU2NMkyQdE+d3IZQJK/k+LorzK/zOSGokaXj8fVgUP9vWcVlzScMUCu7Oij+v4or2U5aZ/cfMnqTql2Hmh1yXo8lmItSM+xC4g1DGqRHQIy47k1CaaBvCRfjPAA/HZR0J12j+hVC9oyvhEqYucfnplK5714tYBgloQLgK4QJCCaRjCXXobijvtXGeAdvFxw8Srl/dn/CHplHc/i7x+a6ES7r6lYm1Xsr21u+DBMtSpWx/EeGSs3XA1Snzfw5MSPO61+Nnvi2hSMEkwlUbP42xPUSoEJNN3G8TKrQ0BH5CqCk4PC5rS7j6pE/8zA6Jz1ulxPGLCmK8llA557j487uUUPOwfso6dwK3V/K7+C/giDTLbwL+F993e+BjSpfWOp5QXKGIUIxiGdAmzXcq3Xfm7BjPxoTfkT2AZnHZs8CfCb8vmwNjgLMr2k+a91OqTFldm/KlBdid8KW5zMyWmdlKMytpGQ0gfIm/MLOlhOtd+6t0xZUhZrbCzD4kJNKuZLYP4Rf2Tgulp54hfIkq4zkzG21m62LMr5vZR/H5BMJ1vz2z3FZ1lKVqQUhgg4FxKfMfNbNdM8TzgJlNtXB98wvAVAuthjWES9V2yxS3Qun5vYDfmtkqM/sv4Re6xMmEYgnPx8/sZcJlgn0yxFbifTN7ykIJq9sJf4T2SVm+BGiR5bZKDAGGSTqiguUnAEPN7Fszm0FIsuuZ2T/M7Ov4fp4APid8v8uV4TuzmlBibTszW2tm75vZd7EV2Ae4MP6+zCU0HvpX8r3WeflSvrs9MN3Kr6NXXvmoeoRy8yWqUq5pS2CWxT+DUWVLHpVaX9LehBbCzoQWZkN+uK41m3gSL0tlZssUrlmdJ6mLZV8Gfk7K4xXlPC/Zd7q4twQWWukx2OmEnzeEMdrjJaUm+frAa1nGuP7zN7N1cXgjtbRYU0IreAOS3gH2TrPtRwl/PMraktI/91LvXdKphGuwO8ZZTUhT5ivDd+Zhwmf1uKQWhOudryJ8bvUJZc5KNlWEl+zaQL60AGcAHVR+Hb3yyketofQvZFXMBtqWGfNpn/K4VKkplT+YXvZC60cJg+/tzaw5YSwmU4mnEtVVlgrC92BjSifTpKSLezawiUJFmtRlJWYQhjNapEyNzSzbgfn1Py+FyjHtKD2m1YXQI9iAme1jZio7EVqscwjDBOWZTenvyfr3I2krwnDMYMIQQAtCFzndd6DC70zsmQwxsx0JxVmPJBSYnUEY6mmZ8rk1M7OS0368AECULwlwDOGLdZOkxnHwd/+47DHgojiY3oRws6EnKmgtVsbbhIMDgxXKQPWldFflQ2AnSd0kNSKMOWXSFPjWzFZK6k7pX6J5hLG4bSp4bWJlqSQdImm3OCjejNA9XAhMruy2slBh3GY2ndClHSKpgcKd8VJbe8MJXeXDYqyNFA5Utcty33tIOjb+4byQkBTegXAAgTBm9nIl3881wEAzG1XB8ieBKyVtEuP8ZcqyxoTkMy/GcAahZVdiDtBOUoOUeRV+ZyQdKGkXhTMMviN0ideZ2WzCvVluk9RM4UDhtpJ6ptlPKSWfN6E3VRQ/+/rpP5r8kxcJ0MzWEn4xtiPc92EmYQAZ4G+ErsB/CYPcKyn9pavqPr8nHPgYSOgmnUxINqvi8s8I55H9hzCOk835W+cB10laQqjzt74qsYWioEOB0fGIXupYFZZsWaoWhD8ciwkHTrYFels4MlpyAnZ55fErLYu4f07oan5LSC4Ppbx2BuFueb/hh9Jhl5H99/Y5wvek5CDMsfZDqfyjCIP7lT3KeXSa5AdhjHA64bv4b8J3EwAzmwTcRvjjOodwcGN0ymtfJdx46RtJJZ9Phd8ZQoHbpwjJbzLwRsr+TiV0mScR3v9ThMK3Fe2nrFMIQxn3Eu6hsoLyC+bmNS+HVQmS3gXuM7MHch2L+3Hiz3KgmX2c61hc7ngCTCN2GT4lFMEcQBh/2SZ2MZxzeS5fjgLnyg6ELkdjws10jvPk51zd4S1A51zByouDIM45Vx3qXBd4081aWrv2ZU87c7n22Tff5ToEV4FVc6bMN7NWSW2vuNlWZmtWZFzPVsx7ycx6J7XfqqhzCbBd+60Y9arfrbC2OfDGV3MdgqvA1Nv6lL1S50exNStouMMJGddbOf7uTDe6r3Z1LgE653JMgqLaVP2tYp4AnXPJy/6e9TnlCdA5l7z0ZRNrDU+AzrmEyVuAzrkCJXwM0DlXqORdYOdcAfMusHOuYHkL0DlXkPw8QOdcQfMusHOuMPlpMM65QlbkY4DOuUKUR+cB5kc71TmXR2IXONOUzZakaZI+kjRe0ntx3rWSZsV54yX1SVn/SklTJH0q6bBM2/cWoHMuecmeBnNgOXc/vMPMbi29S+0I9Ad2Ityg/j+SOsW7SpbLW4DOueQl1AKspL7A42a2ysy+BKZQ+l7eG/AE6JxLVsl5gJkmaCnpvZRpUDlbM+Dfkt4vs3ywpAmS/iZpkzivLeHe0SVmxnkV8i6wcy552XWB55vZnhnW6WFmsyRtDrws6RPCzdqvJyTH6wk3mz+zKmF6C9A5l7DkDoKY2az4/1zgWaC7mc0xs7Vmtg74Cz90c2cB7VNe3i7Oq5AnQOdc8qTMU8ZNqLGkpiWPgUOBjyW1SVntGODj+HgE0F9SQ0lbA9sDY9Ltw7vAzrlkSVCUSGppDTyrkCzrAY+a2YuSHpbUjdAFngacDWBmEyU9CUwC1gDnpzsCXLJR55xLVgKnwZjZF0DXcuafkuY1Q4Gh2e7DE6BzLnl+LbBzrmB5PUDnXEHyeoDOuUImbwE65wqR8ATonCtUilMe8ATonEuYKCryo8DOuQLlXWDnXMHyBOicK0w+BuicK1TyMUDnXCHzLrBzrmB5AnTOFSYfA3TOFSofA3TOFTTvAjvnCld+5D9PgM65hMlbgM65AuZjgM65giSUNy3A/EjTddTXs2ZwYt9DOWjfbhy8324M+/NdAJw38GR69+xO757d2a9bJ3r37F7qdbNmfkXnDpvx57vuyEXYBaFIMOKi/bn/zD0A2Ge7TXnuwv14/tIe3NJ/F4qLwi/4Nq0a84/B+zDppsMY2HPrXIZcuyiLqRbwFmAOFRfX4+rrbmaXrruxdMkSjjh4Xw7oeTD3DBu+fp3rf3sFTZs1K/W6666+gl4HH1bT4RaU0w/oyJQ5S2nSqB4S/L7/rpxy3ximzV/OBYdtz7F7tuUfY2ayaMVqrntuMofstHmuQ649EhwDlDQNWAKsBdaY2Z6SNgWeADoSbot5gpktVNjpH4E+wHLgdDP7IN32vQWYQ623aMMuXXcDoEnTpmy3fWe+mf3DjezNjJH/fIq+x564ft5Lo0bQYauOdOrcpcbjLRRbNG9Ery6teHLMDAA22bgBq9cY0+YvB2D0Z/M5bJfWAHy79Hs+mrGYNessZ/HWRkVFRRmnSjjQzLqZ2Z7x+a+BV8xse+CV+BzgcMLN0LcHBgH3ZoyzMlG46jPjq2lM/Gg8u+3xQ3d3zNtv0rJVa7bedjsAli1dyr133saFl12VqzALwtV9u3DzyE+xmNO+XfY9xcVi53ahJd571y1o02KjHEaYB6q3C9wX+Ht8/HegX8r8hyx4B2ghqU26DdVIApTUQtJ5NbGvfLRs6VLOPv0krhl6a6nu7nNPP0nfn52w/vkdt9zAwHN/SeMmTXIRZkE4sEsrFixdxcRZ35Waf+Hw8Vx1dBee/tW+LFu1hrXe4ktLUsYJaCnpvZRpUDmbMuDfkt5PWd7azGbHx98ArePjtsCMlNfOjPMqVFNjgC2A84B7UmdKqmdma2oohlpp9erVnH16f445rj+HH9Vv/fw1a9bw4qjnGPXKW+vnjXt/DM+PeIbfXfsbvlu8GBUV0bBhI04/69xchF4n7dFxEw7esTU9O7eiYb1imjSqx20n7colj03gpHveBaBHp5Zs3apxjiOtvVISXCbzU7q1FelhZrMkbQ68LOmT1IVmZpKq/NeophLgTcC2ksYDq4GVwEKgs6RDgZFmtjOApEuBJmZ2raRtgbuBVoRBzbPM7JNy95CHzIzLfnU223XqzFnnXVBq2ZtvvMq223eiTdt26+c9PerV9Y9vv/l6Gjdu4skvYbe+8Bm3vvAZAHtvuykDe27NJY9NYNMmDfh26fc0KC5i0IFbc88rU3Mcae2W1HmAZjYr/j9X0rNAd2COpDZmNjt2cefG1WcB7VNe3i7Oq1BNJcBfAzubWTdJvYBR8fmXkjqmed39wDlm9rmkvQktyIPKrhSbxoMA2rZrX3ZxrTX23bd45slH6bzjzutPdbn86us46JDejHjmSY5OOfjhcuusXltzYJfNKRI8+vYM3pnyLQAtmzbgnxfsT5NG9VhnxhkHdKT37//H0lUF3bFJ5DQXSY2BIjNbEh8fClwHjABOIzSsTgOeiy8ZAQyW9DiwN7A4patcrlydBjPGzL5Mt4KkJsB+wD9SmtMNy1vXzO4nJEt27bZH3gzOdN9nf75asLLcZbff/de0r734it9WR0guxbtTv+XdqSHR3TzyU24e+ekG68xf8j09bnitpkOr9RI6DaY18GzcVj3gUTN7UdJY4ElJA4HpQMlA+fOEU2CmEHqMZ2TaQa4S4LKUx2sofTCmUfy/CFhkZt1qLCrn3I+X0HmAZvYF0LWc+QuAg8uZb8D5ldlHTZ0GswRoWsGyOcDmkjaT1BA4EsDMvgO+lHQ8gIINPgznXO0S6gFmnmqDGmkBmtkCSaMlfQysICS9kmWrJV0HjCEMWKYe5BgA3CvpaqA+8DjwYU3E7Jyrujy5FLjmusBm9vM0y+4E7ixn/pdA7+qMyzmXvHwphuDXAjvnkiVvATrnCpSA4uL8yICeAJ1zifMusHOuMHkX2DlXqIS3AJ1zBav2nOeXiSdA51zivAXonCtMPgbonCtUPgbonCtoPgbonCtYedIA9ATonEtYgrfFrG6eAJ1ziQpjgLmOIjueAJ1zCfPzAJ1zBcy7wM65wuTnATrnCpWfB+icK2j5MgZYUzdFcs4VEEkZp0psq1jSOEkj4/MHJX0paXycusX5knSnpCmSJkjaPdO2vQXonEtW8mOAFwCTgWYp8y4zs6fKrHc4sH2c9gbujf9XyFuAzrlEicytv2xbgJLaAUcAf81i9b7AQxa8A7SQ1CbdCzwBOucSV1ykjBPQUtJ7KdOgcjb1B+ByYF2Z+UNjN/eOeD9xgLbAjJR1ZsZ5FaqwCyypWUXLYP2Ny51zbgNZNvDmm9meFW9DRwJzzex9Sb1SFl0JfAM0AO4HrgCuq0qc6cYAJwJGOKpdouS5AR2qskPnXN2m5K4F3h84WlIfoBHQTNJwMzs5Ll8l6QHg0vh8FtA+5fXt4rwKVZgAzax9Rcuccy6dJM6CMbMrCa09YgvwUjM7WVIbM5utkGX7AR/Hl4wABkt6nHDwY7GZzU63j6yOAkvqD2xjZjfGQcnWZvZ+ld6Vc67Oq+bzAB+R1IrQGx0PnBPnPw/0AaYAy4EzMm0oYwKUdBdQH/gJcGPc8H3AXlWJ3DlXt4lwJDhJZvY68Hp8fFAF6xhwfmW2m00LcD8z213SuLiTbyU1qMxOnHOFJU8uBMkqAa6WVEQ48IGkzdjwkLRzzgWVvNIjl7JJgHcDTwOtJA0BTgCGVGtUzrm8JSg5z6/Wy5gAzewhSe8DP42zjjezj9O9xjlX2PKkAZj1tcDFwGpCN9ivHnHOpZUvXeCMyUzSVcBjwJaEEwsflXRldQfmnMtPUnZTbZBNC/BUYDczWw4gaSgwDvhddQbmnMtfxbUlw2WQTQKcXWa9enGec86VK1+6wOmKIdxBGPP7Fpgo6aX4/FBgbM2E55zLN6JunAdYcqR3IjAqZf471ReOcy7vqQ7cFtPMhtVkIM65uiPvu8AlJG0LDAV2JJSkAcDMOlVjXM65PJVPXeBszul7EHiA8L4OB54EnqjGmJxzeS7JmyJVp2wS4MZm9hKAmU01s6sJidA55zYghdNgMk21QTanwayKxRCmSjqHUGG1afWG5ZzLZ7Ukv2WUTQK8CGgM/IowFtgcOLM6g3LO5bfa0sXNJJtiCO/Gh0uAU6o3HOdcXZAn+S/tidDPEmsAlsfMjq2WiJxzeU1SnSiHdVeNRZGg+sWiVbOGmVd0NWrWK6Myr+TqjLzvApvZKzUZiHOu7siXmnnZ1gN0zrmsiPxpAeZLonbO5ZF6RZmnbEkqljRO0sj4fGtJ70qaIumJkpu0SWoYn0+Jyztm2nbWYUjygTXnXEah4GmiV4JcAExOeX4zcIeZbQcsBAbG+QOBhXH+HXG9tLKpCN1d0kfA5/F5V0l/qkz0zrnCUqTMUzYktQOOAP4anws4CHgqrvJ3oF983Dc+Jy4/WBkybTYtwDuBI4EFAGb2IXBgduE75wpRliXxW0p6L2UaVM6m/gBczg+34t0MWGRma+LzmUDb+LgtMAMgLl8c169QNgdBisxseplEujaL1znnCpCAetl1ceeb2Z4Vbkc6EphrZu9L6pVQeKVkkwBnSOoOmKRi4JfAZ9URjHOubkjoIPD+wNGS+hBK8TUD/gi0kFQvtvLaEeoTEP9vD8yUVI9w2e6CdDvIpgt8LnAx0AGYA+wT5znn3AYkUZTFlImZXWlm7cysI9AfeNXMBgCvAcfF1U4DnouPR8TnxOWvmlmFV7NBdtcCz407d865rFTzaYBXAI9LuoFwh8qS6vXDgIclTSHcyyhj3sqmIvRfKOeaYDMrb8DSOVfgBNRL+FpgM3sdeD0+/gLoXs46K4HjK7PdbMYA/5PyuBFwDPFIi3POlSdPLgTJqgtcqvy9pIeBN6stIudcfqvEeX65VpVrgbcGWicdiHOu7hD5kQGzGQNcyA9jgEWEwcVfV2dQzrn8FcYAcx1FdtImwHgZSVd+OM9mXabDys45VyeqwcRk97yZrY2TJz/nXFol9wVO4lrg6pZNQ3W8pN2qPRLnXN2QxXXAtaWBmO6eICWXmuwGjJU0FVhGSPBmZrvXUIzOuTxSHecBVpd0Y4BjgN2Bo2soFudcHVFbWniZpEuAAjCzqTUUi3OuThBFdeA0mFaSLq5ooZndXg3xOOfyXLgnSK6jyE66BFgMNIE8SeXOudpBdWMMcLaZXVdjkTjn6oS60gLMk7fgnKttsqn3VxukS4AH11gUzrk6JU/yX8UJ0My+rclAnHN1gwTFeZIBq1INxjnn0sqP9OcJ0DmXsHAtcH6kQE+AzrnE5Uf68wTonEucKKoD5wE651yliezKTNUG+RKncy6PSMo4ZbGNRpLGSPpQ0kRJQ+L8ByV9KWl8nLrF+ZJ0p6QpkiZIylixyluAzrnEJdQBXgUcZGZLJdUH3pT0Qlx2mZk9VWb9w4Ht47Q3cG/8v0KeAJ1ziUrqPMBYgX5pfFo/Tumq0vcFHoqve0dSC0ltzGx2RS/wLrBzLnFZdoFbSnovZRpUznaKJY0H5gIvm9m7cdHQ2M29Q1LDOK8tpe9ZPjPOq5C3AJ1zicuy/TffzPZMt4KZrQW6SWoBPCtpZ+BK4BugAXA/cAVQpcIt3gJ0ziUu6XuCmNki4DWgt5nNtmAV8ADQPa42C2if8rJ2/HBHy3J5AnTOJUqEMcBMU8btSK1iyw9JGwGHAJ9IahPnCegHfBxfMgI4NR4N3gdYnG78D7wL7JxLnFAyx4HbAH+XVExorD1pZiMlvSqpFSHXjgfOies/D/QBpgDLgTMy7cAToHMucUlcCmxmEwh3pSw7/6AK1jfg/MrswxOgcy5R4UoQvxTOOVeIBEV5cnTBE2AOzZgxg1+ccSpz585BEmcOHMTgX13AkGt+y8gRz1FUVESrzTfn/mEPsuWWW7Jw4ULOPutMvpw6lYaNGvHnv/yNnXbeOddvo076ZNQQlixbxdp161izdh09BtzCrp3a8qer+tOwYX3WrF3HhTc+wXsTpwNw2+XHcdj+O7F85fcMuuZhxn8yM8fvILcSGgOsdnmSp+umevXqcdMttzFuwiTeePMd/nzf3UyeNImLLrmMseMm8O774zm8z5H87oZwitMtN91I167dGDtuAsMeeIhLL74gx++gbus96I/s0/8megy4BYChF/Zj6P0vsE//m7j+3pEMvbAfAIf12JFtO7Ri575DGHzDY9z5m/65DDvnQj3AzFNt4Akwh9q0acNuu4frtZs2bUrnzl34+utZNGvWbP06y5cvW3/h+CeTJ9HzwDD+u0PnzkyfPo05c+bUfOAFygyaNW4EQPMmGzF73mIAjuy5K4+OHAPAmI+m0bzpRmzRslmF2ykEyuJfbeBd4Fpi+rRpjB8/jr26h2u3r/ntVTwy/CGaN2/Oiy+/BsAuu3bluWefoUePAxg7ZgxfTZ/OrJkzad26dS5Dr5PMjH/dMxgzY9jTo/nbM6O57Nan+Nfd5/O7i46hqEgcePptAGy5eQtmfrNw/WtnzVnElpu34Jv53+Uq/JzLl4rQ1dYClPQrSZMlPVLB8l6SRlbX/vPJ0qVLOemEn/H72/6wvvU35Pqfgth+AAAOhklEQVShTPlyBv1PGsB999wFwKWX/5rFixax9x7duPfuP9G1224UFxfnMvQ66+Az7mC/n99Mv8H3cPaJB7D/7tsy6PgDuPy2Z9j+8N9y+a1Pc+81A3IdZq3kXeDgPOAQM/NvSRqrV6/mpBN+xoknDaDfMcdusPzEkwbwz2efBqBZs2bcP+wB3n1/PMMefIj58+ex9Tbb1HTIBeHr2L2dt3ApI16dwF47dWTAkXvzz1fGA/D0y+PYc6etwrpzF9Fui03Wv7Zt6xZ8PXdRzQdda2TTAa4dGbBaEqCk+4BtgBckXSHpbUnjJL0laYdy1u+ZUtxwnKSmcf5lksbGqg9DqiPWXDIzzjlrIDt07sIFF128fv6Uzz9f/3jkiOfotENnABYtWsT3338PwAPD/kqPHj8pNV7okrFxowY02bjh+sc/3bczE6d+zex5izlgj+0B6NW9E1O+mgfAqDc+4udHhstRu+/Ske+Wrijo7i9ZXAdcW3rI1TIGaGbnSOoNHAh8D9xmZmsk/RS4EfhZmZdcCpxvZqMlNQFWSjqUUNiwO6FVPULST8zsv9URcy68NXo0jz7yMDvvvAt779ENgCE33MiDDwzj888+pUhFdNhqK+68+z4APpk8mbMGnoYkuuy4E/fdPyyX4ddZm2/WlCduPwuAesXFPPHCe7z81mTOX/4ov7/sOOrVK2LVqjUMvuExAF58cyKH9diJiSOuYfnK1Zx97fBchp9zJdcC54OaOAjSnHA93/aEYob1y1lnNHB7HC98xsxmxgR4KDAurtOEkBA3SICxjtgggPYdOiT/DqrJ/j16sGL1hvUdex/ep9z199l3Xz6a9Fl1h1Xwps1awN4n3rTB/LfGf8H+8ZSYsi666cnqDiuv5Ef6q5nTYK4HXjOznYGjgEZlVzCzm4BfABsBoyV1JnyGvzOzbnHazszKbfKY2f1mtqeZ7dmqZavqeyfOuewoi6kWqIkE2JwfanKdXt4KkrY1s4/M7GZgLNAZeAk4M3aJkdRW0uY1EK9z7kfKl4MgNdEFvoXQBb4aGFXBOhdKOhBYB0wEXjCzVZK6AG/HE4GXAicTSmM752qx2nKaSybVlgDNrGN8OB/olLLo6rj8deD1+PiXFWzjj8AfqytG51w1KfQE6JwrTGGILz8yoCdA51yyatF5fpl4AnTOJc4ToHOuQNWeo7yZeAJ0ziXOW4DOuYJUi85zzsgLojrnEicp45TFNhpJGiPpQ0kTSwqiSNpa0ruSpkh6QlKDOL9hfD4lLu+YaR+eAJ1ziUuoGswq4CAz6wp0A3rHG57fDNxhZtsBC4GBcf2BwMI4/464XlqeAJ1ziUviUmALlsan9eNkwEHAU3H+34F+8XHf+Jy4/GBlaGp6AnTOJSub7BfSUktJ76VMgzbYlFQsaTzhEtiXganAIjNbE1eZCbSNj9sCMwDi8sXAZulC9YMgzrlEhZL4WfVx55vZnulWMLO1QDdJLYBnCYVSEuMtQOdc4pKuhmVmi4DXgH2BFpJKGm/t+KHa1CygPUBc3hxYkG67ngCdc8lLIANKahVbfkjaCDgEmExIhMfF1U4DnouPR8TnxOWvmtmGFYdTeBfYOZe4hK4EaUMopVdMaKw9aWYjJU0CHpd0A6FifEmh5GHAw5KmAN8CGe9Q7wnQOZe4JOoBmtkEYLdy5n9BuFdQ2fkrgeMrsw9PgM655OXJpSCeAJ1zifJ6gM65wuX1AJ1zhcwToHOuQHk9QOdcAfMWoHOuIOVTPUBPgM65xGVT76828ATonEtcnuQ/T4DOueTlSf7zBOicS5ifB+icK1TCxwCdcwUsP9KfJ0DnXDXIkwagJ0DnXPK8C+ycK1j5kf48ATrnElaJ+/7mnCdA51zivBiCc65geQvQOVewPAE65wpU/tQD9PsCO+cSFa4EyTxl3I7UXtJrkiZJmijpgjj/WkmzJI2PU5+U11wpaYqkTyUdlmkf3gJ0ziUuoS7wGuASM/tAUlPgfUkvx2V3mNmtpfepHQn3At4J2BL4j6ROZra2oh14C9A5lzhl8S8TM5ttZh/Ex0uAyUDbNC/pCzxuZqvM7EtgCuXcPziVJ0DnXLKy6P7GFmJLSe+lTIMq3KTUkXCT9HfjrMGSJkj6m6RN4ry2wIyUl80kfcL0BOicS5aynID5ZrZnynR/uduTmgBPAxea2XfAvcC2QDdgNnBbVWP1MUDnXOKSuhZYUn1C8nvEzJ4BMLM5Kcv/AoyMT2cB7VNe3i7Oq5C3AJ1ziUvoKLCAYcBkM7s9ZX6blNWOAT6Oj0cA/SU1lLQ1sD0wJt0+vAXonEtcQmcB7g+cAnwkaXyc9xvgJEndAAOmAWcDmNlESU8CkwhHkM9PdwQYPAE656pDAhnQzN6sYEvPp3nNUGBotvvwBOicS5SAojy5Fk5mlusYEiVpHjA913EkpCUwP9dBuA3UtZ/LVmbWKqmNSXqR8BllMt/Meie136qocwmwLpH0npntmes4XGn+c6k7/Ciwc65geQJ0zhUsT4C1W7lnxruc859LHeFjgM65guUtQOdcwfIE6JwrWJ4AnXMFyxOgc1WkMiVPyj53tZ8nQOeqQJIsHkGUtBmA+RHFvONHgfOApGOAZUCRmb2Y63jcDyT9EtiXUJjzDeAFM1ud26hctrwFWMtJGgxcCmwKPC3pgByH5CJJxwPHA+cChwI9PPnlF0+AtZSCrYBDgIMI9zZ4A3grVsl1NaxkjE9Sye9NW+AmQlHOr4Gr4vItchKgqzRPgLWXgHmEG7v8H9ATOC4WeDxNUqdcBldoUsf8gJIE9wVwI3CqmR1mZqslXQKck5IkXS3m9QBrIUk9gF3N7B5JGwMDzaxRXPZz4BekKQrpklPS6ks54HEh0E/SEcBUwq0ax0raA+gEDABOMbN1OQrZVYIfBKlFYqtBwEBgD+A14DlgONCCcO+D/YAzzeyjXMVZSCQ1NLNV8fFA4CzgeDObEYciDiD8rHoCK4Dr/GeTPzwB1iKSOpjZV7HVdzzhF+sdM3tU0tHAWsINYr7IaaAFQtJ2hDG+S8xsuqSLCTfbXgl0Bc4E7iH8gVpJ+H1anqt4XeX5OEUtIWlL4H+SDo+/RE8RWnynSToVeN7MRnnyq1HfE7q5v4t3IpsCnAdcDHxFOOjxE6C5ma3w5Jd/PAHWApIuJ5xL9hvgRkmHmtmyeKPoBsCuQJNcxliIzOwr4G7CwY7bCEfhjwN+ZmZPAEsI955dlbMg3Y/iCTDHJPUBegFjzewR4PfA7ZKOiN3eFcBtZrYoh2EWhHjqUanfiZgEbye0+P4MbGpmyySdB9wMDDKz2TUfrUuCjwHWMEkNgO3MbJKk04FfA1PM7MiUdY4DLiEkvwvNbEJOgi0wkpqY2dL4+GygGeHqm5slNQeuADoSusBtgMU+JJHfPAHWsDiwfg/h0qkOwN+AC4G/m9mdKes1B9aY2bKcBFpgYmu7r5kNlHQR0A/4LXAX8JGZDZDUlHDP2Y0JLT8/1SXP+XmANczMpkiaAAwCrjCzhyXNB86O59r+Ka63OKeBFpBYzOBXwGBJOwB7AofHeVOBjSQ9ZWbHSboK2MiTX93gCTA37gM+BC6W9K2ZPSFpLnCPpPlm9liO4ys03wNrgGsAA64EuhNahPtK6g68IGm4mZ1MOPjh6gBPgDlgZlOAKZIWAUPj/40Iv4jv5DS4AmRmSyS9Srjk8NZ4zt/WwNtxlc6Eg1OP5ypGVz08AeaQmf1L0mrgVkK5q4Fm9mWOwypUTwDvA3dJWgC8AOwm6W+E7nBPM5uWw/hcNfCDILWApM0Jl5vOy3UshU7S7oRk+BvgTULFlwX+h6lu8gToXBmSugKvAlfGk9FdHeUJ0LlySNoZWGFmU3Mdi6s+ngCdcwXLL4VzzhUsT4DOuYLlCdA5V7A8ATrnCpYnQOdcwfIEWEdJWitpvKSPJf0jltmv6rZ6SRoZHx8t6ddp1m0Ra+VVdh/XSro02/ll1nkwlhDLdl8dJX1c2Rhd3eMJsO5aYWbdzGxnwjXG56QuLK/4ZzbMbISZ3ZRmlRaEsvHO1XqeAAvD/4DtYsvnU0kPEe430l7SoZLelvRBbCk2AZDUW9Inkj4Aji3ZkKTTJd0VH7eW9KykD+O0H+EmQtvG1ufv43qXSRoraYKkISnbukrSZ5LeBHbI9CYknRW386Gkp8u0an8q6b24vSPj+sWSfp+y77N/7Afp6hZPgHWcpHqEi/lLbtW4PXCPme1EKMBwNfBTM9sdeI9QoqsR8BfgKMKd6bbYYMPBncAbZtYV2B2YSKhwPTW2Pi+TdGjcZ3egG7CHpJ8o3Ee3f5zXB9gri7fzjJntFfc3mXD70BId4z6OAO6L72EgoWrzXnH7Z8UqL84BXg2mLttI0vj4+H/AMGBLYLqZlZTc2gfYERitcP/vBoQSUJ2BL83scwBJwwkFXMs6CDgVwMzWAoslbVJmnUPjNC4+b0JIiE2BZ0vupCZpRBbvaWdJNxC62U2Al1KWPRmLlH4u6Yv4Hg4Fdk0ZH2we9/1ZFvtyBcATYN21wsy6pc6ISS61xL6Al83spDLrlXrdjyTgd2b25zL7uLAK23oQ6GdmH8b7qfRKWVb2mk6L+/6lmaUmSiR1rMK+XR3kXeDC9g6wf7xPCZIaS+oEfAJ0lLRtXO+kCl7/CnBufG1xvI/JEkLrrsRLwJkpY4ttY/mv/wL9JG0U77VxVBbxNgVmS6oPDCiz7HhJRTHmbYBP477PjesjqZOkxlnsxxUIbwEWMDObF1tSj0lqGGdfbWafSRoEjJK0nNCFblrOJi4A7pc0EFgLnGtmb0saHU8zeSGOA3YB3o4t0KXAyWb2gaQnCLcGmAuMzSLk3wLvAvPi/6kxfQWMIdzJ7RwzWynpr4SxwQ8Udj6PcLMj5wCvBuOcK2DeBXbOFSxPgM65guUJ0DlXsDwBOucKlidA51zB8gTonCtYngCdcwXr/wFZyiJzo91pCQAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1404,10 +1404,10 @@ "6335\n", "-- liar liar\n", "Index(['y', 'claim'], dtype='object')\n", - "{'half-true', 'false', 'pants-fire', 'mostly-true', 'true', 'barely-true'} 10240\n", + "{'pants-fire', 'false', 'mostly-true', 'true', 'barely-true', 'half-true'} 10240\n", "1676\n", "1995\n", - "{'false', 'true'} 3671\n", + "{'true', 'false'} 3671\n", "false 5159\n", "true 4847\n", "Name: y, dtype: int64\n", @@ -1439,26 +1439,9 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,\n", - " beta_2=0.999, early_stopping=False, epsilon=1e-08,\n", - " hidden_layer_sizes=(16, 16), learning_rate='constant',\n", - " learning_rate_init=0.001, max_iter=200, momentum=0.9,\n", - " nesterovs_momentum=True, power_t=0.5, random_state=4222,\n", - " shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,\n", - " verbose=False, warm_start=False)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "clf_3 = MLPClassifier(hidden_layer_sizes=(16,16), random_state=4222)\n", "clf_3.fit(vec_train_3, y3)" @@ -1466,44 +1449,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "'score: 0.9997144488863506'\n", - "Confusion matrix, without normalization\n", - "array([[3367, 1],\n", - " [ 1, 3635]])\n", - "'score: 0.7714856762158561'\n", - "Confusion matrix, without normalization\n", - "array([[1136, 343],\n", - " [ 343, 1180]])\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- train\", Xt=vec_train_3, yt=y3, clf=clf_3)\n", "cm_4=test_classifier(labels=[\"true\",\"false\"], title=\"Configuration 4 -- test\", Xt=vec_test_3, yt=yt3, clf=clf_3)" @@ -1518,7 +1466,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1533,7 +1481,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -1543,117 +1491,89 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "nsp = {\n", - " \"this\": Namespace(\"http://mex.aksw.org/examples/\"),\n", - " \"xsd\": Namespace(\"http://www.w3.org/2001/XMLSchema#\"),\n", - " \"rdfs\": Namespace(\"http://www.w3.org/2000/01/rdf-schema#\"),\n", - " \"mexcore\": Namespace(\"http://mex.aksw.org/mex-core#\"),\n", - " \"mexperf\": Namespace(\"http://mex.aksw.org/mex-perf#\"),\n", - " \"mexalgo\": Namespace(\"http://mex.aksw.org/mex-algo#\"),\n", - " \"prov\": Namespace(\"http://www.w3.org/ns/prov#\"),\n", - " \"dct\": DCTERMS,\n", - " \"rdf\": RDF\n", - "}\n", - "g = Graph()\n", + "class mexcore_graph(object):\n", + " def __init__(self, name_exp):\n", + " self.nsp = {\n", + " \"this\": Namespace(\"http://mex.aksw.org/examples/\"),\n", + " \"xsd\": Namespace(\"http://www.w3.org/2001/XMLSchema#\"),\n", + " \"rdfs\": Namespace(\"http://www.w3.org/2000/01/rdf-schema#\"),\n", + " \"mexcore\": Namespace(\"http://mex.aksw.org/mex-core#\"),\n", + " \"mexperf\": Namespace(\"http://mex.aksw.org/mex-perf#\"),\n", + " \"mexalgo\": Namespace(\"http://mex.aksw.org/mex-algo#\"),\n", + " \"prov\": Namespace(\"http://www.w3.org/ns/prov#\"),\n", + " \"dct\": DCTERMS,\n", + " \"rdf\": RDF\n", + " }\n", + " self.g = Graph()\n", "\n", - "for i in nsp.items():\n", - " g.bind(i[0],i[1])\n", + " for i in nsp.items():\n", + " self.g.bind(i[0],i[1])\n", + " \n", + " self.exp = self.nsp[\"this\"][name_exp]\n", + " self.g.add((self.nsp[\"this\"][name_exp], self.nsp[\"rdf\"].type, self.nsp[\"mexcore\"].Experiment))\n", + " \n", + " def add_dataset(self,dset_name):\n", + " self.g.add((self.nsp[\"this\"][dset_name], self.nsp[\"rdf\"].type, self.nsp[\"mexcore\"].dataset))\n", + " self.g.add((self.nsp[\"this\"][dset_name], self.nsp[\"rdfs\"].label, Literal(dset_name)))\n", + " \n", + " \n", + " def add_datasets(self, dset_names):\n", + " for dset_name in dset_names:\n", + " self.add_dataset(dset_name)\n", + " \n", + " def add_model(self, model_name, literal):\n", + " self.g.add((self.nsp[\"this\"][model_name],self.nsp[\"rdf\"].type,self.nsp[\"mexalgo\"].Algorithm))\n", + " self.g.add((self.nsp[\"this\"][model_name],self.nsp[\"rdfs\"].label,Literal(model_name)))\n", + " self.g.add((self.nsp[\"this\"][model_name],self.nsp[\"dct\"].identifier,Literal(literal)))\n", + " \n", + " def add_configuration(self, conf_name, used_model, used_dset):\n", + " self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"rdf\"].type,self.nsp[\"mexcore\"].ExperimentConfiguration))\n", + " self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"rdfs\"].label,Literal(conf_name)))\n", + " self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"prov\"].used, self.nsp[\"this\"][used_model]))\n", + " self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"prov\"].used, self.nsp[\"this\"][used_dset]))\n", + " self.g.add((self.nsp[\"this\"][conf_name],self.nsp[\"prov\"].wasStartedBy, self.exp))\n", + " \n", + " def add_measurement(self, meas_name, used_conf, confusion_matrix):\n", + " self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"rdf\"].type,self.nsp[\"mexcore\"].PerformanceMeasure))\n", + " self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"mexperf\"].precision,Literal(str(precision(confusion_matrix)),datatype=self.nsp[\"xsd\"].float)))\n", + " self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"mexperf\"].recall,Literal(str(recall(confusion_matrix)),datatype=self.nsp[\"xsd\"].float)))\n", + " self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"mexperf\"].accuracy,Literal(str(accuracy(confusion_matrix)),datatype=self.nsp[\"xsd\"].float)))\n", + " self.g.add((self.nsp[\"this\"][meas_name],self.nsp[\"prov\"].wasGeneratedBy,self.nsp[\"this\"][used_conf]))\n", "\n", - "g.add((nsp[\"this\"].jonas_weinz_task_2, nsp[\"rdf\"].type, nsp[\"mexcore\"].Experiment))\n", "\n", - "g.add((nsp[\"this\"].ds1, nsp[\"rdf\"].type, nsp[\"mexcore\"].dataset))\n", - "g.add((nsp[\"this\"].ds1, nsp[\"rdfs\"].label, Literal(\"Dataset01\")))\n", - "\n", - "g.add((nsp[\"this\"].ds2, nsp[\"rdf\"].type, nsp[\"mexcore\"].dataset))\n", - "g.add((nsp[\"this\"].ds2, nsp[\"rdfs\"].label, Literal(\"Dataset02\")))\n", - "\n", - "g.add((nsp[\"this\"].ds3, nsp[\"rdf\"].type, nsp[\"mexcore\"].dataset))\n", - "g.add((nsp[\"this\"].ds3, nsp[\"rdfs\"].label, Literal(\"Dataset03\")))\n", - "\n", - "g.add((nsp[\"this\"].modela,nsp[\"rdf\"].type,nsp[\"mexalgo\"].Algorithm))\n", - "g.add((nsp[\"this\"].modela,nsp[\"rdfs\"].label,Literal('model a')))\n", - "g.add((nsp[\"this\"].modela,nsp[\"dct\"].identifier,Literal('RandomForestClassifier')))\n", - "\n", - "g.add((nsp[\"this\"].modelb,nsp[\"rdf\"].type,nsp[\"mexalgo\"].Algorithm))\n", - "g.add((nsp[\"this\"].modelb,nsp[\"rdfs\"].label,Literal('model b')))\n", - "g.add((nsp[\"this\"].modelb,nsp[\"dct\"].identifier,Literal('MLPClassifier')))\n", - "\n", - "g.add((nsp[\"this\"].modelc,nsp[\"rdf\"].type,nsp[\"mexalgo\"].Algorithm))\n", - "g.add((nsp[\"this\"].modelc,nsp[\"rdfs\"].label,Literal('model c')))\n", - "g.add((nsp[\"this\"].modelc,nsp[\"dct\"].identifier,Literal('MLPClassifier')))\n", - "\n", - "g.add((nsp[\"this\"].conf1,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", - "g.add((nsp[\"this\"].conf1,nsp[\"rdfs\"].label,Literal('configuration 1')))\n", - "g.add((nsp[\"this\"].conf1,nsp[\"prov\"].used, nsp[\"this\"].modela))\n", - "g.add((nsp[\"this\"].conf1,nsp[\"prov\"].used, nsp[\"this\"].ds1))\n", - "g.add((nsp[\"this\"].conf1,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", - "\n", - "g.add((nsp[\"this\"].conf2,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", - "g.add((nsp[\"this\"].conf2,nsp[\"rdfs\"].label,Literal('configuration 2')))\n", - "g.add((nsp[\"this\"].conf2,nsp[\"prov\"].used, nsp[\"this\"].modelb))\n", - "g.add((nsp[\"this\"].conf2,nsp[\"prov\"].used, nsp[\"this\"].ds2))\n", - "g.add((nsp[\"this\"].conf2,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", - "\n", - "g.add((nsp[\"this\"].conf3a,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", - "g.add((nsp[\"this\"].conf3a,nsp[\"rdfs\"].label,Literal('configuration 3a')))\n", - "g.add((nsp[\"this\"].conf3a,nsp[\"prov\"].used, nsp[\"this\"].modelb))\n", - "g.add((nsp[\"this\"].conf3a,nsp[\"prov\"].used, nsp[\"this\"].ds1))\n", - "g.add((nsp[\"this\"].conf3a,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", - "\n", - "g.add((nsp[\"this\"].conf3b,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", - "g.add((nsp[\"this\"].conf3b,nsp[\"rdfs\"].label,Literal('configuration 3b')))\n", - "g.add((nsp[\"this\"].conf3b,nsp[\"prov\"].used, nsp[\"this\"].modela))\n", - "g.add((nsp[\"this\"].conf3b,nsp[\"prov\"].used, nsp[\"this\"].ds2))\n", - "g.add((nsp[\"this\"].conf3b,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", - " \n", - "g.add((nsp[\"this\"].conf4,nsp[\"rdf\"].type,nsp[\"mexcore\"].ExperimentConfiguration))\n", - "g.add((nsp[\"this\"].conf4,nsp[\"rdfs\"].label,Literal('configuration 4')))\n", - "g.add((nsp[\"this\"].conf4,nsp[\"prov\"].used, nsp[\"this\"].modelc))\n", - "g.add((nsp[\"this\"].conf4,nsp[\"prov\"].used, nsp[\"this\"].ds3))\n", - "g.add((nsp[\"this\"].conf4,nsp[\"prov\"].wasStartedBy, nsp[\"this\"].jonas_weinz_task_2))\n", - "\n", - "g.add((nsp[\"this\"].measure1,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", - "g.add((nsp[\"this\"].measure1,nsp[\"mexperf\"].precision,Literal(str(precision(cm_1)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure1,nsp[\"mexperf\"].recall,Literal(str(recall(cm_1)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure1,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_1)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure1,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf1))\n", - "\n", - "g.add((nsp[\"this\"].measure2,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", - "g.add((nsp[\"this\"].measure2,nsp[\"mexperf\"].precision,Literal(str(precision(cm_2)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure2,nsp[\"mexperf\"].recall,Literal(str(recall(cm_2)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure2,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_2)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure2,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf2))\n", - "\n", - "g.add((nsp[\"this\"].measure3a,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", - "g.add((nsp[\"this\"].measure3a,nsp[\"mexperf\"].precision,Literal(str(precision(cm_3a)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure3a,nsp[\"mexperf\"].recall,Literal(str(recall(cm_3a)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure3a,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_3a)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure3a,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf3a))\n", - "\n", - "g.add((nsp[\"this\"].measure3b,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", - "g.add((nsp[\"this\"].measure3b,nsp[\"mexperf\"].precision,Literal(str(precision(cm_3b)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure3b,nsp[\"mexperf\"].recall,Literal(str(recall(cm_3b)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure3b,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_3b)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure3b,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf3b))\n", - "\n", - "g.add((nsp[\"this\"].measure4,nsp[\"rdf\"].type,nsp[\"mexcore\"].PerformanceMeasure))\n", - "g.add((nsp[\"this\"].measure4,nsp[\"mexperf\"].precision,Literal(str(precision(cm_4)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure4,nsp[\"mexperf\"].recall,Literal(str(recall(cm_4)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure4,nsp[\"mexperf\"].accuracy,Literal(str(accuracy(cm_4)),datatype=nsp[\"xsd\"].float)))\n", - "g.add((nsp[\"this\"].measure4,nsp[\"prov\"].wasGeneratedBy,nsp[\"this\"].conf4))\n" + " " ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "g.serialize(destination='output.ttl', format='turtle')" + "mg = mexcore_graph(\"jonas_weinz_task_2\")\n", + "mg.add_datasets([\"Dataset01\",\"Dataset02\",\"Dataset03\"])\n", + "\n", + "mg.add_model(\"model_a\", \"RandomForestClassifier\")\n", + "mg.add_model(\"model_b\", \"MLPClassifier\")\n", + "mg.add_model(\"model_c\", \"MLPClassifier\")\n", + "\n", + "mg.add_configuration(\"conf1\",\"model_a\",\"Dataset01\")\n", + "mg.add_configuration(\"conf2\",\"model_b\", \"Dataset02\")\n", + "mg.add_configuration(\"conf3a\",\"model_b\", \"Dataset01\")\n", + "mg.add_configuration(\"conf3b\", \"model_a\", \"Dataset02\")\n", + "mg.add_configuration(\"conf4\", \"model_c\", \"Dataset03\")\n", + "\n", + "mg.add_measurement(\"measure1\", \"conf1\", cm_1)\n", + "mg.add_measurement(\"measure2\", \"conf2\", cm_2)\n", + "mg.add_measurement(\"measure3a\", \"conf3a\", cm_3a)\n", + "mg.add_measurement(\"measure3b\", \"conf3b\", cm_3b)\n", + "mg.add_measurement(\"measure4\", \"conf4\", cm_4)\n", + "\n", + "mg.g.serialize(destination='output.ttl', format='turtle')" ] }, { diff --git a/Jonas_Solutions/Task_03.ipynb b/Jonas_Solutions/Task_03.ipynb index 49e0899..af6ec4e 100644 --- a/Jonas_Solutions/Task_03.ipynb +++ b/Jonas_Solutions/Task_03.ipynb @@ -2,9 +2,19 @@ "cells": [ { "cell_type": "code", - "execution_count": 13, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/jonas/.local/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", + " from ._conv import register_converters as _register_converters\n", + "Using TensorFlow backend.\n" + ] + } + ], "source": [ "import numpy as np \n", "import pandas as pd \n", @@ -18,9 +28,22 @@ "import re\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + ">**Task 3**: playing with NN framwork/keras and basic sentiment analysis\n", + ">- use the following model as a baseline and improve it!\n", + ">- export your metadata (just basic hyperparameters and outcomes for test data!)\n", + ">- test data = 0.3 (not in this example, change it!)\n", + ">- random_state = 4222\n", + ">- no need to cross-validation!\n", + "\n" + ] + }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -65,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -94,12 +117,12 @@ "df = df[df.sentiment != \"Neutral\"]\n", "df['text'] = df['text'].apply(lambda x: x.lower())\n", "df['text'] = df['text'].apply(lambda x: x.replace('rt',' '))\n", - "df['text'] = df['text'].apply((lambda x: re.sub('[^a-zA-z0-9\\s]','',x)))" + "df['text'] = df['text'].apply((lambda x: re.sub('[^a-zA-Z0-9\\s]','',x)))" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -111,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -121,13 +144,13 @@ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", - "embedding_1 (Embedding) (None, 26, 128) 64000 \n", + "embedding_2 (Embedding) (None, 26, 128) 64000 \n", "_________________________________________________________________\n", - "spatial_dropout1d_1 (Spatial (None, 26, 128) 0 \n", + "spatial_dropout1d_2 (Spatial (None, 26, 128) 0 \n", "_________________________________________________________________\n", - "lstm_1 (LSTM) (None, 196) 254800 \n", + "lstm_2 (LSTM) (None, 196) 254800 \n", "_________________________________________________________________\n", - "dense_1 (Dense) (None, 2) 394 \n", + "dense_2 (Dense) (None, 2) 394 \n", "=================================================================\n", "Total params: 319,194\n", "Trainable params: 319,194\n", @@ -157,15 +180,15 @@ "output_type": "stream", "text": [ "Epoch 1/2\n", - " - 30s - loss: 0.4374 - acc: 0.8161\n", + " - 21s - loss: 0.4322 - acc: 0.8196\n", "Epoch 2/2\n", - " - 30s - loss: 0.3614 - acc: 0.8487\n" + " - 25s - loss: 0.3612 - acc: 0.8509\n" ] }, { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -181,7 +204,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -189,7 +212,7 @@ "output_type": "stream", "text": [ "score: 0.37\n", - "acc: 0.85\n" + "acc: 0.84\n" ] } ], @@ -205,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -221,15 +244,15 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "pos_acc 31.770833333333332 %\n", - "neg_acc 97.27722772277228 %\n" + "pos_acc 39.58333333333333 %\n", + "neg_acc 95.29702970297029 %\n" ] } ], @@ -240,7 +263,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -249,7 +272,7 @@ "text": [ "[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48 37\n", " 311 189 4 144 22 16 1 281]]\n", - "[0.93431044 0.06568963]\n" + "[0.8364928 0.16350722]\n" ] } ], diff --git a/Jonas_Solutions/output.ttl b/Jonas_Solutions/output.ttl index 104e95b..41dfcb2 100644 --- a/Jonas_Solutions/output.ttl +++ b/Jonas_Solutions/output.ttl @@ -39,55 +39,55 @@ this:measure4 a mexcore:PerformanceMeasure ; mexperf:recall "0.7680865449628127"^^xsd:float ; prov:wasGeneratedBy this:conf4 . +this:Dataset03 a mexcore:dataset ; + rdfs:label "Dataset03" . + this:conf1 a mexcore:ExperimentConfiguration ; - rdfs:label "configuration 1" ; - prov:used this:ds1, - this:modela ; + rdfs:label "conf1" ; + prov:used this:Dataset01, + this:model_a ; prov:wasStartedBy this:jonas_weinz_task_2 . this:conf2 a mexcore:ExperimentConfiguration ; - rdfs:label "configuration 2" ; - prov:used this:ds2, - this:modelb ; + rdfs:label "conf2" ; + prov:used this:Dataset02, + this:model_b ; prov:wasStartedBy this:jonas_weinz_task_2 . this:conf3a a mexcore:ExperimentConfiguration ; - rdfs:label "configuration 3a" ; - prov:used this:ds1, - this:modelb ; + rdfs:label "conf3a" ; + prov:used this:Dataset01, + this:model_b ; prov:wasStartedBy this:jonas_weinz_task_2 . this:conf3b a mexcore:ExperimentConfiguration ; - rdfs:label "configuration 3b" ; - prov:used this:ds2, - this:modela ; + rdfs:label "conf3b" ; + prov:used this:Dataset02, + this:model_a ; prov:wasStartedBy this:jonas_weinz_task_2 . this:conf4 a mexcore:ExperimentConfiguration ; - rdfs:label "configuration 4" ; - prov:used this:ds3, - this:modelc ; + rdfs:label "conf4" ; + prov:used this:Dataset03, + this:model_c ; prov:wasStartedBy this:jonas_weinz_task_2 . -this:ds3 a mexcore:dataset ; - rdfs:label "Dataset03" . - -this:modelc a mexalgo:Algorithm ; - rdfs:label "model c" ; +this:model_c a mexalgo:Algorithm ; + rdfs:label "model_c" ; dct:identifier "MLPClassifier" . -this:ds1 a mexcore:dataset ; +this:Dataset01 a mexcore:dataset ; rdfs:label "Dataset01" . -this:ds2 a mexcore:dataset ; +this:Dataset02 a mexcore:dataset ; rdfs:label "Dataset02" . -this:modela a mexalgo:Algorithm ; - rdfs:label "model a" ; +this:model_a a mexalgo:Algorithm ; + rdfs:label "model_a" ; dct:identifier "RandomForestClassifier" . -this:modelb a mexalgo:Algorithm ; - rdfs:label "model b" ; +this:model_b a mexalgo:Algorithm ; + rdfs:label "model_b" ; dct:identifier "MLPClassifier" . this:jonas_weinz_task_2 a mexcore:Experiment .