Sonntag, 19. Juli 2020

A Machine Learning Approach with Ensemble Methods for Deduplication of Swissbib Data

The notion of Machine Learning includes a wide group of statistical algorithms where a computer system learns on a set of training data and, after having completed its learning phase, uses its experience to generate predictions on new, unknown data. In the context of the capstone project of an advanced online training course at EPF Lausanne, a swissbib admirer takes the challenge to do Machine Learning with a set of library catalogue data in MARC 21 format. The goal of the project is to build an artificial machine being capable to find duplicate records in the data. The project is done with three distinct groups of models. In this blog, the results of a Decision Tree and a Random Forests model are presented.

The starting point for Machine Learning is data. The data generally consists of two distinct types of variables, features and its target. The variables of the data set that serve as input for computing the prediction are called features. The features of the data are constructed with the help of two records of original swissbib data containing raw information of a bibliographic unit, each. Such two records of raw data are paired in each of its attributes, calculating a numerical similarity distance for each pair of same attributes of the two bibliographical records, see figure 1. For example, for two arbitrary records, the mathematical distance between title1 (title of record r1) and title2 (title of record r2) are determined to be the feature titleΔ = sim(title1,title2), where sim(x1,x2) is a mathematical similarity function. For the project at hand, twenty distinct similarities of two times twenty raw data attributes like title, author, year, ISBN, ISMN, etc. are calculated for each feature record. Therefore, the number of features are twenty. A feature record is represented as an array in the memory of a computer system. All rows of feature arrays can be represented in the form of a matrix. Therefore, the full set of this data is called feature matrix. The total of feature records used for training the data is nearly 260'000.
Figure 1: Records pairing
Figure 1: Records pairing
The variable of a data set that is to be predicted by the machine is called output or target, see figure 2. Each feature record has its target value. For each feature record of the project described above, the target variable indicates whether a data row of features is either a row of unique records or a row of duplicate records. The possible target values are 0 (row of unique records) or 1 (row of duplicate records), resp. A more detailed description on how to calculate the feature matrix and its array of target values for the training data will be given in a later blog to come.
Figure 2: Feature matrix, machine and target
Figure 2: Feature matrix, machine and target
The idea behind a Decision Tree algorithm is that the computer system learns a set of sequential if-then-else rules that lead to a final decision. Each if-then-else statement is called a node of the Decision Tree. The nodes are arranged in sequences to form of a binary tree, see figure 3, which is the reason for its naming. In the swissbib project, the set of if-then-else rules is a sequence of thresholds for binary statements of one feature variable that can either be lower or higher than the specific threshold. To classify a feature record, the algorithm starts at the top of the tree and evaluates the statement in each node on its path down. Depending on the threshold value, the algorithm decides for the right-lower or the left-lower node as the next node until reaching the bottom of the tree. The final decision is called a leaf of the Decision Tree. The leaf concludes the decision wether the feature record is a pair of uniques or a pair of duplicates. During training a Decision Tree, the if-then-else rules of the nodes are adjusted iteratively until the Decision Tree predicts the target value of the training data feature rows with the highest possible probability according to a function to measure the quality of decisions, called criterion. When this highest power of prediction on the training data is reached, the Decision Tree can be used for predicting new, unseen data.
Figure 3: Graphical representation of the Decision Tree on swissbib data
Figure 3: Graphical representation of the Decision Tree on swissbib data
Decision Tree is a classical method of Machine Learning. Its advantage is its clarity. It can be easily interpreted when looking at the trained model tree. A Decision Tree classifier can be built with the help of different parameters. In the project, the varied parameters are the maximum depth of the tree as well as the so called criterion, the mathematical function to measure the quality of a split in the nodes. Several specific Decision Trees are calculated with the help of cross-validation and their prediction power is compared. The project finds the best Decision Tree for swissbib data to have a maximum depth of 26 nodes and a criterion of Gini impurity.

