dl_projekt/fasttext ffn.ipynb
2024-06-02 18:03:42 +02:00

633 lines
114 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"source": [
"### Fasttext --> Feedforward Neural Network"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"train = pd.read_csv(\"train.csv\")\n",
"test = pd.read_csv(\"test.csv\")\n",
"valid = pd.read_csv(\"valid.csv\")\n",
"\n",
"train.loc[train[\"review_score\"]==-1, \"review_score\"]=0\n",
"test.loc[test[\"review_score\"]==-1, \"review_score\"]=0\n",
"valid.loc[valid[\"review_score\"]==-1, \"review_score\"]=0"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"Wczytywanie pliku z wyuczonymi angielskimi embeddingami fasttext (https://fasttext.cc/docs/en/crawl-vectors.html):"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 4,
"outputs": [
{
"data": {
"text/plain": "array([ 1.78246237e-02, -1.06189400e-01, -2.44729444e-02, -2.21012142e-02,\n 1.59936324e-02, 3.34691778e-02, -1.06833659e-01, -3.30949295e-03,\n -2.14542568e-04, 1.48508116e-03, -2.93094777e-02, -2.15188637e-02,\n 3.55641954e-02, 2.25957129e-02, 2.12054476e-02, 4.47175875e-02,\n -5.20626409e-03, 5.60886189e-02, 1.39281712e-02, 3.23922932e-02,\n 2.46591270e-02, 9.72066727e-03, -8.12041387e-03, -4.68677804e-02,\n 3.57795991e-02, -3.31927240e-02, 1.93208049e-04, -2.41375212e-02,\n 1.56584624e-02, 9.49325413e-02, 3.46111394e-02, -1.00905932e-02,\n 4.39240132e-03, 2.39842106e-02, 1.37603339e-02, -4.40947488e-02,\n 7.08558830e-03, 8.42494331e-03, 7.17797317e-03, 7.57907005e-03,\n 2.67372504e-02, -3.01967952e-02, -4.28102091e-02, 2.58105062e-02,\n 5.47624193e-02, 5.96127613e-03, -1.95893943e-02, 4.33259085e-02,\n -2.37351451e-02, 8.60271696e-03, 5.02952486e-02, -1.85346920e-02,\n 4.15457152e-02, 1.24201048e-02, -8.80148821e-03, 3.67457941e-02,\n 6.00036196e-02, -1.33206621e-02, -9.77441017e-03, 8.50583613e-03,\n 7.39839450e-02, 1.42067904e-02, -5.09730168e-03, -2.48528309e-02,\n -3.16993035e-02, -1.11876670e-02, -3.96261504e-03, 7.88500253e-03,\n 2.44743899e-02, -3.55262943e-02, 1.29078805e-01, -1.49423713e-02,\n -6.50351308e-03, -2.00819727e-02, -2.81756446e-02, -2.70206425e-02,\n -1.32226339e-02, -2.91594937e-02, 8.19074363e-03, 1.02669047e-03,\n 7.59374257e-03, -3.04275062e-02, 1.17772142e-03, -8.05200636e-03,\n 2.26024836e-02, -1.43838655e-02, -6.42339066e-02, -1.50536001e-03,\n -6.04793020e-02, -6.25816360e-02, -3.21857110e-02, 2.24062111e-02,\n 1.76566597e-02, 2.77742837e-03, -7.06164539e-03, -2.49959864e-02,\n -2.42400132e-02, -3.27228429e-03, 1.67806149e-02, 1.08696334e-03,\n -8.86186119e-03, 1.75914317e-02, 2.39897612e-03, -1.10858642e-02,\n 4.37321281e-03, -1.52284997e-02, 1.28000462e-02, 3.08077410e-02,\n -3.72859016e-02, 1.01946890e-02, 2.72647869e-02, 4.09879610e-02,\n -5.15891647e-04, -1.48480488e-02, 3.46730947e-02, 3.72706391e-02,\n -3.27323265e-02, -2.06248090e-02, 5.93318080e-04, -1.00421635e-02,\n 5.68121858e-03, 3.50009021e-03, 5.35131479e-03, -4.51390296e-02,\n -2.47980915e-02, 1.45408430e-03, 2.12197360e-02, 1.54698789e-02,\n -8.19472875e-03, -1.68298408e-02, 6.03655400e-03, -2.55106628e-04,\n 3.55045721e-02, -3.14546265e-02, -1.14588011e-02, 4.87726405e-02,\n -4.81645577e-02, 2.94467416e-02, -1.99259575e-02, 3.88172567e-02,\n 2.61239633e-02, 2.75779348e-02, -1.46336835e-02, 1.05489865e-02,\n 2.05413140e-02, -6.39167754e-03, -1.77114069e-01, 4.08548955e-03,\n 1.85309928e-02, 1.64314881e-02, -4.22716849e-02, -4.01179083e-02,\n -5.73144108e-02, 2.58368440e-02, -5.67379827e-03, 1.25513151e-02,\n -9.11396556e-03, 3.03542819e-02, 5.28743342e-02, 2.66610682e-02,\n 3.72167975e-02, 1.17919482e-02, 4.31168377e-02, -4.78969961e-02,\n 4.30925563e-02, -1.19056599e-02, 2.69640237e-02, 7.23459641e-04,\n -4.54982556e-02, 1.49192475e-02, -8.30576941e-03, -3.83936167e-02,\n -1.41146081e-03, -4.87017911e-03, -2.61655133e-02, -1.40941609e-02,\n -8.20814539e-03, -4.31758128e-02, 6.44639693e-03, -2.87407413e-02,\n 8.11430439e-03, 3.59113403e-02, -9.36233252e-03, 1.77651364e-02,\n 4.21329997e-02, 1.47886062e-02, 2.88083218e-02, -6.43404340e-03,\n 1.00347018e-02, -6.53128885e-03, 2.48425044e-02, -2.85518263e-02,\n -2.17140149e-02, -1.74901895e-02, -2.42289691e-03, -4.53775264e-02,\n -1.26110762e-02, 1.16701461e-02, 4.70486209e-02, 1.68762766e-02,\n 1.47036910e-02, 8.21339190e-02, 7.89464638e-03, 8.35293531e-03,\n -5.81975766e-02, -8.22040439e-03, 1.47995166e-02, 1.86446775e-02,\n 7.70702632e-03, -2.84116622e-03, -3.67019586e-02, -8.45937431e-03,\n -3.01996600e-02, -2.45970348e-03, 3.84704992e-02, -2.66787992e-03,\n 1.92980431e-02, 2.03489363e-02, 1.53061170e-02, 1.06934924e-02,\n -2.05292553e-02, -1.28532052e-02, -2.04120239e-04, -4.27634232e-02,\n -8.85266811e-02, -2.37210002e-02, 5.72774466e-03, -7.96672516e-03,\n -3.51342559e-02, -1.15768928e-02, -1.49289630e-02, 2.04419065e-02,\n 5.61199570e-03, -2.51714028e-02, 4.59584072e-02, 1.01568084e-02,\n -1.03132576e-02, -3.47840693e-03, 2.52889507e-02, -2.66612396e-02,\n 4.42611836e-02, -1.85268242e-02, 4.57341075e-02, -4.04713787e-02,\n 2.18044654e-01, 2.41456348e-02, -9.57456708e-04, 1.83114167e-02,\n -3.54787558e-02, 2.46407185e-02, 7.85478577e-02, 2.96208858e-02,\n -1.95737258e-02, 8.29286966e-03, 3.32850311e-03, -2.48379502e-02,\n 5.21280952e-02, -2.68758386e-02, -8.33445042e-03, 3.39096524e-02,\n -7.42925378e-03, 7.67563283e-03, -7.80183300e-02, 7.10648810e-03,\n -1.09409131e-02, 8.09427444e-03, -4.79577575e-03, -7.35900737e-03,\n -8.02769959e-02, -2.83947289e-02, 2.03800239e-02, -1.31330648e-02,\n 5.29023558e-02, 1.55006815e-02, -2.43931878e-02, -3.24712843e-02,\n 6.48617418e-03, 3.87190990e-02, 1.33868558e-02, -2.17015427e-02,\n 2.63994243e-02, -2.29329728e-02, -6.44776821e-02, -4.56387661e-02,\n -4.78457101e-03, 4.09317948e-03, -2.95639634e-02, -1.87856313e-02,\n 1.11593939e-02, -1.78132392e-02, -5.34680905e-03, 1.92655828e-02,\n -9.44136158e-02, 3.33602726e-02, -1.28154957e-03, -2.71097990e-03,\n 2.09544357e-02, 1.03261217e-01, -3.35561559e-02, -6.76982710e-03],\n dtype=float32)"
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from gensim.models.fasttext import load_facebook_model\n",
"\n",
"vectors_file = \"cc.en.300.bin\"\n",
"fb_model = load_facebook_model(vectors_file)\n",
"\n",
"fb_model.wv.get_sentence_vector(\"Good game\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 5,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.9303907\n",
"0.94947904\n"
]
}
],
"source": [
"from numpy.linalg import norm\n",
"def cosine_similarity(a, b):\n",
" return np.dot(a,b)/(norm(a)*norm(b))\n",
"\n",
"def get_sentence_similarity(sent_a, sent_b):\n",
" vec1 = fb_model.wv.get_sentence_vector(sent_a)\n",
" vec2 = fb_model.wv.get_sentence_vector(sent_b)\n",
" return cosine_similarity(vec1,vec2)\n",
"\n",
"print(get_sentence_similarity(\"Good game\", \"Amazing game, I love it!\"))\n",
"print(get_sentence_similarity(\"Good game\", \"Horrible game. A buggy mess.\"))"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 6,
"outputs": [],
"source": [
"train[\"vectorized\"] = train[\"review_text\"].apply(lambda x : fb_model.wv.get_sentence_vector(x))"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 7,
"outputs": [
{
"data": {
"text/plain": "array([ 8.71886499e-03, -9.33922902e-02, -3.61323059e-02, -2.44729072e-02,\n 1.08409366e-02, 1.93068106e-02, -8.36923420e-02, 2.29316903e-03,\n -1.35135755e-03, 2.88301776e-03, -2.74441373e-02, -9.83558595e-03,\n 3.87936011e-02, 9.47409403e-03, 3.30047533e-02, 4.45564575e-02,\n 8.05891701e-04, 4.50393967e-02, 3.19698919e-03, 2.77824774e-02,\n -4.72737849e-03, 1.12508880e-02, 2.10752850e-03, -1.86015293e-02,\n 2.95459442e-02, -1.79125778e-02, -9.69705731e-03, -1.25571457e-03,\n 6.71224575e-03, 9.82025936e-02, 2.62354501e-02, 4.77575843e-04,\n 4.30168724e-03, 2.30760872e-02, 7.46196136e-03, -2.56011821e-02,\n 2.26500910e-03, 9.29989759e-03, 4.85312892e-03, -2.05451786e-03,\n 1.66831594e-02, -4.36836779e-02, -3.61202359e-02, 1.47827193e-02,\n 4.84717675e-02, 2.09881645e-02, -1.83120575e-02, 3.67828794e-02,\n -2.54551638e-02, 5.68488985e-03, 3.21363397e-02, -1.92501992e-02,\n 3.51247750e-02, 6.23576110e-03, -7.48702977e-03, 2.46541500e-02,\n 4.22804020e-02, -1.25615057e-02, -5.79859968e-03, 4.38177120e-03,\n 6.56097755e-02, 4.94229654e-03, 8.99066159e-04, -1.51860202e-02,\n -1.56211155e-02, -1.14172837e-02, 2.29500444e-03, 7.24412594e-03,\n 1.61466487e-02, -2.63501853e-02, 1.06835075e-01, -1.32511724e-02,\n 1.00777773e-02, -1.87501553e-02, -1.71737131e-02, -1.66921876e-02,\n -2.48353798e-02, -3.03455871e-02, -7.35406764e-03, 1.86671335e-02,\n 1.11391433e-02, 1.50522811e-03, 7.59978918e-03, -1.43874844e-03,\n 7.25007243e-03, -8.30824673e-03, -4.84226309e-02, 7.33444653e-03,\n -2.85197571e-02, -4.60745730e-02, -2.38343086e-02, 1.97487529e-02,\n 4.29472663e-02, -5.94962295e-03, 7.63149792e-03, -9.71615221e-03,\n -1.44147705e-02, 3.04668932e-03, 2.28872746e-02, 9.57457058e-04,\n -1.47111658e-02, 1.44942962e-02, -2.48183205e-04, -1.70479212e-02,\n 9.38933901e-03, -2.18814029e-03, 2.38826945e-02, 2.83374488e-02,\n -4.21173871e-02, 1.50122121e-02, 2.29728036e-02, 2.54183225e-02,\n -8.07054807e-04, -1.51364841e-02, 3.09927687e-02, 3.13952193e-02,\n -1.21332435e-02, -1.32499263e-02, -9.75007843e-03, -5.41008521e-05,\n -9.06463992e-03, -1.11404026e-03, -6.34767395e-03, -2.95756236e-02,\n -1.97567306e-02, -2.34055445e-02, 1.63229201e-02, 3.15271169e-02,\n -2.27316860e-02, -1.17390202e-02, -7.85546657e-03, -1.27675962e-02,\n 4.69210669e-02, -5.10264486e-02, -1.76178105e-03, 2.61727888e-02,\n -5.78924827e-02, 1.59178916e-02, -1.30226174e-02, 3.05363275e-02,\n 2.62711458e-02, 2.42318660e-02, 1.94618828e-03, 1.08218072e-02,\n 3.02217435e-02, 1.15953386e-02, -1.63421690e-01, 1.32743130e-02,\n 9.48617421e-03, -2.56551709e-03, -4.67495248e-02, -3.61125320e-02,\n -4.41548303e-02, 2.86387391e-02, -1.81056850e-04, -2.06265738e-03,\n 1.14647327e-02, 4.72528152e-02, 4.42985930e-02, 8.55786633e-03,\n 3.78191061e-02, 1.83753986e-02, 4.15914468e-02, -4.11635116e-02,\n 3.33526842e-02, -1.25481822e-02, 2.34596524e-02, 8.43344163e-03,\n -4.16795984e-02, 7.25348853e-03, -2.80407108e-02, -3.69634405e-02,\n -2.46312029e-05, -9.05072596e-03, -2.41407454e-02, -9.63037368e-03,\n 7.61253759e-03, -2.81870961e-02, -5.51456306e-03, -2.98725273e-02,\n 1.28271757e-03, 3.05276066e-02, -3.51019343e-03, 2.49049999e-02,\n 4.08466980e-02, 1.64877940e-02, 3.08923759e-02, 8.13027727e-04,\n 1.61136538e-02, -4.12218878e-03, 2.07552351e-02, -1.96164269e-02,\n -1.81689784e-02, -2.35741213e-02, 1.90784093e-02, -2.61228625e-02,\n 5.52171562e-03, 3.33901797e-03, 3.08879260e-02, 1.22919949e-02,\n 1.14197442e-02, 4.92207371e-02, -1.31729420e-03, 1.34627940e-02,\n -3.66763920e-02, -9.86301922e-04, -3.99103155e-03, 2.03184932e-02,\n -8.94649187e-04, -3.81594640e-03, -3.50187197e-02, -8.03904049e-03,\n -3.02518457e-02, 9.22963768e-03, 2.14075781e-02, -6.65908679e-03,\n 8.25127028e-03, 2.21848190e-02, 2.46407872e-04, 6.03683246e-03,\n -2.76617929e-02, -1.00275213e-02, -1.12058101e-02, -4.11576666e-02,\n -8.37493241e-02, -2.64801420e-02, -1.94396731e-03, -2.57269316e-03,\n -2.63478048e-02, 4.14898433e-03, -2.23227218e-02, 1.55853424e-02,\n -4.74900706e-03, -1.03320079e-02, 6.25639558e-02, -5.76885510e-03,\n 1.14211654e-02, -1.88096928e-05, 3.23872566e-02, -1.09968400e-02,\n 3.72492447e-02, -1.76831800e-02, 3.80933434e-02, -3.50751691e-02,\n 2.17064083e-01, 1.98509376e-02, -2.04760581e-02, 1.57990574e-03,\n -9.46057122e-03, 1.87625270e-02, 7.28069246e-02, 3.03323641e-02,\n -3.04877665e-02, 2.50301585e-02, -6.43385388e-03, -2.88080852e-02,\n 4.21348773e-02, -1.85974501e-02, -4.92343074e-03, 3.06231380e-02,\n -3.25853354e-03, 3.45354341e-02, -6.65686503e-02, -3.49383074e-04,\n -3.34775564e-03, 3.12979519e-03, -2.10906472e-02, -8.10027681e-03,\n -6.81191757e-02, -3.96640748e-02, 3.50814611e-02, -2.37802081e-02,\n 4.13298160e-02, 2.33794153e-02, -7.41491909e-04, -7.02932826e-04,\n -2.06176331e-03, 3.27063650e-02, 1.90925822e-02, -2.00635698e-02,\n 1.49720861e-02, -4.70005861e-03, -6.46774769e-02, -3.90873700e-02,\n -3.91177554e-03, 1.29053893e-03, -2.50313692e-02, -3.08023542e-02,\n -4.39980626e-03, -1.87384859e-02, 1.05929542e-02, 1.05856510e-03,\n -8.73909295e-02, 2.03851666e-02, -8.28381535e-03, 1.07255662e-02,\n 1.35344295e-02, 8.94187242e-02, -3.53905819e-02, 2.35818932e-03],\n dtype=float32)"
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.iloc[0][\"vectorized\"]"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 8,
"outputs": [],
"source": [
"test[\"vectorized\"] = test[\"review_text\"].apply(lambda x : fb_model.wv.get_sentence_vector(x))\n",
"valid[\"vectorized\"] = valid[\"review_text\"].apply(lambda x : fb_model.wv.get_sentence_vector(x))"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 9,
"outputs": [],
"source": [
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from keras import layers\n",
"from keras.optimizers import Adam\n",
"\n",
"def create_model():\n",
" inputs = keras.Input(shape=(300,))\n",
" dense1 = layers.Dense(256, activation=\"relu\")(inputs)\n",
" dense2 = layers.Dense(128, activation=\"relu\")(dense1)\n",
" dense3 = layers.Dense(64, activation=\"relu\")(dense2)\n",
" output = layers.Dense(1, activation=\"sigmoid\")(dense3)\n",
" model = keras.Model(inputs=inputs, outputs=output)\n",
" model.compile(loss='binary_crossentropy', optimizer=Adam(learning_rate=1e-4), metrics=['accuracy'])\n",
" return model"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 10,
"outputs": [],
"source": [
"train_x = np.stack(train[\"vectorized\"].values)\n",
"train_y = np.stack(train[\"review_score\"].values)\n",
"\n",
"valid_x = np.stack(valid[\"vectorized\"].values)\n",
"valid_y = np.stack(valid[\"review_score\"].values)\n",
"\n",
"test_x = np.stack(test[\"vectorized\"].values)\n",
"test_y = np.stack(test[\"review_score\"].values)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 11,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/25\n",
"1351/1351 [==============================] - 3s 1ms/step - loss: 0.6815 - accuracy: 0.5627 - val_loss: 0.6221 - val_accuracy: 0.7079\n",
"Epoch 2/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6564 - accuracy: 0.6112 - val_loss: 0.6649 - val_accuracy: 0.5497\n",
"Epoch 3/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6492 - accuracy: 0.6204 - val_loss: 0.6619 - val_accuracy: 0.5553\n",
"Epoch 4/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6439 - accuracy: 0.6280 - val_loss: 0.6552 - val_accuracy: 0.5702\n",
"Epoch 5/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6405 - accuracy: 0.6333 - val_loss: 0.6135 - val_accuracy: 0.6346\n",
"Epoch 6/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6374 - accuracy: 0.6352 - val_loss: 0.7130 - val_accuracy: 0.4843\n",
"Epoch 7/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6348 - accuracy: 0.6409 - val_loss: 0.6140 - val_accuracy: 0.6315\n",
"Epoch 8/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6307 - accuracy: 0.6445 - val_loss: 0.5606 - val_accuracy: 0.7186\n",
"Epoch 9/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6297 - accuracy: 0.6449 - val_loss: 0.6899 - val_accuracy: 0.5398\n",
"Epoch 10/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6267 - accuracy: 0.6480 - val_loss: 0.6795 - val_accuracy: 0.5511\n",
"Epoch 11/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6251 - accuracy: 0.6486 - val_loss: 0.6778 - val_accuracy: 0.5430\n",
"Epoch 12/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6222 - accuracy: 0.6530 - val_loss: 0.5447 - val_accuracy: 0.7297\n",
"Epoch 13/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6206 - accuracy: 0.6541 - val_loss: 0.5630 - val_accuracy: 0.7080\n",
"Epoch 14/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6189 - accuracy: 0.6563 - val_loss: 0.5919 - val_accuracy: 0.6746\n",
"Epoch 15/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6168 - accuracy: 0.6588 - val_loss: 0.6887 - val_accuracy: 0.5485\n",
"Epoch 16/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6160 - accuracy: 0.6576 - val_loss: 0.5550 - val_accuracy: 0.7132\n",
"Epoch 17/25\n",
"1351/1351 [==============================] - 2s 1ms/step - loss: 0.6132 - accuracy: 0.6589 - val_loss: 0.6529 - val_accuracy: 0.5999\n"
]
}
],
"source": [
"callback = keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', patience=5, restore_best_weights=True)\n",
"model = create_model()\n",
"history = model.fit(train_x, train_y, validation_data=(valid_x, valid_y), epochs=25, callbacks=[callback])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 12,
"outputs": [],
"source": [
"def create_model():\n",
" inputs = keras.Input(shape=(300,))\n",
" dense1 = layers.Dense(1024, activation=\"relu\")(inputs)\n",
" dense2 = layers.Dense(512, activation=\"relu\")(dense1)\n",
" dense3 = layers.Dense(128, activation=\"relu\")(dense2)\n",
" output = layers.Dense(1, activation=\"sigmoid\")(dense3)\n",
" model = keras.Model(inputs=inputs, outputs=output)\n",
" model.compile(loss='binary_crossentropy', optimizer=Adam(learning_rate=1e-4), metrics=['accuracy'])\n",
" return model"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 14,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/25\n",
"1351/1351 [==============================] - 3s 2ms/step - loss: 0.6707 - accuracy: 0.5788 - val_loss: 0.6569 - val_accuracy: 0.5608\n",
"Epoch 2/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6493 - accuracy: 0.6180 - val_loss: 0.8048 - val_accuracy: 0.3736\n",
"Epoch 3/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6426 - accuracy: 0.6281 - val_loss: 0.6285 - val_accuracy: 0.6160\n",
"Epoch 4/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6376 - accuracy: 0.6348 - val_loss: 0.6405 - val_accuracy: 0.5911\n",
"Epoch 5/25\n",
"1351/1351 [==============================] - 3s 2ms/step - loss: 0.6328 - accuracy: 0.6406 - val_loss: 0.6520 - val_accuracy: 0.5826\n",
"Epoch 6/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6283 - accuracy: 0.6458 - val_loss: 0.6654 - val_accuracy: 0.5612\n",
"Epoch 7/25\n",
"1351/1351 [==============================] - 3s 2ms/step - loss: 0.6251 - accuracy: 0.6484 - val_loss: 0.6713 - val_accuracy: 0.5577\n",
"Epoch 8/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6230 - accuracy: 0.6512 - val_loss: 0.5540 - val_accuracy: 0.7145\n",
"Epoch 9/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6208 - accuracy: 0.6529 - val_loss: 0.6870 - val_accuracy: 0.5254\n",
"Epoch 10/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6182 - accuracy: 0.6544 - val_loss: 0.5915 - val_accuracy: 0.6618\n",
"Epoch 11/25\n",
"1351/1351 [==============================] - 3s 2ms/step - loss: 0.6161 - accuracy: 0.6565 - val_loss: 0.6600 - val_accuracy: 0.5738\n",
"Epoch 12/25\n",
"1351/1351 [==============================] - 3s 2ms/step - loss: 0.6139 - accuracy: 0.6587 - val_loss: 0.7102 - val_accuracy: 0.5054\n",
"Epoch 13/25\n",
"1351/1351 [==============================] - 2s 2ms/step - loss: 0.6130 - accuracy: 0.6582 - val_loss: 0.5946 - val_accuracy: 0.6568\n"
]
}
],
"source": [
"callback = keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', patience=5, restore_best_weights=True)\n",
"model = create_model()\n",
"history = model.fit(train_x, train_y, validation_data=(valid_x, valid_y), epochs=25, callbacks=[callback])"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 30,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x1b6a1ae2400>"
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/dklEQVR4nO3dd3xUVfo/8M+dycyk9w5plNB7iYSmUgIqC7oWFBFQ0WWxsjYsoKLyU1eWVVlRFNvK2r7WxaUYBKX3DoFQEkJ6Qnqfub8/TmaSISGkzMyd8nm/XvOamyl3nhkxeeac5zxHkmVZBhEREZELUSkdABEREZGtMQEiIiIil8MEiIiIiFwOEyAiIiJyOUyAiIiIyOUwASIiIiKXwwSIiIiIXA4TICIiInI5TICIyKrS0tLw4osv4siRI1d8jF6vxxtvvIEff/zRhpERkStjAkREVlNXV4fp06fj0KFD6NOnzxUf9/zzz+O9997DNddcc9Vz5uTk4NZbb0VQUBAkScLy5cstGHGDTz75BJIkYe/evRY71/nz5023XXvttbj22ms7fG4iah8mQER24uuvv4YkSfj++++b3DdgwABIkoTffvutyX3R0dFITEy0WByvvfYafvjhB4uc6/nnnwcArFmzBipV879ufvnlF3z44YdYt24dwsLCrnrOxx9/HOvXr8fChQvx+eefY9KkSRaJ1VFlZmbixRdfxMGDB61y/jVr1lgtySRSEhMgIjsxatQoAMDWrVvNbi8pKcHRo0fh5uaGbdu2md134cIFXLhwwfRcS7BUAlRWVgYvLy/8/PPP8PDwuOLjzpw5g7Vr16JHjx6tOu+mTZswdepUPPHEE7j77rvRs2fPDsdqbTNnzkRlZSViYmJMt23YsAEbNmzo8LkzMzPx0ksvMQEiaiM3pQMgIiEyMhJxcXFNEqAdO3ZAlmXcdtttTe4z/tzRBEiWZVRVVbWYqLSVt7c3Xnjhhas+7uGHH27TeXNzc+Hv79/OqJShVquhVqvNbtNqtYrEUlFRAU9PT0Vem8iecASIyI6MGjUKBw4cQGVlpem2bdu2oU+fPpg8eTJ27twJg8Fgdp8kSRg5ciQA4OOPP8b111+P0NBQ6HQ69O7dG++9916T14mNjcVNN92E9evXY+jQofDw8MD7778PSZJQXl6OTz/9FJIkQZIkzJ492/S8AwcOYPLkyfD19YW3tzfGjRuHnTt3mp27trYWL730Erp37w53d3cEBQVh1KhR2Lhxo9njTp48idtvvx0hISHw8PBAjx498Nxzz13xszHW0ciyjBUrVpjiA4AXX3zRdNzccxrX3hjf+9atWzF8+HC4u7ujS5cu+Oyzz6742kaXLl3C8OHD0blzZ6SkpLT6vXSkBmjjxo0YNWoU/P394e3tjR49euDZZ58FAGzevBnDhg0DAMyZM8f0mXzyySem1+jbty/27duHMWPGwNPT0/TcH3/8ETfeeCMiIyOh0+nQtWtXLFmyBHq93izGtWvXIi0tzXTu2NhY0+jeo48+2iTejIwMqNVqLF269KrvjUhJHAEisiOjRo3C559/jl27dpn+OG7btg2JiYlITExEcXExjh49iv79+5vu69mzJ4KCggAA7733Hvr06YM//elPcHNzw88//4y//vWvMBgMmD9/vtlrpaSk4M4778SDDz6IuXPnokePHvj8889x//33Y/jw4XjggQcAAF27dgUAHDt2DKNHj4avry+eeuopaDQavP/++7j22muxZcsWJCQkABDJyNKlS03nKSkpwd69e7F//35MmDABAHD48GGMHj0aGo0GDzzwAGJjY3HmzBn8/PPPePXVV5v9bMaMGYPPP/8cM2fOxIQJE3DPPfe0+3NOTU3Frbfeivvuuw+zZs3C6tWrMXv2bAwZMuSKxdr5+fmYMGECCgsLsWXLFtPn0p730lrHjh3DTTfdhP79++Pll1+GTqdDamqqaSq0V69eePnll7Fo0SI88MADGD16NACY1YQVFBRg8uTJmD59Ou6++25TndUnn3wCb29vLFiwAN7e3ti0aRMWLVqEkpISvPnmmwCA5557DsXFxcjIyMA//vEPAGJkz9vbGzfffDO++uorLFu2zGx06z//+Q9kWcaMGTM69N6JrE4mIrtx7NgxGYC8ZMkSWZZluba2Vvby8pI//fRTWZZlOSwsTF6xYoUsy7JcUlIiq9Vqee7cuabnV1RUNDlnUlKS3KVLF7PbYmJiZADyunXrmjzey8tLnjVrVpPbp02bJmu1WvnMmTOm2zIzM2UfHx95zJgxptsGDBgg33jjjS2+zzFjxsg+Pj5yWlqa2e0Gg6HF58myLAOQ58+fb3bb4sWL5eZ+nX388ccyAPncuXOm24zv/ffffzfdlpubK+t0Ovlvf/tb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\n"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"plt.plot(history.history['loss'])\n",
"plt.plot(history.history['val_loss'])\n",
"plt.title('Wartość funkcji straty')\n",
"plt.ylabel('Strata')\n",
"plt.xlabel('Epoka')\n",
"plt.legend(['train', 'valid'], loc='upper left')"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 31,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.legend.Legend at 0x1b6a1ab1b50>"
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "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VHBwMJ06dZKaqSbce++9jBo1iscff5xrr72W9evX8+qrr/Lqq6/qHZrLmThxIn/961/p0qULZ511Fps2beK5557jlltu0Ts03ZWVlbFv3z7bzwcOHGDz5s1ERUXRpUsX7rnnHh577DF69OhBWloa8+fPJzExkcsvv1y/oHVyus8qISGBq6++mo0bN/Kf//wHs9ls+30fFRWFn5+f8wPskLFmQtM0TXvhhRe0Ll26aH5+ftqwYcO0tWvX6h2SywGafPzzn//UOzS3IMPgT+/f//631q9fP83f31/r3bu39uqrr+odkksqLS3VZs+erXXp0kULCAjQunbtqj300ENaVVWV3qHp7rvvvmvyd9TUqVM1TVND4efPn6/FxcVp/v7+2oUXXqjt3r1b36B1crrP6sCBA83+vv/uu+86JD6DpsnUnkIIIYTwLlIDJIQQQgivIwmQEEIIIbyOJEBCCCGE8DqSAAkhhBDC60gCJIQQQgivIwmQEEIIIbyOJEBCCCGE8DqSAAkhRAusWrUKg8FAcXGx3qEIIRxAEiAhhBBCeB1JgIQQQgjhdSQBEkK4BYvFwuLFi0lLSyMwMJCBAweyfPlyoL576osvvmDAgAEEBAQwYsQItm/fbneNjz/+mLPOOgt/f39SU1N59tln7V6vqqri/vvvJzk5GX9/f7p3787rr79ud8yGDRsYOnQoQUFBjBo1qtEK80II9yAJkBDCLSxevJi33nqLpUuX8ttvv3Hvvfdy00038f3339uO+fOf/8yzzz7LL7/8QkxMDBMnTqSmpgZQicu1117L9ddfz7Zt23j44YeZP38+b7zxhu38KVOm8N577/H888+zc+dOXnnlFUJCQuzieOihh3j22Wf59ddf8fHxkRXShXBTshiqEMLlVVVVERUVxTfffMPIkSNt+2+77TYqKiq4/fbbOf/883n//fe57rrrACgqKqJz58688cYbXHvttUyePJn8/Hz+97//2c6/7777+OKLL/jtt9/Ys2cPvXr1YuXKlYwbN65RDKtWreL888/nm2++4cILLwTgyy+/5LLLLuPkyZMEBAQ4+VMQQjiStAAJIVzevn37qKio4KKLLiIkJMT2eOutt8jMzLQd1zA5ioqKolevXuzcuROAnTt3Mnr0aLvrjh49mr1792I2m9m8eTMmk4lzzz33tLEMGDDAtp2QkABAXl5eu9+jEKJj+egdgBBCnElZWRkAX3zxBUlJSXav+fv72yVBbRUYGNii43x9fW3bBoMBUPVJQgj3Ii1AQgiX17dvX/z9/cnKyqJ79+52j+TkZNtxa9eutW0fP36cPXv20KdPHwD69OnD6tWr7a67evVqevbsiclkon///lgsFruaIiGE55IWICGEywsNDWXu3Lnce++9WCwWxowZQ0lJCatXryYsLIyUlBQAFi1aRKdOnYiLi+Ohhx4iOjqayy+/HIA//elPnH322Tz66KNcd911rFmzhhdffJH/+7//AyA1NZWpU6dyyy238PzzzzNw4EAOHTpEXl4e1157rV5vXQjhJJIACSHcwqOPPkpMTAyLFy9m//79REREMHjwYB588EFbF9QTTzzB7Nmz2bt3L+np6fz73//Gz88PgMGDB/Phhx+yYMECHn30URISEli0aBHTpk2z3ePll1/mwQcf5K677qKwsJAuXbrw4IMP6vF2hRBOJqPAhBBuzzpC6/jx40REROgdjhDCDUgNkBBCCCG8jiRAQgghhPA60gUmhBBCCK8jLUBCCCGE8DqSAAkhhBDC60gCJIQQQgivIwmQEEIIIbyOJEBCCCGE8DqSAAkhhBDC60gCJIQQQgivIwmQEEIIIbyOJEBCCCGE8Dr/Dyb6KWWeGASCAAAAAElFTkSuQmCC\n"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"plt.plot(history.history['accuracy'])\n",
"plt.plot(history.history['val_accuracy'])\n",
"plt.title('model accuracy')\n",
"plt.ylabel('accuracy')\n",
"plt.xlabel('epoch')\n",
"plt.legend(['train', 'valid'], loc='upper left')"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 15,
"outputs": [],
"source": [
"model.save(\"fasttext_model.keras\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"### Pomimo kilku prób dostosowania parametrów model cechuje się stosunkowo niską jakością predykcji, pomimo tego że wygląda na przeuczony\n",
"\n",
"(skacząca wartość accuracy/loss dla zbioru walidacyjnego)"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 18,
"outputs": [],
"source": [
"import tensorflow as tf\n",
"def test_review_text(sentence):\n",
" vectorized = fb_model.wv.get_sentence_vector(sentence)\n",
" reshaped = tf.reshape(vectorized,shape=(1,300))\n",
" #print(vectorized.shape)\n",
" score = float(model(reshaped))\n",
" score_rounded = round(score)\n",
" print(score)\n",
" if score_rounded==0:\n",
" print(\"Negative review\")\n",
" else:\n",
" print(\"Positive review\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 19,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.7820833921432495\n",
"Positive review\n"
]
}
],
"source": [
"test_review_text(\"A buggy, uninspired mess\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 20,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.44321733713150024\n",
"Negative review\n"
]
}
],
"source": [
"test_review_text(\"This game is bad\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 21,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.8973167538642883\n",
"Positive review\n"
]
}
],
"source": [
"test_review_text(\"This game destroyed my life\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 22,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.8987871408462524\n",
"Positive review\n"
]
}
],
"source": [
"test_review_text(\"Best game I've ever played\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 23,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.5772996544837952\n",
"Positive review\n"
]
}
],
"source": [
"test_review_text(\"Fun cooperative play with scalable difficulty. Rapid path to get into a game with friends or open public games. \")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 24,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.6418458819389343\n",
"Positive review\n"
]
}
],
"source": [
"test_review_text(\"Deliriously buggy. Fun if/when it works properly. Wait and see if they actually QA the next few patches before you play.\")"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 25,
"outputs": [],
"source": [
"test[\"model_predictions\"] = model(np.stack(test[\"vectorized\"].values))"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 26,
"outputs": [],
"source": [
"test[\"model_predictions\"] = test[\"model_predictions\"].apply(lambda x : round(float(x)))"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": 27,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.72\n",
"Precision: 0.89\n",
"Recall: 0.76\n",
"F1 Score: 0.82\n"
]
}
],
"source": [
"def get_metrics():\n",
" df = test\n",
" predictions = df[\"model_predictions\"].to_numpy()\n",
" true_values = df[\"review_score\"].to_numpy()\n",
" accuracy = np.sum(np.rint(predictions) == true_values)/len(true_values)\n",
" TN_count = len(df.query(\"`review_score`==0 and `model_predictions`==0\").index)\n",
" TP_count = len(df.query(\"`review_score`==1 and `model_predictions`==1\").index)\n",
" FP_count = len(df.query(\"`review_score`==0 and `model_predictions`==1\").index)\n",
" FN_count = len(df.query(\"`review_score`==1 and `model_predictions`==0\").index)\n",
" precision = TP_count/(TP_count+FP_count)\n",
" recall = TP_count/(TP_count+FN_count)\n",
" F1_score = (2*precision*recall)/(precision+recall)\n",
" print(f\"Accuracy: {accuracy:.2f}\")\n",
" print(f\"Precision: {precision:.2f}\")\n",
" print(f\"Recall: {recall:.2f}\")\n",
" print(f\"F1 Score: {F1_score:.2f}\")\n",
"get_metrics()"
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "markdown",
"source": [
"Możliwe iż model osiągnąłby lepsze wyniki gdyby embeddingi były wyuczone na samych recenzjach gier, a nie pochodziły z gotowych wektorów dla języka angielskiego."
],
"metadata": {
"collapsed": false
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}