{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":11249653,"sourceType":"datasetVersion","datasetId":7029569}],"dockerImageVersionId":30918,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\n# reading the two files \nexplicit= pd.read_excel('../input/sexually-explicit/harashment.xlsx')\nnon_explicit=pd.read_excel('../input/sexually-explicit/Normal comments.xlsx')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:53.098846Z","iopub.execute_input":"2025-08-24T10:55:53.099134Z","iopub.status.idle":"2025-08-24T10:55:57.252994Z","shell.execute_reply.started":"2025-08-24T10:55:53.099112Z","shell.execute_reply":"2025-08-24T10:55:57.252218Z"}},"outputs":[],"execution_count":1},{"cell_type":"code","source":"#taking the two frames as one dataframe data(appending)\ndata = pd.concat([explicit, non_explicit], ignore_index=True)\n#data=data[['comments','label']]\ndata=data.sample(frac=1).reset_index(drop=True)\nprint(data.tail())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:57.253976Z","iopub.execute_input":"2025-08-24T10:55:57.254255Z","iopub.status.idle":"2025-08-24T10:55:57.265523Z","shell.execute_reply.started":"2025-08-24T10:55:57.254236Z","shell.execute_reply":"2025-08-24T10:55:57.264584Z"}},"outputs":[{"name":"stdout","text":" comments label\n34707 ከእለታት አንድ ቀን አንዲት ልጅ ወደ ቡዳ እየመጣች ነበር እና ብዙ ወንዶ... 1\n34708 የሴቶች ትልቁ ችግር ያወራቸው ያያቸው ሁሉ ሚወዳቸው ይመስላቸዋል 1\n34709 ላይ የኢትዮጵያ ሏላዊ ስልጣን ባለቤት የኢትዮጵያ ህዝብ ነው አንድ የኢትዮ... 0\n34710 አንዲት ልጅ ከትምህርት ቤት እየመጣች ሳለ አንድ ባለሱቅ ደውላ ወደ ሱቅ ... 1\n34711 ምሽት ላይ በአውቶቡስ ማቆሚያ ላይ ቆሜ ነበር አንዳንድ ወንዶች ልጆች የስ... 1\n","output_type":"stream"}],"execution_count":2},{"cell_type":"code","source":"#removing rows having an empty cells\ndata=data.dropna()\ndata.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:57.267103Z","iopub.execute_input":"2025-08-24T10:55:57.267320Z","iopub.status.idle":"2025-08-24T10:55:57.293026Z","shell.execute_reply.started":"2025-08-24T10:55:57.267301Z","shell.execute_reply":"2025-08-24T10:55:57.292317Z"}},"outputs":[{"execution_count":3,"output_type":"execute_result","data":{"text/plain":"(34710, 2)"},"metadata":{}}],"execution_count":3},{"cell_type":"code","source":"data['word_len'] = data['comments'].str.split().str.len()\nprint(data['word_len'].max())","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:57.293975Z","iopub.execute_input":"2025-08-24T10:55:57.294216Z","iopub.status.idle":"2025-08-24T10:55:57.432867Z","shell.execute_reply.started":"2025-08-24T10:55:57.294197Z","shell.execute_reply":"2025-08-24T10:55:57.431855Z"}},"outputs":[{"name":"stdout","text":"618.0\n","output_type":"stream"}],"execution_count":4},{"cell_type":"code","source":"# pre-processing of the dataset\n#normalizarion\nimport re\n#method to normalize character level missmatch such as ጸሀይ and ፀሐይ\ndef normalization(input_token):\n rep1=re.sub('[ሃኅኃሐሓኻ]','ሀ',input_token)\n rep2=re.sub('[ሑኁዅ]','ሁ',rep1)\n rep3=re.sub('[ኂሒኺ]','ሂ',rep2)\n rep4=re.sub('[ኌሔዄ]','ሄ',rep3)\n rep5=re.sub('[ሕኅ]','ህ',rep4)\n rep6=re.sub('[ኆሖኾ]','ሆ',rep5)\n rep7=re.sub('[ሠ]','ሰ',rep6)\n rep8=re.sub('[ሡ]','ሱ',rep7)\n rep9=re.sub('[ሢ]','ሲ',rep8)\n rep10=re.sub('[ሣ]','ሳ',rep9)\n rep11=re.sub('[ሤ]','ሴ',rep10)\n rep12=re.sub('[ሥ]','ስ',rep11)\n rep13=re.sub('[ሦ]','ሶ',rep12)\n rep14=re.sub('[ዓኣዐ]','አ',rep13)\n rep15=re.sub('[ዑ]','ኡ',rep14)\n rep16=re.sub('[ዒ]','ኢ',rep15)\n rep17=re.sub('[ዔ]','ኤ',rep16)\n rep18=re.sub('[ዕ]','እ',rep17)\n rep19=re.sub('[ዖ]','ኦ',rep18)\n rep20=re.sub('[ጸ]','ፀ',rep19)\n rep21=re.sub('[ጹ]','ፁ',rep20)\n rep22=re.sub('[ጺ]','ፂ',rep21)\n rep23=re.sub('[ጻ]','ፃ',rep22)\n rep24=re.sub('[ጼ]','ፄ',rep23)\n rep25=re.sub('[ጽ]','ፅ',rep24)\n rep26=re.sub('[ጾ]','ፆ',rep25)\n rep27=re.sub('(ሉ[ዋአ])','ሏ',rep26)\n rep28=re.sub('(ሙ[ዋአ])','ሟ',rep27)\n rep29=re.sub('(ቱ[ዋአ])','ቷ',rep28)\n rep30=re.sub('(ሩ[ዋአ])','ሯ',rep29)\n rep31=re.sub('(ሱ[ዋአ])','ሷ',rep30)\n rep32=re.sub('(ሹ[ዋአ])','ሿ',rep31)\n rep33=re.sub('(ቁ[ዋአ])','ቋ',rep32)\n rep34=re.sub('(ቡ[ዋአ])','ቧ',rep33)\n rep35=re.sub('(ቹ[ዋአ])','ቿ',rep34)\n rep36=re.sub('(ሁ[ዋአ])','ኋ',rep35)\n rep37=re.sub('(ኑ[ዋአ])','ኗ',rep36)\n rep38=re.sub('(ኙ[ዋአ])','ኟ',rep37)\n rep39=re.sub('(ኩ[ዋአ])','ኳ',rep38)\n rep40=re.sub('(ዙ[ዋአ])','ዟ',rep39)\n rep41=re.sub('(ጉ[ዋአ])','ጓ',rep40)\n rep42=re.sub('(ደ[ዋአ])','ዷ',rep41)\n rep43=re.sub('(ጡ[ዋአ])','ጧ',rep42)\n rep44=re.sub('(ጩ[ዋአ])','ጯ',rep43)\n rep45=re.sub('(ጹ[ዋአ])','ጿ',rep44)\n rep46=re.sub('(ፉ[ዋአ])','ፏ',rep45)\n rep47=re.sub('[ቊ]','ቁ',rep46) #ቁ can be written as ቊ\n rep48=re.sub('[ኵ]','ኩ',rep47) #ኩ can be also written as ኵ\n return rep48","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:57.433566Z","iopub.execute_input":"2025-08-24T10:55:57.433774Z","iopub.status.idle":"2025-08-24T10:55:57.463260Z","shell.execute_reply.started":"2025-08-24T10:55:57.433756Z","shell.execute_reply":"2025-08-24T10:55:57.462194Z"}},"outputs":[],"execution_count":5},{"cell_type":"code","source":"#normalization of Amharic characters having the same sound and meaning\ndata['comments'] = data['comments'].astype(str)\ndata['comments']=data['comments'].apply(lambda x: normalization(x))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:57.464227Z","iopub.execute_input":"2025-08-24T10:55:57.464763Z","iopub.status.idle":"2025-08-24T10:55:58.788656Z","shell.execute_reply.started":"2025-08-24T10:55:57.464718Z","shell.execute_reply":"2025-08-24T10:55:58.787981Z"}},"outputs":[],"execution_count":6},{"cell_type":"code","source":"#pre-processing function\ndef remove_non_amharic(text):\n # Define a regex pattern for Amharic characters (Unicode range)\n amharic_pattern = r'[^\\u1200-\\u137F\\s]' # Unicode range for Amharic characters\n amharic_pattern=r'[\\u1200-\\u137F]*[0-9]+[\\u1200-\\u137F]*'#removing digits\n amharic_pattern = r'[፡-፨]' # Unicode range for Amharic punctuation marks\n amharic_pattern=r'[^\\w\\s]'# removing white spaces\n # Use re.sub to replace non-Amharic characters with an empty string\n cleaned_text = re.sub(amharic_pattern, '', text)\n return cleaned_text","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:58.789529Z","iopub.execute_input":"2025-08-24T10:55:58.789781Z","iopub.status.idle":"2025-08-24T10:55:58.793993Z","shell.execute_reply.started":"2025-08-24T10:55:58.789760Z","shell.execute_reply":"2025-08-24T10:55:58.793062Z"}},"outputs":[],"execution_count":7},{"cell_type":"code","source":"# processing the data such as removing non-Amharic characters, digit,punctuation marks\ndata['comments']=data['comments'].apply(remove_non_amharic)\ndata.tail(20)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:58.796631Z","iopub.execute_input":"2025-08-24T10:55:58.796837Z","iopub.status.idle":"2025-08-24T10:55:58.905992Z","shell.execute_reply.started":"2025-08-24T10:55:58.796819Z","shell.execute_reply":"2025-08-24T10:55:58.905145Z"}},"outputs":[{"execution_count":8,"output_type":"execute_result","data":{"text/plain":" comments label word_len\n34692 አንተ ጎበዝ ነህ 1 3.0\n34693 ከትምህርት እየተመለስኩ ነበር እና አንድ ልጅ በጣም በሆነ መንገድ ለመን... 1 12.0\n34694 ከሉሲ ጀርባ ያለው የሀያላኑ ሴራ ለምን በአፋር ተገኘች እውነታው ተጋለጠ vi 0 12.0\n34695 ጠቅላይ ሚኒስትር ዶክተር አብይ አህመድ በሰላም መቶ በመቶ ያሸልማል መርሀ... 0 13.0\n34696 ዘመዴ ወደው ነው የሚዘግቡት በኛ በጀት እየተቀሳቁሱ የኦርቶዶክስ ድምፅ ማ... 0 11.0\n34697 RIP አንድም ቀን ዝቅ ያላሉ በተናገሩ ቁጥር ልቤን ከፍቼ የማዳምጣቸው የ... 0 17.0\n34698 በወይኑ እና ቢራ ሱቅ አቅራቢያ በሰከሩ ሰዎች መጎርጎር እና አስተያየት መ... 1 12.0\n34699 በመንገድ ዳር ስሄድ ይህ ሰው ፍንዳታዬን መንካት ፈልጎ ነበር ነገር ግን ... 1 24.0\n34700 Vipi WKeny የባይደን አስተዳደር ከዚህ ቀደም ከነበሩት አስተዳደሮች ... 0 22.0\n34701 አንድ ልጅ በጣም ወጣት ስለነበር የግል ጓደኞቹን ብልጭ ድርግም ይለኛል 1 10.0\n34702 ሞሪስ በጣም ግዙፍ wanker 1 4.0\n34703 በጣም ምርጥ ንግግር ነው ወቅታዊ የኢትዮጵያን ችግር አስረድተዋል ምናለ ለ... 0 13.0\n34704 ደግም ፓስታ ለመስራት ውሀ ምን ያደርጋል እንደገና ልታስጀምረኝ ነዉ እንዴ 0 10.0\n34705 በጦርነት ቋንቋ በጁንታው ላይ የተደረገ ያለው የህግ ማስከበር እርምጃ ቱ ... 0 11.0\n34706 አንተ ደግሞ ምን አይነት ደደብ ነህ እኔኮ አስተዋይ ነበር የምትመስለኝ ሁ... 1 27.0\n34707 ከእለታት አንድ ቀን አንዲት ልጅ ወደ ቡዳ እየመጣች ነበር እና ብዙ ወንዶ... 1 19.0\n34708 የሴቶች ትልቁ ችግር ያወራቸው ያያቸው ሁሉ ሚወዳቸው ይመስላቸዋል 1 8.0\n34709 ላይ የኢትዮጵያ ሏላዊ ስልጣን ባለቤት የኢትዮጵያ ህዝብ ነው አንድ የኢትዮ... 0 28.0\n34710 አንዲት ልጅ ከትምህርት ቤት እየመጣች ሳለ አንድ ባለሱቅ ደውላ ወደ ሱቅ ... 1 16.0\n34711 ምሽት ላይ በአውቶቡስ ማቆሚያ ላይ ቆሜ ነበር አንዳንድ ወንዶች ልጆች የስ... 1 16.0","text/html":"
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
commentslabelword_len
34692አንተ ጎበዝ ነህ13.0
34693ከትምህርት እየተመለስኩ ነበር እና አንድ ልጅ በጣም በሆነ መንገድ ለመን...112.0
34694ከሉሲ ጀርባ ያለው የሀያላኑ ሴራ ለምን በአፋር ተገኘች እውነታው ተጋለጠ vi012.0
34695ጠቅላይ ሚኒስትር ዶክተር አብይ አህመድ በሰላም መቶ በመቶ ያሸልማል መርሀ...013.0
34696ዘመዴ ወደው ነው የሚዘግቡት በኛ በጀት እየተቀሳቁሱ የኦርቶዶክስ ድምፅ ማ...011.0
34697RIP አንድም ቀን ዝቅ ያላሉ በተናገሩ ቁጥር ልቤን ከፍቼ የማዳምጣቸው የ...017.0
34698በወይኑ እና ቢራ ሱቅ አቅራቢያ በሰከሩ ሰዎች መጎርጎር እና አስተያየት መ...112.0
34699በመንገድ ዳር ስሄድ ይህ ሰው ፍንዳታዬን መንካት ፈልጎ ነበር ነገር ግን ...124.0
34700Vipi WKeny የባይደን አስተዳደር ከዚህ ቀደም ከነበሩት አስተዳደሮች ...022.0
34701አንድ ልጅ በጣም ወጣት ስለነበር የግል ጓደኞቹን ብልጭ ድርግም ይለኛል110.0
34702ሞሪስ በጣም ግዙፍ wanker14.0
34703በጣም ምርጥ ንግግር ነው ወቅታዊ የኢትዮጵያን ችግር አስረድተዋል ምናለ ለ...013.0
34704ደግም ፓስታ ለመስራት ውሀ ምን ያደርጋል እንደገና ልታስጀምረኝ ነዉ እንዴ010.0
34705በጦርነት ቋንቋ በጁንታው ላይ የተደረገ ያለው የህግ ማስከበር እርምጃ ቱ ...011.0
34706አንተ ደግሞ ምን አይነት ደደብ ነህ እኔኮ አስተዋይ ነበር የምትመስለኝ ሁ...127.0
34707ከእለታት አንድ ቀን አንዲት ልጅ ወደ ቡዳ እየመጣች ነበር እና ብዙ ወንዶ...119.0
34708የሴቶች ትልቁ ችግር ያወራቸው ያያቸው ሁሉ ሚወዳቸው ይመስላቸዋል18.0
34709ላይ የኢትዮጵያ ሏላዊ ስልጣን ባለቤት የኢትዮጵያ ህዝብ ነው አንድ የኢትዮ...028.0
34710አንዲት ልጅ ከትምህርት ቤት እየመጣች ሳለ አንድ ባለሱቅ ደውላ ወደ ሱቅ ...116.0
34711ምሽት ላይ በአውቶቡስ ማቆሚያ ላይ ቆሜ ነበር አንዳንድ ወንዶች ልጆች የስ...116.0
\n
"},"metadata":{}}],"execution_count":8},{"cell_type":"code","source":"!pip install lime","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:55:58.907208Z","iopub.execute_input":"2025-08-24T10:55:58.907405Z","iopub.status.idle":"2025-08-24T10:56:02.288523Z","shell.execute_reply.started":"2025-08-24T10:55:58.907388Z","shell.execute_reply":"2025-08-24T10:56:02.287677Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: lime in /usr/local/lib/python3.10/dist-packages (0.2.0.1)\nRequirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from lime) (3.7.5)\nRequirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from lime) (1.26.4)\nRequirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from lime) (1.13.1)\nRequirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from lime) (4.67.1)\nRequirement already satisfied: scikit-learn>=0.18 in /usr/local/lib/python3.10/dist-packages (from lime) (1.2.2)\nRequirement already satisfied: scikit-image>=0.12 in /usr/local/lib/python3.10/dist-packages (from lime) (0.25.0)\nRequirement already satisfied: networkx>=3.0 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.12->lime) (3.4.2)\nRequirement already satisfied: pillow>=10.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.12->lime) (11.0.0)\nRequirement already satisfied: imageio!=2.35.0,>=2.33 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.12->lime) (2.36.1)\nRequirement already satisfied: tifffile>=2022.8.12 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.12->lime) (2024.12.12)\nRequirement already satisfied: packaging>=21 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.12->lime) (24.2)\nRequirement already satisfied: lazy-loader>=0.4 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.12->lime) (0.4)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy->lime) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy->lime) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy->lime) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy->lime) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy->lime) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy->lime) (2.4.1)\nRequirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.18->lime) (1.4.2)\nRequirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.18->lime) (3.5.0)\nRequirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->lime) (1.3.1)\nRequirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->lime) (0.12.1)\nRequirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->lime) (4.55.3)\nRequirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->lime) (1.4.7)\nRequirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->lime) (3.2.0)\nRequirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib->lime) (2.9.0.post0)\nRequirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib->lime) (1.17.0)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy->lime) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy->lime) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy->lime) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy->lime) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy->lime) (2024.2.0)\n","output_type":"stream"}],"execution_count":9},{"cell_type":"code","source":"#importing important packages \nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.pipeline import make_pipeline\nfrom lime.lime_text import LimeTextExplainer","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:02.289618Z","iopub.execute_input":"2025-08-24T10:56:02.289861Z","iopub.status.idle":"2025-08-24T10:56:02.780110Z","shell.execute_reply.started":"2025-08-24T10:56:02.289840Z","shell.execute_reply":"2025-08-24T10:56:02.779407Z"}},"outputs":[],"execution_count":10},{"cell_type":"code","source":"#spliting the dataset into training and testing set\ntrain_val_df, test_dataset = train_test_split(data, test_size=0.20, random_state=42)\ntrain_dataset, evaluation_dataset = train_test_split(train_val_df, test_size=0.10, random_state=42)\nprint('Training dataset shape: ', train_dataset.shape)\nprint('Validation dataset shape: ', evaluation_dataset.shape)\nprint('Testing dataset shape: ', test_dataset.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:02.780965Z","iopub.execute_input":"2025-08-24T10:56:02.781310Z","iopub.status.idle":"2025-08-24T10:56:02.798062Z","shell.execute_reply.started":"2025-08-24T10:56:02.781289Z","shell.execute_reply":"2025-08-24T10:56:02.797295Z"}},"outputs":[{"name":"stdout","text":"Training dataset shape: (24991, 3)\nValidation dataset shape: (2777, 3)\nTesting dataset shape: (6942, 3)\n","output_type":"stream"}],"execution_count":11},{"cell_type":"code","source":"msk = np.random.rand(len(data)) < 0.8\ntrain_dataset = data[msk]\ntest_dataset = data[~msk]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:02.798944Z","iopub.execute_input":"2025-08-24T10:56:02.799147Z","iopub.status.idle":"2025-08-24T10:56:02.805986Z","shell.execute_reply.started":"2025-08-24T10:56:02.799131Z","shell.execute_reply":"2025-08-24T10:56:02.805346Z"}},"outputs":[],"execution_count":12},{"cell_type":"code","source":" pip install datasets","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:02.806751Z","iopub.execute_input":"2025-08-24T10:56:02.807006Z","iopub.status.idle":"2025-08-24T10:56:06.321605Z","shell.execute_reply.started":"2025-08-24T10:56:02.806976Z","shell.execute_reply":"2025-08-24T10:56:06.320517Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: datasets in /usr/local/lib/python3.10/dist-packages (3.3.1)\nRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from datasets) (3.17.0)\nRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (1.26.4)\nRequirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (19.0.1)\nRequirement already satisfied: dill<0.3.9,>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.3.8)\nRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from datasets) (2.2.3)\nRequirement already satisfied: requests>=2.32.2 in /usr/local/lib/python3.10/dist-packages (from datasets) (2.32.3)\nRequirement already satisfied: tqdm>=4.66.3 in /usr/local/lib/python3.10/dist-packages (from datasets) (4.67.1)\nRequirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from datasets) (3.5.0)\nRequirement already satisfied: multiprocess<0.70.17 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.70.16)\nRequirement already satisfied: fsspec<=2024.12.0,>=2023.1.0 in /usr/local/lib/python3.10/dist-packages (from fsspec[http]<=2024.12.0,>=2023.1.0->datasets) (2024.12.0)\nRequirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets) (3.11.12)\nRequirement already satisfied: huggingface-hub>=0.24.0 in /usr/local/lib/python3.10/dist-packages (from datasets) (0.34.4)\nRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets) (24.2)\nRequirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets) (6.0.2)\nRequirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (2.4.6)\nRequirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.3.2)\nRequirement already satisfied: async-timeout<6.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (5.0.1)\nRequirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (25.1.0)\nRequirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.5.0)\nRequirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (6.1.0)\nRequirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (0.2.1)\nRequirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets) (1.18.3)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.24.0->datasets) (4.12.2)\nRequirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.24.0->datasets) (1.1.8)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->datasets) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->datasets) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->datasets) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->datasets) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->datasets) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->datasets) (2.4.1)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (3.4.1)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (2.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.32.2->datasets) (2025.1.31)\nRequirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2.9.0.post0)\nRequirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2025.1)\nRequirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->datasets) (2025.1)\nRequirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->datasets) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->datasets) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy>=1.17->datasets) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy>=1.17->datasets) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy>=1.17->datasets) (2024.2.0)\nNote: you may need to restart the kernel to use updated packages.\n","output_type":"stream"}],"execution_count":13},{"cell_type":"code","source":"from datasets import Dataset\n#convert format of the dataset to HuggingFace Dataset from Pandas DataFrame\ntrain_dataset=Dataset.from_pandas(train_dataset)\ntest_dataset=Dataset.from_pandas(test_dataset)\nevaluation_dataset=Dataset.from_pandas(evaluation_dataset)\nprint(test_dataset)\nprint(train_dataset)\nprint(evaluation_dataset)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:06.322822Z","iopub.execute_input":"2025-08-24T10:56:06.323209Z","iopub.status.idle":"2025-08-24T10:56:07.011981Z","shell.execute_reply.started":"2025-08-24T10:56:06.323167Z","shell.execute_reply":"2025-08-24T10:56:07.011191Z"}},"outputs":[{"name":"stdout","text":"Dataset({\n features: ['comments', 'label', 'word_len', '__index_level_0__'],\n num_rows: 7017\n})\nDataset({\n features: ['comments', 'label', 'word_len', '__index_level_0__'],\n num_rows: 27693\n})\nDataset({\n features: ['comments', 'label', 'word_len', '__index_level_0__'],\n num_rows: 2777\n})\n","output_type":"stream"}],"execution_count":14},{"cell_type":"code","source":"#remove unnecessary column\ntest_dataset=test_dataset.remove_columns(\"__index_level_0__\")\ntrain_dataset=train_dataset.remove_columns(\"__index_level_0__\")\nevaluation_dataset=evaluation_dataset.remove_columns(\"__index_level_0__\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:07.012843Z","iopub.execute_input":"2025-08-24T10:56:07.013374Z","iopub.status.idle":"2025-08-24T10:56:07.020167Z","shell.execute_reply.started":"2025-08-24T10:56:07.013340Z","shell.execute_reply":"2025-08-24T10:56:07.019299Z"}},"outputs":[],"execution_count":15},{"cell_type":"code","source":"#combine the train and test dataset into one datset\nimport datasets\nmain_dataset= datasets.DatasetDict({\n 'train': train_dataset,\n 'test': test_dataset,\n 'evaluate': evaluation_dataset\n})","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:07.021038Z","iopub.execute_input":"2025-08-24T10:56:07.021237Z","iopub.status.idle":"2025-08-24T10:56:07.041293Z","shell.execute_reply.started":"2025-08-24T10:56:07.021219Z","shell.execute_reply":"2025-08-24T10:56:07.040454Z"}},"outputs":[],"execution_count":16},{"cell_type":"code","source":"# training and testing data size\ntraining_data_size = main_dataset['train'].num_rows\ntesting_data_size = main_dataset['test'].num_rows\nevaluation_data_size = maain_dataset['evaluate'].num_rows","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:07.042193Z","iopub.execute_input":"2025-08-24T10:56:07.042406Z","iopub.status.idle":"2025-08-24T10:56:07.059518Z","shell.execute_reply.started":"2025-08-24T10:56:07.042388Z","shell.execute_reply":"2025-08-24T10:56:07.058694Z"}},"outputs":[],"execution_count":17},{"cell_type":"code","source":"from huggingface_hub import snapshot_download\nsnapshot_download(repo_id=\"devaprobs/hate-speech-detection-using-amharic-language\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:07.060270Z","iopub.execute_input":"2025-08-24T10:56:07.060516Z","iopub.status.idle":"2025-08-24T10:56:07.212934Z","shell.execute_reply.started":"2025-08-24T10:56:07.060487Z","shell.execute_reply":"2025-08-24T10:56:07.212072Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"Fetching 8 files: 0%| | 0/8 [00:00=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.26.4)\nRequirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (24.2)\nRequirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.2)\nRequirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2024.11.6)\nRequirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.32.3)\nRequirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.21.0)\nRequirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.4.5)\nRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.67.1)\nRequirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub) (2024.12.0)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub) (4.12.2)\nRequirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub) (1.1.8)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (2.4.1)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4.1)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2025.1.31)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->transformers) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->transformers) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy>=1.17->transformers) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy>=1.17->transformers) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy>=1.17->transformers) (2024.2.0)\nNote: you may need to restart the kernel to use updated packages.\n","output_type":"stream"}],"execution_count":28},{"cell_type":"code","source":"pip install --upgrade accelerate\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:39.177537Z","iopub.execute_input":"2025-08-24T10:56:39.177881Z","iopub.status.idle":"2025-08-24T10:56:42.698598Z","shell.execute_reply.started":"2025-08-24T10:56:39.177845Z","shell.execute_reply":"2025-08-24T10:56:42.697549Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: accelerate in /usr/local/lib/python3.10/dist-packages (1.10.0)\nRequirement already satisfied: numpy<3.0.0,>=1.17 in /usr/local/lib/python3.10/dist-packages (from accelerate) (1.26.4)\nRequirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (24.2)\nRequirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from accelerate) (5.9.5)\nRequirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from accelerate) (6.0.2)\nRequirement already satisfied: torch>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (2.5.1+cu121)\nRequirement already satisfied: huggingface_hub>=0.21.0 in /usr/local/lib/python3.10/dist-packages (from accelerate) (0.34.4)\nRequirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.10/dist-packages (from accelerate) (0.4.5)\nRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface_hub>=0.21.0->accelerate) (3.17.0)\nRequirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub>=0.21.0->accelerate) (2024.12.0)\nRequirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface_hub>=0.21.0->accelerate) (2.32.3)\nRequirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub>=0.21.0->accelerate) (4.67.1)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub>=0.21.0->accelerate) (4.12.2)\nRequirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /usr/local/lib/python3.10/dist-packages (from huggingface_hub>=0.21.0->accelerate) (1.1.8)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy<3.0.0,>=1.17->accelerate) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy<3.0.0,>=1.17->accelerate) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy<3.0.0,>=1.17->accelerate) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy<3.0.0,>=1.17->accelerate) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy<3.0.0,>=1.17->accelerate) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy<3.0.0,>=1.17->accelerate) (2.4.1)\nRequirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.0->accelerate) (3.4.2)\nRequirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.0->accelerate) (3.1.4)\nRequirement already satisfied: sympy==1.13.1 in /usr/local/lib/python3.10/dist-packages (from torch>=2.0.0->accelerate) (1.13.1)\nRequirement already satisfied: mpmath<1.4,>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from sympy==1.13.1->torch>=2.0.0->accelerate) (1.3.0)\nRequirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch>=2.0.0->accelerate) (3.0.2)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy<3.0.0,>=1.17->accelerate) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy<3.0.0,>=1.17->accelerate) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy<3.0.0,>=1.17->accelerate) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy<3.0.0,>=1.17->accelerate) (2024.2.0)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface_hub>=0.21.0->accelerate) (3.4.1)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface_hub>=0.21.0->accelerate) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface_hub>=0.21.0->accelerate) (2.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface_hub>=0.21.0->accelerate) (2025.1.31)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy<3.0.0,>=1.17->accelerate) (2024.2.0)\nNote: you may need to restart the kernel to use updated packages.\n","output_type":"stream"}],"execution_count":29},{"cell_type":"code","source":"#Load auto mode classifier from the pretrained model\nfrom transformers import AutoModelForSequenceClassification\nmodel = AutoModelForSequenceClassification.from_pretrained(\"devaprobs/hate-speech-detection-using-amharic-language\", num_labels=2)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:42.699665Z","iopub.execute_input":"2025-08-24T10:56:42.699913Z","iopub.status.idle":"2025-08-24T10:56:42.856541Z","shell.execute_reply.started":"2025-08-24T10:56:42.699892Z","shell.execute_reply":"2025-08-24T10:56:42.855893Z"}},"outputs":[],"execution_count":30},{"cell_type":"code","source":"!pip install evaluate","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:42.857466Z","iopub.execute_input":"2025-08-24T10:56:42.857686Z","iopub.status.idle":"2025-08-24T10:56:46.330522Z","shell.execute_reply.started":"2025-08-24T10:56:42.857668Z","shell.execute_reply":"2025-08-24T10:56:46.329390Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: evaluate in /usr/local/lib/python3.10/dist-packages (0.4.5)\nRequirement already satisfied: datasets>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (3.3.1)\nRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from evaluate) (1.26.4)\nRequirement already satisfied: dill in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.3.8)\nRequirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.2.3)\nRequirement already satisfied: requests>=2.19.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (2.32.3)\nRequirement already satisfied: tqdm>=4.62.1 in /usr/local/lib/python3.10/dist-packages (from evaluate) (4.67.1)\nRequirement already satisfied: xxhash in /usr/local/lib/python3.10/dist-packages (from evaluate) (3.5.0)\nRequirement already satisfied: multiprocess in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.70.16)\nRequirement already satisfied: fsspec>=2021.05.0 in /usr/local/lib/python3.10/dist-packages (from fsspec[http]>=2021.05.0->evaluate) (2024.12.0)\nRequirement already satisfied: huggingface-hub>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from evaluate) (0.34.4)\nRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from evaluate) (24.2)\nRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (3.17.0)\nRequirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (19.0.1)\nRequirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (3.11.12)\nRequirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from datasets>=2.0.0->evaluate) (6.0.2)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (4.12.2)\nRequirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.7.0->evaluate) (1.1.8)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->evaluate) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->evaluate) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->evaluate) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->evaluate) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->evaluate) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->evaluate) (2.4.1)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.4.1)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (2.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.19.0->evaluate) (2025.1.31)\nRequirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2.9.0.post0)\nRequirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2025.1)\nRequirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.10/dist-packages (from pandas->evaluate) (2025.1)\nRequirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (2.4.6)\nRequirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.3.2)\nRequirement already satisfied: async-timeout<6.0,>=4.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (5.0.1)\nRequirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (25.1.0)\nRequirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.5.0)\nRequirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (6.1.0)\nRequirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (0.2.1)\nRequirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.0.0->evaluate) (1.18.3)\nRequirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas->evaluate) (1.17.0)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->evaluate) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->evaluate) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy>=1.17->evaluate) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy>=1.17->evaluate) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy>=1.17->evaluate) (2024.2.0)\n","output_type":"stream"}],"execution_count":31},{"cell_type":"code","source":"!pip install tensorflow\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:46.331738Z","iopub.execute_input":"2025-08-24T10:56:46.332030Z","iopub.status.idle":"2025-08-24T10:56:49.772001Z","shell.execute_reply.started":"2025-08-24T10:56:46.332007Z","shell.execute_reply":"2025-08-24T10:56:49.771100Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: tensorflow in /usr/local/lib/python3.10/dist-packages (2.17.1)\nRequirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.4.0)\nRequirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.6.3)\nRequirement already satisfied: flatbuffers>=24.3.25 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (24.3.25)\nRequirement already satisfied: gast!=0.5.0,!=0.5.1,!=0.5.2,>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.6.0)\nRequirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)\nRequirement already satisfied: h5py>=3.10.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.12.1)\nRequirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (18.1.1)\nRequirement already satisfied: ml-dtypes<0.5.0,>=0.3.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.4.1)\nRequirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.4.0)\nRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from tensorflow) (24.2)\nRequirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.20.3)\nRequirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.32.3)\nRequirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tensorflow) (75.1.0)\nRequirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.17.0)\nRequirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.5.0)\nRequirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (4.12.2)\nRequirement already satisfied: wrapt>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.17.0)\nRequirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.68.1)\nRequirement already satisfied: tensorboard<2.18,>=2.17 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.17.1)\nRequirement already satisfied: keras>=3.2.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.5.0)\nRequirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.37.1)\nRequirement already satisfied: numpy<2.0.0,>=1.23.5 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.26.4)\nRequirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse>=1.6.0->tensorflow) (0.45.1)\nRequirement already satisfied: rich in /usr/local/lib/python3.10/dist-packages (from keras>=3.2.0->tensorflow) (13.9.4)\nRequirement already satisfied: namex in /usr/local/lib/python3.10/dist-packages (from keras>=3.2.0->tensorflow) (0.0.8)\nRequirement already satisfied: optree in /usr/local/lib/python3.10/dist-packages (from keras>=3.2.0->tensorflow) (0.13.1)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy<2.0.0,>=1.23.5->tensorflow) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy<2.0.0,>=1.23.5->tensorflow) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy<2.0.0,>=1.23.5->tensorflow) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy<2.0.0,>=1.23.5->tensorflow) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy<2.0.0,>=1.23.5->tensorflow) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy<2.0.0,>=1.23.5->tensorflow) (2.4.1)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorflow) (3.4.1)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorflow) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorflow) (2.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorflow) (2025.1.31)\nRequirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.18,>=2.17->tensorflow) (3.7)\nRequirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.18,>=2.17->tensorflow) (0.7.2)\nRequirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.18,>=2.17->tensorflow) (3.1.3)\nRequirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard<2.18,>=2.17->tensorflow) (3.0.2)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy<2.0.0,>=1.23.5->tensorflow) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy<2.0.0,>=1.23.5->tensorflow) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy<2.0.0,>=1.23.5->tensorflow) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy<2.0.0,>=1.23.5->tensorflow) (2024.2.0)\nRequirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich->keras>=3.2.0->tensorflow) (3.0.0)\nRequirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich->keras>=3.2.0->tensorflow) (2.19.1)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy<2.0.0,>=1.23.5->tensorflow) (2024.2.0)\nRequirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich->keras>=3.2.0->tensorflow) (0.1.2)\n","output_type":"stream"}],"execution_count":32},{"cell_type":"code","source":"pip install --upgrade transformers\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:49.773079Z","iopub.execute_input":"2025-08-24T10:56:49.773411Z","iopub.status.idle":"2025-08-24T10:56:53.359830Z","shell.execute_reply.started":"2025-08-24T10:56:49.773381Z","shell.execute_reply":"2025-08-24T10:56:53.358721Z"}},"outputs":[{"name":"stdout","text":"Requirement already satisfied: transformers in /usr/local/lib/python3.10/dist-packages (4.55.4)\nRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from transformers) (3.17.0)\nRequirement already satisfied: huggingface-hub<1.0,>=0.34.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.34.4)\nRequirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (1.26.4)\nRequirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from transformers) (24.2)\nRequirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from transformers) (6.0.2)\nRequirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.10/dist-packages (from transformers) (2024.11.6)\nRequirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from transformers) (2.32.3)\nRequirement already satisfied: tokenizers<0.22,>=0.21 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.21.0)\nRequirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.10/dist-packages (from transformers) (0.4.5)\nRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.10/dist-packages (from transformers) (4.67.1)\nRequirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.34.0->transformers) (2024.12.0)\nRequirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.34.0->transformers) (4.12.2)\nRequirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub<1.0,>=0.34.0->transformers) (1.1.8)\nRequirement already satisfied: mkl_fft in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (1.3.8)\nRequirement already satisfied: mkl_random in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (1.2.4)\nRequirement already satisfied: mkl_umath in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (0.1.1)\nRequirement already satisfied: mkl in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (2025.0.1)\nRequirement already satisfied: tbb4py in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (2022.0.0)\nRequirement already satisfied: mkl-service in /usr/local/lib/python3.10/dist-packages (from numpy>=1.17->transformers) (2.4.1)\nRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.4.1)\nRequirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (3.10)\nRequirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2.3.0)\nRequirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->transformers) (2025.1.31)\nRequirement already satisfied: intel-openmp>=2024 in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->transformers) (2024.2.0)\nRequirement already satisfied: tbb==2022.* in /usr/local/lib/python3.10/dist-packages (from mkl->numpy>=1.17->transformers) (2022.0.0)\nRequirement already satisfied: tcmlib==1.* in /usr/local/lib/python3.10/dist-packages (from tbb==2022.*->mkl->numpy>=1.17->transformers) (1.2.0)\nRequirement already satisfied: intel-cmplr-lib-rt in /usr/local/lib/python3.10/dist-packages (from mkl_umath->numpy>=1.17->transformers) (2024.2.0)\nRequirement already satisfied: intel-cmplr-lib-ur==2024.2.0 in /usr/local/lib/python3.10/dist-packages (from intel-openmp>=2024->mkl->numpy>=1.17->transformers) (2024.2.0)\nNote: you may need to restart the kernel to use updated packages.\n","output_type":"stream"}],"execution_count":33},{"cell_type":"code","source":"# Instead of importing everything at once\nfrom transformers.training_args import TrainingArguments\nfrom transformers.trainer import Trainer\nfrom transformers import EarlyStoppingCallback\nfrom transformers import EarlyStoppingCallback, IntervalStrategy","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:53.361211Z","iopub.execute_input":"2025-08-24T10:56:53.361605Z","iopub.status.idle":"2025-08-24T10:56:53.674286Z","shell.execute_reply.started":"2025-08-24T10:56:53.361569Z","shell.execute_reply":"2025-08-24T10:56:53.673315Z"}},"outputs":[],"execution_count":34},{"cell_type":"code","source":"from evaluate import load\ndef custom_metrics(eval_pred):\n metric1 = load(\"precision\")\n metric2 = load(\"recall\")\n metric3 = load(\"f1\")\n metric4 = load(\"accuracy\")\n\n logits, labels = eval_pred\n predictions = np.argmax(logits, axis=-1)\n\n precision = metric1.compute(predictions=predictions, references=labels, average=\"weighted\")[\"precision\"]\n recall = metric2.compute(predictions=predictions, references=labels, average=\"weighted\")[\"recall\"]\n f1 = metric3.compute(predictions=predictions, references=labels, average=\"weighted\")[\"f1\"]\n accuracy = metric4.compute(predictions=predictions, references=labels)[\"accuracy\"]\n\n return {\"precision\": precision, \"recall\": recall, \"f1\": f1, \"accuracy\": accuracy}","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:53.675279Z","iopub.execute_input":"2025-08-24T10:56:53.675620Z","iopub.status.idle":"2025-08-24T10:56:53.761665Z","shell.execute_reply.started":"2025-08-24T10:56:53.675589Z","shell.execute_reply":"2025-08-24T10:56:53.760844Z"}},"outputs":[],"execution_count":35},{"cell_type":"code","source":"# #load an optimizer\n# optimizer = AdamW(model.parameters(), lr=5e-5)\ntraining_args = TrainingArguments(\n output_dir=\"./results\",\n eval_strategy='epoch',\n save_strategy='epoch',\n logging_strategy='epoch',\n num_train_epochs=4,\n learning_rate=1e-5,\n per_device_train_batch_size=4, # batch size per device during training\n per_device_eval_batch_size=4, # batch size for evaluation\n warmup_steps=1000, # number of warmup steps for learning rate\n weight_decay=0.01,\n run_name=\"sexually explicit comments\",# strength of weight decay\n logging_dir='./logs', # directory for storing logs\n logging_steps=20,\n report_to=\"none\",\n load_best_model_at_end= True,\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:53.762515Z","iopub.execute_input":"2025-08-24T10:56:53.762797Z","iopub.status.idle":"2025-08-24T10:56:53.885802Z","shell.execute_reply.started":"2025-08-24T10:56:53.762767Z","shell.execute_reply":"2025-08-24T10:56:53.885042Z"}},"outputs":[],"execution_count":36},{"cell_type":"code","source":"trainer = Trainer(\n model=model,\n args=training_args,\n train_dataset=small_train_dataset,\n eval_dataset=small_eval_dataset,\n compute_metrics=custom_metrics,\n callbacks = [EarlyStoppingCallback(early_stopping_patience=10)],\n)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:53.886682Z","iopub.execute_input":"2025-08-24T10:56:53.886911Z","iopub.status.idle":"2025-08-24T10:56:54.265190Z","shell.execute_reply.started":"2025-08-24T10:56:53.886893Z","shell.execute_reply":"2025-08-24T10:56:54.264253Z"}},"outputs":[],"execution_count":37},{"cell_type":"code","source":"train_result=trainer.train()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T10:56:54.266096Z","iopub.execute_input":"2025-08-24T10:56:54.266330Z","iopub.status.idle":"2025-08-24T13:17:19.681697Z","shell.execute_reply.started":"2025-08-24T10:56:54.266310Z","shell.execute_reply":"2025-08-24T13:17:19.680822Z"}},"outputs":[{"name":"stderr","text":"/usr/local/lib/python3.10/dist-packages/torch/nn/parallel/_functions.py:71: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n warnings.warn(\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"","text/html":"\n
\n \n \n [13848/13848 2:20:23, Epoch 4/4]\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
EpochTraining LossValidation LossPrecisionRecallF1Accuracy
10.3703000.1681550.9478500.9470650.9470580.947065
20.2168000.0958880.9798730.9798340.9798350.979834
30.1292000.0930630.9852580.9852360.9852360.985236
40.0805000.0877530.9867350.9866760.9866770.986676

