{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport os\n\nfrom sklearn.model_selection import train_test_split\n\nfrom transformers import AutoTokenizer\nfrom transformers import DataCollatorWithPadding\nfrom transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer\nfrom datasets import Dataset\n\nfrom scipy.special import softmax\n\nimport torch\nfrom transformers import AutoConfig, AutoModel\n\nos.environ[\"WANDB_DISABLED\"] = \"true\"\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = pd.read_csv(\"/kaggle/input/feedback-prize-effectiveness/test.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:50:50.954896Z","iopub.execute_input":"2022-07-19T15:50:50.956211Z","iopub.status.idle":"2022-07-19T15:50:50.973848Z","shell.execute_reply.started":"2022-07-19T15:50:50.95615Z","shell.execute_reply":"2022-07-19T15:50:50.972309Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def add_essay(row, train_test=\"train\"):\n    essay_filename = row[\"essay_id\"]\n    complete_filename = f\"/kaggle/input/feedback-prize-effectiveness/{train_test}/{essay_filename}.txt\"\n    with open(complete_filename, \"r\") as fp:\n        text = fp.read()\n    return text","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:50:50.976954Z","iopub.execute_input":"2022-07-19T15:50:50.97766Z","iopub.status.idle":"2022-07-19T15:50:50.984384Z","shell.execute_reply.started":"2022-07-19T15:50:50.977602Z","shell.execute_reply":"2022-07-19T15:50:50.983424Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test[\"essay_text\"] = test.apply(lambda x: add_essay(x, train_test=\"test\"), axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:50:50.988089Z","iopub.execute_input":"2022-07-19T15:50:50.988535Z","iopub.status.idle":"2022-07-19T15:50:51.023424Z","shell.execute_reply.started":"2022-07-19T15:50:50.988483Z","shell.execute_reply":"2022-07-19T15:50:51.022228Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def create_complete_text(row):\n    complete_text = row[\"discourse_type\"] + \" [SEP] \" + row[\"discourse_text\"] + \" [SEP] \" + row[\"essay_text\"] \n    return complete_text\n\ntest[\"complete_text\"] = test.apply(lambda x: create_complete_text(x), axis=1)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:50:51.025195Z","iopub.execute_input":"2022-07-19T15:50:51.026162Z","iopub.status.idle":"2022-07-19T15:50:51.034957Z","shell.execute_reply.started":"2022-07-19T15:50:51.026118Z","shell.execute_reply":"2022-07-19T15:50:51.033372Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# INFERENCE\n\nmodel_path = \"/kaggle/input/second-version-deberta-v3-training/results/trained_model\"\n\ntrained_tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=True)\ntrained_data_collator = DataCollatorWithPadding(tokenizer=trained_tokenizer)\ntrained_model = AutoModelForSequenceClassification.from_pretrained(model_path)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:51:56.249313Z","iopub.execute_input":"2022-07-19T15:51:56.249815Z","iopub.status.idle":"2022-07-19T15:52:00.712918Z","shell.execute_reply.started":"2022-07-19T15:51:56.24977Z","shell.execute_reply":"2022-07-19T15:52:00.711608Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def tokenize_test_function(examples):\n    return trained_tokenizer(examples[\"complete_text\"], padding=\"max_length\", truncation=True, max_length=512)\n\ntest_dataset = Dataset.from_pandas(test)\n\ntokenized_test = test_dataset.map(tokenize_test_function, batched=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:52:09.073992Z","iopub.execute_input":"2022-07-19T15:52:09.074555Z","iopub.status.idle":"2022-07-19T15:52:09.234221Z","shell.execute_reply.started":"2022-07-19T15:52:09.07451Z","shell.execute_reply":"2022-07-19T15:52:09.233151Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"training_args = TrainingArguments(\n    output_dir=\"./results\",\n    learning_rate=2e-5,\n    per_device_train_batch_size=16,\n    per_device_eval_batch_size=16,\n    num_train_epochs=3,\n    weight_decay=0.01,\n    save_strategy=\"no\"\n)\n\ntrainer = Trainer(\n    model=trained_model,\n    args=training_args,\n    tokenizer=trained_tokenizer,\n    data_collator=trained_data_collator,\n)","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:52:10.347742Z","iopub.execute_input":"2022-07-19T15:52:10.348838Z","iopub.status.idle":"2022-07-19T15:52:10.396154Z","shell.execute_reply.started":"2022-07-19T15:52:10.348785Z","shell.execute_reply":"2022-07-19T15:52:10.39489Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"outputs = trainer.predict(tokenized_test)\nsoftmax_outputs = softmax(outputs.predictions, axis=1)","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels = [\"Ineffective\", \"Adequate\", \"Effective\"]\noutput_df = pd.concat([test[['discourse_id']], pd.DataFrame(softmax_outputs, columns=labels)], axis=1)\noutput_df.to_csv('submission.csv', index=False)\npd.read_csv('submission.csv')","metadata":{"execution":{"iopub.status.busy":"2022-07-19T15:52:22.735619Z","iopub.execute_input":"2022-07-19T15:52:22.736648Z","iopub.status.idle":"2022-07-19T15:52:22.7708Z","shell.execute_reply.started":"2022-07-19T15:52:22.736609Z","shell.execute_reply":"2022-07-19T15:52:22.769407Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}