Our research group has been working on a portal for open educational resources (Plataforma MEC de recursos educacionais digitais) with the objective to gather OERs from different sources and to provide social networking functionalities (resource ‘liking’, followers, user reputation, and others), with the main objective of easing the search of good qualility resources.
In a previous post we gave a brief overview on how we searched and ranked using terms clustering. Here I will introduce the system components as a whole.
Open Educational Resources (OER) are often defined as freely available material, in some kind of media, to support teachers and students on the task of learning some subject. Their transformative power lies in the ease that such resources can be shared via the Internet. It is quite hard to find useful and good items in existing repositories. The main challenges are 1) OERs are often spread over different repositories, so a teacher might not know the existence of all these portals 2) the quality of the resources may not be always assessed (well, this is the web) and 3) many portals have relatively simple and mostly syntax-based search engines.
The platform we developed contains social network features to ease the publication, searching and ranking these resources through collective intelligence, in other words, combining behavior, preferences, classification of objects to obtain better results for a given request.
We face several challenges on developing the web portal. This is my personal view with 3 itens, not ordered. Probably other people from the team could add much more itens to this list! (1) develop a good interaction mechanism, for searching and recommendation; (2) use the collected data to create a good ranking algorithm (3) put all the components together, with different kinds of technologies!
Considering the 1st challenge, we implemeted different user interactions to collect user actions over an object, classified as like, review, download, share and view. These actions are combined with an existing search engine to produce a more adapted ranking. For the 2nd challenge, we defined a combined ranking, with the the user interactions, object tagging and an existing know search engine, Elastic search. Up to this date, the portal has more than 30.000 objects, an average of 1300 dowloaded itens per month and aroung 5.000 users. The interactions are at their beggining, which means the system is being constantly improved based on collected information. Finally, for the 3rd challenge, we had to find, choose and adapted the most appropriate services, APIs, storage, all open source, to develop a running system, since we would not do everything from scratch.
The main storage choices are shown in the Figure below.
The search engine used is provided by Elasticsearch. We used the main engine metric, combined with the ones calculated from our recommender sytem, which is a weighted and normalized sum of the actions performed. The social data network is stored in a PostgreSQL database. We chose a relational database because it had a very good integration with Ruby on Rails Active Record, enabling to develop the portal actions.The educational resources are stored in a DSPace instance. The DSPace organizes the digital objects and its metadata, the latter in a separate Postgres instance. A given educational resource can be included in the social network using the API or thourgh the DPSPace OAI-PMH harvester. Once it is included, this new resource is propagated to the social network database and to the search engine. This is done using a specific queue, using the Searchkick Ruby library.
This work is in constant development by our group, and it has/have many developers, including Israel Sant’Anna, Marcela Oliveira, Guilherme Scariot, Mateus Strey, Mauricio Giacomini, and others.
More details about the platform can be found in an article that we published this year at IEEE CIC (Collaboration and Internet Computing), available here, and it was presented by Israel. The complete code is also available for download in the group git lab, under the GNU/AGPL license.