{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install seaborn","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#imports\nimport re\n\nimport pandas as pd\nimport numpy as np\n\nimport seaborn as sns\nimport matplotlib.pyplot as plt\n\nimport wordcloud\nfrom wordcloud import WordCloud,STOPWORDS\nimport nltk\nfrom nltk.corpus import stopwords\nimport string\n\nimport sklearn\nfrom sklearn.feature_extraction.text import CountVectorizer\nfrom sklearn.feature_extraction.text import TfidfTransformer\n\nfrom collections import Counter\nfrom collections import defaultdict\nfrom plotly import tools\nfrom plotly.subplots import make_subplots\nimport plotly.offline as py\npy.init_notebook_mode(connected=True)\nimport plotly.graph_objs as go","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"#Reading Data\ndf_train = pd.read_csv('../input/quora-insincere-questions-classification/train.csv')\ndf_test = pd.read_csv('../input/quora-insincere-questions-classification/test.csv')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### **Basic Analysis**"},{"metadata":{"trusted":true},"cell_type":"code","source":"#shape\nprint('train_shape',df_train.shape)\nprint('test_shape',df_test.shape)\n\n#null check\nprint(set(df_train.isnull().sum()))\nprint(set(df_test.isnull().sum()))\n\n#duplicates check\nprint(df_train.shape[0]-df_train.drop_duplicates().shape[0])\nprint(df_test.shape[0]-df_test.drop_duplicates().shape[0])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# class balance check\npos = df_train[df_train.target==1].shape[0]\nneg = df_train[df_train.target==0].shape[0]\nprint('Positives',pos)\nprint('Negatives',neg)\nprint('P:N',np.round(pos*100/neg,2))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# ## cerating new columns, \n\n# #length of question_test\n# df_train['text_len'] = df_train['question_text'].apply(lambda x: len(x))\n\n\n# # punctuations count\n# def punc_count(x):\n#     punc_lst = list(string.punctuation)\n#     rtn = [p for p in punc_lst if p in x]\n#     return len(rtn)\n# df_train['punctuation_count'] = df_train['question_text'].apply(lambda x: punc_count(x))\n\n\n# # stop words count\n# def stopwords_count(x):\n#     stopwords_lst = list(stopwords.words('english'))\n#     rtn = [s for s in stopwords_lst if s in x]\n#     return len(rtn)\n# df_train['stopwords_count'] = df_train['question_text'].apply(lambda x: stopwords_count(x))\n\n# # urls\n# def url_count(x):\n#     rtn = [u for u in x.split(' ') if 'http' in u]\n#     return len(rtn)\n# df_train['url_count'] = df_train['question_text'].apply(lambda x: url_count(x))\n\n\n# #positive and negative reviews\n# df_train_pos = df_train[df_train.target==1]\n# df_train_neg = df_train[df_train.target==0]\n\n\n# #plots\n# fig,axes = plt.subplots(1,3,figsize=(12,5))\n\n# sns.distplot(df_train_pos.text_len,ax=axes[0]).set_title('text length')\n# sns.distplot(df_train_neg.text_len,ax=axes[0]).set_title('text length')\n\n# sns.distplot(df_train_pos.punctuation_count,ax=axes[1]).set_title('Punctuation Count')\n# sns.distplot(df_train_neg.punctuation_count,ax=axes[1]).set_title('Punctuation Count')\n\n# sns.distplot(df_train_pos.stopwords_count,ax=axes[2]).set_title('Stopwords Count')\n# sns.distplot(df_train_neg.stopwords_count,ax=axes[2]).set_title('Stopwords Count')\n\n# plt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#positive and negative reviews\ndf_train_pos = df_train[df_train.target==1]\ndf_train_neg = df_train[df_train.target==0]","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### **Meta features Creation**\nBased on this SRK's EDA [kernal](https://www.kaggle.com/sudalairajkumar/simple-feature-engg-notebook-spooky-author), creating following meta-features:-\n1. Length of test\n2. Number of words in the text\n3. Number of unique words in the text\n4. Number of characters in the text\n5. Number of stopwords\n6. Number of punctuations\n7. Number of upper case words\n8. Number of title case words\n9. Number of numericals in the text\n10. Average length of the words\n11. Check for urls\n\nThe idea behind creating above features is to check if it helps in identifing distinction b/w negatives and positives"},{"metadata":{"trusted":true},"cell_type":"code","source":"# random 10 negative questions\n_lst = list(df_train_pos['question_text'].sample(10))\nfor x in _lst:\n    print(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# random 10 positive questions\n_lst = list(df_train_neg['question_text'].sample(10))\nfor x in _lst:\n    print(x)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class metaFeatures:\n    \n    def __init__(self,df):\n        self.df = df\n    \n    #Number of words in the text\n    @staticmethod\n    def num_of_words(ech_row):\n        rtn = len(ech_row.split())\n        return rtn\n    \n    #Number of unique words in the text\n    @staticmethod\n    def num_of_unqwords(ech_row):\n        rtn = len(set(ech_row.split()))\n        return rtn\n    \n    #Number of characters in the text\n    @staticmethod\n    def num_of_chars(ech_row):\n        rtn = len(set(ech_row))\n        return rtn\n    \n    #Number of stopwords\n    @staticmethod\n    def num_of_stopwords(ech_row):\n        stopwords_lst = list(stopwords.words('english'))\n        rtn = len([s for s in str(ech_row).lower().split() if s in stopwords_lst])\n        return rtn\n    \n    #Number of punctuations\n    @staticmethod\n    def num_of_punctuations(ech_row):\n        punc_lst = list(string.punctuation)\n        rtn = len([p for p in str(ech_row).lower().split() if p in punc_lst])\n        return rtn\n    \n    #Number of upper case words\n    @staticmethod\n    def num_of_uppercase(ech_row):\n        rtn = len([p for p in str(ech_row).split() if p.isupper()])\n        return rtn\n    \n    #Number of title case words\n    @staticmethod\n    def num_of_titlecase(ech_row):\n        rtn = len([p for p in str(ech_row).split() if p.istitle()])\n        return rtn\n    \n    #Number of numericals in the text\n    @staticmethod\n    def num_of_numericals(ech_row):\n        numer_lst = ['0','1','2','3','4','5','6','7','8','9']\n        rtn = len([p for p in numer_lst if p in ech_row])\n        return rtn\n    \n    #Average length of the words\n    @staticmethod\n    def words_avglen(ech_row):\n        rtn = np.round( np.mean([len(p) for p in str(ech_row).split()]) ,2)\n        return rtn\n    \n    # URLs Check\n    @staticmethod\n    def urls_count(ech_row):\n        rtn = len([h for h in str(ech_row).lower().split() if 'http' in h or 'https' in h])\n        return rtn\n    \n    #final calculations\n    def calc(self):\n        \n        self.df['text_len'] = self.df['question_text'].apply(lambda x: len(x))\n        self.df['num_of_words'] = self.df['question_text'].apply(lambda x: self.num_of_words(x))\n        self.df['num_of_unqwords'] = self.df['question_text'].apply(lambda x: self.num_of_unqwords(x))\n        self.df['num_of_chars'] = self.df['question_text'].apply(lambda x: self.num_of_chars(x))\n        self.df['num_of_stopwords'] = self.df['question_text'].apply(lambda x: self.num_of_stopwords(x))\n        self.df['num_of_punctuations'] = self.df['question_text'].apply(lambda x: self.num_of_punctuations(x))\n        self.df['num_of_uppercase'] = self.df['question_text'].apply(lambda x: self.num_of_uppercase(x))\n        self.df['num_of_titlecase'] = self.df['question_text'].apply(lambda x: self.num_of_titlecase(x))\n        self.df['num_of_numericals'] = self.df['question_text'].apply(lambda x: self.num_of_numericals(x))\n        self.df['words_avglen'] = self.df['question_text'].apply(lambda x: self.words_avglen(x))\n        self.df['urls_count'] = self.df['question_text'].apply(lambda x: self.urls_count(x))\n        \n        return self.df\n\nmetafeatures = metaFeatures(df_train)\ndf_train_feat = metafeatures.calc()\n\n#positive and negative reviews\ndf_train_pos = df_train_feat[df_train_feat.target==1]\ndf_train_neg = df_train_feat[df_train_feat.target==0]\n\ndf_train_feat.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plot_cols = ['text_len', 'num_of_words', 'num_of_unqwords', 'num_of_chars',\n             'num_of_stopwords', 'num_of_punctuations', 'num_of_uppercase',\n             'num_of_titlecase', 'num_of_numericals', 'words_avglen','urls_count']\n\n#plots\nfig,axes = plt.subplots(6,2,figsize=(14,20),constrained_layout=True)\nfor k in range(0,len(plot_cols)):\n    j = 0 if k%2==0 else 1\n    i = k//2\n    col = plot_cols[k]\n    df = df_train_feat\n    sns.boxplot(x='target', y=col, data=df, ax=axes[i,j])\n\nfig.delaxes(axes[5,1])\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plot_cols = ['text_len', 'num_of_words', 'num_of_unqwords', 'num_of_chars',\n             'num_of_stopwords', 'num_of_punctuations', 'num_of_uppercase',\n             'num_of_titlecase', 'num_of_numericals', 'words_avglen','urls_count']\n\n#plots\nfig,axes = plt.subplots(6,2,figsize=(14,20),constrained_layout=True)\n\nfor k in range(0,len(plot_cols)):\n    j = 0 if k%2==0 else 1\n    i = k//2\n    col = plot_cols[k]\n    sns.violinplot(x='target', y=col, data=df_train_feat, ax=axes[i,j])\n\nfig.delaxes(axes[5,1])\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# plot_cols = ['text_len', 'num_of_words', 'num_of_unqwords', 'num_of_chars',\n#              'num_of_stopwords', 'num_of_punctuations', 'num_of_uppercase',\n#              'num_of_titlecase', 'num_of_numericals', 'words_avglen','urls_count']\n\n# #plots\n# fig,axes = plt.subplots(6,2,figsize=(14,20),constrained_layout=True)\n\n# for k in range(0,len(plot_cols)):\n#     j = 0 if k%2==0 else 1\n#     i = k//2\n#     col = plot_cols[k]\n#     val_0 = df_train_feat[df_train_feat.target==0][col]\n#     val_1 = df_train_feat[df_train_feat.target==1][col]\n#     val_all = df_train_feat[col]\n    \n#     #sns.distplot(val_0,kde=False,color='red', ax=axes[i,j])\n#     #sns.distplot(val_1,kde=False,color='blue', ax=axes[i,j])\n#     sns.distplot(val_all,kde=False,color='green', ax=axes[i,j])\n\n# fig.delaxes(axes[5,1])\n# plt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### **Inference:-**\n1. length of question(`text_len`) gives some minor distinction b/w positivies and negatives\n2. `num_of_words` and `num_of_unqwords` have similar distribution as that of `text_len`, this is logical as text length increases `num_of_words` and `num_of_unqwords` also increase\n3. `num_of_stopwords` has interesting distribution"},{"metadata":{},"cell_type":"markdown","source":"As length of text has some role lets look at frequency of words... `Word Cloud`\n\nsome of below functions are refered from this [kernal](https://www.kaggle.com/colearninglounge/nlp-end-to-end-cll-nlp-workshop)"},{"metadata":{"trusted":true},"cell_type":"code","source":"#WordCloud Visualizations\n#Method for creating wordclouds\nfrom PIL import Image\ndef display_cloud(data,color):\n    plt.subplots(figsize=(15,15))\n    mask = None\n    wc = WordCloud(stopwords=STOPWORDS, \n                   mask=mask, background_color=\"white\", contour_width=2, contour_color=color,\n                   max_words=2000, max_font_size=256,\n                   random_state=42)\n    wc.generate(' '.join(data))\n    plt.imshow(wc, interpolation=\"bilinear\")\n    plt.axis('off')\n    plt.show()\n    \n# good and bad questions--using this terminology from now on\ndf_train_bad = df_train_feat[df_train_feat.target==1]\ndf_train_good = df_train_feat[df_train_feat.target==0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"display_cloud(df_train_bad['question_text'],'red')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"display_cloud(df_train_good['question_text'],'red')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Looks interesting, here good questions have words describing <u>actions</u>, where as bad questions have words used for some kind of <u>description</u>"},{"metadata":{},"cell_type":"markdown","source":"### N-Gram Analysis"},{"metadata":{"trusted":true},"cell_type":"code","source":"stopword=set(stopwords.words('english'))\ndef generate_grams(txt,n_gram):\n    tokens = [t for t in txt.lower().split() if t != \"\" if t not in stopword]\n    ngrams = zip(*[tokens[i:] for i in range(n_gram)])\n    final_tokens=[\" \".join(z) for z in ngrams]\n    return final_tokens\n\ndef calculate_frequency(df_series,n_gram):\n    dict_rtn = defaultdict(int)\n    for txt in df_series:\n        for _key in generate_grams(txt,n_gram):\n            dict_rtn[_key] += 1\n    \n    sort_dict = sorted(dict_rtn.items(),key=lambda itm:itm[1],reverse=True)\n    df_rtn = pd.DataFrame(sort_dict, columns=['n_gram_words', 'n_gram_frequency'])\n    return df_rtn\n\ndef plotly_bar_chart(df,color):\n    trace = go.Bar(\n        y=df[\"n_gram_words\"].values[::-1],\n        x=df[\"n_gram_frequency\"].values[::-1],\n        showlegend=False,\n        orientation = 'h',\n        marker=dict(\n            color=color,\n        ),\n    )\n    return trace\n\ndef final_plots(df,n_gram=1,top=20):\n    freq_df_0 = calculate_frequency(df[df.target==0]['question_text'],n_gram)\n    trace_0=plotly_bar_chart(freq_df_0[:top],'orange')\n    \n    freq_df_1 = calculate_frequency(df[df.target==1]['question_text'],n_gram)\n    trace_1=plotly_bar_chart(freq_df_1[:top],'orange')\n    \n    fig = make_subplots(rows=1, cols=2, vertical_spacing=0.04,\n                          subplot_titles=[\"Frequent words of good questions\", \n                                          \"Frequent words of bad questions\"])\n    fig.append_trace(trace_0, 1, 1)\n    fig.append_trace(trace_1, 1, 2)\n    fig['layout'].update(height=1200, width=1000, paper_bgcolor='rgb(233,233,233)', title=f\"Word Count(ngrams={n_gram}) Plots\")\n    py.iplot(fig, filename='word-plots')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Uni-Gram')\nfinal_plots(df_train_feat,n_gram=1,top=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Bi-Gram')\nfinal_plots(df_train_feat,n_gram=2,top=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Tri-Gram')\nfinal_plots(df_train_feat,n_gram=3,top=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Tetra-Gram')\nfinal_plots(df_train_feat,n_gram=4,top=10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Data Cleaning"},{"metadata":{"trusted":true},"cell_type":"code","source":"class CleanIt:\n    \n    def __init__(self,df):\n        self.df = df\n    \n    #Removes Punctuations\n    @staticmethod\n    def remove_punctuations(ech_row):\n        punct_tag = re.compile(r'[^\\w\\s]')\n        rtn = punct_tag.sub(r'',ech_row)\n        return rtn\n    \n    #Removes HTML syntaxes\n    @staticmethod\n    def remove_html(ech_row):\n        html_tag=re.compile(r'<.*?>')\n        rtn=html_tag.sub(r'',ech_row)\n        return rtn\n    \n    #Removes URL data\n    @staticmethod\n    def remove_url(ech_row):\n        url_clean= re.compile(r\"https://\\S+|www\\.\\S+\")\n        rtn=url_clean.sub(r'',ech_row)\n        return rtn\n    \n    #Removes Emojis\n    @staticmethod\n    def remove_emoji(ech_row):\n        emoji_clean= re.compile(\"[\"\n                               u\"\\U0001F600-\\U0001F64F\"  # emoticons\n                               u\"\\U0001F300-\\U0001F5FF\"  # symbols & pictographs\n                               u\"\\U0001F680-\\U0001F6FF\"  # transport & map symbols\n                               u\"\\U0001F1E0-\\U0001F1FF\"  # flags (iOS)\n                               u\"\\U00002702-\\U000027B0\"\n                               u\"\\U000024C2-\\U0001F251\"\n                               \"]+\", flags=re.UNICODE)\n        rtn=emoji_clean.sub(r'',ech_row)\n        url_clean= re.compile(r\"https://\\S+|www\\.\\S+\")\n        rtn=url_clean.sub(r'',rtn)\n        return rtn\n    \n    #Lower Case\n    @staticmethod\n    def make_it_lower(ech_row):\n        rtn=ech_row.lower()\n        return rtn\n    \n    #Remove extra spaces\n    @staticmethod\n    def remove_extraSpace(ech_row):\n        rtn=' '.join(ech_row.split())\n        return rtn\n    \n    #Replace abbreviated pronouns with full forms\n    @staticmethod\n    def remove_abb(data):\n        data = re.sub(r\"he's\", \"he is\", data)\n        data = re.sub(r\"there's\", \"there is\", data)\n        data = re.sub(r\"We're\", \"We are\", data)\n        data = re.sub(r\"That's\", \"That is\", data)\n        data = re.sub(r\"won't\", \"will not\", data)\n        data = re.sub(r\"they're\", \"they are\", data)\n        data = re.sub(r\"Can't\", \"Cannot\", data)\n        data = re.sub(r\"wasn't\", \"was not\", data)\n        data = re.sub(r\"don\\x89Ûªt\", \"do not\", data)\n        data= re.sub(r\"aren't\", \"are not\", data)\n        data = re.sub(r\"isn't\", \"is not\", data)\n        data = re.sub(r\"What's\", \"What is\", data)\n        data = re.sub(r\"haven't\", \"have not\", data)\n        data = re.sub(r\"hasn't\", \"has not\", data)\n        data = re.sub(r\"There's\", \"There is\", data)\n        data = re.sub(r\"He's\", \"He is\", data)\n        data = re.sub(r\"It's\", \"It is\", data)\n        data = re.sub(r\"You're\", \"You are\", data)\n        data = re.sub(r\"I'M\", \"I am\", data)\n        data = re.sub(r\"shouldn't\", \"should not\", data)\n        data = re.sub(r\"wouldn't\", \"would not\", data)\n        data = re.sub(r\"i'm\", \"I am\", data)\n        data = re.sub(r\"I\\x89Ûªm\", \"I am\", data)\n        data = re.sub(r\"I'm\", \"I am\", data)\n        data = re.sub(r\"Isn't\", \"is not\", data)\n        data = re.sub(r\"Here's\", \"Here is\", data)\n        data = re.sub(r\"you've\", \"you have\", data)\n        data = re.sub(r\"you\\x89Ûªve\", \"you have\", data)\n        data = re.sub(r\"we're\", \"we are\", data)\n        data = re.sub(r\"what's\", \"what is\", data)\n        data = re.sub(r\"couldn't\", \"could not\", data)\n        data = re.sub(r\"we've\", \"we have\", data)\n        data = re.sub(r\"it\\x89Ûªs\", \"it is\", data)\n        data = re.sub(r\"doesn\\x89Ûªt\", \"does not\", data)\n        data = re.sub(r\"It\\x89Ûªs\", \"It is\", data)\n        data = re.sub(r\"Here\\x89Ûªs\", \"Here is\", data)\n        data = re.sub(r\"who's\", \"who is\", data)\n        data = re.sub(r\"I\\x89Ûªve\", \"I have\", data)\n        data = re.sub(r\"y'all\", \"you all\", data)\n        data = re.sub(r\"can\\x89Ûªt\", \"cannot\", data)\n        data = re.sub(r\"would've\", \"would have\", data)\n        data = re.sub(r\"it'll\", \"it will\", data)\n        data = re.sub(r\"we'll\", \"we will\", data)\n        data = re.sub(r\"wouldn\\x89Ûªt\", \"would not\", data)\n        data = re.sub(r\"We've\", \"We have\", data)\n        data = re.sub(r\"he'll\", \"he will\", data)\n        data = re.sub(r\"Y'all\", \"You all\", data)\n        data = re.sub(r\"Weren't\", \"Were not\", data)\n        data = re.sub(r\"Didn't\", \"Did not\", data)\n        data = re.sub(r\"they'll\", \"they will\", data)\n        data = re.sub(r\"they'd\", \"they would\", data)\n        data = re.sub(r\"DON'T\", \"DO NOT\", data)\n        data = re.sub(r\"That\\x89Ûªs\", \"That is\", data)\n        data = re.sub(r\"they've\", \"they have\", data)\n        data = re.sub(r\"i'd\", \"I would\", data)\n        data = re.sub(r\"should've\", \"should have\", data)\n        data = re.sub(r\"You\\x89Ûªre\", \"You are\", data)\n        data = re.sub(r\"where's\", \"where is\", data)\n        data = re.sub(r\"Don\\x89Ûªt\", \"Do not\", data)\n        data = re.sub(r\"we'd\", \"we would\", data)\n        data = re.sub(r\"i'll\", \"I will\", data)\n        data = re.sub(r\"weren't\", \"were not\", data)\n        data = re.sub(r\"They're\", \"They are\", data)\n        data = re.sub(r\"Can\\x89Ûªt\", \"Cannot\", data)\n        data = re.sub(r\"you\\x89Ûªll\", \"you will\", data)\n        data = re.sub(r\"I\\x89Ûªd\", \"I would\", data)\n        data = re.sub(r\"let's\", \"let us\", data)\n        data = re.sub(r\"it's\", \"it is\", data)\n        data = re.sub(r\"can't\", \"cannot\", data)\n        data = re.sub(r\"dont\", \"do not\", data)\n        data = re.sub(r\"don't\", \"do not\", data)\n        data = re.sub(r\"you're\", \"you are\", data)\n        data = re.sub(r\"i've\", \"I have\", data)\n        data = re.sub(r\"that's\", \"that is\", data)\n        data = re.sub(r\"i'll\", \"I will\", data)\n        data = re.sub(r\"doesn't\", \"does not\",data)\n        data = re.sub(r\"i'd\", \"I would\", data)\n        data = re.sub(r\"didn't\", \"did not\", data)\n        data = re.sub(r\"ain't\", \"am not\", data)\n        data = re.sub(r\"you'll\", \"you will\", data)\n        data = re.sub(r\"I've\", \"I have\", data)\n        data = re.sub(r\"Don't\", \"do not\", data)\n        data = re.sub(r\"I'll\", \"I will\", data)\n        data = re.sub(r\"I'd\", \"I would\", data)\n        data = re.sub(r\"Let's\", \"Let us\", data)\n        data = re.sub(r\"you'd\", \"You would\", data)\n        data = re.sub(r\"It's\", \"It is\", data)\n        data = re.sub(r\"Ain't\", \"am not\", data)\n        data = re.sub(r\"Haven't\", \"Have not\", data)\n        data = re.sub(r\"Could've\", \"Could have\", data)\n        data = re.sub(r\"youve\", \"you have\", data)  \n        data = re.sub(r\"donå«t\", \"do not\", data)\n        return data\n\n    #final calculations\n    def calc(self):\n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.remove_extraSpace(x))\n        \n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.remove_punctuations(x))\n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.remove_html(x))\n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.remove_url(x))\n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.remove_emoji(x))\n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.remove_abb(x))\n        \n        self.df['question_text'] = self.df['question_text'].apply(lambda x: self.make_it_lower(x))\n        return self.df\n\nimport re\ndata_clean = CleanIt(df_train)\ndf_train_clean_feat = data_clean.calc()\n\n#positive and negative reviews\ndf_train_clean_pos = df_train_clean_feat[df_train_clean_feat.target==1]\ndf_train_clean_neg = df_train_clean_feat[df_train_clean_feat.target==0]\n\ndf_train_clean_feat.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#WordCloud Visualizations\n#Method for creating wordclouds\nfrom PIL import Image\ndef display_cloud(data,color):\n    plt.subplots(figsize=(15,15))\n    mask = None\n    wc = WordCloud(stopwords=STOPWORDS, \n                   mask=mask, background_color=\"white\", contour_width=2, contour_color=color,\n                   max_words=2000, max_font_size=256,\n                   random_state=42)\n    wc.generate(' '.join(data))\n    plt.imshow(wc, interpolation=\"bilinear\")\n    plt.axis('off')\n    plt.show()\n    \n# good and bad questions--using this terminology from now on\ndf_train_clean_bad = df_train_clean_feat[df_train_clean_feat.target==1]\ndf_train_clean_good = df_train_clean_feat[df_train_clean_feat.target==0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"display_cloud(df_train_clean_bad['question_text'],'red')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"display_cloud(df_train_clean_good['question_text'],'red')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Uni-Gram')\nfinal_plots(df_train_clean_feat,n_gram=1,top=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Tri-Gram')\nfinal_plots(df_train_clean_feat,n_gram=3,top=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('Tetra-Gram')\nfinal_plots(df_train_clean_feat,n_gram=4,top=10)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"**Stemming :** This is the final and most important part of the preprocessing. stemming converts words to its stem.\nFor example playing and played are the same type of words which basically indicate an action play. Stemmer does exactly this, it reduces the word to its stem. we are going to use a library called porter-stemmer which is a rule based stemmer. Porter-Stemmer identifies and removes the suffix or affix of a word. The words given by the stemmer need note be meaningful few times<br>\n\n**Lemmatisation :** is a way to reduce the word to root synonym of a word. Unlike Stemming, Lemmatisation makes sure that the reduced word is again a dictionary word (word present in the same language). WordNetLemmatizer can be used to lemmatize any word.\n<br><br>\n**Stemming vs Lemmatization**\n* Stemming — need not be a dictionary word, removes prefix and affix based on few rules\n* Lemmatization — will be a dictionary word. reduces to a root synonym.\n\n![image.png](attachment:image.png)\n\nRefer: https://towardsdatascience.com/tf-idf-for-document-ranking-from-scratch-in-python-on-real-world-dataset-796d339a4089","attachments":{"image.png":{"image/png":"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IlDzBGTft9h3iXK9j6/5FageiIAIlJpACDufCiEJ4QLRBXGBqmKPPfaYGzNmjAkn99xzjxs+fLibOHGimz9/volLXgCKHjd+/HjXp08fy4905JFHum984xtWrez88893tDNz5kx7PfPMM27hwoVu5cqVJob4ieZm+uWXX3ZPP/20e/zxx928efPsfPmEDf7+5ptvukWLFrknn3zS0T5tI94wrmwbIhLCGZXlOHbKlCnugQcesPEyFvqxfPly8yh68cUXCxaSEHcQgRDhGMMTTzxhQhpV7Pg830YyW8QixKs5c+aYOHf//ffb+ZkXEnk/99xzbtWqVSa8MQ+FiEmISOvWrbM8VnCiLULvmBvanzRpkrULS+a4kDbzjUV/FwERqJxAiAtQ5S1X/mnUXsvOD3dVsfOISHiZPv/88+6pp55ys2fPdi+99JKJUohB+TbsMA9nKEpBuDPHc93j4UUhx+drX38XARGoeQKy7+V9H1/zK1A9EAERKDWBEHY+0UKS/2KB4PLKK6+YgDRgwAD3m9/8xv3yl780Qejiiy+2svVXXXWVu/XWW60a2wsvvGACDIIJT2K5CUaQ6NSpk7v00kvdaaed5g477DD3ta99zX3nO99xJ510knkl3XjjjY5Xr169XL9+/dyjjz7q8LbxGzfS3NjfcsstVvGMviA4IaogrmTbeKqLSHX33Xe7m266yf32t781IQqhBUEkuvFEmc+90DN69Gg75tprr7XKai1btnTt27d33bt3N/GGPiGkMX7GcuCBB7qDDjrINWvWzKqwRdvnywBjQXi744473A033OB+97vfucmTJ+813szjEG04DjGPuZg+fbq79957jRU5pi6//HKbD+alc+fO7rbbbnMPPvignQMhjHlgXJVVg8PTDEbME8wHDRpkfGmL+fr5z39u7Xfs2HHPHJPTCi+tXEJcZv/1swiIQHEEQlyACjmj7PwXgn4oO8/1klyAJBvv2bOnvfiZhwY8fc+34QHFQwoEfK4xXFcQ8f/0pz+ZHc93vP4uAiIQfwKy7+V3Hx//VakeioAIhCQQws4nWkhCJEAsWLx4sevRo4e78MILrVw9CbIJScOriLL1Rx11lKtXr5475ZRT3I9//GPbF5GGJ6uEguHJc9lll7kf/OAHdgwi0te//nX3la98ZY+YRHsnnHCCvX70ox+5M844wwQWwuH8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r0VABEQg3QRk39M9vxqdCIiACISw8xKStI5EQAREQASKJhDiAlT0SXWACIiACIhAyQnIvpccsU4gAiIgAjVKIISdl5BUo1Ook4uACIhAMgmEuAAlc+TqtQiIgAikm4Dse7rnV6MTAREQgRB2XkKS1pEIiIAIiEDRBEJcgIo+qQ4QAREQAREoOQHZ95Ij1glEQAREoEYJhLDzEpJqdAp1chEQARFIJoEQF6Bkjly9FgEREIF0E5B9T/f8anQiIAIiEMLOS0gqg3X03//+13322Wdu+/btbvPmzW7Dhg1u06ZN7sMPP3S7du0qAwIaogiIQGgCIS5AoftUzu3Jzpfz7GvsIhCWgOx7WJ7VbU32vboEdbwIiECUQAg7LyEpSjWFvyMiffrpp+7tt992M2fOdOPGjXOTJ092ixYtMjEphUPWkERABEpMIMQFqMRdLKvmZefLaro1WBEoKQHZ95LiLbpx2feikekAERCBPARC2HkJSXkgp+HP//rXv9yWLVtMOOrTp49r376969Spk7vvvvvc2rVr99sQP//8c7djxw73wQcfuDVr1rhVq1a5iooK9/7777t//vOf+60fOpEIiED1CYS4AFW/F2rBE4iLnff90bsIiEByCci+x2vuZN/jNR/qjQikgUAIOy8hKQ0rIc8Y8EZCuBk/frxr3ry5q1evnjvhhBNchw4d3CuvvJLn6HB/RkRat26dmzdvnhs0aJDr3r2769evn5syZYqJSeHOpJZEQARKTSDEBajUfSyn9uNi58uJucYqAmklIPser5mVfY/XfKg3IpAGAiHsvISkjJXwv//9z/3nP/+xvEGffPKJ+/jjjy0kjCcBfJ7U7R//9w+3YsUKN3ToUNewYUN34IEHuoMOOsg1a9bMvfDCC/ttWH//+9/tfEOGDHEXX3yxa9SokWvatKnr1auXW7lypSMGnDnQJgIiEH8CIS5ANTFK2fmaoK5zioAIJImA7Hu8Zisu9/HxoqLeiIAIVIdACDsvISljBhCLCLEi9OqNN95wr7/+ulu9erX7y1/+4hCTkrrF5QJECNvUqVPddddd5+rXr+9q167t6tat61q2bOmWLl1qCcERk7SJgAjEn0CIC1BNjFJ2viao65wiIAJJIiD7Hq/Zist9fLyoqDciIALVIRDCzktIypgBRKQ///nP7o9//KMbO3asGzZsmJswYYJb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SYWkqnRIx4iACIiACIiACIiACIiACIiACIiACIiACMSTgISkeM6LeiUCIiACIiACIiACIiACIiACIiACIiACsSMgISl2U6IOiYAIiIAIiIAIiIAIiIAIiIAIiIAIiEA8CUhIiue8qFciIAIiIAIiIAIiIAIiIAIiIAIiIAIiEDsCEpJiNyXqkAiIgAiIgAiIgAiIgAiIgAiIgAiIgAjEk4CEpHjOi3olAiIgAiIgAiIgAiIgAiIgAiIgAiIgArEjICEpdlOiDomACIiACIiACIiACIiACIiACIiACIhAPAlISIrnvKhXIiACIiACIiACIiACIiACIiACIiACIhA7AhKSYjcl6pAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIxJOAhKR4zot6JQIiIAIiIAIiIAIiIAIiIAIiIAIiIAKxIyAhKXZTog6JgAiIgAiIgAiIgAiIgAiIgAiIgAiIQDwJSEiK57yoVyIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQOwISkmI3JeqQCIiACIiACIiACIiACIiACIiACIiACMSTgISkeM6LeiUCIiACIiACIiACIiACIiACIiACIiACsSMgISl2U6IOiYAIiIAIiIAIiIAIiIAIiIAIiIAIiEA8Cfw/wH3nBXqK43oAAAAASUVORK5CYII="}}},{"metadata":{"trusted":true},"cell_type":"code","source":"import nltk\nfrom nltk.stem import WordNetLemmatizer","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# #Lemmatize the dataset\n# def lemma_traincorpus(data):\n#     lemmatizer=WordNetLemmatizer()\n#     out_data=\"\"\n#     for words in data:\n#         out_data+= lemmatizer.lemmatize(words)\n#     return out_data\n\n# df_train_clean_feat['question_text']=df_train_clean_feat['question_text'].apply(lambda ech_row: lemma_traincorpus(ech_row))\n\n# df_train_clean_feat['question_text'].head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# import sklearn\n# from sklearn.feature_extraction.text import CountVectorizer\n# from sklearn.feature_extraction.text import TfidfTransformer","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### **Vectorization - TFIDF and Count**"},{"metadata":{"trusted":true},"cell_type":"code","source":"# %%time\n# tfidf_vect=TfidfVectorizer(stop_words='english',ngram_range=(1,3))\n# train_tfidf=tfidf_vect.fit_transform(df_train_clean_feat['question_text'].values.tolist())\n# train_tfidf.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}