## 1 Introduction  
There has been an increase in human interactions over recent years due to the rise in globalization [1]. Coupled with the increase in dependency on electronic communication, the amount of electronic data generated has multiplied each day. This electronic data can be in different modalities, such as sound, image, video, or text. Textual communication has always been one of the predominant methods of communication in human society since the invention of writing by different cultures around the world [2]. Added to the increase in human interactions in recent years, a large amount of textual information is generated daily from different sources, such as web-pages, blogs, emails, social media, and articles. To understand the content of textual information, many language analysis tasks, such as lexical (or morphological) analysis, syntax analysis (or parsing), semantic analysis, topic modeling, and text classification, can be performed on the text corpus. In this paper, we focus on text classification and provide a machine-learning solution to automate the classification of textual information. Text classification consists of assigning a sentence or document to an appropriate predefined category [3]. This category can involve topic, sentiment, language, or all. So, text classification tasks may include news classification, emotion classification, sentiment analysis, citation intent classification, spam classification, and so on. This is important in many institutions for creating archives and the organization of large amounts of text needed for effective planning and decision-making on their projects. In general, depending on the type of category, text classification can be divided into topic classification, sentiment classification (or analysis), language classification, and hybrid classification based on any two or all three of these categories. The pipeline of a general text classification task in NLP is presented in [4]. The initial step in this pipeline is text preprocessing, where the text corpus is processed for case harmonization, noise removal, tokenization, stemming, lemmatization, normalization, feature extraction, and vectorization. After preprocessing, the vectorized features are then fed into a classification algorithm that outputs a prediction of the category which defines the given text corpus. During preprocessing, case harmonization involves setting all text in the corpus to the same case, that is, either lowercase or uppercase. Noise removal involves the removal of stop words and special characters from the corpus. Tokenization involves splitting the text into small chunks of words or sentences, called tokens. Stemming involves reducing words to their root or base form. Lemmatization involves breaking a word down to its root meaning to identify similarities. Furthermore, normalization is the mapping of different, but semantically equivalent, phrases onto a single canonical representative phrase. It can be divided into morphological normalization, such as stemming and lemmatization, lexical normalization, such as spelling correction, syntactic normalization, such as grammatic correction, and semantic normalization, such as synonyms elimination. Since stemming and lemmatization are types of morphological normalization techniques, the normalization step usually involves lexical, syntactic, and/or semantic normalization. Feature extraction involves the selection of features required for training and classification. Vectorization involves converting selected features from a text corpus into numerical vectors. Different types of vectorization techniques are used in NLP, such as Bag-of-Words, Term Frequency-Inverse Document Frequency (TF-IDF), Word2 Vec, and Continuous Bag-of-Words (CBOW) vectorizations. The importance of text classification has led to the development of many algorithms to automate the process [5]. Such algorithms may use either a deterministic, stochastic, or hybrid approach to infer the category of a text corpus.