The idea of building an artificial intelligent program dates back at least as far as Turing's paper on "Computing Machinery and Intelligence" (Turing, 1950) was published, in which he asked the famous question "Can a machine think?", and in the ongoing of the answer to this question, it can be said that the entire field of Artificial Intelligence (AI) has been enhanced.
Artificial intelligence (AI) is being utilized to improve technology development and applications due to its unbelievable capability of dealing with big data, complexity, high accuracy, and speedy processing. Marvin Lee Minsky, an
American mathematician and computer scientist, one of the founding fathers of the science of artificial intelligence (AI), defined AI as "the science of making machines do things that would require intelligence if done by men."
The AI assistants/chatbots have revolutionized by understanding human queries in different languages and appropriately extraction the meaningful information. The main aim of these chatbots is to supply informative, immediate, meaningful, and context-oriented responses to assist their users in the asked questions.
Chatbot is a computer program that interacts with users using natural
Languages. Chatbot systems permit to realize simply a dialogue system based on natural language. chatbot can be used in multiple cases entertainment chatbots (Zeka [54] , museumBot [61] , etc.), educational chatbots (TutorBot [33] , FreudBot [27] , etc.), health care chatbots (SPeCECA [41] , MedBot [34] , Mandy [37] , etc.), and banking service chatbots ( [19] , [5] ) and many more other domains.
The influence and the spreading of chatbots in society grow constantly, so we can take advantage of this aspect in an emergency situation like, the one which the whole world suffers these days, Covid-19 infection. The usage of chatbots could reduce the insufficient of real, correct, and availability of information provided to citizens. As machines do not need a break like human beings, they could ensure a 24-hour service for anyone who has access to a computer or to a smartphone. Citizens, therefore, does not need to conform to the opening hours of medical call centers.
Furthermore, chatbots are able to reply instantly and increase the accessibility of psychological support in such an emergency situation due to that Coronavirus is a new disease. Another benefit of using chatbots in emergency situations is the scalability of chatbots as they can respond to multiple users at the same time and can consequently reduce personnel costs.
The AI Chatbots retrieve information through different approaches. In modern practice, these approaches use a variety of repository structures such as conventional (Relational) and modern (NoSQL) database systems, ontologies, AIML, JSON files, etc.
In recent years, the development of ontologies has moved from the realm of artificial intelligence laboratories to the offices of experts in the field. Ontologies have become commonplace on the World Wide Web and a modeling trend in the development of information systems where we can take advantage of the great benefits they provide. Ontologies are comprehensive, human-readable, sharable, and formal it means that they are expressed in a language that has a well-defined semantics. Ontologies are important for application integration solutions because they enable a common and shared understanding of the data that exists within an application. Ontologies also make the communication between people and information systems easier. In [3] , [35] and [18] Knowledge of the Semantic Web was used to enhance the capabilities of a language-independent conversational agent-oriented towards solving question-answering tasks. Currently, developers who wish to use ontology repositories needs should learn about the contents of the ontology, which means understanding OWL or RDF, and to query these ontologies we need an ontology query language like SPARQL. Such requirements are some of the major causes, the Semantic Web has not become the main trend as fewer than expected users are utilizing such knowledge.
In this master thesis, an ontology-based chatbot "COVID Assistant" is proposed to provide an easy to use, domain-independent, scalable, dynamic, and smart conversational agent.
The proposed system provides a text-to-text conversational agent to simulate a human conversation; the chatbot architecture integrates an NLP tool kit to extract and understand the user input, an ontology as a Knowledge-base, a finite state machine as the engine of the chatbot. 
This dissertation is organized as follows:
1. The next chapter introduces the essential concepts for defining the field of study. indeed, a bibliographical study on the famous chatbots of the literature as well as a discussion is carried out on the different chatbots.
Then, the foundation of the Semantic Web is studied. In the latter, we discussed the appearance of the semantic web, the ontological components and we cited the main languages of representation of ontologies. The last section is dedicated to the study of finite state machines. 
In this chapter, we start by talking about artificial intelligence, the field that includes chatbots, then we recall the appearance of chatbots, citing the most important ones in the literature up to today's famous ones, then we start the foundation of the semantic web and the state machine.
In computer science, artificial intelligence (AI), also called machine intelligence, is the intelligence demonstrated by machines, as opposed to the natural intelligence displayed by humans. According to AI textbooks, Artificial Intelligence is based on how a machine can perceive its environment and take actions that maximize its chance of successfully achieving its goals. In everyday language, the term "artificial intelligence" is often used to describe machines (or computers) that mimic the "cognitive" functions that humans associate with the human mind, such as "learning" and "problem-solving". AI gives the supreme power to simulate human behaving to a computer.
Chatbots are a real example of artificial intelligence, a chatbot is a conversational software system that is designed to emulate the communication capabilities of a human being that interacts automatically with a user. It employs Natural
Language Processing and Pattern Recognition techniques to identify the meaning and provide meaningful responses to questions posed by humans.
It represents a modern form of customer assistance powered by artificial intelligence via a chat interface. For example, it makes it easy for customers to get responses to their queries in a convenient way without spending their time waiting in phone queues or send repeated emails.
In 1950, a British mathematician, Alan Turing published a paper entitled "Computing Machinery and Intelligence" [60] where he asked the famous question "Can a machine think?" and he proposed the Turing test. It's a test that somehow answers his question. The fame of this question motivated the development of the first chatbot in 1966 ELIZA. And to answer the latter, in this paper
Turing suggested "The Imitating Game". The Imitation Game can be played between three people: (A) who is a man, (B) who is a woman, and (C) who is the interrogator and who can be a man or a woman. The purpose of the interrogator is to determine who is the woman and who is the man.
Turing then wonders what will happen if A is replaced by a machine; can the interrogator tell the difference between the two? According to him, if the interrogator who converses with an unknown entity (via the keyboard, for example) thinks that this entity is human when the entity is in fact a computer, then this computer has managed to pass the Turing test.
ELIZA and PARRY are the first two programs that have passed the Turing
Test. This article is widely regarded as one of the fundamental foundations of artificial intelligence and the Turing test which has been proposed in this article can be considered as a reference for assessing the intelligence of a computer system [16] . In 1990, an agreement was reached between Hugh Loebner and the Cambridge Center for Behavioral Studies to establish a competition based on the application of the Turing test. allowing human-machine interaction via natural language, it was designed to imitate a psychotherapist [63] .
The program procedure is quite simple:
ELIZA searches for text entered by the user and detects the presence of keywords. When such a word is found, it then applies pre-programmed rules to generate appropriate responses based on these keywords, otherwise, if a user does not enter a keyword, ELIZA responds with a default phrase, such as "Very interesting", "Please continue." or "Can you think of a specific example?"
The mechanisms behind the transformation rule are a number of functions that serve to:
• Break down a character string according to certain criteria.
• Re-assemble a decomposed chain according to certain specifications.
Considering the sentence "I am very unhappy these days" ELIZA's answer will be "How long have you been unhappy these days" applying the mechanism of transformation rules the chain is broken down into two parts, the first "I am"
is replaced by "How long have you been" and the second part has remained stable. This transformation is in the form "I am BLAH" is transformed into "How long have you been BLAH", regardless of the meaning of BLAH.
A slightly more complicated example is given by the sentence "It seems that you hate me" the answer will be "what makes you think I hate you" the program applied a decomposition into four parts (It seems that you, hate, me ). The transformation will be to throw out the first part, translate the two known words ("you" into "me" and "me" into "you"), add a common phrase "what makes you think" and keep the third part.
Although using a simple technique, ELIZA was able to deceive a large number of people who believed that the program really listened to their problems. Here is an example of a conversation with ELIZA:
ELIZA generally asked users questions to raise them and minimize the risk of error. This type of approach is frequently used in chatbots to make them look more human. But, being a rules-based system, ELIZA could not have meaningful conversations with humans, but rather it could deceive a human into giving the illusion that it is not a computer program.
• User: Men are all alike.
• ELIZA: IN WHAT WAY?
• User: They're always bugging us about something or other.
• ELIZA: CAN YOU THINK OF A SPECIFIC EXAMPLE?
• User: Well, my boyfriend made me come here.
• ELIZA: YOUR BOYFRIEND MADE YOU COME HERE
• User: He says I'm depressed much of the time.
• ELIZA: I AM SORRY TO HEAR YOU ARE DEPRESSED.
• User: It's true. I am unhappy
• ELIZA: DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE UNHAPPY
• User: I need some help, that much seems certain.
• ELIZA: WHAT WOULD IT MEAN TO YOU IF YOU GOT SOME HELP
• User: Perhaps I could learn to get along with my mother.
• ELIZA: TELL ME MORE ABOUT YOUR FAMILY • . . . make responses more appropriate, precise or believable [3] .
Each category includes a response model and a set of conditions that give meaning to the model known as context. Then the model prepares it and compares it to the nodes of the decision tree. When user data is associated, the chatbot responds or performs an action. AIML models repeat user input using recursive techniques and these are not always meaningful responses. Therefore, rules based on character strings are necessary to determine whether the response creates a correct or meaningful response [38] . The authors of [49] consider ALICE to be the head and the shoulders above the other conversational agents. ALICE was the recipient of Loebner's annual instantiation of the Turing test for artificial intelligence three times in 2000, 2001, and 2004. As this is a predefined set of questions and answer questions, it cannot satisfactorily answer each question [57] . There are several notable research studies where ALICE has been used. The first was an English and German conversational partner for Chinese students [21] . However, a large proportion of students did not like the chatterbot responses and made poor comments on the system [48] .
Despite all of its drawbacks, none of today's chatbots would have been possible without the revolutionary work of Dr. Wallace. Additionally, Wallace's bot served as inspiration for the associated operating system in Spike Jonze's 2013 sci-fi romance film Her [50] .
<aiml version=1.0.1 encoding=UTF-8> < category > < pattern > HELLO BOT < /pattern > < template > < random > < li > Hi! Nice to meet you< /li > < li > Hello, How are you?< /li > < li > Hello! < /li > < /random > < /template > < /category > < /aiml > instance, if someone asks, "Can you eat a car? Mitsuku searches for the properties of "because" finds that the value of "made from" is set to "steal" and responds to "no" because a car is not edible [51] . Mitsuku is a multilingual bot and uses supervised machine learning. As he learns something new, the data is sent to the human manager for verification. Only verified data can be integrated and used by the application [38] .
Mitsuku is available as a flash game on Mousebreaker Games and Facebook Messenger, Twitch group chat, Telegram, and Kik Messenger under the username "Pandorabots". Since then, IBM Watson has offered services to create chatbots for different domains that can process large amounts of data [10] . Watson was designed to apply advanced technologies for natural language processing, infor- Siri can read user emails, text contacts, change music, make phone app calls, find restaurants, find books, set alarms, and give directions. The user can dictate an SMS to send, a search to be done on the web with Safari or even he can chat with it. The genre, accent, and language of Siri are configurable and changeable.
Siri uses ASR (Automatic speech recognition) to translate human speech into text. Using natural language processing (part of speech tagging, noun-phrase chunking, dependency, and constitute parsing), it translates the transcribed text into "parsed-text". Using question and intent analysis, it analyzes the parsed text and detects user commands and actions. that allow customers to interact with devices more intuitively using voice. Alexa uses natural language processing algorithms for voice interaction. It uses these algorithms to receive, recognize, and respond to voice commands [29] . It is capable of voice interaction, reading music, making to-do lists, setting alarms, reading podcasts and audiobooks, and giving the weather, traffic, and other information in real-time. Currently, interaction and communication with Alexa is available in English, French, Spanish, German, and Japanese. 
In this section, we provide a study of chatbots construction and enhancement methods. We first introduce three chatbot designs like in [2] and [42] , which are:
rule-based, retrieval-based and generation-based methods, followed by second way of decomposing that is proposed in [47] and [4] they specify two categories of conversation agents, namely task-oriented and non-task-oriented. Finally, we present a comparative study conducted by authors in [51] in which they rank eight chatbot according to their performance in i) Assessment of Factual Questions, ii). Assessment of Conversational Attributes, and iii). Evaluation of Exceptional queries.
The image 2.9 explains the first proposed decomposition and gives some example for each design. The second classification goal-oriented or non-goal-oriented is now presented.
• A goal-oriented system is one that is designed to help users achieve their goals or complete a specific task in a specific domain such as making a booking, education, healthcare, shopping, or ordering food. They are focusing on developing natural language understanding (NLU) methods which parse the utterance from the user into predefined semantic.
• A non-goal-oriented dialogue system provides users with the means to participate in different domains such as a game, chitchat, or entertainment, without providing the user the help to complete any task in a specific job.
An example of this system is the chatbot which chats with the user in a similar way to a human and provides reasonable and relevant responses ELIZA, PARRY.
Authors in [51] 
The current Web is a set of documents dedicated to humans, stored and manipulated in a purely syntactic way. So, the current Web cannot be manipulated in an intelligent way by computer programs because they are human-oriented.
The growing interest in searching for information on the Web has given rise to the Semantic Web initiative. The Semantic Web, also known as the Intelligent Web, is a body of knowledge where all machines can semantically link data on the Web, thus understanding their meanings, and access them more intelligently, to improve the dialogue between applications and the interaction with the user by providing a better quality of search tasks. It can also be seen as a supplementary layer of knowledge above the current Web or an extension of the current Web.
To reach the goal of creating an intelligent web that will allow reporting on semantics through the handling of the meaning of information through ontologies... Ontologies propose semantic representations of knowledge that can be manipulated by machines.
The main objective of ontologies is to provide the Web with a semantic layer that ensures information retrieval at both the syntactic and semantic levels [66] .
The word ontology is the union of two terms "onto" and "logy". The first term "onto" (or "ontif") means "I am". The second term "logy" (or "logos") is a Greek suffix meaning "science" or "speech". In the philosophical field, Aristotle defined ontology as the science of Being [66] .
For the past decade, computer scientists have been using the term "Ontology",
The definition proposed by Gruber 1993 in [21] "An ontology is an explicit specification of a conceptualization".
One of the first definitions was given by [36] "An ontology defines the basic terms and relations comprising the vocabulary of a topic area as well as the rules for combining terms and relations to define extensions to the vocabulary".
In [56] "An ontology is a formal, explicit specification of a shared conceptualization"
• A 'conceptualization' refers to an abstract model of some phenomenon in the world by having identified the relevant concepts of that phenomenon
• 'Explicit' means that the type of concepts used, and the constraints on their use are explicitly defined.
• 'Formal' refers to the fact that the ontology should be machine-readable, which excludes natural language.
• 'Shared' reflects the notion that an ontology captures consensual knowledge, that is, it is not private to some individual, but accepted by a group.
Despite the diversity of ontological models, they are based on the following main concepts following [7] :
• Concepts (classes or entities). A concept can represent a material object, a notion or an idea. A concept can be divided into three parts:
one or more terms, a notion, and a set of objects. The intension contains the semantics of the concept. It is expressed in terms of properties and attributes, rules, and so on. and constraints. The set of objects is also called an extension of the concept [66] .
• Instances (individuals or objects). Constitute the extended definition/extension of concepts, they represent all the individuals in the ontology.
Instances can be linked by conceptual relations of identity and difference.
• Attributes (properties). Properties are used to define links for individuals in the domain of ontology. They describe and characterize instances of ontology concepts with characteristic values or associations with other concepts. annotation property, data property, object property.
• The relations. These are the defined associations between concepts in the ontology, such as, for example, the "is-a" subsumption relationship that is used to organize concepts into a hierarchy.
• Axiomes: The latter refer to statements and assertions accepted as true in the field of ontology. They are used to verify the consistency of the ontology and to infer new knowledge. they are entity-related assertions.
Instead of relying on entity labels and terms to convey semantics, the designer of ontologies must constrain the possible interpretation of entities through the judicious use of logical axioms to make their meanings much more precise.
In the literature, several languages have been used for the description of ontologies.
These languages offer different levels of expressiveness [66] .
• Extensible Markup Language [45] • Resource Description Framework (RDF) [30] . is an infrastructure that enables the encoding, exchange, and reuse of structured metadata. The RDFS has mechanisms for the description of the resources and their characteristics.
• Darpa Modeling Language of Ontology + Ontology Inference
Layer (DAML+OIL) [15] . is a semantic markup language for Web resources. It builds on earlier W3C standards such as RDF and RDF Schema and extends these languages with richer modeling primitives. in an effort to combine many of the language components of OIL. The language has a clean and well-defined semantics this is a fusion between two languages DAML and OIL. The Darpa Modeling Language of Ontology aims to provide the foundation for the generation of the Semantic Web.
The language first adopted RDF / RDFS as an ontology language to ensure semantic interoperability. As RDF(S) not sufficiently expressive, with respect to the requirements of the future Web, a new language was adopted named DAMLONT. The latter represents an extension of RDF(S) with the capabilities of a knowledge representation language. In the same period, a group of European researchers developed an ontology language called OIL. This language has a syntax based on RDF. It has been built in such a way that its semantics can be specified through a description. very expressive logic.
• Ontology Web Language (OWL) [53] . It enriches the of the RDF schema by defining more vocabulary for the description of complex ontologies. The OWL language is based on formal semantics denied by a rigorous syntax. The OWL language is a language for the representation of ontologies within the Semantic Web. It is an RDF-based language.
The OWL language is derived from the ontology language DAML+OIL.
OWL allows, in addition to RDF(S) primitives, relations between classes (disjunction, intersection, union, etc.), equality, cardinality, etc. The OWL language allows the definition of property types (object property, annotation property, data property), property characteristics, and enumerated classes. The OWL ontology language is split into three sub-languages with an ascending expressivity, namely: OWL-Lite, OWL-DL (Ontology Web
Language-Description Logic) and OWL-Full. 
This chapter presented the key fundamental concepts that are related to the creation of our chatbot. The next chapter will explain each component of the chatbot architecture apart.
Chatbot Architecture 
This chapter will be devoted to the presentation of a new architecture that integrates an Ontology, a Finite State Machine, a trained Chatbot and several other modules that contributed to the construction of our chatbot.
Following this architecture in Figure3.1, we are going to implement an intelligent chatbot support system for the COVID-19 virus, that will provide an effective response to user's queries. Our conversational system is a mixed system, the response provided to the user can be generated either by information retrieved from the ontology or by a trained bot. As for the programming language of our chatbot we decided for Python.
We offer Corona Virus Infection Ontology (CVIO) which covers concepts related to COVID-19 virus such as countries that have COVID-19 infection, global data, and symptoms.
To build such an ontology we used existing biomedical ontologies, we started by analyzing Human Disease Ontology (DOID) which provides disease information and Symptom Ontology (SYMP) which provides different symptoms of a certain type. They are published in BioPortal, one of the exceptional references, the world's largest online ontology repository hosting more than 450 biomedical ontologies and more than 6 million classes that define the terms [39] . Indeed, biomedical ontologies are becoming increasingly important in order to provide an effective representation of knowledge to support the diagnostic process. The next step is to define a global ontology that contain both disease and symptoms. Then we added other concepts like global data and the current state of contamination.
The ontology engineering process spans different stages, below we will explain these stages one by one. • Country. a concept that brings together countries that have COVID-19
infection;
• Global data. a concept that represents the current status of the world;
• Infection.
-Current status. a concept that represents the basic information about the state of the contamination of each country;
-Trend. a concept that represents trend for Covid-19 contamination. In our case, we manage a weekly trend which can be "weekly trend:
increasing / decreasing";
• Region. a concept that contains the individual "world" which has a current status but it is not a country. Region is disjoined with the Country;
• Symptom. a concept that contains symptoms extracted from [62] ;
• RelatedWord. This class contains words related to COVID-19, it helps to manage the dialogue. When we find one of these words in the user's query, we know that the user is requesting general information regarding COVID-19 infection worldwide.
Properties ::
• Data property. is applied to each individual in current status concept.
Cases (represent the total number of COVID-19 infected person), Recovered (represent the number of recovered people), Deaths (represent the number of deaths) and Retrieved (represent the date on which this information are retrieved). The domain of the properties is current status concept or even Infection.
• Object property. is applied between two individuals. In our ontology we defined two object properties Region and Country. For example:
Tunisia_Status Country Tunisia.
• Annotation Property. is a property and can be applied to every thing.
In our ontology we defined Has Synonym used for symptom individuals,
Creator and Creation date for the ontology and Data Source and Data Publisher for information in current Status individuals. The ontology is populated with data from a web site, which is continuously updated, in this case, we need to apply web scraping techniques. Web scraping is defined as: "a tool for turning the unstructured data on the web into machinereadable, structured data which is ready for analysis" 1 .
The source of the data must be a very reputable website to guarantee the correctness of information populated to the ontology, also if the page is not stable enough the crawler won't work anymore. For this we choose to scrap data from google but crawling was not allowed, so we scraped data from wiki site 2 in which coronavirus table is referred by google site 3 . The website we are going to 
In this section, we are going to describe the engine of our COVID Assistant which is a state machine. In order to model dialogues, we made 6 states and defined 9 transitions using a python library. When our system is initialized, it enters 'Start' state. The structure of the state machine is presented in the • Start. It represents the initial state, in which the chatbot will present itself in a fun and informative way. The user has the right to know whether he is speaking with a real person or with a bot. For this, the welcome message must clearly indicate that the customer is chatting with a chatbot. In addition, the chatbot gets the name of the user.
• Discovery. Discovery state is the state in which the user types the input/request. Then, a keyword extractor is applied (RAKE) in our case.
It extracts the keywords from the user input and sorts them by order of importance.
• Classification. We go now to the classification state where we iterate the list of keywords, and we try to understand the user request. In this state, we manage four classes. First, when the user request contains the name of a specific country. In this case, we understand that the user wants to get information about the current state of this country, Then we pass to the confirmation state. Second, the request may contain the name of a symptom of covid-19, so we can provide him with a list of the most common symptoms. The third classification is that the user would like to know about global data something like the current state of the world in this case, he just has to type any word related to COVID-19. The last type of classification is that we don't know what the user is talking about, it can be a welcome message, a goodbye or a general conversation, in this case, we forward the request to the TrainedBot state.
We store the keyword, after classification, in our context variable except the last type so we can respond appropriately.
• TrainedBot. The purpose of the Trainedbot state is to try to get the user to speak when we don't understand him. Hopefully, we can find a keyword in the next entry. In this case, an automatic response is generated.
• Confirmation. If the state machine is in the Confirmation state, this means that we have found a country name, we send a message asking for user confirmation. If the answer is "no", we return to the Discovery state, otherwise we go to the Ontology state.
• Ontology. The ontology state is the final state in which, depending on the value we have in the context variable. We extract the appropriate information from the ontology and, finally, the user obtains the response to his request. Now we will describe the meaning of each transition apart:
• Conversation Starts. This transition executed once the system obtains the user's name, at that point the conversation will start.
• Get Type. After getting input from the user "Get Type" transition will be executed in order to understand the user's request.
• Get Response2. When the system is in "Classification State", it has three possibilities, one of them is "Get Response2" which means the user wants information either about symptoms or about COVID-19 general information.
• Need Confirmation. The second possibility, is when the user request contains one or more country names, so the "Need Confirmation" transition is executed to pass the system into the "Confirmation State".
• keep Speaking. Otherwise, the "Keep Speaking" transition is executed, this transition exchanges the current status of the system and executes the "Trained Bot" state.
• New Request. This transition is executed when the chatbot has already answered the user and let him type a new request.
• Get Response1. If the system gets a positive confirmation result it means that the country name it has is correct. So, this transition exchanges the current state of the system to the "Ontology" state.
• Not Confirm. This transition means that the system gets negative confirmation, so this transition will go to the "Discovery" state where the user can type another request.
• Go Discovery. This transition has a similar functionality as "New Request". The source state of the transition is the only difference between the two.
The state machine module is developed with a state machine library, access to the ontology data is done with owlready2.
In this section, we will explain how we extract the keywords from our input.
Keyword extraction (also known as keyword detection) is a text analysis technique that is concerned with the automatic extraction of a set of terms or phrases within unstructured text. This includes emails, social media posts, chat conversations and any other types of data that are not organized in any predefined way.
This task is commonly used for information retrieval, text mining, summarizing, and other text analysis tasks. The conventional method for extracting keywords is the TD-IDF measure, which targets words that frequently appear in one document in a corpus but rarely appear in the rest of the corpus.
There are different techniques you can use for automated keyword extraction:
statistical approaches, Linguistic Approaches, Graph-based Approaches, Machine
Learning Approaches.
We choose a statistical approach, Rapid Automatic Keyword Extraction (RAKE)
is a well-known keyword extraction method that uses a list of stopwords and phrase delimiters to detect the most relevant words or phrases in a text. RAKE was developed by Rose, Engel and Cramer [45] as an alternative to corpus-based keyword extraction methods. Unlike traditional methods that compare word frequencies, RAKE operates on the premise that keywords and key phrases do not overlap with stopwords, and that the more non-stop words are found adjacent to each other, the higher the probability that it is a keyphrase [32] .
• Candidate keywords. To produce the list of candidate keywords/phrases, the first thing the method does is splitting the text into a list of words and remove stopwords from that list. This returns a list of what is known as content words. Candidates do not include phrase delimiters or stopwords.
• Co-occurrence graph. Once the candidate keywords are chosen, a cooccurrence graph is built to identify the frequency that words are associated together in those phrases.
• keyword scores. After that graph is built, words are given a score. That score is calculated for each individual word as the degree (number of times it appears + number of additional words it appears with) of a word divided by its frequency (number of times it appears), which weights towards longer phrases. The expressions are also given a score, which is computed as the sum of the individual scores of words.
• Adjoining keywords. If two keywords or phrases appear together in the same order more than twice, a new key phrase is created, regardless of how many stop words the key phrase contains in the original text. The score of this key phrase is calculated as the score of a single key phrase.
• Extracted keywords. The top T keywords are then extracted from the content, where T, According to the original paper [45] is one-third of the number of words in the graph
For general conversation management, we integrated a trained chatbot component in our architecture. This component implements Chatterbot. 
The last component in our architecture is the user interface (UI), which a very important one and has a great impact on the usability of the chatbot.
Customers will likely abandon your chatbot if it can't keep up with them or is too frustrating to use. Putting careful thought into your chatbot's user interface is the first step to avoiding this.
In this third chapter, we discussed the architecture of Covid-19 Assistant and in the next chapter, we will describe the conceptual study and the implementation details.
After the analysis and specification of our system, we dedicate this chapter to conceptual study. This design phase has great importance in our development cycle and whose objective is to create a robust, well structured, and scalable system. The second part of this chapter will be devoted to the implementation where the technical specification will be discussed.
The modeling of our project was based on the Unified Modeling Language (UML).
In this part, we start by designing the general use case diagram. This use case diagram (UCD) is a UML diagram used to express user needs. In other words, it allows us to give a global vision of the functioning of the chatbot. In the case of our chatbot, a user can be, an internet user, who will ask the chatbot for information, namely the state of contamination of COVID-19 in the world Figure 4 .1 illustrates the general use case diagram that allows us to see the functionality provided to our actor.
This service represents the initial state of our chatbot. It lets the user know that he is talking to a chatbot while giving him the illusion that he is talking to a human assistant.
Then the user must enter his name in the chatbot to go to the next state.
Once To know the contamination status of a specific country: the user has to enter the name of the country or the name of any city it contains.
This state will be visited if the user enters a request that does not contain any keyword that the chatbot might know. So the trained chatbot will respond. 
The dynamic axis in our design will be represented by sequence diagrams. These diagrams are the graphic representation of the interactions between the actors and the system in chronological order. A sequence diagram describes a scenario of a use case. In the following, we will detail the different diagrams: To search for information about a specific country the user has to type the name of a country or a city that it contains like in the example. The user didn't type Tunisia but he types the capital name Tunis. The keyword, in this case, is "Tunis", then in the classification state, the system will associate "Tunisia"
to "Tunis" automatically. Once a country name is found the chatbot will ask the user for the confirmation. To represent it we use a loop and an alternative else, the chatbot re-send to him the confirmation message. In this second version of managing a request for the country information, the user types a message that contains more than one country name. In this case, after recognizing the country names in the classification state, the chatbot will send to the user the list of country names and the user has to choose one of them by typing the number of the name in the list. Until a correct number is typed the system will still in the loop and alternative frame. Once a correct number is entered the system pass to the ontology state and sends to the user the appropriate answer. In the Sequence diagram "Managing a request related to COVID-19 symptoms" and Sequence diagram "Managing a request of COVID-19 general informa-tion" the same procedure is required. The first step, of course after passing the start state, the user types a message that contains a keyword related either to COVID-19 in general or a name of a symptom. The discovery state will extract keywords then the classification state will recognize the type of this keywords. Finally, the system passes the type detected to the ontology state which provides the appropriate response to the user.
Sequence diagram: "Managing a general conversation" Two types of messages lead the conversation to do this interaction, either the user types a message like in the example shown that do not contain any keyword or it contains keywords that the system can't classify it. So, it passes the message to a trained bot that is trained to answer the general conversations. To visualize our ontology we used OWLViz which Enables class hierarchies in an OWL ontology to be viewed and incrementally navigated, allowing comparison of the asserted class hierarchy and the inferred class hierarchy. 
In this chapter, we have described our design as well as our working environment.
The next chapter will be devoted to the experiment and a validation step.
This chapter of experiments will allow us to see the execution of our chatbot which proved its efficiency, and capability of maintaining a conversation while generating good quality responses to the user. The second part of this chapter will be devoted to a validation process in which we validated the ontology and the state machine components. 
In this part we will present some examples of conversation scenarios that can be modeled between the Chatbot and the user. These scenarios are proved to be compatible with the conceptualization defined above. The figures bellow show how our Chatbot react. Its response shows its capability of creating a conversation having a human aspect.
Use case shown in Figure 5 .2 corresponds to sequence diagram: "Get started" in which the chatbot manage the name retrieval task and the Sequence diagram: "Managing a request of covid-19 general information" respectively. 
Data visualization techniques are applied to provide a visual represntation of the data we have. Thanks to libraries like folium which is used here to create a COVID-19 map of contamination distributions. Also we used pycountry and geocoder libraries to create this attractive and informative map. Now we illustrate in this example, Figure 5 .5 how the Chatbot answers a request of information concerning symptoms which is designed by Sequence diagram: "Managing a request related to covid-19 symptoms". When the system extracts a word that matches with corona virus symptoms it responds by listing the principal symptoms that are stored in the ontology and their synonyms. Figure 5 .5 represents also the scenario of Sequence diagram:
"Managing a request for a country name (version 2)" is executed. The next Figure 5 .6 represents scenarios explained in Sequence diagram:
"Managing a request for a country name (version 2)" and Sequence diagram: "Managing a general conversation".
The objective is that the chatbot delivers answers to citizen's questions. This developed chatbot has reached this objective as seen in the example of executions in the first part. Now we will move on to validation two principal components of the chatbot architecture which are the ontology, our knowledge base, and the finite state machine, the engine of the chatbot.
It should be noted that the validation of ontologies is a central question in knowledge engineering. It revolves around two complementary issues: i ) structural validation and ii ) semantic validation [44] .
• Validation of consistency using PELLET To validate our ontology we used PELLET reasoner. The choice of the PELLET reasoner to validate the consistency of our ontology was a natural one, given that we are using the Protégé 5.5.0 ontology editor in which it is integrated. PELLET thus allowed us to verify that our ontology did not contain contradictory classes to lead to an inconsistency state.
• This stage brings into play communication aspects between actors from different areas of expertise: ontologists and specialists in the domain modeled in ontology. In our case the ontology is a functional component which organizes and integrates data in a way that is directly usable by the chatbot as an unique source. So, if our use cases are supported by the chatbot, then, the ontology is validated.
To validate the engine of the chatbot we used a model checker. Model checker or property controller is a method of checking whether a finite state machine of a system satisfies a given specification or accuracy.
In an attempt to solve such a problem algorithmically, both the finite state machine of the system and its specification are formulated in a precise mathematical language. For this purpose, we used the Uppaal model checker. Uppaal is a toolbox for validation (by graphical simulation) and verification (by automatic model verification) of real-time systems.
The requirement specification must be expressed in a formally well-defined and machine readable language. Uppaal uses a simplified version of CTL. We first create our state machine as shown in the Figure 5 .7. we will start by For our model we are going to check reachability, safety, and liveness properties.
• Reachability Properties. are the simplest form of properties. They ask whether a given state formula, ϕ, possibly can be satisfied. Does there exist a path starting at the initial state, such that ϕ is eventually satisfied along that path. we use the formula: E<> Chatbot.Ontology to verify if the Ontology state is reachable. We did the same thing with all other states.
• Safety Properties. are on the form: "something bad will never happen".
We used this formule E<> (Chatbot.Ontology or Chatbot.TrainedBot)
to grantee there should exist a maximal path such that a response is always generated to the user.
• Liveness Properties. are of the form: something will eventually happen,
We check that the system is deadlock-free with the property A[] not deadlock All the properties previously discussed are shown in the Figure 5 .8. For checking the parallel aspect in our chatbot we have created two instances of the system: chatbot and chatbot2. We will check that the user will always get a result either from the ontology or through the TrainedBot. To do this, the following three formulas are created i ) there is an execution of the system that allows us to put the first instance "chatbot" in the Ontology state and the second instance "chatbot2" in the TrainedBot state through the formula "E<> ( chatbot.Ontology and chatbot2.TrainedBot)". ii ) there is a system execution that puts the first instance "chatbot" in the TrainedBot state and the second instance "chatbot2" in the Ontology state using the formula "E<> ( chatbot.TrainedBot and chatbot2.Ontology)". iii ) there is an execution of the system which allows to put the two instances in the Ontology state because, the chatbot has a read-only access to the ontology so two simultaneous accesses does not generate a problem "E<> ( chatbot.Ontology and chatbot2.Ontology)". We can clearly see from the image 5.9 that all these rules are marked in green so validated. We will then access the simulator integrated into Uppaal, to see how the two instances of chatbot work. As shown in Figure 5 .10(1) the first instance is in the Ontology state and the second is in the TrainedBot state (this is the rule (i ) defined before). In Figure 5 .10(2) both instances of the system are in the Ontology state (this is the rule (iii )). The next chapter will summarize the content of all previous sections to recap what has been accomplished. It will give a global view of the completed system as well as providing pointers for future developments.
Chapter 6. Conclusion and futur work
Universal chatbot:
We aim to develop a universal chatbot, to reach this, in the future we will make it support many other languages.
To make our Covid-19 smarter we think about using more efficient NLP procedure, integrate a more sophisticated trained bot. Also we aim to apply voice recognition techniques.
To do so, the first step is to enrich the ontology with more information, such as trends and advises.