## 3 Service Development Methodology
### Skill and Course Recommender  
After developing the services for job post acquisition and Knowledge Extraction, it was feasible to start building some services that can be useful to students, learners, professors, and other stakeholders in education-related issues. In this section, the Skill and Course Recommendation service is presented in brief. It was developed to facilitate personalized skill and course recommendations to students and learners. These recommendations will not only be tailored to the learner's profile. In fact, the recommended skills will also be highly desired by the job market. More specifically, the recommendation engine uses as input the resume of a learner and the information created in the Knowledge Extraction phase, classifies the resume to a few specializations of the profession that the learner wants to pursue, and proposes skills and courses that are in demand for each specialization. Finally, it recommends important skills and their respective courses from these specializations that the learner does not possess. In order to facilitate optimal text analysis to job posts, resumes, curriculum, and course data, an Elasticsearch engine [18] was utilized. Specifically, Elasticsearch is used to facilitate advanced text search, mapping, and data aggregation to all the aforementioned text resources. These functionalities are crucial for text mining. More specifically, the available job posts were classified based on their specialization, using both advanced search techniques and manual supervision, and the resulting skills are derived from the user's closest specializations. Of course, the skills that the user already possesses are not suggested. Additionally, it is worth mentioning that the results are presented in the order of their importance to the identified specialization. Regarding the proposed courses, they are derived from the school's curriculum. More specifically, the curriculum of a school and its courses are stored in the Elasticsearch engine, as well as the results of the Knowledge Extraction service on the courses' data. As a next step, the recommender service queries the Elasticsearch engine and retrieves the courses with the proposed skills along with a score of importance. The most relevant courses are recommended to the user, presented in the order of importance in descending order. The aforementioned recommendation approach is not fully automated, as it requires manual classification to new job posts, which is a very time-consuming procedure. For this reason, as well as for improving the accuracy of the obtained recommendations, a clustering recommendation approach has been implemented as well. In this approach, the identification of the different specializations is data driven, according to the required skills of the job posts. In particular, each specialization (cluster) is identified through shallow agglomerative clustering [24]. This clustering algorithm was preferred among several other clustering techniques, as it captures the different size of each cluster in contrast to other well-known clustering algorithms, such as \(k\)-means [25]. This means that agglomerative clustering can recognize specializations with small numbers of members as effectively as the bigger ones. Our choice is verified also from experimental results, as several clustering techniques were applied, and the most reasonable results were achieved through agglomerative clustering. The recommended skills are derived from the three specializations (clusters) that are closer to the learner's profile. The closeness of the user to a specialization is calculated using the cosine similarity [26] between the centroid of the specific specialization and the user's profile. It is worth mentioning that both the centroid of a specialization and the profile of a learner are expressed as a vector of skills. Moreover, cosine similarity was preferred over other similarity metrics, such as the Jaccard similarity [27], as it takes into consideration both the presence and the frequency of a skill.