Skip to content

Struktur

JJ-Author edited this page Jan 17, 2020 · 12 revisions

Struktur des Gesamtsystems

Die Movie Library ist grundsätzlich in 2 Teilen realisiert: dem Import von Filmen und der Darstellung von Filmen.

Import von Filmen

Der Import von Filmen ist üblicherweise die erste Aufgabe der Movie Library. Das Hinzufügen von lokalen Filmdateien im Import Movie Files Tab geschieht mit dem FileBrowserSheet des Apache Pivot Frameworks. Für jede Datei werden nun asynchron verschiedene Datenquellen angefragt, um entsprechend passende Filme zu der jeweiligen Datei zu finden. Die folgenden Datenquellen werden genutzt:

Quelle Beschreibung
opensubtitles.org Opensubtitles.org wurde zum einfachen Uploaden und Downloaden von Untertiteln entwickelt. Um den passenden Untertitel zu einer Datei zu finden nutzt es einen Hash der Datei. Diesen vergleicht es mit bekannten Hashes von Filmen, zu denen von Nutzern zuvor Untertitel hochgeladen wurden. Movie Library nutzt diese Information um den Titel des Filmes zu bestimmen.
freebase.com Freebase.com ist eine offene Wissensbasis, die Daten verschiedener Quellen enthält, u.a. einiger Wikis. An Freebase werden bis zu 3 Anfragen gestellt. Die Erste überprüft, ob es Filme gibt deren Titel alle Wörter des bereinigten Dateinamens enthalten. Sollte dies keine Ergebnisse liefern, wird eine zweite Query gestellt, welche nach Filmen sucht, deren Titel Wortgruppen des bereinigten Dateinames enthalten. Sollten wieder keine Ergebnisse gefunden werden, dann durchsucht die dritte Anfrage alle Felder von Filmen nach dem bereinigten Dateinamen.
google.com Movie Library benutzt Google.com, um nach dem bereinigten Dateinamen auf der Seite imdb.com zu suchen. Aus den ersten 5 Suchergebnissen wird die IMDB ID durch Screenscraping extrahiert.

Nachdem aus den genannten Quellen die IMDB IDs von passenden Filmen gefunden wurden, werden deren weitere Informationen mit Hilfe von omdbapi.com bestimmt. Dazu liefert Freebase den deutschen Titel und ofdb.de das Poster des Films.

Die Wahrscheinlichkeiten, mit der ein gefundener Film zu der Datei passt, werden wie folgt berechnet. Abhängig von welcher Quelle ein Film geliefert wird, werden dem Film Punkte gutgeschrieben. Wird ein Film von mehreren Quellen geliefert, so bekommt er die Punkte aller Quellen. Die Punkte die eine Quelle an einen Film vergibt, werden mit der Formel berechnet:

rating

Die posterPenalty Variable prüft, ob für den Film ein Poster gefunden werden kann. Wenn ja ist die posterPenalty=1, andernfalls ist posterPenalty=2/3, was zu einer niedrigeren Wahrscheinlichkeit führt. Auf ähnliche Weise prüft levenshteinPenalty die Ähnlichkeit (Levenshtein Distanz) des gefundenen Filmes zu dem bereinigten Dateinamen. Dabei wird sowohl der deutsche als auch der englische Titel überprüft und das beste Ergebnis zur Bewertung herangezogen. Bei geringer Ähnlichkeit führt demzufolge die levenshteinPenalty zu einer deutlich schlechteren Bewertung des Films, wenn sich Dateiname und Titel sehr ähnlich sind wird die Wahrscheinlichkeit kaum beeinflusst. Die Levenshtein Ähnlichkeit zweier Zeichenketten wird dabei wie folgt berechnet:

levenshteinsimilarity

Das Gewicht und der Score sind dabei abhängig von den Quellen:

Quelle Weight Score
opensubtitles.org 3 Der Score einen Films ist der SeenCount, also die Anzahl der Hashes die für diesen Film auf opensubtitles.org eingereicht wurden.
freebase.com 2 Der Score wird den Suchergebnissen von Freebase zugewiesen. Er setzt sich zusammen aus einer inhärenten Bewertung der Freebase Entität (Ein- und ausgehende Links auf Freebase und Wikipedia) und der Bewertung der Qualität des Text Matchings.
google.com 2 Das erste Suchergebnis bekommt Score=1.0, alle anderen Score=0.5.

Aus den Punktwerten der einzelnen Filme werden schließlich die Wahrscheinlichkeiten berechnet:

probability

Darstellung von Filmen

Die Suche der Filme im Search Movie Files Tab wird durch einen MultifieldQueryParser von Lucene realisiert. Das Ranking der Suchergebnisse bei einer Stichwortsuche geschieht hauptsächlich aus Basis der Übereinstimmung mit dem Filmtitel.

Um die Movie Library im Browser betrachten zu können, wird zuerst der Lucene Index mittels Gson im das JSONP Format ausgeschrieben. So kann der Inhalt mit dem Exhibit Framework dargestellt werden.

Clone this wiki locally