{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"scrolled":true},"cell_type":"code","source":"from keras import layers, models, optimizers, datasets, preprocessing\nimport os\nimport pandas as pd\nfrom keras.preprocessing.text import Tokenizer\nfrom keras.utils import np_utils\n\nbase_dir='../input'\ntrain_dir=os.path.join(base_dir, '')\nvalidation_dir=os.path.join(base_dir, '')\n\n# paramater\nbatch_size=128\nseed=1470\n\ndef load_data():\n    data = pd.read_csv(os.path.join(train_dir, 'train.tsv'), sep='\\t')\n    x_train = [line['Phrase'] for i, line in data.iterrows()]\n    y_train = [line['Sentiment'] for i, line in data.iterrows()]\n    return x_train, y_train\n\ndef get_model():\n    main_input = layers.Input(shape=(max_len,))\n    embedded = layers.Embedding(max_features, 32)(main_input)\n    rnn_output = layers.GRU(32)(embedded)\n    dense1 = layers.Dense(32, activation='relu')(rnn_output)\n    dense1 = layers.Dropout(0.3)(dense1)\n    dense2 = layers.Dense(5, activation='softmax')(dense1)\n    model = models.Model(inputs=main_input, outputs=dense2)\n    model.compile(optimizer='rmsprop',\n                  loss='categorical_crossentropy',\n                  metrics=['acc'])\n    model.summary()\n    return model\n\n\nmax_features = 10000\nmax_len = 200\n\nx_train, y_train = load_data()\ntokenizer = Tokenizer(num_words=max_features)\ntokenizer.fit_on_texts(x_train)\nx_train = tokenizer.texts_to_sequences(x_train)\nx_train = preprocessing.sequence.pad_sequences(x_train, maxlen=max_len)\ny_train = np_utils.to_categorical(y_train)\nmodel = get_model()\nhistory = model.fit(x_train, y_train,\n                    epochs=10,\n                    batch_size=128,\n                    )\n\n# predict\ntest_data = pd.read_csv('../input/test.tsv', sep='\\t')\nx_test = [line['Phrase'] for i, line in test_data.iterrows()]\nx_test = tokenizer.texts_to_sequences(x_test)\nx_test= preprocessing.sequence.pad_sequences(x_test, maxlen=max_len)\ntest_pred = model.predict(x_test)\ntest_pred = test_pred.argmax(axis=1)\npred_df = pd.DataFrame({'PhraseId':test_data['PhraseId'].values, 'Sentiment': test_pred})\npred_df.to_csv('submit.csv', index=False)\n\n\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}