Im Folgenden werden häufig gewisse Begriffe gebraucht, die nicht allgemein verständlich, oder die im Kontext von libmunin anders besetzt sind. Diese sollen hier definiert werden, bevor fortgefahren wird.
Im Kontext von libmunin ist ein Song eine Menge von Attributen. Jedem Attribut ist, wie in einer Hashtabelle, genau ein Wert zugeordnet.
Beispielsweise haben alle Songs ein Attribut artist, aber jeder einzelner Song kennt dafür einen bestimmten Wert.
Desweiteren wird für jeden Song die Distanz zu einer Menge ähnlicher Songs gespeichert, sowie einen Integer der als Identifier dient.
Eine Session ist eine Nutzung von libmunin über einem bestimmten Zeitraum. Zum Erstellen einer Session werden die Daten importiert, analysiert und ein Graph wird daraus aufgebaut.
Wer die Bibliothek benutzt, wird die Session zudem als Eintrittspunkt für die API benutzen.
Die Session benötigt eine Beschreibung der Daten die importiert werden. So muss sich beispielsweise darauf geeinigt werden, was in einem Song unter dem Schlüssel genre abgespeichert wird.
In der Maske werden daher die einzelnen Attribute festgelegt die ein einzelner Song haben kann und wie diese anzusprechen sind. Zudem wird pro Attribut ein Provider und eine Distanzfunktion festgelegt, die bei der Verarbeitung dieses Wertes genutzt wird. Zudem wird die Gewichtung des Attributes festgelegt. Manche Attribute sind für die Ähnlichkeit zweier Songs entscheidender als andere.
Eine Distanz beschreibt die Ähnlichkeit zweier Songs. Eine Distanz von 0 bedeutet dabei eine maximale Ähnlichkeit (oder minimale Entfernung zueinander), eine Distanz von 1 maximale Unähnlichkeit (oder maximale Entfernung).
Die Distanz wird durch eine Distanzfunktion berechnet.
Eine Distanzfunktion ist im Kontext von libmunin eine Funktion, die zwei Songs als Eingabe nimmt und die Distanz zwischen diesen berechnet.
Dabei wird jedes Attribut betracht, welches in beiden Songs vorkommt. Für diese wird von der Maske eine spezialisierte Distanzfunktion festgelegt, die weiß wie diese zwei bestimmten Werte sinnvoll verglichen werden können. Die so errechneten Werte werden, gemäß der Gewichtung in der Maske, zu einem Wert verschmolzen.
Fehlen Attribute in einen der beiden Songs, wird für diese jeweils eine Distanz von 1 angenommen. Diese wird dann ebenfalls in die gewichtete Oberdistanz eingerechnet.
Die folgenden Bedingungen müssen sowohl für die allgemeine Distanzfunktion, als auch für die speziellen Distanzfunktionen gelten. \(D\) ist dabei die Menge aller Songs, \(d\) eine Distanzfunktion:
Ein Provider normalisiert einen Wert anhand verschiedener Charakteristiken. Sie dienen zur vorgelagerten Verarbeitung von den Daten die in libmunin geladen werden. Jeder Provider ist dabei durch die Maske einem Attribut zugeordnet.
Ihr Ziel ist für die Distanzfunktion einfache und effizient vergleichbare Werte zu liefern - da die Distanzfunktion sehr viel öfters aufgerufen wird als der Provider.
Eine Assoziationsregel verbindet zwei Mengen A und B von Songs miteinander. Sie besagen, dass wenn eine der beiden Mengen miteinander gehört wird, dann ist es wahrscheinlich, dass auch die andere Menge daraufhin angehört wird.
Die Güte jeder Regel wird durch ein Rating beschrieben, welche grob die generelle Anwendbarkeit beschreibt.
Sie werden aus dem Verhalten des Nutzers abgeleitet. Dazu wird jedes Lied zwischengespeichert, das der Nutzer anhört.
Anmerkung: Im Allgemeinen Gebrauch sind Assoziationsregeln nur in eine Richtung definiert. In libmunin sind die Regeln aus Gründen der Einfachkeit allerdings bidirektional. So gilt nicht nur, dass man wahrscheinlich die Menge B hört, wenn man A gehört hat (\(A \rightarrow B\)), sondern auch umgekehrt (\(A \leftrightarrow B\)).