{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import sys, os, re, csv, codecs, numpy as np, pandas as pd\nimport matplotlib.pyplot as plt\n%matplotlib inline\nfrom nltk.corpus import stopwords # Import the stop word list\nfrom keras.preprocessing.text import Tokenizer\nfrom keras.preprocessing.sequence import pad_sequences\nfrom keras.layers import Dense, Input, LSTM, Embedding, Dropout, Activation, GRU,Conv1D,MaxPooling1D\nfrom keras.layers import Bidirectional, GlobalMaxPool1D,Bidirectional\nfrom keras.models import Model\nfrom keras import initializers, regularizers, constraints, optimizers, layers\nfrom keras.callbacks import EarlyStopping, ModelCheckpoint\nimport gc\nfrom sklearn.model_selection import train_test_split\nfrom keras.models import load_model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0c64863289d1910d449d7c1a7ebf6bac0a35fcf7"},"cell_type":"code","source":"train = pd.read_csv('../input/train.csv')\ntest = pd.read_csv('../input/test.csv')\nsubmit_template = pd.read_csv('../input/sample_submission.csv', header = 0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ed31e53143ee4eac95ed773e1c8f9668b57e330c"},"cell_type":"code","source":"train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6abb13cf3e7f1ca1620a3caefe261072ecccbfb1"},"cell_type":"code","source":"list_sentences = train[\"question_text\"]\nlist_sentences_test = test[\"question_text\"]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c992799e127da54f966e68df3a4812b4cd9aad6f"},"cell_type":"code","source":"max_features = 140000\ntokenizer = Tokenizer(num_words=max_features,char_level=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6d8e04fd7fd2e982393b668d7ea757c55d91dfb5"},"cell_type":"code","source":"tokenizer.fit_on_texts(list(list_sentences))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"66b4e2929aa3652795c906b77f1d0c239e25dc76"},"cell_type":"code","source":"list_tokenized = tokenizer.texts_to_sequences(list_sentences)\nlist_tokenized_test = tokenizer.texts_to_sequences(list_sentences_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"48b701970a9b597997453b41fd8442fd2c3c0bad"},"cell_type":"code","source":"maxlen = 65\nX_t = pad_sequences(list_tokenized, maxlen=maxlen)\nX_te = pad_sequences(list_tokenized_test, maxlen=maxlen)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"50d1537af3d6dbb404e0e85f80a6781affe4f2a3"},"cell_type":"code","source":"inp = Input(shape=(maxlen, ))\ninp","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b9f5b54ebbb1d69898b84032a64bd1924e7edeac"},"cell_type":"code","source":"embed_size = 700\nx = Embedding(len(tokenizer.word_index)+1, embed_size)(inp)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a1481e6952ec2c916c7ee7ecd5305aced989bf42"},"cell_type":"code","source":"x = Conv1D(filters=200,kernel_size=4,padding='same', activation='relu')(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"040a6c0859c7dc0cd930a0c35d34f629a1541f86"},"cell_type":"code","source":"x=MaxPooling1D(pool_size=4)(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"26ded3aebbb9f337974618c232fa445eed1e658c"},"cell_type":"code","source":"x = Bidirectional(GRU(256, return_sequences=True,name='lstm_layer1',dropout=0.2,recurrent_dropout=0.2))(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8f4b456dd03a02609ea244661cbb8a5aa45d1e8f"},"cell_type":"code","source":"x = Bidirectional(GRU(128, return_sequences=True,name='lstm_layer2',dropout=0.2,recurrent_dropout=0.2))(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e250947f2c80fe0a137cdeba0282c479bf84665d"},"cell_type":"code","source":"x = GlobalMaxPool1D()(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1e4ef80b13524ef3b14da824e252fffff817cf7a"},"cell_type":"code","source":"x = Dense(50, activation=\"relu\")(x)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"x = Dropout(0.25)(x)\nx = Dense(1, activation=\"sigmoid\")(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6a8c215dcef516b0ebe69639cc6b30c29ba6cfec"},"cell_type":"code","source":"model = Model(inputs=inp, outputs=x)\nmodel.compile(loss='binary_crossentropy',\n                  optimizer='adam',\n                 metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fc927c3cccff6e3dcdd92b666fe0470a812d5efc"},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9731e9226f036800945abf7e5ea658393a78a4e5"},"cell_type":"code","source":"X_train, X_test, y_train, y_test = train_test_split(X_t, train[[\"target\"]], test_size = 0.10, random_state = 42)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"86d596a37c1d6f744728235dfebca0b5dd05ebb6"},"cell_type":"code","source":"batch_size = 512\nepochs = 10\nmodel.fit(X_train,y_train, batch_size=batch_size, epochs=epochs,validation_data=(X_test,y_test), verbose=2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9264e0201e12a18a685476f6fcfd4d3ea1ca027d"},"cell_type":"code","source":"y_submit = model.predict(X_te,batch_size=batch_size,verbose=2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7281bc38b4201c991ce5fa1f3f02f6f6b6087db0"},"cell_type":"code","source":"y_submit[np.isnan(y_submit)]=0\nsample_submission = submit_template\nsample_submission[[\"prediction\"]] = y_submit\nsample_submission.loc[sample_submission['prediction'] >= 0.35, 'prediction'] = 1\nsample_submission.loc[sample_submission['prediction'] < 0.35, 'prediction'] = 0\nsample_submission[\"prediction\"] = sample_submission[\"prediction\"].round().astype(int)\nsample_submission.to_csv('submission.csv', index=False)","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}