{"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)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-07T12:46:23.048381Z","iopub.execute_input":"2022-08-07T12:46:23.048979Z","iopub.status.idle":"2022-08-07T12:46:23.077191Z","shell.execute_reply.started":"2022-08-07T12:46:23.048897Z","shell.execute_reply":"2022-08-07T12:46:23.076540Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Data Description\n\nThe dataset presented here contains argumentative essays written by U.S students in grades 6-12. These essays were annotated by expert raters for discourse elements commonly found in argumentative writing:\n\n- Lead - an introduction that begins with a statistic, a quotation, a description, or some other device to grab the reader’s attention and point toward the thesis\n- Position - an opinion or conclusion on the main question\n- Claim - a claim that supports the position\n- Counterclaim - a claim that refutes another claim or gives an opposing reason to the position\n- Rebuttal - a claim that refutes a counterclaim\n- Evidence - ideas or examples that support claims, counterclaims, or rebuttals.\n- Concluding Statement - a concluding statement that restates the claims\n\nYour task is to predict the quality rating of each discourse element. Human readers rated each rhetorical or argumentative element, in order of increasing quality, as one of:\n\n- Ineffective\n- Adequate\n- Effective\n\n**Training Data**\n\nThe training set consist of a .csv file containing the annotated discourse elements each essay, including the quality ratings, together with .txt files containing the full text of each essay. It is important to note that some parts of the essays will be unannotated (i.e., they do not fit into one of the classifications above) and they will lack a quality rating. We do not include the unannotated parts in train.csv.\n\n- train.csv - Contains the annotated discourse elements for all essays in the test set.\n\n- discourse_id - ID code for discourse element\n- essay_id - ID code for essay response. This ID code corresponds to the name of the full-text file in the train/ folder.\n- discourse_text - Text of discourse element.\n- discourse_type - Class label of discourse element.\n- discourse_type_num - Enumerated class label of discourse element .\n- discourse_effectiveness - Quality rating of discourse element, the target.\n\nExample Test Data\nTo help you author submission code, we include a few example instances selected from the test set. When you submit your notebook for scoring, this example data will be replaced by the actual test data, including the sample_submission.csv file.\n\ntest/ - A folder containing an example essay from the test set. The actual test set comprises about 3,000 essays in a format similar to the training set essays. The test set essays are distinct from the training set essays.\ntest.csv - Annotations for the test set essays, containing all of the fields of train.csv except the target, discourse_effectiveness.\nsample_submission.csv - A sample submission file in the correct format. See the Evaluation page for more details.","metadata":{}},{"cell_type":"code","source":"train_df = pd.read_csv(\"/kaggle/input/feedback-prize-effectiveness/train.csv\")\ntest_df = pd.read_csv(\"/kaggle/input/feedback-prize-effectiveness/test.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:23.078883Z","iopub.execute_input":"2022-08-07T12:46:23.079488Z","iopub.status.idle":"2022-08-07T12:46:23.340555Z","shell.execute_reply.started":"2022-08-07T12:46:23.079453Z","shell.execute_reply":"2022-08-07T12:46:23.339736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:23.343053Z","iopub.execute_input":"2022-08-07T12:46:23.343709Z","iopub.status.idle":"2022-08-07T12:46:23.365185Z","shell.execute_reply.started":"2022-08-07T12:46:23.343670Z","shell.execute_reply":"2022-08-07T12:46:23.364312Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_df.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:23.367070Z","iopub.execute_input":"2022-08-07T12:46:23.367502Z","iopub.status.idle":"2022-08-07T12:46:23.377187Z","shell.execute_reply.started":"2022-08-07T12:46:23.367466Z","shell.execute_reply":"2022-08-07T12:46:23.376314Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## EDA","metadata":{}},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport seaborn as sns\n\nimport warnings\nwarnings.filterwarnings('ignore')","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:23.378633Z","iopub.execute_input":"2022-08-07T12:46:23.379052Z","iopub.status.idle":"2022-08-07T12:46:24.436035Z","shell.execute_reply.started":"2022-08-07T12:46:23.379019Z","shell.execute_reply":"2022-08-07T12:46:24.434977Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# check if there is any null value\nprint(train_df.isnull().sum())\nprint(\"-\"*50)\nsns.heatmap(train_df.isnull());","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:24.437609Z","iopub.execute_input":"2022-08-07T12:46:24.438218Z","iopub.status.idle":"2022-08-07T12:46:25.229275Z","shell.execute_reply.started":"2022-08-07T12:46:24.438183Z","shell.execute_reply":"2022-08-07T12:46:25.228069Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Remarks \nThere are no null values in dataset. ","metadata":{}},{"cell_type":"code","source":"percentage_each_class = round(100 * train_df['discourse_type'].value_counts() / train_df.shape[0], 1)\nfig = plt.figure(figsize=(15, 7))\nplt.title('discourse_type distribution')\nax = sns.barplot(x=percentage_each_class.index,\n                 y=percentage_each_class.values,)\nfor i in ax.containers:\n    ax.bar_label(i,)","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:25.231603Z","iopub.execute_input":"2022-08-07T12:46:25.232147Z","iopub.status.idle":"2022-08-07T12:46:25.519896Z","shell.execute_reply.started":"2022-08-07T12:46:25.232109Z","shell.execute_reply":"2022-08-07T12:46:25.519026Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Remarks \nData is moderatly imbalanaced as we can see that the ratio of rebuttal is 10% to that of most common one evidence. This will going to introduce baias in out model.\n![image.png](attachment:5453c29f-bec7-4f7e-997a-66c41ef13d99.png)\n\n* we can use some data preprocessing like upsampling for low proportion classes \n* we have use a weighted loss function for training our model \n\n","metadata":{},"attachments":{"5453c29f-bec7-4f7e-997a-66c41ef13d99.png":{"image/png":"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"}}},{"cell_type":"code","source":"percentage_each_class = round(100 * train_df['discourse_effectiveness'].value_counts() / train_df.shape[0], 1)\nfig = plt.figure(figsize=(15, 7))\nplt.title('discourse_effectiveness distribution')\nax = sns.barplot(x=percentage_each_class.index,\n                 y=percentage_each_class.values,)\nfor i in ax.containers:\n    ax.bar_label(i,)","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:25.521371Z","iopub.execute_input":"2022-08-07T12:46:25.521734Z","iopub.status.idle":"2022-08-07T12:46:25.793468Z","shell.execute_reply.started":"2022-08-07T12:46:25.521699Z","shell.execute_reply":"2022-08-07T12:46:25.792677Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x, y = 'discourse_effectiveness', 'discourse_type'\nfig = (train_df\n.groupby(y)[x]\n.value_counts(normalize=True)\n.mul(100)\n.rename('percent')\n.reset_index()\n.pipe((sns.catplot,'data'), x=x, y='percent', hue=y, kind='bar', height=10, aspect=2))\n\nfig.ax.set_title('label distribution in each discourse_type subgroup', size=15)\nfor p in fig.ax.patches:\n    txt = str(p.get_height().round(2)) + '%'\n    txt_x = p.get_x() \n    txt_y = p.get_height()\n    fig.ax.text(txt_x + 0.02, txt_y + 1, txt)","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:45.495880Z","iopub.execute_input":"2022-08-07T12:46:45.496247Z","iopub.status.idle":"2022-08-07T12:46:46.034168Z","shell.execute_reply.started":"2022-08-07T12:46:45.496215Z","shell.execute_reply":"2022-08-07T12:46:46.033422Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Remarks \nHere also the data is imbalanced in favour of Adaquate ","metadata":{}},{"cell_type":"markdown","source":"### Generate Statistical Count Features","metadata":{}},{"cell_type":"code","source":"!pip install chart_studio","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:46:55.999522Z","iopub.execute_input":"2022-08-07T12:46:56.000457Z","iopub.status.idle":"2022-08-07T12:47:06.740703Z","shell.execute_reply.started":"2022-08-07T12:46:56.000408Z","shell.execute_reply":"2022-08-07T12:47:06.739653Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from plotly.offline import init_notebook_mode, iplot\nimport plotly.graph_objs as go\nimport plotly\nimport chart_studio.plotly as py\nfrom plotly import tools\ninit_notebook_mode(connected=True)\n\nimport string\npunc = string.punctuation","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:47:06.744693Z","iopub.execute_input":"2022-08-07T12:47:06.745015Z","iopub.status.idle":"2022-08-07T12:47:06.810850Z","shell.execute_reply.started":"2022-08-07T12:47:06.744985Z","shell.execute_reply":"2022-08-07T12:47:06.810067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df = train_df.copy()\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:47:06.812193Z","iopub.execute_input":"2022-08-07T12:47:06.812554Z","iopub.status.idle":"2022-08-07T12:47:06.832127Z","shell.execute_reply.started":"2022-08-07T12:47:06.812519Z","shell.execute_reply":"2022-08-07T12:47:06.831313Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df['word_count'] = df['discourse_text'].apply(lambda x : len(x.split()))\ndf['char_count'] = df['discourse_text'].apply(lambda x : len(x.replace(\" \",\"\")))\ndf['punc_count'] = df['discourse_text'].apply(lambda x : len([a for a in x if a in punc]))\ndf[['word_count', 'char_count', 'punc_count']].head(10)","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:47:16.752476Z","iopub.execute_input":"2022-08-07T12:47:16.753292Z","iopub.status.idle":"2022-08-07T12:47:17.377472Z","shell.execute_reply.started":"2022-08-07T12:47:16.753255Z","shell.execute_reply":"2022-08-07T12:47:17.376662Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## word count Distrubiton of discourse_text","metadata":{}},{"cell_type":"code","source":"words = df.word_count\ntrace1 = go.Histogram(x=words, opacity=0.65, name=\"Word Count\", marker=dict(color='rgba(17, 50, 96, 0.6)'))\ndata = [trace1]\nlayout = go.Layout(barmode='overlay',\n                   title='Word Count of discourse_text',\n                   xaxis=dict(title='Word Count'),\n                   yaxis=dict( title='Number of discourse_text'))\nfig = go.Figure(data=data, layout=layout)\niplot(fig)","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:47:51.120217Z","iopub.execute_input":"2022-08-07T12:47:51.120870Z","iopub.status.idle":"2022-08-07T12:47:51.814759Z","shell.execute_reply.started":"2022-08-07T12:47:51.120835Z","shell.execute_reply":"2022-08-07T12:47:51.812526Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"punc_count = df.punc_count\ntrace1 = go.Histogram(x=punc_count, opacity=0.75, name=\"Word Count\", marker=dict(color='rgba(10, 22, 200, 0.6)'))\ndata = [trace1]\nlayout = go.Layout(barmode='overlay',\n                   title='Punctuation Count of discourse_text',\n                   xaxis=dict(title='Punctuation Count'),\n                   yaxis=dict( title='Number of discourse_text'))\nfig = go.Figure(data=data, layout=layout)\niplot(fig)","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:47:55.808124Z","iopub.execute_input":"2022-08-07T12:47:55.809032Z","iopub.status.idle":"2022-08-07T12:47:55.866922Z","shell.execute_reply.started":"2022-08-07T12:47:55.808996Z","shell.execute_reply":"2022-08-07T12:47:55.866005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Generating WordCloud","metadata":{}},{"cell_type":"code","source":"def generate_text(text):\n    type_text = df[df['discourse_effectiveness']==text]\n    value = str(type_text['discourse_text'])\n    return value","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:48:00.806310Z","iopub.execute_input":"2022-08-07T12:48:00.806904Z","iopub.status.idle":"2022-08-07T12:48:00.811224Z","shell.execute_reply.started":"2022-08-07T12:48:00.806868Z","shell.execute_reply":"2022-08-07T12:48:00.810425Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from wordcloud import WordCloud\n\nwordcloud1 = WordCloud(background_color='white').generate(generate_text(\"Adequate\"))\nwordcloud2 = WordCloud(background_color='white').generate(generate_text(\"Effective\"))\nwordcloud3 = WordCloud(background_color='white').generate(generate_text(\"Ineffective\"))\nwordcloud4 = WordCloud(background_color='white').generate(str(df['discourse_text']))\n\nfig, axes = plt.subplots(2, 2, figsize=(18, 10))\n\nax = axes[0, 0]\nax.imshow(wordcloud1)\nax.axis('off');\nax.set_title(\"Adequate\", fontsize=30);\n\nax = axes[0, 1]\nax.imshow(wordcloud2)\nax.axis('off');\nax.set_title(\"Effective\", fontsize=30);\n\nax = axes[1, 0]\nax.imshow(wordcloud3)\nax.axis('off');\nax.set_title(\"Ineffective\", fontsize=30);\n\nax = axes[1, 1]\nax.imshow(wordcloud4)\nax.axis('off');\nax.set_title(\"All 3\", fontsize=30);","metadata":{"execution":{"iopub.status.busy":"2022-08-07T12:48:02.826608Z","iopub.execute_input":"2022-08-07T12:48:02.827462Z","iopub.status.idle":"2022-08-07T12:48:03.762762Z","shell.execute_reply.started":"2022-08-07T12:48:02.827424Z","shell.execute_reply":"2022-08-07T12:48:03.759681Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## This notebook is for the purpose of looking inside the data \n\n### for Training and Testing the model please refer to other notebook [link](https://www.kaggle.com/abhishekme19b069/transformer-from-scratch-tensorflow-training) ","metadata":{}},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}