The performance of a Machine Learning classifier can be measured with the help of some metrics derived from the confusion matrix, see figure 4. The confusion matrix compares the predictions of a trained machine on some validation data with their given target values. Four cases can be distinguished.
  • Two "true" cases (1. "true positive" and 2. "true negative") according to the two specific classes are the correctly predicted records of the validation data.
  • Two "false" cases (3. "false positive" and 4. "false negative") according to the two specific classes are the wrongly predicted records of the validation data.
Figure 4: Confusion matrix
Figure 4: Confusion matrix
From the four cases above, a metrics called accuracy can be calculated, allowing a statement on the prediction quality of the model on unknown data. For swissbib's calculated Decision Tree, an accuracy value of nearly 99.95% can be reached. This accuracy means 27 wrongly predicted records on a total of 51'886 validation records.

For comparison reasons, a Random Forests model is calculated additionally. A Random Forests is an Ensemble method. It consists of an ensemble of Decision Trees that are assembled during the learning phase. Again, the set of best parameters for the Random Forests is searched for swissbib data and a number of 100 trees of maximum depth of 22 each in the forest is found to generate the best results. With Random Forests, an accuracy of nearly 99.95% can be reached, too, with the same total of wrongly predicted records of 27 on the total of the validation records.

The project is implemented in programming language Python, using library scikit-learn for calculating the models. The Random Forests implementation of this library allows for assessing the importance of each feature for prediction. Figure 5 shows the normed importance value of the features used. It can be seen that variable year is the leading variable for indicating wether a pair of records is a pair of uniques or of duplicates. Variable title is the second most important feature for the Random Forests model, but also author and volumes indication are of high relevance. The importance of features like coordinate and ISMN seem to be low. This is due to the fact that only few of swissbib's raw data are of format map of music. Therefore, only few of swissbib's raw data hold any information in these attributes.
Figure 5: Normed feature importance of Random Forests
Figure 5: Normed feature importance of Random Forests
The results presented here, suggest swissbib to implement a new deduplication process with the help of a Random Forests algorithm, due its best overall performance on the training data. The project described here, implements some more models different to the Decision Tree and the Random Forests models. The results of those will be presented in some additional blog articles (see here).

Years of experience in the preparation and processing of metadata meets methods of Machine Learning

Deutsche Version english version

Jahrelange Erfahrung in der Aufbereitung und Verarbeitung von Metadaten trifft auf Maschinelles Lernen

Seit gefühlt zwei, drei Jahren lassen sich kaum mehr Artikel zum Thema Daten und Informationen finden, in denen nicht mindestens einmal Begriffe wie "Maschinelles Lernen", "Künstliche Intelligenz" (KI) oder "Neuronale Netze" erwähnt und als das Erfolgsrezept für die Zukunft beschrieben werden. Sollte damit das, was wir in den letzten 12 Jahren gemacht haben, veraltet und nicht mehr relevant sein? Das swissbib Team ist ja nicht dafür bekannt, sich vor neuen Softwaretechnologien zu scheuen. Wir schauen schon seit je her regelmässig über den Tellerrand um mitzubekommen, ob sich neue Methoden nicht mit unseren klassischen Methoden verbinden lassen. Das Problem dabei: Bevor man aus der Menge des Möglichen etwas Vielversprechendes wählen, ausprobieren und dann vielleicht produktiv einsetzen kann, muss man sich erstmal durch die Grundlagen und Begrifflichkeiten des neuen Themengebiets kämpfen. Nicht so einfach für ein swissbib Team, dass mit Personen nicht üppig ausgestattet ist und den Laden (sprich die "grünen, orangenen oder wie auch immer farbigen Services") am Laufen halten muss.

Helfen kann in so einer Situation manchmal Begeisterung für die Sache, Offenheit (auch von Software) und ein Netz von Personen von ausserhalb unseres Bibliothekskuchens, die man neugierig auf coole Projekte mit unseren Daten machen kann. So geschehen mit Andreas Jud, ein swissbib-Freund, der sich in einer Weiterbildung an der EPF Lausanne mit Methoden des maschinellen Lernens beschäftigt hat. Im Rahmen seines Abschlussprojekts hat er untersucht, welche der zahlreichen Methoden sich für das Clustern von bibliographischen Metadaten einsetzen lassen. In dieser Blog-Serie wird er in die ausgewählten Methoden und Ergebnisse einführen. Die komplette Projektarbeit ist als eine Serie von Jupyter Notebooks frei verfügbar.