"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"Downloading builder script: 0.00B [00:00, ?B/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"f97aacb645704040a27c01086800cd7e"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"Downloading builder script: 0.00B [00:00, ?B/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"cfee8ff9408444189d4a5dae61068382"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"Downloading builder script: 0.00B [00:00, ?B/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"444fbdc793a840a592cfc9f7f0e3c07b"}},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"Downloading builder script: 0.00B [00:00, ?B/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"83564cfa99e2493ba097d12850b14967"}},"metadata":{}},{"name":"stderr","text":"/usr/local/lib/python3.10/dist-packages/torch/nn/parallel/_functions.py:71: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n warnings.warn(\n/usr/local/lib/python3.10/dist-packages/torch/nn/parallel/_functions.py:71: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n warnings.warn(\n/usr/local/lib/python3.10/dist-packages/torch/nn/parallel/_functions.py:71: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n warnings.warn(\n","output_type":"stream"}],"execution_count":38},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\n# Get the log history from the trainer\ntrain_loss = trainer.state.log_history\n\n# Initialize lists for epochs, training losses, and validation losses\nepochs = []\ntrain_losses = []\nval_losses = []\n\n# Extract training and validation losses safely\nfor entry in train_loss:\n if 'loss' in entry:\n epochs.append(entry['epoch'])\n train_losses.append(entry['loss'])\n if 'eval_loss' in entry: # Check for validation loss\n val_losses.append(entry['eval_loss'])\n\n# Check if we have losses to plot\nif train_losses:\n plt.figure(figsize=(10, 6))\n plt.plot(epochs, train_losses, label='Training Loss', color='blue')\n \n # Plot validation loss if available\n if val_losses:\n plt.plot(epochs[:len(val_losses)], val_losses, label='Validation Loss', color='orange')\n \n plt.title('Training and Validation Loss Over Epochs')\n plt.xlabel('Epochs')\n plt.ylabel('Loss')\n plt.grid()\n plt.legend()\n plt.show()\nelse:\n print(\"No training loss data available.\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T14:13:27.384798Z","iopub.execute_input":"2025-08-24T14:13:27.385141Z","iopub.status.idle":"2025-08-24T14:13:27.587831Z","shell.execute_reply.started":"2025-08-24T14:13:27.385118Z","shell.execute_reply":"2025-08-24T14:13:27.586894Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"

","image/png":"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\n"},"metadata":{}}],"execution_count":61},{"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\n# Now you can make predictions\npredictions = trainer.predict(small_test_dataset)\n# Get the predicted labels and true labels\npredicted_labels = np.argmax(predictions.predictions, axis=1)\ntrue_labels = small_test_dataset['label']\n# Calculate the confusion matrix\ncm = confusion_matrix(true_labels, predicted_labels)\nprint(cm)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T13:17:19.682606Z","iopub.execute_input":"2025-08-24T13:17:19.682886Z","iopub.status.idle":"2025-08-24T13:20:11.389640Z","shell.execute_reply.started":"2025-08-24T13:17:19.682855Z","shell.execute_reply":"2025-08-24T13:20:11.388810Z"}},"outputs":[{"name":"stderr","text":"/usr/local/lib/python3.10/dist-packages/torch/nn/parallel/_functions.py:71: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n warnings.warn(\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"","text/html":""},"metadata":{}},{"name":"stdout","text":"[[3308 210]\n [ 179 3320]]\n","output_type":"stream"}],"execution_count":39},{"cell_type":"code","source":"from sklearn.metrics import classification_report\nprint(classification_report(true_labels, predicted_labels))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T13:20:11.390537Z","iopub.execute_input":"2025-08-24T13:20:11.390877Z","iopub.status.idle":"2025-08-24T13:20:11.404363Z","shell.execute_reply.started":"2025-08-24T13:20:11.390845Z","shell.execute_reply":"2025-08-24T13:20:11.403691Z"}},"outputs":[{"name":"stdout","text":" precision recall f1-score support\n\n 0 0.95 0.94 0.94 3518\n 1 0.94 0.95 0.94 3499\n\n accuracy 0.94 7017\n macro avg 0.94 0.94 0.94 7017\nweighted avg 0.94 0.94 0.94 7017\n\n","output_type":"stream"}],"execution_count":40},{"cell_type":"code","source":"# Decode the input_ids to get the actual text\ndecoded_texts = [tokenizer.decode(ids, skip_special_tokens=True) for ids in small_test_dataset['input_ids']]\n\n# Find misclassified indices\nmisclassified_indices = np.where(np.array(predicted_labels) != np.array(true_labels))[0]\n\n# Create a DataFrame for misclassified instances\nmisclassified_samples = pd.DataFrame({\n 'text': np.array(decoded_texts)[misclassified_indices],\n 'true_label': np.array(true_labels)[misclassified_indices],\n 'predicted_label': np.array(predicted_labels)[misclassified_indices]\n})\n\n# Display the misclassified samples\nprint(misclassified_samples)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T14:22:53.744273Z","iopub.execute_input":"2025-08-24T14:22:53.744630Z","iopub.status.idle":"2025-08-24T14:22:54.532368Z","shell.execute_reply.started":"2025-08-24T14:22:53.744602Z","shell.execute_reply":"2025-08-24T14:22:54.531509Z"}},"outputs":[{"name":"stdout","text":" text true_label \\\n0 የባለአደራው ምክር ቤት የፖለቲካ አጀንዳ እንደሌለውና የፖለቲካ ድርጅትም ... 1 \n1 የሰለቸኝ ምን እንደሆነ ታውቃለህ የአንተ እና የግርማ ሰይፉ አሉባልታ 0 \n2 ጎዳኸኝ ከእንግዲህ ጓደኛህ መሆን አልፈልግም 0 \n3 አንዱ ሰፈር crdiologist ነኝብሎ ሲሰክስ ቆይቶ ካርድ ክፍል እደሚሰ... 0 \n4 እንግዲህ በአንድ በደል ምክንያት ፍርድ ለኩነኔ ወደ ሰው ሁሉ እንደ መጣ ... 0 \n.. ... ... \n384 አስቸጋሪው የህብረተሰብ ክፍል 0 \n385 ሁልት ምርጥ ወንድሞች 0 \n386 የሰው ልጅ በታሪክ ውስጥ ወሳኝ ደረጃ ላይ እያለፈ ነው ታላቅ ትግል የእግ... 0 \n387 ጅል በምን ያሸንፋል ቢሉት እምቢ በማለት ላለመሸነፍ ግግም ብሎ እምቢ ማለት 1 \n388 የግብረ ሰዶማውያን መሪ ያምላ የግብረ ሰዶማውያን ኒገሮች ሳተርን ጁፒተር ... 1 \n\n predicted_label \n0 0 \n1 1 \n2 1 \n3 1 \n4 1 \n.. ... \n384 1 \n385 1 \n386 1 \n387 0 \n388 0 \n\n[389 rows x 3 columns]\n","output_type":"stream"}],"execution_count":63},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n# Define parameters\ninitial_accuracy = 0.93\ntest_size = 6942\nsplit_ratios = [0.8, 0.9] # 80-20 split and 90-10 split\n\n# Function to calculate misclassifications\ndef calculate_misclassifications(accuracy, test_size):\n return test_size * (1 - accuracy)\n\n# Create a DataFrame to store results\nresults = pd.DataFrame(columns=['Split Ratio', 'Initial Misclassifications', 'Improved Misclassifications', 'Accuracy Increase (%)', 'Reduction in Misclassifications'])\n\nresults_list = []\n\n# Iterate through accuracy increases\nfor accuracy_increase in np.linspace(0.005, 0.01, num=3): # 0.5% to 1% increase\n improved_accuracy = initial_accuracy + accuracy_increase\n for split_ratio in split_ratios:\n split_size = int(test_size * split_ratio)\n \n initial_misclassifications = calculate_misclassifications(initial_accuracy, split_size)\n improved_misclassifications = calculate_misclassifications(improved_accuracy, split_size)\n \n reduction = initial_misclassifications - improved_misclassifications\n \n # Append results as a dictionary to the list\n results_list.append({\n 'Split Ratio': f'{int(split_ratio*100)}-10',\n 'Initial Misclassifications': initial_misclassifications,\n 'Improved Misclassifications': improved_misclassifications,\n 'Accuracy Increase (%)': accuracy_increase * 100,\n 'Reduction in Misclassifications': reduction\n })\n\n# Convert the list of results to a DataFrame\nresults = pd.DataFrame(results_list)\n\n# Display results\nprint(results)\n# Visualization\nplt.figure(figsize=(10, 6))\nfor split_ratio in split_ratios:\n subset = results[results['Split Ratio'] == f'{int(split_ratio * 100)}-10']\n plt.plot(subset['Accuracy Increase (%)'], subset['Reduction in Misclassifications'], marker='o', label=f'Split Ratio {int(split_ratio * 100)}-10')\n\nplt.title('Reduction in Misclassifications vs. Accuracy Increase')\nplt.xlabel('Accuracy Increase (%)')\nplt.ylabel('Reduction in Misclassifications')\nplt.xticks(np.arange(0.5, 1.1, 0.1))\nplt.grid()\nplt.legend()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T14:25:11.966104Z","iopub.execute_input":"2025-08-24T14:25:11.966419Z","iopub.status.idle":"2025-08-24T14:25:12.180335Z","shell.execute_reply.started":"2025-08-24T14:25:11.966397Z","shell.execute_reply":"2025-08-24T14:25:12.179559Z"}},"outputs":[{"name":"stdout","text":" Split Ratio Initial Misclassifications Improved Misclassifications \\\n0 80-10 388.71 360.9450 \n1 90-10 437.29 406.0550 \n2 80-10 388.71 347.0625 \n3 90-10 437.29 390.4375 \n4 80-10 388.71 333.1800 \n5 90-10 437.29 374.8200 \n\n Accuracy Increase (%) Reduction in Misclassifications \n0 0.50 27.7650 \n1 0.50 31.2350 \n2 0.75 41.6475 \n3 0.75 46.8525 \n4 1.00 55.5300 \n5 1.00 62.4700 \n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"
","image/png":"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b98egM2bN7Nv3z4WLFhQ7AFFyjXbJVg3Dda/DfYccPOC65+CTiPBQx3kSsrhc5m8uSyR/xd/DAAPNwv3dqjH8O6RVK3saXI6ERERqUgKXVD169ePvXv3MnPmTBISEgAYMGAAjz76qM5QifzZ3mXOs1IXDjrHkbHOs1JVI8zNVYGdy8jhvVX7+GLTQWx2A4BbWtbiqV4NCa1ayeR0IiIiUhEVuqAC52V/r776anFnEakYLh6BFc9DwkLn2L829JkCjQaAGh+UiEs5dj5Zf4AP1uwnLTsXgOujqjO2TzRNaweYnE5EREQqsiIVVOvWrWPWrFkkJyczf/58ateuzb///W/Cw8Pp3LlzcWcUKR/sNiJPLsJ91qNgywSrO3R4HLqOBS8916gk5NodzN96hLeW7+VUWjYATWr5M65vNNdH1TA5nYiIiLiCQhdUCxYs4N577+Wee+5h27ZtZGc7P8RcvHiRV199lcWLFxd7SJEyL2U97gtH0eRMonNcNwb6T4OgxubmqqAMw2D57yd5PS6RpFPpANSp4sPTvRsyoHktrFadCRQREZHSUeiCatKkSXzwwQcMGTKEr776Km++U6dOTJo0qVjDiZR56adg+b9gxzwsQLa7H259J+PeerAu7yshWw+eY/LiBH49eB6AKpU8GN49isEd6uLlrs59IiIiUroKXVAlJibSpUuXy+YDAgK4cOFCcWQSKfscdtg6B1a+BFkXAQv21kNZaWtHz+b/UDFVApJOpfP60gSW/X4SAG8PKw92DuefXevj760HIouIiIg5Cl1QBQcHk5SURL169fLN//zzz0REqHuZuICj22DRaDi23TkOaQH938IR1BybLnktdidTs3h7xV6+3nIYhwFWC/yjbShPxjYgOECt50VERMRchS6oHn74YUaOHMknn3yCxWLh2LFjbNy4kTFjxvDCCy+UREaRsuHSBVj1MmyZDRjg5Q89/gVtHwCrG9hsZiesUNKybMxam8zHPyeTZXMA0LNxEGP7NCSypp/J6UREREScCl1QjRs3DofDQY8ePcjMzKRLly54eXkxZswYRowYURIZRcxlGLDza1j2PGScds41vxN6vgx+QeZmq4Cyc+18uekQ769O4lxGDgBtwqowrm8019WranI6ERERkfwKXVBZLBaee+45nn76aZKSkkhPT6dx48b4+vpy6dIlfHx8SiKn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QUH55oOCgjhx4sQVv6dhw4Z88skn/L//9//44osvcDgcdOzYkSNHjpRGZLkGRVnv5ORkvv32W+x2O4sXL+aFF15g6tSpTJo0qTQiyzUoynr/2ebNm9m9ezcPPfRQSUWUYlSU9b777rt56aWX6Ny5Mx4eHtSvX59u3brpkr9yoCjr3bt3b6ZNm8a+fftwOBwsX7487zJfqVhOnDhxxb8bqampXLp0yaRUUtapoCpFMTExDBkyhJYtW9K1a1e+++47atSowaxZs8yOJiXA4XBQs2ZNPvzwQ9q0acOdd97Jc889xwcffGB2NClhs2fPplmzZrRr187sKFJC1qxZw6uvvsqMGTPYtm0b3333HYsWLeLll182O5qUgHfeeYeoqCiio6Px9PRk+PDh3H///Vit+hglIuBudoDyqnr16ri5uXHy5Ml88ydPniQ4OLhA+/Dw8KBVq1YkJSWVREQpRkVZ75CQEDw8PHBzc8uba9SoESdOnCAnJwdPT88SzSxFdy3v74yMDL766iteeumlkowoxago6/3CCy9w77335p2FbNasGRkZGTzyyCM899xz+qBdhhVlvWvUqMEPP/xAVlYWZ8+epVatWowbN46IiIjSiCylKDg4+Ip/N/z9/fHx8TEplZR1+i9+EXl6etKmTRtWrlyZN+dwOFi5ciUxMTEF2ofdbmfXrl2EhISUVEwpJkVZ706dOpGUlITD4cib27t3LyEhISqmyrhreX/Pnz+f7OxsBg8eXNIxpZgUZb0zMzMvK5r++McT573QUlZdy/vb29ub2rVrk5uby4IFC7j55ptLOq6UspiYmHx/NwCWL19e4M924qKK1MpCDMMwjK+++srw8vIyPv30U+P33383HnnkESMwMNA4ceKEYRiGce+99xrjxo3L2/7FF1804uLijP379xtbt2417rrrLsPb29v47bffzPoRpBAKu96HDh0y/Pz8jOHDhxuJiYnGwoULjZo1axqTJk0y60eQQijsev+hc+fOxp133lnaceUaFXa9J0yYYPj5+Rnz5s0zkpOTjWXLlhn169c3/vGPf5j1I0ghFHa9N23aZCxYsMDYv3+/8dNPPxndu3c3wsPDjfPnz5v0E0hBpaWlGdu3bze2b99uAMa0adOM7du3GwcPHjQMwzDGjRtn3HvvvXnbJycnG5UqVTKefvppY8+ePcb06dMNNzc3Y+nSpWb9CFIIhV1vwzDytm/Tpo1x9913G9u3by/0Z3MVVNfovffeM+rWrWt4enoa7dq1MzZt2pT3WteuXY2hQ4fmjZ988sm8bYOCgox+/foZ27ZtMyG1FFVh1tswDGPDhg1G+/btDS8vLyMiIsJ45ZVXjNzc3FJOLUVV2PVOSEgwAGPZsmWlnFSKQ2HW22azGRMnTjTq169veHt7G6Ghocbjjz+uD9jlSGHWe82aNUajRo0MLy8vo1q1asa9995rHD161ITUUlirV682gMu+/ljfoUOHGl27dr3se1q2bGl4enoaERERxpw5c0o9txRNUdb7StuHhYUV6riW/+5IRERERERECkn3UImIiIiIiBSRCioREREREZEiUkElIiIiIiJSRCqoREREREREikgFlYiIiIiISBGpoBIRERERESkiFVQiIiIiIiJFpIJKRERERESkiFRQiYiIVACJiYkEBweTlpZW5H38/vvv1KlTh4yMjGJMJiJSsamgEhEp5zZu3Iibmxv9+/c3O4qpunXrxpNPPml2DNOMHz+eESNG4OfnB0BKSgpdunShcuXKdOnShZSUlHzb33jjjSxYsCDfXOPGjenQoQPTpk0rrdgiIuWeCioRkXJu9uzZjBgxgp9++oljx46ZmiUnJ8fU45eksvyzHTp0iIULF3LfffflzT311FPUrl2b+Ph4QkJCGDNmTN5rX3/9NVarlYEDB162r/vvv5+ZM2eSm5tbGtFFRMo9FVQiIuVYeno6X3/9NY899hj9+/fn008/vWyb//znP1x33XV4e3tTvXp1br311rzXsrOzGTt2LKGhoXh5eREZGcns2bMB+PTTTwkMDMy3rx9++AGLxZI3njhxIi1btuTjjz8mPDwcb29vAJYuXUrnzp0JDAykWrVq3Hjjjezfvz/fvo4cOcKgQYOoWrUqlStXpm3btvzyyy+kpKRgtVr59ddf823/9ttvExYWhsPhKNDvpl69erz66qs88MAD+Pn5UbduXT788MMCZfirn+3ChQs89NBD1KhRA39/f7p3786OHTvy9rl//35uvvlmgoKC8PX15brrrmPFihX5jjtjxgyioqLw9vYmKCiI22+/Pe81h8PB5MmTCQ8Px8fHhxYtWvDtt9/+5c/6zTff0KJFC2rXrp03t2fPHoYOHUpUVBT33Xcfe/bsycv//PPPM3369Cvuq2fPnpw7d461a9f+3a9YRERQQSUiUq598803REdH07BhQwYPHswnn3yCYRh5ry9atIhbb72Vfv36sX37dlauXEm7du3yXh8yZAjz5s3j3XffZc+ePcyaNQtfX99CZUhKSmLBggV89913xMfHA5CRkcHo0aP59ddfWblyJVarlVtvvTWvGEpPT6dr164cPXqUH3/8kR07dvDMM8/gcDioV68esbGxzJkzJ99x5syZw3333YfVWvD/dU2dOpW2bduyfft2Hn/8cR577DESExP/NsNf/Wx33HEHp06dYsmSJWzdupXWrVvTo0cPzp07l7fffv36sXLlSrZv306fPn0YMGAAhw4dAuDXX3/liSee4KWXXiIxMZGlS5fSpUuXvGNOnjyZzz//nA8++IDffvuNUaNGMXjw4L8scNatW0fbtm3zzbVo0YIVK1bgcDhYtmwZzZs3B+Dpp59m2LBhhIaGXnFfnp6etGzZknXr1hX49ywi4tIMEREptzp27Gi8/fbbhmEYhs1mM6pXr26sXr067/WYmBjjnnvuueL3JiYmGoCxfPnyK74+Z84cIyAgIN/c999/b/z5fx0TJkwwPDw8jFOnTv1lztOnTxuAsWvXLsMwDGPWrFmGn5+fcfbs2Stu//XXXxtVqlQxsrKyDMMwjK1btxoWi8U4cODAVY/RtWtXY+TIkXnjsLAwY/DgwXljh8Nh1KxZ05g5c2aBMlzpZ1u3bp3h7++fl+sP9evXN2bNmnXVbE2aNDHee+89wzAMY8GCBYa/v7+Rmpp62XZZWVlGpUqVjA0bNuSbf/DBB41BgwZddf8tWrQwXnrppXxzR44cMfr372+EhoYa/fv3N44cOWKsXbvWaNu2rXH27FnjjjvuMMLDw41//vOfRnZ2dr7vvfXWW4377rvvqscTEZH/ozNUIiLlVGJiIps3b2bQoEEAuLu7c+edd+ZdsgcQHx9Pjx49rvj98fHxuLm50bVr12vKERYWRo0aNfLN7du3j0GDBhEREYG/vz/16tUDyDtLEx8fT6tWrahateoV93nLLbfg5ubG999/DzgvP7zhhhvy9lNQf5yVAbBYLAQHB3Pq1KkCZbjSz7Zjxw7S09OpVq0avr6+eV8HDhzIu6QxPT2dMWPG0KhRIwIDA/H19WXPnj15P3vPnj0JCwsjIiKCe++9ly+//JLMzEzAeUYsMzOTnj175tv/559/ftklk3926dKlvEsS/1C7dm0WLlyYd39V9erVefzxx/nggw+YNGkSfn5+JCYmsm/fPmbNmpXve318fPIyiYjIX3M3O4CIiBTN7Nmzyc3NpVatWnlzhmHg5eXF+++/T0BAAD4+Plf9/r96DcBqtea7fBDAZrNdtl3lypUvmxswYABhYWF89NFH1KpVC4fDQdOmTfMaO/zdsT09PRkyZAhz5szhtttuY+7cubzzzjt/+T1X4uHhkW9ssVjyLun7uwxw+c+Wnp5OSEgIa9asuWzbP+43GzNmDMuXL+fNN98kMjISHx8fbr/99ryf3c/Pj23btrFmzRqWLVvGv/71LyZOnMiWLVtIT08HnJdq/vl+KAAvL6+r5qxevTrnz5//y5/l1VdfpVevXrRp04aHH36YSZMm4eHhwW233caqVasYMWJE3rbnzp2jfv36f7k/ERFx0hkqEZFyKDc3l88//5ypU6cSHx+f97Vjxw5q1arFvHnzAOcZmpUrV15xH82aNcPhcFz13pwaNWqQlpaW75lEf9xH9FfOnj1LYmIizz//PD169KBRo0aXfdhv3rw58fHxefcdXclDDz3EihUrmDFjBrm5udx2221/e+zCKEiG/9W6dWtOnDiBu7s7kZGR+b6qV68OwPr167nvvvu49dZbadasGcHBwZe1LHd3dyc2NpbXX3+dnTt3kpKSwqpVq2jcuDFeXl4cOnTosv1f7Z4ngFatWvH7779f9fU9e/Ywd+5cXn75ZQDsdntecWyz2bDb7fm23717N61atSrw70VExJWpoBIRKYcWLlzI+fPnefDBB2natGm+r4EDB+Zd9jdhwgTmzZvHhAkT2LNnD7t27eK1114DnF3whg4dygMPPMAPP/zAgQMHWLNmDd988w0A7du3p1KlSjz77LPs37+fuXPnXrGL4P+qUqUK1apV48MPPyQpKYlVq1YxevTofNsMGjSI4OBgbrnlFtavX09ycjILFixg48aNeds0atSIDh06MHbsWAYNGlSgM0qFUZAM/ys2NpaYmBhuueUWli1bRkpKChs2bOC5557L60oYFRWV18Rix44d3H333fkaXSxcuJB3332X+Ph4Dh48yOeff47D4aBhw4b4+fkxZswYRo0axWeffcb+/fvZtm0b7733Hp999tlVc/Xu3ZuNGzdeVhiB86zlI488wltvvZV3xq1Tp0589NFH7Nmzh88//5xOnTrlbZ+SksLRo0eJjY0t9O9URMQVqaASESmHZs+eTWxsLAEBAZe9NnDgQH799Vd27txJt27dmD9/Pj/++CMtW7ake/fubN68OW/bmTNncvvtt/P4448THR3Nww8/nHdGqmrVqnzxxRcsXryYZs2aMW/ePCZOnPi32axWK1999RVbt26ladOmjBo1ijfeeCPfNp6enixbtoyaNWvSr18/mjVrxpQpU3Bzc8u33YMPPkhOTg4PPPBAEX5Lf62gGf7MYrGwePFiunTpwv3330+DBg246667OHjwIEFBQQBMmzaNKlWq0LFjRwYMGEDv3r1p3bp13j4CAwP57rvv6N69O40aNeKDDz5g3rx5NGnSBICXX36ZF154gcmTJ9OoUSP69OnDokWLCA8Pv2quvn374u7ufll7doAPP/yQoKAgbrzxxry5iRMnkpWVRfv27YmMjGTYsGF5r82bN49evXoRFhZW8F+miIgLsxj/e4G8iIhIGfHyyy8zf/58du7caXaUMm/69On8+OOPxMXFFXkfOTk5REVFMXfu3HxnrURE5OrUlEJERMqc9PR0UlJSeP/995k0aZLZccqFf/7zn1y4cIG0tDT8/PyKtI9Dhw7x7LPPqpgSESkEnaESEZEy57777mPevHnccsstzJ079y8vwxMRETGTCioREREREZEiUlMKERERERGRIlJBJSIiIiIiUkQqqERERERERIpIBZWIiIiIiEgRqaASEREREREpIhVUIiIiIiIiRaSCSkREREREpIhUUImIiIiIiBTR/wcdvsvBOGdLkQAAAABJRU5ErkJggg==\n"},"metadata":{}}],"execution_count":64},{"cell_type":"code","source":"# Step 1: Decode the input_ids to get the actual text\ntext_data = [tokenizer.decode(ids, skip_special_tokens=True) for ids in small_train_dataset['input_ids']]\n\n# Step 2: Pass the list of strings to CountVectorizer\n# Step 2: Pass the list of strings to TfidfVectorizer\nvectorizer = TfidfVectorizer()\nX_train_vectorized = vectorizer.fit_transform(text_data)\nfeature_names = vectorizer.get_feature_names_out()\n\n# Step 3: Sum the TF-IDF scores for each feature\nsum_tfidf = X_train_vectorized.sum(axis=0)\n\n# Convert sum_tfidf to a 1D array\nsum_tfidf = np.asarray(sum_tfidf).flatten()\n\n# Step 4: Create a DataFrame for better visualization\nfeatures_df = pd.DataFrame({'Feature': feature_names, 'Importance': sum_tfidf})\nfeatures_df = features_df.sort_values(by='Importance', ascending=False)\n# Optional: Display the top N features\ntop_n = 100 # Adjust this number as needed\nprint(f\"\\nTop {top_n} features:\")\nprint(features_df.head(top_n))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T15:22:36.150205Z","iopub.execute_input":"2025-08-24T15:22:36.150518Z","iopub.status.idle":"2025-08-24T15:22:39.895701Z","shell.execute_reply.started":"2025-08-24T15:22:36.150493Z","shell.execute_reply":"2025-08-24T15:22:39.894752Z"}},"outputs":[{"name":"stdout","text":"\nTop 100 features:\n Feature Importance\n54256 እና 702.031664\n40691 ነው 619.564413\n7802 ላይ 540.325107\n40366 ነበር 495.401991\n45453 አስተያየት 451.623216\n... ... ...\n58755 እኛ 64.458666\n89397 ደስ 64.348601\n17387 ሲሰጥ 63.803839\n28973 በእኔ 63.604761\n61637 እፈልጋለሁ 62.880520\n\n[100 rows x 2 columns]\n","output_type":"stream"}],"execution_count":83},{"cell_type":"code","source":"for example in small_train_dataset[:5]: # Adjust the slice as needed\n print(example)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T14:42:31.924134Z","iopub.execute_input":"2025-08-24T14:42:31.924458Z","iopub.status.idle":"2025-08-24T14:42:31.931871Z","shell.execute_reply.started":"2025-08-24T14:42:31.924435Z","shell.execute_reply":"2025-08-24T14:42:31.931191Z"}},"outputs":[{"name":"stdout","text":"label\nword_len\ninput_ids\ntoken_type_ids\nattention_mask\n","output_type":"stream"}],"execution_count":72},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#Analyzing Absolute vs. Borderline Classifications\nprobabilities = predictions.predictions.max(axis=1)\nborderline_indices = np.where((probabilities > 0.4) & (probabilities < 0.6))[0]\n\n# Visualizing Borderline Classifications\nborderline_samples = small_test_dataset[borderline_indices]\nborderline_labels = predicted_labels[borderline_indices]\n\nplt.figure(figsize=(10, 6))\nplt.hist(probabilities[borderline_indices], bins=10, color='orange', alpha=0.7)\nplt.axvline(x=0.5, color='red', linestyle='--', label='Threshold')\nplt.title('Probability Distribution of Borderline Classifications')\nplt.xlabel('Probability')\nplt.ylabel('Frequency')\nplt.legend()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T14:00:13.638788Z","iopub.execute_input":"2025-08-24T14:00:13.639125Z","iopub.status.idle":"2025-08-24T14:00:13.843386Z","shell.execute_reply.started":"2025-08-24T14:00:13.639103Z","shell.execute_reply":"2025-08-24T14:00:13.842511Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"
","image/png":"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Tz75RI0aNZKvr6/KlSunO+64w6mXfuHChWrXrp0iIiJkt9sVHR2tkSNHKjs721GnRYsW+uqrr3To0CHH+XzxZ7WgOVfLly9Xs2bN5Ofnp6CgIHXo0EG7du1yqpMX8759+9SzZ08FBQUpMDBQvXr1Unp6ulPdpUuXqmnTpgoKCpK/v79q1KihF198seA3CfibKT1/7gFQovbv3y9JqlChgqPs/Pnzio+PV9OmTTV69Gj5+vrKMAzde++9WrFihXr37q2YmBgtWbJEzz77rI4ePZpv2NR3332n2bNn66mnnpLdbtd7772nNm3aaOPGjapbt66k3Anda9euVdeuXVWpUiUdPHhQEydOVIsWLfTzzz/nG0LVv39/BQUFadiwYdqzZ48mTpyoQ4cOOeY2FdfHH3+sPn36qFGjRurbt68kKTo6WrfddpsiIyP16aefqlOnTk6P+fTTTxUdHa3GjRsX+3nvv/9+9e7dW998841effXVAuscP35crVu3VkhIiF544QUFBQXp4MGDmjdvniQpJCREEydO1BNPPKFOnTqpc+fOkqR69eo52ijo/bycGTNm6MyZM+rXr5/OnTun8ePH684779RPP/2k0NDQKz6+K4ntUn369NH06dN1//33a+DAgdqwYYNGjRqlXbt25Uty9+3b53gNe/TooSlTpqhnz55q0KCB6tSpU+hzXMm5HBISoo8//livvvqqUlNTHUP9atWqddljzs7O1smTJyXlzqvZtWuXI6m5/fbbHfV27typZs2aKSAgQM8995w8PT31/vvvq0WLFvruu+8UGxvr1O6TTz6pkJAQDRkyRGlpaZKkjz76SI899piaNGmiAQMG6Ndff9W9996r8uXLKzIy0vHYnJwc3XvvvVq9erX69u2rWrVq6aefftLbb7+tX375Jd9cw+XLl2vOnDnq37+/goODC03AC3Ml70t6erqaN2+uo0eP6rHHHlPlypW1du1aDR48WImJiZedF7R69Wr98ccfGjBgQLF7zubOnav09HQ98cQTqlChgjZu3Kh33nlHR44c0dy5cx317rvvPu3cuVP/+te/VLVqVR0/flxLly7V4cOHHbcv9/ksyGOPPabrr79er732mmPI8OU+V8OHD9ewYcPUpEkTjRgxQl5eXtqwYYOWL1+u1q1bS8pNdP39/ZWQkCB/f38tX75cQ4YMUUpKit56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nCQ53vcuXbro9ttvV58+fRQaGqquXbtqzpw5JFooM5hzBfxNNWrUyLFaYGHsdnu+v5KWhH/961+aOnWqBgwYoMaNGyswMFA2m01du3YtVf/hdu/eXU8//bSOHDmijIwMrV+/3mkRiuLKysrSL7/84piDVhCbzabPP/9c69ev13//+18tWbJEjzzyiMaMGaP169dfds5EnpJ4P202W4ELmVw8gf5q2r4Shc23KSguKzVo0ECBgYGX7Y35Kxf3TBRVTk6ObrrpJo0dO7bA+y+en3W1zyVd2fuSk5Oju+66S88991yBdfMSv4LUrFlTkvTTTz8V69IJ2dnZuuuuu/THH3/o+eefV82aNeXn56ejR4+qZ8+eTt89AwYMUPv27bVgwQItWbJE//73vzVq1CgtX75cN998symfz6t1+vRpNW/eXAEBARoxYoSio6Pl7e2tLVu26Pnnn79m36V/9b77+Pho1apVWrFihb766istXrxYs2fP1p133qlvvvnGspUngWuF5AqAkypVqujbb7/VmTNnnP7inzfk5NILYO7duzdfG7/88ot8fX0dK8h9/vnn6tGjh8aMGeOoc+7cOZ0+fbrAGPbu3auWLVs6bqempioxMVF33313sY8rz+V+0Hft2lUJCQn67LPPHNeC6dKly1U/5+eff66zZ8/m6zksyG233abbbrtNr776qmbOnKmHHnpIs2bNUp8+fa5qMY+CFPbeXTyBvVy5cgUOv7u016cosVWpUkU5OTnau3ev08IRx44d0+nTp027yGpRz2UzZGdnKzU1VVLuMDlfX1/t2bMnX73du3fLzc0tX8JzqbwY9+7d63SdtKysLB04cED169d3lEVHR2v79u1q1aqV6edKcUVHRys1NdXRU1UUTZs2Vbly5fTZZ5/pxRdfLPKP8p9++km//PKLpk+fru7duzvKly5dWmisAwcO1MCBA7V3717FxMRozJgx+uSTTxx1Lvf5vBrR0dHKycnRzz//rJiYmALrrFy5UqdOndK8efN0xx13OMrzVoC92JW+/3nnV2HnaHBwcLEuB+Dm5qZWrVqpVatWGjt2rF577TW99NJLWrFiRbHOBcCVMCwQgJO7775b2dnZ+Xps3n77bdlsNrVt29apfN26dU7zpn777TctXLhQrVu3dvwYcnd3z9fL8M477xTa+/HBBx84zWuYOHGizp8/n++5i8PPz6/QpC44OFht27bVJ598ok8//VRt2rRRcHDwVT3f9u3bNWDAAJUrV079+vUrtN6ff/6Z7zXK+5GVN/Qob/W/wuIvqgULFujo0aOO2xs3btSGDRucXufo6Gjt3r3bMcRTyj2mS1f+KkpseUnypSvF5fW4tGvXrkjHcbnnKcq5fLVWrFih1NRUR8Lj7u6u1q1ba+HChU5DLY8dO6aZM2eqadOmjqFvhWnYsKFCQkI0adIkZWZmOsqnTZuW77V+8MEHdfToUU2ePDlfO2fPns03vOtaePDBB7Vu3TotWbIk332nT5/W+fPnC32sr6+vnn/+ee3atUvPP/98gT2Vn3zyiTZu3Fjg4/O+fy5+nGEYGj9+vFO99PR0nTt3zqksOjpa1113neOzdyWfz6vRsWNHubm5acSIEfl6oPKet6DjyczM1HvvvZevPT8/vysaJhgeHq6YmBhNnz7d6XzasWOHvvnmm2L9QeuPP/7IV2bmawWUdvRcAXDSvn17tWzZUi+99JIOHjyo+vXr65tvvtHChQs1YMAARUdHO9WvW7eu4uPjnZZil3KXFc5zzz336OOPP1ZgYKBq166tdevW6dtvv3VaFv5imZmZatWqlR588EHt2bNH7733npo2bap77733qo+vQYMG+vbbbzV27FhFREQoKirKaTns7t27Oy4EPHLkyCK1/f333+vcuXPKzs7WqVOntGbNGn355ZcKDAzU/PnzHddBKsj06dP13nvvqVOnToqOjtaZM2c0efJkBQQEOH7g+Pj4qHbt2po9e7ZuvPFGlS9fXnXr1r3scMPLqVatmpo2baonnnhCGRkZGjdunCpUqOA0hOuRRx7R2LFjFR8fr969e+v48eOaNGmS6tSp47QYQ1Fiq1+/vnr06KEPPvjAMdRp48aNmj59ujp27OjUa3k1inouF0VycrKjR+P8+fOOSwb4+PjohRdecNR75ZVXHNf8efLJJ+Xh4aH3339fGRkZevPNN//yeTw9PfXKK6/oscce05133qkuXbrowIEDmjp1ar45Vw8//LDmzJmjxx9/XCtWrNDtt9+u7Oxs7d69W3PmzNGSJUv+cqiw2Z599ll9+eWXuueeexzLtKelpemnn37S559/roMHD172DxjPPvusdu7cqTFjxmjFihW6//77FRYWpqSkJC1YsEAbN27U2rVrC3xszZo1FR0drUGDBuno0aMKCAjQF198kW+u3i+//OL4vqldu7Y8PDw0f/58HTt2TF27dpV0ZZ/Pq1GtWjW99NJLGjlypJo1a6bOnTvLbrfrhx9+UEREhEaNGqUmTZqoXLly6tGjh5566inZbDZ9/PHHBSadDRo00OzZs5WQkKBbb71V/v7+at++fYHP/dZbb6lt27Zq3Lixevfu7ViKPTAw0HHNrqIYMWKEVq1apXbt2qlKlSo6fvy43nvvPVWqVElNmzYtcnuAy7n2CxQCKEl5yyb/1ZLBPXr0MPz8/Aq878yZM8YzzzxjREREGJ6enkb16tWNt956y2lJYMPIXXa4X79+xieffGJUr17dsNvtxs033+y0FLJh5C513KtXLyM4ONjw9/c34uPjjd27dxtVqlRxWhY9L/bvvvvO6Nu3r1GuXDnD39/feOihh5yWCTaM4i/Fvnv3buOOO+4wfHx8DEn5lmXPyMgwypUrZwQGBhpnz5697GuYJ2+55bzN09PTCAkJMe644w7j1VdfNY4fP57vMZcub71lyxajW7duRuXKlQ273W5UrFjRuOeee5yWuTcMw1i7dq3RoEEDw8vLy2nZ58u9n4Utxf7WW28ZY8aMMSIjIw273W40a9bM2L59e77Hf/LJJ8YNN9xgeHl5GTExMcaSJUvytXm52Ap6H7Kysozhw4cbUVFRhqenpxEZGWkMHjzYaTlpw8hd8rtdu3b5YipsifhLXem5fDVLsdtsNqN8+fLGvffea2zevDlf/S1bthjx8fGGv7+/4evra7Rs2dJYu3atU52/+ty+9957RlRUlGG3242GDRsaq1atKvA1yMzMNN544w2jTp06ht1uN8qVK2c0aNDAGD58uJGcnOyol/fZLcjF793FsV26FPuVvi9nzpwxBg8ebFSrVs3w8vIygoODjSZNmhijR492uuTC5Xz++edG69atjfLlyxseHh5GeHi40aVLF2PlypWOOgUtxf7zzz8bcXFxhr+/vxEcHGw8+uijxvbt252+K06ePGn069fPqFmzpuHn52cEBgYasbGxxpw5cxztXOnn89LX7kqXYs8zZcoU4+abb3a8d82bNzeWLl3quH/NmjXGbbfdZvj4+BgRERHGc889ZyxZsiTfcaemphr/+Mc/jKCgIEOS47Na0PekYRjGt99+a9x+++2Gj4+PERAQYLRv3974+eef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n66goCB17NjRqbxt27Z64IEHVK9ePcXHx2vRokU6ffq05syZU2hbgwcPVnJysmP77bffSjh6AABgmpwc6eDB3C0nx+poAJRhLjks0DAMTZkyRQ8//LC8vLwuWzcoKEg33nij9u3bV2gdu90uu91udpgAAOBaOHtWiorK3U9Nlfz8rI0HQJnlkj1X3333nfbt26fevXv/Zd3U1FTt379f4eHh1yAyAAAAAGWVpclVamqqtm3bpm3btkmSDhw4oG3btunw4cOScofrde/ePd/jPvroI8XGxqpu3br57hs0aJC+++47HTx4UGvXrlWnTp3k7u6ubt26leixAAAAACjbLB0WuGnTJrVs2dJxOyEhQZLUo0cPTZs2TYmJiY5EK09ycrK++OILjR8/vsA2jxw5om7duunUqVMKCQlR06ZNtX79eoWEhJTcgQAAAAAo82yGYRhWB1HapKSkKDAwUMnJyQoICLA6HAAAcDlpaZK/f+4+c67gala2tzqC0qvFf62OQFLRcgOXnHMFAAAAAKUNyRUAAAAAmMAll2IHAABw8PCQnnzywj4AWIRvIAAA4NrsdmnCBKujAACGBQIAAACAGei5AgAArs0wpJMnc/eDgyWbzdp4AJRZJFcAAMC1padLFSvm7rMUOwALMSwQAAAAAExAcgUAAAAAJiC5AgAAAAATkFwBAAAAgAlIrgAAAADABCRXAAAAAGAClmIHAACuzcND6tHjwj4AWIRvIAAA4NrsdmnaNKujAACGBQIAAACAGei5AgAArs0wpPT03H1fX8lmszYeAGUWPVcAAMC1padL/v65W16SBQAWILkCAAAAABOQXAEAAACACUiuAAAAAMAEJFcAAAAAYAKSKwAAAAAwAckVAAAAAJiA61wBAADX5u4u3X//hX0AsAjJFQAAcG3e3tLcuVZHAQAMCwQAAAAAM5BcAQAAAIAJSK4AAIBrS0uTbLbcLS3N6mgAlGEkVwAAAABgApIrAAAAADAByRUAAAAAmIDkCgAAAABMQHIFAAAAACYguQIAAAAAE3hYHQAAAMBVcXeX7r77wj4AWITkCgAAuDZvb+mrr6yOAgAYFggAAAAAZiC5AgAAAAATkFwBAADXlpYm+fnlbmlpVkcDoAxjzhUAAHB96elWRwAA9FwBAAAAgBlIrgAAAADABCRXAAAAAGACS5OrVatWqX379oqI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flrTpk1Tu3btVLduXdlsNrPjAgAAAACXUqzkatasWZozZ47uvvtus+MBAAAAAJdUrKXYvby8VK1aNbNjAQAAAACXVazkauDAgRo/frwMwzA7HgAAgKLx9ZWOH8/dfH2tjgZAGVasYYGrV6/WihUr9PXXX6tOnTry9PR0un/evHmmBAcAAPCXbDYpJMTqKACgeMlVUFCQOnXqZHYsAAAAAOCyipVcTZ061ew4AAAAiicjQ0pIyN0fO1ay262NB0CZVaw5V5J0/vx5ffvtt3r//fd15swZSdLvv/+u1NRU04IDAAD4S+fPS++9l7udP291NADKsGL1XB06dEht2rTR4cOHlZGRobvuukvXXXed3njjDWVkZGjSpElmxwkAAAAApVqxeq6efvppNWzYUH/++ad8fHwc5Z06ddKyZctMCw4AAAAAXEWxeq6+//57rV27Vl5eXk7lVatW1dGjR00JDAAAAABcSbF6rnJycpSdnZ2v/MiRI7ruuuuuOigAAAAAcDXFSq5at26tcePGOW7bbDalpqZq6NChuvvuu82KDQAAAABcRrGGBY4ZM0bx8fGqXbu2zp07p3/84x/au3evgoOD9dlnn5kdIwAAAACUesVKripVqqTt27dr1qxZ+vHHH5WamqrevXvroYceclrgAgAAoMT5+EgHDlzYBwCLFCu5kiQPDw/985//NDMWAACAonNzk6pWtToKAChecjVjxozL3t+9e/diBQMAAAAArqpYydXTTz/tdDsrK0vp6eny8vKSr68vyRUAALh2MjOll17K3X/1VemSS8UAwLVSrNUC//zzT6ctNTVVe/bsUdOmTVnQAgAAXFtZWdLo0blbVpbV0QAow4qVXBWkevXqev311/P1agEAAABAWWBaciXlLnLx+++/m9kkAAAAALiEYs25+vLLL51uG4ahxMREvfvuu7r99ttNCQwAAAAAXEmxeq46duzotHXu3FnDhg1TvXr1NGXKlCtuZ9WqVWrfvr0iIiJks9m0YMGCv3zMypUrdcstt8hut6tatWqaNm1avjoTJkxQ1apV5e3trdjYWG3cuLEIRwcAAAAARVes5ConJ8dpy87OVlJSkmbOnKnw8PArbictLU3169fXhAkTrqj+gQMH1K5dO7Vs2VLbtm3TgAED1KdPHy1ZssRRZ/bs2UpISNDQoUO1ZcsW1a9fX/Hx8Tp+/HiRjxMAAAAArpTNMAzD6iAkyWazaf78+erYsWOhdZ5//nl99dVX2rFjh6Osa9euOn36tBYvXixJio2N1a233qp3331XUm4iGBkZqX/961964YUXriiWlJQUBQYGKjk5WQEBAcU/KAAAUPLS0iR//9z91FTJz8/aeICiWNne6ghKrxb/tToCSUXLDYo15yohIeGK644dO7Y4T1GgdevWKS4uzqksPj5eAwYMkCRlZmZq8+bNGjx4sON+Nzc3xcXFad26dYW2m5GRoYyMDMftlJQU02IGAAAlzMdHyvvDq4+PtbEAKNOKlVxt3bpVW7duVVZWlmrUqCFJ+uWXX+Tu7q5bbrnFUc9ms5kT5f9LSkpSaGioU1loaKhSUlJ09uxZ/fnnn8rOzi6wzu7duwttd9SoURo+fLipsZqKv2gUrpT8RQMAYCE3N6lOHaujAIDiJVft27fXddddp+nTp6tcuXKSci8s3KtXLzVr1kwDBw40NciSNnjwYKfeuJSUFEVGRloYEQAAAABXU6zkasyYMfrmm28ciZUklStXTq+88opat25dYslVWFiYjh075lR27NgxBQQEyMfHR+7u7nJ3dy+wTlhYWKHt2u122e32EokZAACUsMxM6bXXcvdffFHy8rI2HgBlVrFWC0xJSdGJEyfylZ84cUJnzpy56qAK07hxYy1btsypbOnSpWrcuLEkycvLSw0aNHCqk5OTo2XLljnqAACAv5msLGn48NwtK8vqaACUYcVKrjp16qRevXpp3rx5OnLkiI4cOaIvvvhCvXv3VufOna+4ndTUVG3btk3btm2TlLvU+rZt23T48GFJucP1unfv7qj/+OOP69dff9Vzzz2n3bt367333tOcOXP0zDPPOOokJCRo8uTJmj59unbt2qUnnnhCaWlp6tWrV3EOFQAAAACuSLGGBU6aNEmDBg3SP/7xD2X9/1+IPDw81Lt3b7311ltX3M6mTZvUsmVLx+28eU89evTQtGnTlJiY6Ei0JCkqKkpfffWVnnnmGY0fP16VKlXShx9+qPj4eEedLl266MSJExoyZIiSkpIUExOjxYsX51vkAgAAAADMdFXXuUpLS9P+/fslSdHR0fL7m1xXotRd54rVAgvHaoEAAK5zBVfG77zClZLfeUXJDYo1LDBPYmKiEhMTVb16dfn5+amUXI8YAAAAAK65YiVXp06d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+vTpWrhwoaOnbuXKlbrzzjvVv39/p8edOHFCXl5eTr1eAIDSh+QKAFDq+fj4OBKhZcuWac+ePVq6dKn+97//KS0tTfHx8SpXrpx++OEHzZ07V99++22+BGXZsmXatWuXVq5cqc8++0zz5s3T8OHDHfenpaUpISFBmzZt0rJly+Tm5qZOnTopJyfHqZ1nn31WAwcO1NatW9W4cWO1b99ep06dKvIxDRo0SA8++KDatGmjxMREJSYmqkmTJurTp49mzpypjIwMR91PPvlE119/ve68884iPw8A4NohuQIAlFqGYejbb7/VkiVLHImFn5+fPvzwQ9WpU0d16tTRzJkzde7cOc2YMUN169bVnXfeqXfffVcff/yxjh075mjLy8tLU6ZMUZ06ddSuXTuNGDFC//nPfxzJ03333afOnTurWrVqiomJ0ZQpU/TTTz/p559/doqpf//+uu+++1SrVi1NnDhRgYGB+uijj4p8bP7+/vLx8XH00oWFhcnLy0udO3eWJC1cuNBRd9q0aY65aACA0ovkCgBQ6vzvf/+Tv7+/vL291bZtW3Xp0kXDhg2TJN10001O86x27dql+vXry8/Pz1F2++23KycnR3v27HGU1a9fX76+vo7bjRs3Vmpqqn777TdJ0t69e9WtWzfdcMMNCggIUNWqVSVJhw8fdoqtcePGjn0PDw81bNhQu3btMu3Yvb299fDDD2vKlCmSpC1btmjHjh3q2bOnac8BACgZLGgBACh1WrZsqYkTJ8rLy0sRERHy8Ljw39XFSZSZ2rdvrypVqmjy5MmKiIhQTk6O6tat6zQv61rp06ePYmJidOTIEU2dOlV33nmnqlSpcs3jAAAUDT1XAIBSx8/PT9WqVVPlypWdEquC1KpVS9u3b1daWpqjbM2aNXJzc3MseCFJ27dv19mzZx23169fL39/f0VGRurUqVPas2ePXn75ZbVq1Uq1atXSn3/+WeDzrV+/3rF//vx5bd68WbVq1SrWcXp5eSk7Oztf+U033aSGDRtq8uTJmjlzph555JFitQ8AuLZIrgAALu2hhx6St7e3evTooR07dmjFihX617/+pYcfflihoaGOepmZmerdu7d+/vlnLVq0SEOHDlX//v3l5uamcuXKqUKFCvrggw+0b98+LV++XAkJCQU+34QJEzR//nzt3r1b/fr1059//lns5Kdq1ar68ccftWfPHp08eVJZWVmO+/r06aPXX39dhmGoU6dOxWofAHBtkVwBAFyar6+vlixZoj/++EO33nqr7r//frVq1UrvvvuuU71WrVqpevXquuOOO9SlSxfde++9jnlcbm5umjVrljZv3qy6devqmWee0VtvvVXg873++ut6/fXXVb9+fa1evVpffvmlgoODixX7o48+qho1aqhhw4YKCQnRmjVrHPd169ZNHh4e6tatm7y9vYvVPgDg2rIZhmFYHQQAAHB28OBBRUdH64cfftAtt9xidTgAgCtAcgUAQCmSlZWlU6dOadCgQTpw4IBTbxYAoHRjWCAAAKXImjVrFB4erh9++EGTJk2yOhwAQBHQcwUAAAAAJqDnCgAAAABMQHIFAAAAACYguQIAAAAAE5BcAQAAAIAJSK4AAAAAwAQkVwAAAABgApIrAAAAADAByRUAAAAAmOD/AFdzNlVNkwFDAAAAAElFTkSuQmCC\n"},"metadata":{}}],"execution_count":57},{"cell_type":"code","source":"# Function to make predictions\n# Move model to GPU if available\n# Move model to GPU if available\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel.to(device)\n# Function to make predictions\ndef predict(texts):\n # Tokenize the texts and move to the device\n inputs = tokenizer(texts, padding=True, truncation=True, return_tensors='pt').to(device)\n\n with torch.no_grad():\n outputs = model(**inputs)\n\n # Get the logits (raw outputs) from the model\n logits = outputs.logits\n\n # Apply softmax to get probabilities\n probabilities = torch.nn.functional.softmax(logits, dim=1)\n\n # Return the probabilities as a NumPy array on the CPU\n return probabilities.cpu().numpy() \n\n# Example explanation using LIME\nfrom lime.lime_text import LimeTextExplainer\n\n# Initialize the explainer\nexplainer = LimeTextExplainer(class_names=['0', '1'])\n\n# Example dataset (replace with your actual dataset)\nsmall_train_dataset1 = [\n \"ባየሁህ ቁጥር አብረን ልንሰራው የምንችለውን ሁሉንም ባለጌ ነገር መገመት አያቅተኝም\",\n \"በጣም የማይቋቋሙት ነሽ ሁለታችንም ከእንግዲህ ልንወስደው እስካልቻልን ድረስ እያንዳንዳችሁን ኢንች ማሰስ እፈልጋለሁ\",\n \"ሁልጊዜ ባየሁህ ጊዜ የእኔ ቀን ወዲያውኑ ይሻሻላል; በእኔ ላይ ያን አስደናቂ ተፅእኖ አለህ!\",\n \"በጣም የሚያምር ፈገግታ አለህ ክፍሉን በሙሉ ያበራል\"\n \n]\n\n# Generate explanations\nfor i in range(4): # Adjust the range for more examples\n exp = explainer.explain_instance(small_train_dataset1[i], \n predict,\n num_features=10)\n exp.show_in_notebook(text=True)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T15:57:21.539517Z","iopub.execute_input":"2025-08-24T15:57:21.539864Z","iopub.status.idle":"2025-08-24T15:57:42.451105Z","shell.execute_reply.started":"2025-08-24T15:57:21.539840Z","shell.execute_reply":"2025-08-24T15:57:42.450057Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"","text/html":"\n \n \n
\n \n \n "},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"","text/html":"\n \n \n
\n \n \n "},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"","text/html":"\n \n \n
\n \n \n "},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"","text/html":"\n \n \n
\n \n \n "},"metadata":{}}],"execution_count":91},{"cell_type":"code","source":"import lime\nimport lime.lime_text\ndata = [\n\"በእኔ ላይ ምን ያህል ጥሩ ስሜት እንደሚሰማዎት ማሰብ ማቆም አልችልም ሌሊቱን ሙሉ እንዲሰማኝ እፈልጋለሁ\",\n\"ያንቺ ልብስ ለብሰሽ ያለሽ ሀሳብ ብቻ ዱርዬ ገፋፋኝ እንደገና ለማየት መጠበቅ አልችልም\",\n\"ስሜን በሹክሹክታ የምትናገሩበትን መንገድ ወድጄዋለሁ የሚያቃስቱዎትን ነገሮች ሁሉ ለማድረግ እንድፈልግ ያደርገኛል\",\n\"ባየሁህ ቁጥር አብረን ልንሰራው የምንችለውን ሁሉንም ባለጌ ነገር መገመት አያቅተኝም\",\n\"በጣም የማይቋቋሙት ነሽ ሁለታችንም ከእንግዲህ ልንወስደው እስካልቻልን ድረስ እያንዳንዳችሁን ኢንች ማሰስ እፈልጋለሁ\",\n\"ሁልጊዜ ባየሁህ ጊዜ የእኔ ቀን ወዲያውኑ ይሻሻላል; በእኔ ላይ ያን አስደናቂ ተፅእኖ አለህ!\",\n\"በጣም የሚያምር ፈገግታ አለህ ክፍሉን በሙሉ ያበራል\",\n\"የምትስቁበትን መንገድ ወድጄዋለሁ ተላላፊ ነው እና አብሬ መሳቅ እንድፈልግ ያደርገኛል\",\n\"እንደ ንጹህ አየር እስትንፋስ ነዎት በዙሪያዎ መሆን በጣም የሚያድስ ስሜት ይሰማዎታል\",\n\"ስለ አንተ ባሰብኩ ጊዜ ፈገግ ከማለት በቀር ምንም ማድረግ አልችልም፣ ልቤን እንዴት እንደምታስደስት ታውቃለህ!\",\n]\nlabels = [1, 1, 1, 1, 1, 0, 0, 0, 0, 0]\n# Create a pandas DataFrame\ndf = pd.DataFrame({\"text\": data, \"label\": labels})\nsample_text = df[\"text\"][0]\nsample_label = df[\"label\"][0]\n\ndef predictor(texts):\n trainer.model.eval()\n inputs = tokenizer(texts, return_tensors=\"pt\", padding=True, truncation=True).to('cuda')\n with torch.no_grad():\n print(next(trainer.model.parameters()).device)\n outputs = trainer.model(**inputs).logits\n return torch.nn.functional.softmax(outputs, dim=-1).cpu().numpy()\n\nexplainer_lime = lime.lime_text.LimeTextExplainer(class_names=['0', '1'])\n\n# Ensure model is on cuda and set attn_implementation\ntrainer.model = trainer.model.to(\"cuda\")\ntrainer.model.config.attn_implementation = \"eager\"\n\ndef get_attention(text):\n inputs = tokenizer(text, return_tensors=\"pt\").to('cuda')\n outputs = trainer.model(**inputs, output_attentions=True)\n attention = outputs.attentions\n return attention\n\n# Loop through all data points and print the explanations\nfor index, row in df.iterrows():\n sample_text = row[\"text\"]\n sample_label = row[\"label\"]\n\n explanation = explainer_lime.explain_instance(\n sample_text,\n classifier_fn=predictor,\n )\n print(f\"Explanation for sample {index}:\")\n print(dict(explanation.as_list()))\n print(\"-\" * 40)\n\n attention_values = get_attention(sample_text)\n print(\"Attention values for first layer, first head, first token:\")\n print(attention_values[0][0][0][0])\n print(\"=\" * 40)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T13:20:11.696692Z","iopub.status.idle":"2025-08-24T13:20:11.697081Z","shell.execute_reply":"2025-08-24T13:20:11.696916Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import matplotlib.pyplot as plt\nfrom sklearn.metrics import ConfusionMatrixDisplay\ndisp = ConfusionMatrixDisplay(confusion_matrix=cm)\ndisp.plot()\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T13:20:11.697956Z","iopub.status.idle":"2025-08-24T13:20:11.698329Z","shell.execute_reply":"2025-08-24T13:20:11.698164Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# prenting each values of the metriics used \nfrom sklearn.metrics import accuracy_score, precision_score, recall_score,f1_score\nprint(accuracy_score(true_labels, predicted_labels))\nprint(precision_score(true_labels, predicted_labels))\nprint(recall_score(true_labels, predicted_labels))\nprint(f1_score(true_labels, predicted_labels))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-24T13:20:11.699251Z","iopub.status.idle":"2025-08-24T13:20:11.699642Z","shell.execute_reply":"2025-08-24T13:20:11.699460Z"}},"outputs":[],"execution_count":null}]}