## 3 Research Methodology
### Classification  
The purpose of multilabel text classification is to classify text data into multiple categories or labels using ML models. These models are broadly categorized into two types: supervised and unsupervised. In this phase of the approach, we have divided the sentiment, sarcasm, and stance class dataset into 80% for training and 20% for testing. We trained the proposed approach using one vs. rest classifier approaches for every class individually. We have also trained a multilabel classification model that simultaneously considers sentiment, sarcasm, and stance. Different feature types, such as unigram, bi-gram, and tri-gram, are used to enhance our proposed model performance. Document frequency for the term is used for performing feature selection for unigram, bi-gram, and tri-gram in higher and lower thresholds. A count between 1 and 5 document occurrences is used for words with a low document occurrence. For words that appear in higher numbers, a percentage value between 20% and 65% is used. The best combination of lower and higher word counts, and percentages can be found through the grid search method. Lower and higher document count words are removed through the \"min_df\" and \"max_df\" options available in TfidfVectorizer: [[https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)]([https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)) (accessed on 1 June 2023) and CountVectorizer: [[https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html)]([https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html)) (accessed on 1 June 2023). These two vectors are from the popular scikit-learn Python machine-learning library for choosing low and high-frequency words, respectively [28]. The feature vector is trained for the base model using training data from a text corpus and generated for training and validation data using a trained vector. At the base model,ETC, LRC, and RFC are used. From each base model, class probabilities are obtained for each class for training data and validation data. The model is trained using logistic regression. Feature selection for the meta-model is performed using a metaheuristics algorithm. Finally, actual vs. predicted values are compared for actual and predicted labels for validation data using the F1-score. For the metaheuristic, different hyper-parameters are used, such as 15 as the number of generations to evaluate 150 populations. Then, 0.9 is used as the probability of crossover, and 0.1 is the probability of mutation. Individual features represent feature type, feature vector type, modeling technique, and class for which class probability is predicted. The final feature subset is used to identify which base models have no contribution to the solution and is eliminated from the list of base models. The text feature selection with an ensemble module is used [29]. The steps of proposed feature selection-based ML models for multilabel Arabic text classification are given in Algorithm 1.