Im swissbib Projekt ist die Essenz all unserer Aktivitäten der Umgang mit und die Aufbereitung von (Meta-) Daten. Normalisieren, Anreichern, Zusammenführen  (Clustern) sowie Verknüpfen von Informationen und dies alles auf maschineller Basis ist die Grundlage dafür, dass wir Services wie verschiedene Discoveries, unterschiedliche Schnittstellen oder Dienstleistungen für Dritte anbieten können. Vor allem für das maschinelle Clustern von Daten nutzen wir die (kommerzielle) Software eines Partners, die es uns flexibel ermöglicht, Daten so aufzubereiten, dass man sie für die unterschiedlichen Services einsetzen kann. Dies war über die Jahre kein einmaliger Vorgang mit einem statischen Resultat sondern ein iterativer Prozess, in denen sowohl wir (in den letzten Jahren vor allem unsere Kollegin Silvia Witzig) von der Nutzerinnenseite als auch unser Partner gegenseitig Wissen in den Prozess zur Verbesserung der Datenaufbereitung einbrachten. Die Aktivitäten zur Datenaufbereitung bleiben zentral für die Qualität der Dienstleistungen, die swissbib erbringt.

Maschinelles Lernen basiert auf Daten. Daten von swissbib sind daher die Basis der Abschlussarbeit von Andreas an der EPFL. Mit den Daten, die Andreas in ihrer Rohform vom swissbib Team erhalten hat, lassen sich Ergebniscluster von überzeugender Qualität ermitteln. Dies sei an dieser Stelle bereits vorweggenommen. Nach Abschluss der Arbeit bleiben aber Bereiche, an denen gearbeitet werden muss, um die Resultate in einen produktiven Betrieb zu überführen.
  • Die Projektarbeit von Andreas hatte ihren Schwerpunkt im Gegenüberstellen unterschiedlicher Methoden des maschinellen Lernens. Fragen zur Skalierung der Datenmengen (wie wir sie im swissbib Projekt mit 45 Millionen Aufnahmen bewältigen müssen) konnten nicht berücksichtigt werden. Dieser offene Punkt muss noch angegangen werden. Die Bildung von sogenannten pre-cluster auf der inhaltlichen sowie der Einsatz von Frameworks zur verteilten Verarbeitung wie Apache Flink auf der technischen Ebene sind hier vielversprechende Ansätze.
  • Auch wenn die Ergebnisse der Abschlussarbeit vielversprechend und die Möglichkeiten moderner offener Software noch so cool sind, bleibt der alte Spruch "garbage in, garbage out". Modelle des maschinellen Lernens müssen trainiert werden und die in die Modelle einfliessenden Daten von möglichst guter Qualität sein. Für diesen Prozess braucht es sowohl Menschen, die sich mit Daten, deren Formaten aber auch deren Inhalten auskennen, wie auch Personen auf der Softwareseite. Mit unseren swissbib Erfahrungen bringen wir Know-How auf beiden Seiten ein und werden auch versuchen, in den anstehenden Monaten unsere Expertise, die wir mit unserer produktiven Komponente gesammelt haben und die uns nach wie vor hervorragende Ergebnisse liefert, noch besser zu dokumentieren. Damit erhoffen wir uns, Wissen zu erhalten als auch weiterzugeben. Zudem möchten wir dieses Wissen natürlich in verschiedenen Verfahren, wie zum Beispiel Maschinelles Lernen, einsetzen können und dadurch auch die Chance für Bibliotheken zur Weiterentwicklung nutzen.
  • Die Rohdaten, welche für das Trainieren von Maschinen verwendet wurden, haben noch nicht die Ausprägung und Qualität, wie wir sie in Jahren auf unserer produktiven Maschine aufbauen konnten. Ein nächster Schritt muss darin bestehen, auf unseren Swissbib-Datenstandard aufzusetzen.
  • Als Freizeitprojekt gestartet, bieten die erarbeiteten Resultate Einstiegsmöglichkeiten für Personen mit unterschiedlichem Hintergrund. Es war erfreulich zu beobachten, wie Andreas als promovierter Physiker mit Interesse und Ausdauer die MARC-Regeln der LOC studiert und den Input aus unserem swissbib Team für sein Arbeit aufgenommen hat. Das nun vorliegende Ergebnis, wie maschinelles Lernen auf den Bereich der Aggregation von bibliographischen Metadaten (Clustern) angewendet werden kann, bietet die Möglichkeit, die Magie besser zu fassen, die mit maschinellem Lernen und KI einhergeht. Dies auch für Menschen mit einem informationswissenschaftlichen und weniger technischen Hintergrund.
Wir freuen uns, wenn Sie unsere Blogserie zum Thema Deduplizierung von bibliographischen Daten mit Methoden des Maschinellen Lernens mitverfolgen. Noch mehr freut uns die aktive Teilnahme am Themengebiet und der Diskussion darüber.

Unter diesen links erhalten Sie den Zugriff auf die einzelnen Teile der dreiteilgen Blogserie, in der die verschiedenen Methoden sowie ihre Ergebnisse bewertet und gegenübergestellt werden:
  • Teil 1
  • Teil 2 (folgt bald)
  • Teil 3 (folgt bald)
Eine Anekdote zum Abschluss. Bei der Verteidigung des Projekts an der EPFL sass Andreas Prüfern gegenüber, die äusserten, dass er mit einem "grossartigen Datensatz" gearbeitet hat. Das hat selbstverständlich auch uns gefreut. Vielleicht ist dies aber auch ein Satz, der zum Nachdenken darüber anregt, ob unsere Daten nicht mehr verdient haben, als nur in ein Bibliothekssystem mit relationalem Datenbanksystem gesteckt zu werden.

Montag, 6. Juli 2020

Auf Wikipedia/Wikidata basierende Suchen in swissbib / Recherche dans swissbib basée sur Wikipedia/Wikidata

Deutsche Version Version française

Suche in swissbib basierend auf Informationen aus Wikipedia/Wikidata (oder anderen Quellen)


Sie suchen nach einem kürzlich erschienenen Buch eines Literaturnobelpreisträgers oder einer Bundesrätin oder Bundesrats? Oder nach (öffentlich bekannten) Personen, die in Ihrer Wohngemeinde geboren oder verstorben sind?
Sie möchten sich eine Liste der Medien zusammenstellen, die mit derartigen Fragen in Zusammenhang stehen?
swissbib kann Ihnen Antworten zu diesen und ähnlichen Fragen geben, seitdem die Datenbasis der Plattform im Verlaufe der letzen Monate mit Informationen aus Wikidata, Wikipedia und anderen Quellen verknüpft worden ist. In diesem Blogbeitrag möchten wir Ihnen kurz vorstellen, wie dies funktioniert

Wikipedia stellt einen grossen Fundus an Informationen insbesondere über Personen zur Verfügung. Es ist leicht zu erfahren, dass zum Beispiel Heinrich Böll den Literaturnobelpreis erhalten hat:

https://de.wikipedia.org/wiki/Heinrich_B%C3%B6ll


Das Wikidata-Projekt stellt Wikipedia (und andere Informationen) als Linked Open Data zur Verfügung, so dass diese auch von Maschinen genutzt werden können.

https://www.wikidata.org/wiki/Q42747


Wie bereits angekündigt, haben wir Ende 2019, basierend auf den Arbeiten im Projekt linked.swissbib, die Autoren von swissbib mit Wikidata verknüpft, wobei wir insbesondere die in Bibliotheken üblichen Identifikatoren (GND-, RERO- oder IDREF-Identifikatoren) verwendet haben.

Hier ist ein Beispiel für die über Heinrich Böll gesammelten Informationen

https://data.swissbib.ch/person/ed6314ad-bf79-3db8-bcc4-614ca9359b84


So können wir eine Liste von Personen zusammenstellen, die einen Nobelpreis für Literatur erhalten haben.


https://data.swissbib.ch/person?q=http%3A%2F%2Fwww.wikidata.org%2Fentity%2FQ37922&format=html&size=20



Mit dem Link unterhalb der Zusammenstellung ist es daher möglich, eine Liste der Werke von Personen, die mit einem Literaturnobelpreis ausgezeichnet wurden (Wikidata-Einheit Q37922), in swissbib zusammenzustellen. Sie kann dann mit Hilfe der verschiedenen Facetten nach eigenen Wünschen weiter gefiltert werden:

localhost:9003/person?q=http%3A%2F%2Fwww.wikidata.org%2Fentity%2FQ37922&format=html&size=100&redirectToSwissbib=true



Bitte beachten Sie, dass sich diese Möglichkeit noch im experimentellen (Beta-)Stadium befindet. Hier möchten wir Ihnen jedoch eine Vorstellung des Potentials des Linked-Open-Data-Paradigmas vermitteln.

Es ist jedoch möglich, sehr viel gründlicher als bisher zu recherchieren. Nachfolgend einige Beispiele, die Ihr Interesse anregen mögen:

    Weitere Informationen über für komplexere Abfragen zu verwendende Syntax finden Sie in der Dokumentation auf data.swissbib.ch

    Zögern Sie nicht uns zu kontaktieren wenn Sie Fragen haben !

    Recherche dans swissbib basée sur les informations de Wikipedia/Wikidata (ou d'autres sources)


    Vous êtes vous déjà rendu dans une bibliothèque, à la recherche d'un livre publié récemment et écrit par un prix Nobel de littérature ? Ou par un conseiller fédéral ? Ou par une personne née ou morte dans votre commune de domicile ? Comment en obtenir la liste ?

    Depuis peu, c'est possible dans swissbib ! Comment ça marche ?

    Wikipedia est une source immense d'informations, notamment sur les personnes. On peut par exemple facilement apprendre que Heinrich Böll a obtenu le prix Nobel de littérature :

    https://fr.wikipedia.org/wiki/Heinrich_B%C3%B6ll


    Le projet Wikidata met à disposition les informations de Wikipedia (ainsi que d'autres informations) sous forme de données Linked Open Data, utilisables par des machines.

    https://www.wikidata.org/wiki/Q42747


    Comme annoncé précédemment, fin 2019, en nous basant sur le travail effectué dans le cadre du projet linked.swissbib, nous avons lié les auteurs de swissbib avec wikidata, en nous basant notamment sur les identifiants courants utilisés dans les bibliothèques (identifiants GND, RERO ou IDREF).

    Voici par exemples les informations que nous avons rassemblées au sujet de Heinrich Böll

    https://data.swissbib.ch/person/ed6314ad-bf79-3db8-bcc4-614ca9359b84


    On peut donc obtenir une liste de personnes ayant obtenu un Prix Nobel de Littérature


    https://data.swissbib.ch/person?q=http%3A%2F%2Fwww.wikidata.org%2Fentity%2FQ37922&format=html&size=20



    En utilisant le bouton tout en bas de la liste ci-dessus, il est donc possible d'avoir une liste d'oeuvres de personnes ayant obtenu un Prix Nobel de Littérature (entité Wikidata Q37922) dans swissbib. On peut ensuite la filtrer selon ses désirs en utilisant les différentes facettes :

    localhost:9003/person?q=http%3A%2F%2Fwww.wikidata.org%2Fentity%2FQ37922&format=html&size=100&redirectToSwissbib=true



    Veuillez noter que cette possibilité est encore à l'état expérimental (Beta). Mais ceci peut donner une idée de la puissance du paradigme Linked Open Data.

    Il est donc possible de faire des recherches d'une manière beaucoup plus approfondie que jusqu'à présent. Voici quelques exemples pour vous donner envie :

      Pour de plus amples informations sur la syntaxe à utiliser pour des requêtes complexes, veuillez vous référer à la documentation sur data.swissbib.ch.

      N'hésitez pas à nous contacter si vous avez des questions !