diff --git a/recommender/.gitignore b/recommender/.gitignore index 06a36eb..87f251b 100644 --- a/recommender/.gitignore +++ b/recommender/.gitignore @@ -3,4 +3,4 @@ data/**/* .ipynb_checkpoints/ -node_modules +node_modules/ diff --git a/recommender/.nvmrc b/recommender/.nvmrc new file mode 100644 index 0000000..3c03207 --- /dev/null +++ b/recommender/.nvmrc @@ -0,0 +1 @@ +18 diff --git a/recommender/jupyter/explore.ipynb b/recommender/jupyter/explore.ipynb deleted file mode 100644 index 1d97281..0000000 --- a/recommender/jupyter/explore.ipynb +++ /dev/null @@ -1,287 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true, - "scrolled": false, - "ExecuteTime": { - "end_time": "2023-05-27T23:18:47.090794527Z", - "start_time": "2023-05-27T23:18:44.747782347Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-05-28 01:18:45.250665: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", - "To enable the following instructions: SSE4.1 SSE4.2 AVX AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" - ] - }, - { - "data": { - "text/plain": " foreignId type provider title \\\n0 773655 movie tmdb death to 2020 \n1 598331 movie tmdb monster-liga \n2 598268 movie tmdb the whaler boy \n3 655 movie tmdb paris, texas \n4 657 movie tmdb james bond 007 - liebesgrüße aus moskau \n.. ... ... ... ... \n195 45 tv tmdb top gear \n196 86878 tv tmdb klinik am südring - youtube \n197 197032 tv tmdb good times island \n198 86943 tv tmdb girls from ipanema \n199 86947 tv tmdb team wallraff – reporter undercover \n\n summary runtime rating \\\n0 macher black mirror blicken hochkarätigen star... 71 65 \n1 stadt stoker beliebten lokalmatador monsterwre... 95 69 \n2 leshka 15jähriger inuitwaljäger sibirischen pa... 93 61 \n3 vier jahre verschwinden taucht tot geglaubte t... 138 81 \n4 james bond istanbul russische dechiffriermasch... 115 71 \n.. ... ... ... \n195 spektakulärsten autos welt testfahrten vulkan ... 60 74 \n196 klinik südring bieten echte ärzte schwestern e... 0 0 \n197 zweiteiliges penpaper deutschen senders rocket... 118 0 \n198 hausfrau 1950er jahren geht rio de janeiro man... 60 69 \n199 titelgebenden enthüllungsjournalisten günter w... 0 80 \n\n releaseDate genre_1 genre_2 genre_3 genre_4 \n0 2020-12-27T00:00:00Z komödie \n1 2021-12-15T00:00:00Z animation familie \n2 2020-10-08T00:00:00Z drama \n3 1984-08-23T00:00:00Z drama \n4 1963-10-10T00:00:00Z abenteuer action thriller \n.. ... ... ... ... ... \n195 2002-10-20T00:00:00Z dokumentarfilm komödie talk \n196 2017-11-01T00:00:00Z drama \n197 2017-09-23T00:00:00Z komödie mystery \n198 2019-03-22T00:00:00Z drama \n199 2012-05-30T00:00:00Z dokumentarfilm reality \n\n[200 rows x 12 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
foreignIdtypeprovidertitlesummaryruntimeratingreleaseDategenre_1genre_2genre_3genre_4
0773655movietmdbdeath to 2020macher black mirror blicken hochkarätigen star...71652020-12-27T00:00:00Zkomödie
1598331movietmdbmonster-ligastadt stoker beliebten lokalmatador monsterwre...95692021-12-15T00:00:00Zanimationfamilie
2598268movietmdbthe whaler boyleshka 15jähriger inuitwaljäger sibirischen pa...93612020-10-08T00:00:00Zdrama
3655movietmdbparis, texasvier jahre verschwinden taucht tot geglaubte t...138811984-08-23T00:00:00Zdrama
4657movietmdbjames bond 007 - liebesgrüße aus moskaujames bond istanbul russische dechiffriermasch...115711963-10-10T00:00:00Zabenteueractionthriller
.......................................
19545tvtmdbtop gearspektakulärsten autos welt testfahrten vulkan ...60742002-10-20T00:00:00Zdokumentarfilmkomödietalk
19686878tvtmdbklinik am südring - youtubeklinik südring bieten echte ärzte schwestern e...002017-11-01T00:00:00Zdrama
197197032tvtmdbgood times islandzweiteiliges penpaper deutschen senders rocket...11802017-09-23T00:00:00Zkomödiemystery
19886943tvtmdbgirls from ipanemahausfrau 1950er jahren geht rio de janeiro man...60692019-03-22T00:00:00Zdrama
19986947tvtmdbteam wallraff – reporter undercovertitelgebenden enthüllungsjournalisten günter w...0802012-05-30T00:00:00Zdokumentarfilmreality
\n

200 rows × 12 columns

\n
" - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import re\n", - "\n", - "import numpy as np\n", - "import pandas as pd\n", - "from keras.utils import pad_sequences\n", - "from keras_preprocessing.text import Tokenizer\n", - "from nltk.corpus import stopwords\n", - "import string\n", - "import tensorflow as tf\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "media = pd.read_json('../data/media-200.json', lines=True)\n", - "\n", - "# transpose genres into columns\n", - "\n", - "def extract_names(row):\n", - " if row is None:\n", - " return []\n", - " return sorted([obj['name'].lower() for obj in row])\n", - "\n", - "max_names = media['genres'].apply(lambda x: len(extract_names(x))).max()\n", - "column_names = [f'genre_{i+1}' for i in range(max_names)]\n", - "\n", - "media[column_names] = pd.DataFrame(media['genres'].apply(lambda x: extract_names(x)).tolist())\n", - "\n", - "media[['summary', 'title']] = media[['summary', 'title']].apply(lambda x: x.apply(lambda y: y.lower()))\n", - "\n", - "media = media.drop(columns=['id', 'genres', 'createdAt', 'updatedAt'])\n", - "\n", - "# remove punctuation\n", - "\n", - "media['summary'] = media['summary'].apply(lambda x: re.sub('[^\\w\\s]','', x))\n", - "\n", - "# remove stopwords\n", - "\n", - "stops = stopwords.words('german')\n", - "\n", - "media['summary'] = media['summary'].apply(\n", - " lambda x: ' '.join([word for word in x.lower().translate(x.maketrans('', '', string.punctuation)).split() if word not in stops])\n", - ")\n", - "\n", - "media.fillna('', inplace=True)\n", - "\n", - "media.head(n=200)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "scrolled": true, - "ExecuteTime": { - "end_time": "2023-05-27T23:18:47.143016992Z", - "start_time": "2023-05-27T23:18:47.089365299Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": " foreignId type provider title \\\n0 773655 movie tmdb death to 2020 \n1 598331 movie tmdb monster-liga \n2 598268 movie tmdb the whaler boy \n3 655 movie tmdb paris, texas \n4 657 movie tmdb james bond 007 - liebesgrüße aus moskau \n.. ... ... ... ... \n95 425199 movie tmdb la voleuse de saint-lubin \n96 425202 movie tmdb verdammt in alle eitelkeit \n97 425206 movie tmdb vor der hochzeit \n98 425209 movie tmdb playmobil: römer & ägypter \n99 425212 movie tmdb playmobil: princess for a day \n\n summary runtime rating \\\n0 macher black mirror blicken hochkarätigen star... 71 65 \n1 stadt stoker beliebten lokalmatador monsterwre... 95 69 \n2 leshka 15jähriger inuitwaljäger sibirischen pa... 93 61 \n3 vier jahre verschwinden taucht tot geglaubte t... 138 81 \n4 james bond istanbul russische dechiffriermasch... 115 71 \n.. ... ... ... \n95 alleinerziehende mutter zweier kinder stiehlt ... 78 0 \n96 jüdin theresienstadt überlebte ganzes wiedergu... 80 0 \n97 dokumentarfilm 23jährige türkin berlin eltern ... 87 0 \n98 ersten mal junge legionär quintus römischen fl... 13 0 \n99 eigentlich prinzessin betty erträumen wundervo... 12 0 \n\n releaseDate genre_1 genre_2 genre_3 genre_4 vote \n0 2020-12-27T00:00:00Z komödie 0 \n1 2021-12-15T00:00:00Z animation familie 0 \n2 2020-10-08T00:00:00Z drama 0 \n3 1984-08-23T00:00:00Z drama 0 \n4 1963-10-10T00:00:00Z abenteuer action thriller 0 \n.. ... ... ... ... ... ... \n95 2001-11-09T00:00:00Z drama 0 \n96 2000-02-19T00:00:00Z drama komödie 0 \n97 1997-02-15T00:00:00Z dokumentarfilm 0 \n98 2017-01-09T00:00:00Z animation 0 \n99 2016-09-16T00:00:00Z 0 \n\n[100 rows x 13 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
foreignIdtypeprovidertitlesummaryruntimeratingreleaseDategenre_1genre_2genre_3genre_4vote
0773655movietmdbdeath to 2020macher black mirror blicken hochkarätigen star...71652020-12-27T00:00:00Zkomödie0
1598331movietmdbmonster-ligastadt stoker beliebten lokalmatador monsterwre...95692021-12-15T00:00:00Zanimationfamilie0
2598268movietmdbthe whaler boyleshka 15jähriger inuitwaljäger sibirischen pa...93612020-10-08T00:00:00Zdrama0
3655movietmdbparis, texasvier jahre verschwinden taucht tot geglaubte t...138811984-08-23T00:00:00Zdrama0
4657movietmdbjames bond 007 - liebesgrüße aus moskaujames bond istanbul russische dechiffriermasch...115711963-10-10T00:00:00Zabenteueractionthriller0
..........................................
95425199movietmdbla voleuse de saint-lubinalleinerziehende mutter zweier kinder stiehlt ...7802001-11-09T00:00:00Zdrama0
96425202movietmdbverdammt in alle eitelkeitjüdin theresienstadt überlebte ganzes wiedergu...8002000-02-19T00:00:00Zdramakomödie0
97425206movietmdbvor der hochzeitdokumentarfilm 23jährige türkin berlin eltern ...8701997-02-15T00:00:00Zdokumentarfilm0
98425209movietmdbplaymobil: römer & ägypterersten mal junge legionär quintus römischen fl...1302017-01-09T00:00:00Zanimation0
99425212movietmdbplaymobil: princess for a dayeigentlich prinzessin betty erträumen wundervo...1202016-09-16T00:00:00Z0
\n

100 rows × 13 columns

\n
" - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# add vote to movies\n", - "# vote all \"historie\" movies \"positive\"\n", - "\n", - "# 1 = positive\n", - "# 0 = neutral\n", - "# -1 = negative\n", - "\n", - "def vote(row):\n", - " for i in range(max_names):\n", - " if row[f'genre_{i+1}'] == 'historie':\n", - " return 1\n", - "\n", - " return 0\n", - "\n", - "media['vote'] = media.apply(lambda x: vote(x), axis=1)\n", - "\n", - "media.head(n=100)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'': 1, 'drama': 2, 'komödie': 3, 'action': 4, 'thriller': 5, 'abenteuer': 6, 'fantasy': 7, 'animation': 8, 'krimi': 9, 'dokumentarfilm': 10, 'adventure': 11, 'mystery': 12, 'sci': 13, 'fi': 14, 'familie': 15, 'liebesfilm': 16, 'science': 17, 'fiction': 18, 'reality': 19, 'horror': 20, 'talk': 21, 'historie': 22, 'musik': 23, 'kids': 24, 'kriegsfilm': 25, 'western': 26, 'war': 27, 'politics': 28, 'news': 29, 'tv': 30, 'film': 31}\n" - ] - } - ], - "source": [ - "genre_tok = Tokenizer(oov_token='')\n", - "\n", - "for i in range(max_names):\n", - " genre_tok.fit_on_texts(media[f'genre_{i+1}'])\n", - "\n", - "print(genre_tok.word_index)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-05-27T23:18:47.145065836Z", - "start_time": "2023-05-27T23:18:47.140248523Z" - } - } - }, - { - "cell_type": "code", - "execution_count": 5, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'': 1, 'leben': 2, 'welt': 3, 'dabei': 4, 'familie': 5, 'junge': 6, 'jahre': 7, 'frau': 8, 'immer': 9, 'beiden': 10, 'stadt': 11, 'jahr': 12, 'harry': 13, 'macht': 14, 'kommt': 15, 'mann': 16, 'eltern': 17, 'bond': 18, 'beginnt': 19, 'serie': 20, 'trifft': 21, 'james': 22, 'zwei': 23, 'wurde': 24, 'jungen': 25, 'schon': 26, 'ganz': 27, 'jedoch': 28, 'zusammen': 29, 'menschen': 30, 'suche': 31, 'führen': 32, 'deren': 33, 'zeit': 34, 'abenteuer': 35, 'liebe': 36, 'mädchen': 37, 'mehr': 38, 'zurück': 39, 'finden': 40, 'neuen': 41, 'hilfe': 42, 'drei': 43, 'gerade': 44, 'lange': 45, 'stellen': 46, 'new': 47, 'geschichte': 48, 'planeten': 49, 'versucht': 50, 'lebt': 51, 'vier': 52, 'bruder': 53, 'haus': 54, 'gemeinsam': 55, 'geht': 56, 'neue': 57, 'handelt': 58, 'bald': 59, 'kennen': 60, 'gelingt': 61, 'jahren': 62, 'erde': 63, 'frauen': 64, 'insel': 65, 'deutsche': 66, 'stellt': 67, 'vater': 68, 'treffen': 69, 'tod': 70, 'entführt': 71, 'judah': 72, 'nachdem': 73, 'lernt': 74, 'freunde': 75, 'dafür': 76, 'reise': 77, 'schließlich': 78, 'tages': 79, 'männer': 80, 'kommen': 81, 'ersten': 82, 'dokumentation': 83, 'kampf': 84, 'mal': 85, 'gibt': 86, 'endlich': 87, 'ende': 88, 'stehen': 89, 'lebens': 90, 'seit': 91, 'bringen': 92, 'bringt': 93, 'film': 94, 'wissenschaftler': 95, 'später': 96, 'spielt': 97, 'davon': 98, 'erfährt': 99, 'schule': 100, 'lässt': 101, 'kämpfen': 102, 'gerät': 103, 'setzt': 104, 'charles': 105, 'lassen': 106, 'genug': 107, 'unfall': 108, 'tag': 109, 'nacht': 110, 'kleine': 111, 'seite': 112, 'großen': 113, 'gruppe': 114, 'dr': 115, 'of': 116, 'besonders': 117, 'neues': 118, 'sophie': 119, 'tochter': 120, 'ausgerechnet': 121, 'sohn': 122, 'onkel': 123, 'erst': 124, 'krieg': 125, 'sieben': 126, 'mutter': 127, 'zukunft': 128, 'gar': 129, 'agent': 130, 'letzten': 131, 'ziel': 132, 'rache': 133, 'denen': 134, 'hogwarts': 135, 'wer': 136, 'schreiben': 137, 'the': 138, 'los': 139, 'karriere': 140, 'berlin': 141, 'zieht': 142, 'max': 143, 'agenten': 144, 'erzählt': 145, 'trotz': 146, 'geld': 147, 'kinder': 148, 'cia': 149, 'geheimnis': 150, 'findet': 151, 'kleinen': 152, 'beste': 153, 'beim': 154, 'begleitet': 155, 'team': 156, 'ehemalige': 157, 'hitler': 158, 'besucht': 159, 'heimlich': 160, 'traum': 161, 'patienten': 162, 'gleichzeitig': 163, 'hexe': 164, 'richterin': 165, 'paar': 166, 'außerirdischen': 167, 'david': 168, 'oft': 169, 'spiel': 170, 'zeiten': 171, 'größten': 172, 'verwandeln': 173, 'monster': 174, 'taucht': 175, 'travis': 176, 'langsam': 177, 'begibt': 178, 'russische': 179, 'töten': 180, 'somit': 181, 'einfach': 182, 'beschließt': 183, 'deutschland': 184, 'schicksal': 185, 'hand': 186, 'sorgen': 187, 'vergangenheit': 188, 'helfen': 189, 'plötzlich': 190, 'weise': 191, 'freundschaft': 192, 'täter': 193, 'ebenso': 194, 'besten': 195, 'vergessen': 196, 'großer': 197, 'sogar': 198, 'general': 199, 'europa': 200, 'tatsächlich': 201, 'annie': 202, 'verlassen': 203, 'verändern': 204, 'eve': 205, 'bereits': 206, 'ehe': 207, 'affäre': 208, 'fällt': 209, 'bekommen': 210, 'carrie': 211, 'nächsten': 212, 'neben': 213, 'geben': 214, 'schließt': 215, 'britische': 216, 'menge': 217, 'welten': 218, 'maverick': 219, 'top': 220, 'außerdem': 221, 'rick': 222, 'virginia': 223, 'geworden': 224, 'angeles': 225, 'helden': 226, 'professor': 227, 'verbrechen': 228, 'daran': 229, 'fest': 230, 'kevin': 231, 'york': 232, 'suchen': 233, 'gemacht': 234, 'scheint': 235, 'dokumentarfilm': 236, 'blick': 237, 'plan': 238, 'powers': 239, 'einzige': 240, 'geheimnisse': 241, 'ehre': 242, 'aliens': 243, 'arbeit': 244, 'all': 245, 'fragen': 246, 'liv': 247, 'geschichten': 248, 'sowie': 249, 'zeigen': 250, 'bleiben': 251, 'unterschiedlichen': 252, 'kaum': 253, 'teenager': 254, 'sehen': 255, 'adolf': 256, 'interviews': 257, 'stoker': 258, 'entweder': 259, 'liebenswerten': 260, 'beweisen': 261, 'berühmten': 262, 'alaska': 263, 'tot': 264, 'beginn': 265, 'erhalten': 266, 'angebot': 267, 'geliebte': 268, 'oskar': 269, 'klar': 270, 'stimme': 271, 'innerhalb': 272, '100': 273, 'millionen': 274, 'deutschen': 275, 'heiratet': 276, 'maria': 277, 'hermann': 278, 'sofort': 279, 'allein': 280, 'gestellt': 281, 'nimmt': 282, 'beziehung': 283, 'bill': 284, 'kehrt': 285, 'treiben': 286, 'jigsaws': 287, 'commander': 288, 'verwickelt': 289, 'sturm': 290, 'erstmals': 291, 'auge': 292, 'messala': 293, 'einst': 294, 'schwer': 295, 'central': 296, 'älteren': 297, 'rio': 298, 'de': 299, 'janeiro': 300, 'raumschiff': 301, 'weltkrieges': 302, 'ermittelt': 303, 'daraufhin': 304, '007': 305, 'erhält': 306, 'lang': 307, 'mord': 308, 'freiheit': 309, 'kennt': 310, 'potter': 311, 'kräfte': 312, 'vorstellen': 313, 'offenbar': 314, 'schwebt': 315, 'gefahr': 316, 'unbedingt': 317, 'gehen': 318, 'lernen': 319, 'namen': 320, 'gefährlichen': 321, 'entkommen': 322, 'lord': 323, 'nachforschungen': 324, 'menschheit': 325, 'feindlichen': 326, 'ahnt': 327, 'blanche': 328, 'sucht': 329, 'ehemann': 330, 'katastrophe': 331, 'alvy': 332, 'studentin': 333, 'trägt': 334, 'droht': 335, 'stößt': 336, 'margo': 337, 'sieht': 338, 'star': 339, 'schauspielerin': 340, 'ziele': 341, 'effi': 342, 'glück': 343, 'zuvor': 344, 'entdeckt': 345, 'stirbt': 346, 'westen': 347, 'schnell': 348, 'flucht': 349, 'wenig': 350, 'augen': 351, 'kollege': 352, 'leiter': 353, 'kriminellen': 354, 'privatschule': 355, 'besorgt': 356, 'spielen': 357, 'verbindung': 358, 'england': 359, 'stürzen': 360, 'mächtigsten': 361, 'elisabeth': 362, 'allerdings': 363, 'chaos': 364, 'kindern': 365, 'hannes': 366, 'bricht': 367, 'internationale': 368, 'internationalen': 369, 'müssen': 370, 'bekommt': 371, 'mark': 372, 'schrecklichen': 373, 'polizei': 374, 'schüler': 375, 'drew': 376, 'verschwunden': 377, 'beauftragt': 378, 'spur': 379, 'führt': 380, 'freunden': 381, 'unterstützung': 382, 'entdecken': 383, 'begegnet': 384, 'mafia': 385, 'schöne': 386, 'wirklich': 387, 'hause': 388, 'diesmal': 389, 'überhaupt': 390, 'kleines': 391, 'staaten': 392, 'frank': 393, 'gute': 394, 'tina': 395, 'eigenen': 396, 'regeln': 397, 'erste': 398, 'mond': 399, 'geschossen': 400, 'worden': 401, 'lösen': 402, 'juli': 403, 'evil': 404, 'gefängnis': 405, 'austin': 406, 'goldständer': 407, 'persönliche': 408, 'konnte': 409, 'arbeiten': 410, 'teil': 411, '13': 412, 'john': 413, 'präsident': 414, 'usa': 415, 'tage': 416, 'ruby': 417, 'jim': 418, 'obwohl': 419, 'christian': 420, 'paul': 421, 'frieden': 422, 'gittes': 423, 'rund': 424, 'unterwelt': 425, 'versuchen': 426, 'einzigartigen': 427, 'fast': 428, 'wirklichkeit': 429, 'sam': 430, 'ums': 431, 'gang': 432, 'musik': 433, 'charaktere': 434, 'kumpel': 435, 'wegen': 436, 'snowy': 437, 'white': 438, 'schwert': 439, 'realität': 440, 'erleben': 441, 'berliner': 442, 'verhindern': 443, '20': 444, 'zweiten': 445, 'kamera': 446, 'leute': 447, 'betty': 448, 'nachts': 449, 'sally': 450, 'hieß': 451, '30': 452, 'kollegen': 453, 'ungewöhnlichen': 454, 'ab': 455, 'langen': 456, 'gott': 457, 'ereignisse': 458, 'namens': 459, 'jin': 460, 'gehören': 461, 'touya': 462, 'bekannte': 463, 'diktatur': 464, 'zuschauer': 465, 'park': 466, 'friends': 467, 'cerulean': 468, 'viele': 469, 'jeweils': 470, 'sendung': 471, 'rza': 472, 'möglichkeiten': 473, 'schwierigkeiten': 474, 'fiktiven': 475, 'westeros': 476, 'königreichen': 477, 'pacific': 478, 'pudge': 479, 'konfrontiert': 480, 'schulen': 481, 'bert': 482, 'macher': 483, 'black': 484, 'beliebten': 485, 'tentakular': 486, 'verliert': 487, 'steht': 488, 'steve': 489, 'herausforderung': 490, 'retten': 491, 'steckt': 492, 'verliebt': 493, 'arzt': 494, 'walt': 495, 'la': 496, 'hunter': 497, 'trennung': 498, 'kehren': 499, 'erinnerungen': 500, 'vertrauen': 501, 'odyssee': 502, 'tödliche': 503, 'art': 504, 'fährte': 505, 'gesetzt': 506, 'fort': 507, 'besitz': 508, 'bonds': 509, 'gegner': 510, 'gewordene': 511, 'pussy': 512, 'vereiteln': 513, 'alt': 514, 'dennoch': 515, 'hört': 516, 'glas': 517, 'gewalt': 518, 'pfund': 519, 'form': 520, 'secret': 521, 'service': 522, 'soldaten': 523, 'explosion': 524, 'zerstört': 525, 'eigene': 526, 'sei': 527, 'großvater': 528, 'afroamerikanischen': 529, 'geschickt': 530, 'stammt': 531, 'gefällt': 532, 'bekannt': 533, 'wunder': 534, '1995': 535, 'neu': 536, '12': 537, 'mörderische': 538, 'letztes': 539, 'land': 540, 'schweben': 541, 'blau': 542, 'gewinnen': 543, 'mission': 544, 'rettete': 545, 'jerusalem': 546, 'neuer': 547, 'kommandant': 548, 'groß': 549, 'probe': 550, 'römischen': 551, 'verdächtigt': 552, 'unschuldig': 553, 'unrecht': 554, 'rächen': 555, 'do': 556, 'brasilianischer': 557, 'klassiker': 558, 'metropole': 559, 'amerikanische': 560, 'japan': 561, 'erzfeind': 562, 'blofeld': 563, 'urlaub': 564, 'tracy': 565, 'umzubringen': 566, 'heiraten': 567, 'robert': 568, 'erfolg': 569, '15': 570, 'oh': 571, 'daesu': 572, 'geschäftsmann': 573, 'unbekannten': 574, 'darüber': 575, 'ehefrau': 576, 'entlassen': 577, 'herauszufinden': 578, 'getötet': 579, 'gewissen': 580, 'magische': 581, 'besitzt': 582, 'hexerei': 583, 'zauberei': 584, 'aufgenommen': 585, 'luft': 586, 'vernichten': 587, 'spannende': 588, 'sommerferien': 589, 'tante': 590, 'ron': 591, 'hermine': 592, 'briefe': 593, 'geheimnisvolle': 594, 'dobby': 595, 'harrys': 596, 'falls': 597, 'zurückkehrt': 598, 'abhalten': 599, 'ankommen': 600, 'elf': 601, 'beginnen': 602, 'her': 603, 'schuljahr': 604, 'ständig': 605, 'gestalt': 606, 'dementoren': 607, 'bedrohen': 608, 'spitzel': 609, 'große': 610, 'feuerkelch': 611, 'teilnehmer': 612, 'geworfen': 613, 'alltag': 614, 'verbringen': 615, 'ändert': 616, 'schlagartig': 617, 'abends': 618, 'cousin': 619, 'flugzeug': 620, 'merkt': 621, 'gesamte': 622, 'weltall': 623, 'sinkt': 624, 'meer': 625, 'bord': 626, 'städte': 627, 'bevor': 628, 'hände': 629, 'wahren': 630, 'hintergründe': 631, 'geheimnisvollen': 632, 'geführt': 633, 'benutzt': 634, 'mannes': 635, 'schwester': 636, 'schüchternen': 637, 'träumt': 638, 'auseinandersetzungen': 639, 'enden': 640, 'schüchterne': 641, 'freund': 642, 'kurz': 643, 'unerkannt': 644, 'richard': 645, 'produzenten': 646, 'verehrerin': 647, 'hält': 648, 'verfolgt': 649, 'spät': 650, 'siebzehnjährige': 651, 'innstetten': 652, 'verheiratet': 653, 'politische': 654, 'genießt': 655, 'crampas': 656, 'versetzung': 657, 'alten': 658, 'läßt': 659, 'entwickelter': 660, 'elektromagnetische': 661, 'kgb': 662, 'verdacht': 663, 'aktion': 664, 'zerstören': 665, 'chef': 666, 'spuren': 667, 'jamal': 668, 'bronx': 669, 'schriftsteller': 670, 'mentors': 671, 'single': 672, 'freude': 673, 'morgen': 674, 'night': 675, 'ada': 676, 'klavier': 677, 'schafft': 678, 'darf': 679, 'leisten': 680, 'göran': 681, 'hausfrau': 682, 'politik': 683, 'freien': 684, 'praktiziert': 685, 'aufeinanderprallen': 686, 'verschiedenen': 687, 'löst': 688, 'inari': 689, 'wettbewerb': 690, 'stolpert': 691, 'weiß': 692, 'kommissar': 693, 'mordes': 694, 'united': 695, 'states': 696, 'navy': 697, 'goose': 698, 'befehle': 699, 'stinger': 700, 'widerwillig': 701, 'ausbildung': 702, 'school': 703, 'genannt': 704, 'gleich': 705, 'tom': 706, 'anruferin': 707, 'ermordet': 708, 'aufgefunden': 709, 'tat': 710, 'glaubt': 711, 'früheren': 712, 'mysteriösen': 713, 'umständen': 714, 'gestorben': 715, 'keeney': 716, 'beleuchtet': 717, 'mcginnis': 718, 'träumen': 719, 'künstlerin': 720, 'mörderin': 721, 'mitglied': 722, 'hit': 723, 'organisation': 724, 'mörder': 725, 'vaters': 726, 'gefährliche': 727, 'waffen': 728, 'voldemorts': 729, 'magischen': 730, 'abberline': 731, 'herstellen': 732, 'jack': 733, 'arbeiterviertel': 734, 'brutalen': 735, 'jimmy': 736, 'tommy': 737, 'mitglieder': 738, 'yorker': 739, 'brauchen': 740, 'fasziniert': 741, 'arbeitet': 742, 'ebenfalls': 743, 'einschließlich': 744, 'scarlett': 745, 'bürgerkrieges': 746, 'glücklich': 747, 'mccallister': 748, 'geplant': 749, 'bereit': 750, 'böse': 751, 'verteidigen': 752, 'florida': 753, 'erfahrungen': 754, 'gelernt': 755, 'eben': 756, 'nassen': 757, 'banditen': 758, 'gleichen': 759, 'miss': 760, 'quer': 761, 'filme': 762, 'verschiedene': 763, 'leidenschaftlicher': 764, 'billy': 765, 'kopf': 766, 'superstar': 767, 'idol': 768, 'widrigkeiten': 769, 'vermächtnis': 770, 'bestimmen': 771, 'kulissen': 772, 'lädt': 773, 'private': 774, 'anfängen': 775, 'legendären': 776, 'for': 777, 'je': 778, 'leitung': 779, 'riesigen': 780, 'kapsel': 781, 'sicher': 782, 'fliegen': 783, 'start': 784, 'französische': 785, 'schiff': 786, 'antonio': 787, 'bay': 788, 'jemand': 789, 'fliehen': 790, 'tritt': 791, 'widersacher': 792, 'wissen': 793, 'tun': 794, 'sowohl': 795, 'sorge': 796, 'bobby': 797, 'trotzdem': 798, 'besteht': 799, 'strafe': 800, 'präsentiert': 801, 'fbi': 802, 'oswald': 803, 'garrison': 804, 'richter': 805, 'indien': 806, 'aufstieg': 807, '1999': 808, '1950er': 809, 'angesiedelt': 810, 'berichtet': 811, 'japanische': 812, 'terroristen': 813, 'kämpft': 814, 'moulin': 815, 'rouge': 816, 'satine': 817, 'englischen': 818, 'sichern': 819, 'herz': 820, 'vorstellung': 821, 'colonel': 822, 'nicholson': 823, 'bauen': 824, 'behandlung': 825, 'michel': 826, 'christina': 827, 'gehört': 828, 'gesamten': 829, 'kollegin': 830, 'leiche': 831, 'swimmingpool': 832, 'werfen': 833, 'landet': 834, 'washington': 835, 'halten': 836, 'staates': 837, 'mulwray': 838, 'fotos': 839, 'erscheinen': 840, 'unbekannte': 841, 'direkt': 842, 'ferner': 843, 'weit': 844, 'niedergelassen': 845, 'herausstellt': 846, 'morbius': 847, 'überlebt': 848, 'zivilisation': 849, 'tötet': 850, 'gelandet': 851, 'benötigen': 852, 'selene': 853, 'michael': 854, 'halb': 855, 'jeweiligen': 856, 'beenden': 857, 'ellissen': 858, 'fp1': 859, 'öffnet': 860, 'dokumentarisch': 861, 'hoffnung': 862, 'videodrome': 863, 'produktion': 864, 'psychologin': 865, 'veränderungen': 866, 'chrome': 867, 'soldiers': 868, 'tankstelle': 869, 'letzte': 870, 'erklären': 871, 'isoliert': 872, 'rest': 873, 'einzigen': 874, 'dokumentiert': 875, 'zeichnet': 876, 'genau': 877, 'supermarkt': 878, 'ciro': 879, 'gedämpfte': 880, 'erdbeben': 881, 'gebäude': 882, 'langjährigen': 883, 'weniger': 884, 'morgan': 885, 'auftaucht': 886, 'jagen': 887, 'fässer': 888, 'landen': 889, 'waldgebiet': 890, 'beide': 891, 'fürchten': 892, 'eagle': 893, 'stark': 894, 'niederlage': 895, 'witwe': 896, 'verehrer': 897, 'idee': 898, 'freundin': 899, 'emmanuelle': 900, 'träume': 901, 'sexualität': 902, 'rede': 903, '1990': 904, 'anfänge': 905, 'deutschlands': 906, 'verkauften': 907, 'schritt': 908, 'spielfilm': 909, 'zweier': 910, 'schleicht': 911, 'erwischt': 912, 'erfolgreich': 913, 'sprechenden': 914, 'olympischen': 915, 'vorbereitung': 916, 'meinung': 917, 'erlangen': 918, 'quintus': 919, 'sinn': 920, 'schaffen': 921, 'prinzessin': 922, 'erfolgreichste': 923, 'dan': 924, 'bilden': 925, 'überlebenden': 926, 'ansehen': 927, 'ganze': 928, 'job': 929, 'carol': 930, 'lieben': 931, 'thomas': 932, 'al': 933, 'schatzinsel': 934, 'zunächst': 935, 'unmittelbar': 936, 'vereinigten': 937, 'amerika': 938, 'rivalisierenden': 939, 'brüdern': 940, 'familien': 941, 'bild': 942, 'graf': 943, 'medora': 944, 'durchs': 945, 'assistentin': 946, 'verfolgen': 947, 'bemerkt': 948, 'eher': 949, 'alternative': 950, 'kriminalfälle': 951, 'begeistert': 952, 'methoden': 953, 'vorgesetzten': 954, 'folge': 955, 'erweist': 956, 'starten': 957, 'zeb': 958, 'timothy': 959, 'indianern': 960, 'georgia': 961, 'ruhm': 962, 'hercules': 963, 'shins': 964, 'erfahren': 965, 'kotori': 966, 'begegnen': 967, 'version': 968, 'shin': 969, 'miteinander': 970, 'ermorden': 971, 'keina': 972, 'leadale': 973, 'beziehungen': 974, 'truecrimeserie': 975, 'zeigt': 976, 'yuki': 977, 'rückt': 978, 'yukis': 979, 'verstärkt': 980, 'alte': 981, 'bieten': 982, 'loki': 983, 'betreibt': 984, 'mensch': 985, 'einfachen': 986, 'text': 987, 'mirai': 988, 'japari': 989, 'serval': 990, 'angekommen': 991, 'möchten': 992, 'entführen': 993, 'chance': 994, 'paradise': 995, 'ausgebildet': 996, 'aufmerksam': 997, 'günther': 998, 'jauch': 999, 'moderatoren': 1000, 'ermöglicht': 1001, 'miri': 1002, 'erscheint': 1003, 'ichigo': 1004, 'schnelle': 1005, 'persönlichkeiten': 1006, 'acht': 1007, 'bekannten': 1008, 'clan': 1009, 'untersteht': 1010, 'lola': 1011, 'miles': 1012, 'privatleben': 1013, 'tätigkeit': 1014, 'einklang': 1015, 'norden': 1016, 'sommer': 1017, 'ähnelt': 1018, 'rasse': 1019, 'frage': 1020, 'union': 1021, 'hauptfigur': 1022, 'weltweiten': 1023, 'zuschlagen': 1024, 'shield': 1025, 'chuck': 1026, 'deadwood': 1027, 'wohl': 1028, 'house': 1029, 'einfühlsam': 1030, 'umgang': 1031, 'rechten': 1032, 'aufmerksamkeit': 1033, 'motorradclub': 1034, 'sons': 1035, 'anarchy': 1036, 'gesetz': 1037, 'wann': 1038, 'meisten': 1039, 'darunter': 1040, 'thema': 1041, 'zweiteilige': 1042, 'nicolette': 1043, 'show': 1044, 'jugendliche': 1045, 'entgegen': 1046, 'inferia': 1047, 'celestia': 1048, 'grand': 1049, 'fall': 1050, 'rid': 1051, 'gefährten': 1052, 'belcagne': 1053, 'reisen': 1054, 'talkshow': 1055, '1944': 1056, 'pattaya': 1057, 'appartements': 1058, 'vermietet': 1059, 'bewohner': 1060, 'horst': 1061, 'ingo': 1062, 'johannes': 1063, 'ernie': 1064, 'saurier': 1065, 'senders': 1066, 'dinosaurier': 1067, 'reich': 1068, 'giganten': 1069, 'einblick': 1070, 'mirror': 1071, 'blicken': 1072, 'hochkarätigen': 1073, 'stars': 1074, '2020': 1075, 'lokalmatador': 1076, 'monsterwrestlingchampion': 1077, 'nachbarstadt': 1078, 'wrestlingmaskottchen': 1079, 'ruin': 1080, 'darum': 1081, 'erfolgreichsten': 1082, 'monsterwrestlingtrainers': 1083, 'maskottchen': 1084, 'tollpatschigen': 1085, 'unsportlichen': 1086, 'umjubelten': 1087, 'ligastars': 1088, 'superwrestler': 1089, 'schlagen': 1090, 'zahm': 1091, 'monsterwrestling': 1092, 'beliebter': 1093, 'volkssport': 1094, 'teenagerin': 1095, 'gewöhnlichen': 1096, 'wrestlingchampion': 1097, 'gleiche': 1098, 'trainertalent': 1099, 'leshka': 1100, '15jähriger': 1101, 'inuitwaljäger': 1102, 'sibirischen': 1103, 'pazifikküste': 1104, 'websessions': 1105, 'sexmodel': 1106, 'holysweet999': 1107, 'detroit': 1108, 'beschliesst': 1109, 'nussschale': 1110, 'überzusetzen': 1111, 'drama': 1112, 'russland': 1113, 'verschwinden': 1114, 'geglaubte': 1115, 'steinwüste': 1116, 'nahe': 1117, 'mexikanischen': 1118, 'grenze': 1119, 'benachrichtigt': 1120, 'erinnerungslosen': 1121, 'noblen': 1122, 'aufnimmt': 1123, 'siebenjährigen': 1124, 'zögerlich': 1125, 'zurückhaltender': 1126, 'fasst': 1127, 'verschollenen': 1128, 'jane': 1129, 'abenteuerlichen': 1130, 'kargen': 1131, 'südwesten': 1132, 'amerikas': 1133, 'istanbul': 1134, 'dechiffriermaschine': 1135, 'übergelaufenen': 1136, 'agentin': 1137, 'verlockende': 1138, 'entpuppt': 1139, 'falle': 1140, 'teuerste': 1141, 'superagent': 1142, 'majestät': 1143, 'verbrecherischen': 1144, 'genies': 1145, 'goldreserven': 1146, 'knox': 1147, 'goldfinger': 1148, 'abtrünnig': 1149, 'tödlichen': 1150, 'veredelungsprozeß': 1151, 'aussetzte': 1152, 'gold': 1153, 'überzog': 1154, 'männliche': 1155, 'rivalen': 1156, 'barbiert': 1157, 'oddjob': 1158, 'leibwächter': 1159, 'exzentrischen': 1160, 'mulitmillionärs': 1161, 'rasiermesserscharfen': 1162, 'hutkrempe': 1163, 'metall': 1164, 'galore': 1165, 'raub': 1166, 'goldes': 1167, 'danzig': 1168, '1927': 1169, 'frühreife': 1170, 'matzerath': 1171, 'folgendes': 1172, 'kleinbürgerliche': 1173, 'erwachsenen': 1174, 'akzeptieren': 1175, 'wachsen': 1176, 'leidenschaftlich': 1177, 'protestiert': 1178, 'anarchische': 1179, 'zwerg': 1180, 'blechtrommel': 1181, 'fanatische': 1182, 'nazis': 1183, 'feige': 1184, 'mitläufer': 1185, 'erhebt': 1186, 'muffigen': 1187, 'spießer': 1188, 'weimarer': 1189, 'republik': 1190, 'derbe': 1191, 'erotik': 1192, 'laut': 1193, 'schrill': 1194, 'näheren': 1195, 'umgebung': 1196, 'zerspringt': 1197, 'menschlichere': 1198, 'teilzunehmen': 1199, 'weiterzuwachsen': 1200, 'verbrecherorganisation': 1201, 'phantom': 1202, 'atombomben': 1203, 'verlangt': 1204, 'tagen': 1205, 'lupenreiner': 1206, 'diamanten': 1207, 'lösegeld': 1208, 'schickt': 1209, 'bahamas': 1210, '1943': 1211, 'luftangriffs': 1212, 'braun': 1213, 'standesamt': 1214, 'fliegerbombe': 1215, 'front': 1216, 'kriegsende': 1217, 'nachricht': 1218, 'gefallen': 1219, 'veranlasst': 1220, 'lebende': 1221, 'bardame': 1222, 'lebensunterhalt': 1223, 'gi': 1224, 'kümmert': 1225, 'begehrten': 1226, 'gütern': 1227, 'nylonstrümpfen': 1228, 'zigaretten': 1229, 'versorgt': 1230, 'marias': 1231, 'kriegsgefangenschaft': 1232, 'postapokalyptischen': 1233, 'weitaus': 1234, 'wohler': 1235, 'fühlen': 1236, 'zerstörten': 1237, 'zuletzt': 1238, 'forschern': 1239, 'ausgewählt': 1240, 'terry': 1241, 'gilliam': 1242, 'langfilm': 1243, 'verfilmt': 1244, 'titel': 1245, 'monkeys': 1246, 'jigsaw': 1247, 'gehilfin': 1248, 'amanda': 1249, 'detective': 1250, 'kerry': 1251, 'fbiprofiler': 1252, 'strahm': 1253, 'perez': 1254, 'revierchef': 1255, 'hoffman': 1256, 'grausames': 1257, 'rekonstruieren': 1258, 'rigg': 1259, 'eins': 1260, 'mörderischen': 1261, 'puzzles': 1262, 'hinweise': 1263, 'deuten': 1264, 'exfrau': 1265, 'jill': 1266, 'jedesmal': 1267, 'fängt': 1268, 'harmlos': 1269, 'sanfte': 1270, 'frühlingsbrisen': 1271, 'wehen': 1272, 'wolkengebilde': 1273, 'endlose': 1274, 'verwandelt': 1275, 'giftiges': 1276, 'zorniges': 1277, 'spannungsgeladenes': 1278, 'grün': 1279, 'hörst': 1280, 'spürst': 1281, 'twister': 1282, 'gewaltigste': 1283, '50': 1284, 'rast': 1285, 'moment': 1286, 'jo': 1287, 'gewartet': 1288, 'elektronische': 1289, 'sensoren': 1290, 'zentrum': 1291, 'tornados': 1292, 'schleusen': 1293, 'meßwerte': 1294, 'zuverlässiges': 1295, 'frühwarnsystem': 1296, 'übermächtigen': 1297, 'wirbelsturm': 1298, 'wissenschaftliche': 1299, 'wettlauf': 1300, 'benhurs': 1301, 'jugendfreund': 1302, 'römischer': 1303, 'wiedersehensfreude': 1304, 'seiten': 1305, 'jüdischen': 1306, 'aufständischen': 1307, 'verraten': 1308, 'parade': 1309, 'statthalter': 1310, 'judahs': 1311, 'verletzt': 1312, 'attentats': 1313, 'kerkern': 1314, 'gefangen': 1315, 'schwört': 1316, 'blutig': 1317, 'begangene': 1318, 'verbannung': 1319, 'galeere': 1320, 'stolzen': 1321, 'meeren': 1322, 'wagenrennen': 1323, 'rom': 1324, 'hofft': 1325, 'rachepläne': 1326, 'vollenden': 1327, 'brasil': 1328, 'regisseur': 1329, 'walter': 1330, 'salles': 1331, 'verbitterten': 1332, 'verwaisten': 1333, 'station': 1334, 'meint': 1335, 'hauptbahnhof': 1336, 'mysteriöses': 1337, 'raumkapsel': 1338, 'rand': 1339, 'raffinierte': 1340, 'helga': 1341, 'brandt': 1342, 'draco': 1343, 'abbringen': 1344, 'mächtiger': 1345, 'gangsterboss': 1346, 'wichtige': 1347, 'informationen': 1348, 'j': 1349, 'flaherty': 1350, 'begleitete': 1351, 'inuit': 1352, 'nanook': 1353, 'nomadenleben': 1354, 'nördlichen': 1355, 'kanada': 1356, 'enormen': 1357, 'begründete': 1358, 'genre': 1359, 'inszenierten': 1360, 'dokumentarfilms': 1361, 'durchschnittlicher': 1362, 'familienmensch': 1363, 'einzimmerappartment': 1364, 'fenster': 1365, 'eingesperrt': 1366, 'gangstern': 1367, 'überwältigt': 1368, 'menschlichen': 1369, 'kontakt': 1370, 'völliger': 1371, 'unklarheit': 1372, 'warum': 1373, 'festgehalten': 1374, 'fernsehnachrichten': 1375, 'schuhe': 1376, 'schieben': 1377, 'unvermittelt': 1378, 'beraubt': 1379, 'entführer': 1380, 'aufgabe': 1381, 'grund': 1382, 'unaussprechliche': 1383, 'tortur': 1384, 'üben': 1385, 'seelenfrieden': 1386, '11': 1387, 'geburtstag': 1388, 'verstorbenen': 1389, 'mächtige': 1390, 'zauberer': 1391, 'erlebt': 1392, 'quidditch': 1393, 'hoch': 1394, 'gespielt': 1395, 'schwarzen': 1396, 'magier': 1397, 'schachpartie': 1398, 'lebenden': 1399, 'figuren': 1400, 'überstehen': 1401, 'schönere': 1402, 'einerseits': 1403, 'erträgt': 1404, 'herrischen': 1405, 'ton': 1406, 'petunia': 1407, 'vernon': 1408, 'dursley': 1409, 'zauberkunst': 1410, 'geheuer': 1411, 'andererseits': 1412, 'weasley': 1413, 'granger': 1414, 'beantworten': 1415, 'hauself': 1416, 'schlafzimmer': 1417, 'warnt': 1418, 'gryffindor': 1419, 'deswegen': 1420, 'gesorgt': 1421, 'rons': 1422, 'hermines': 1423, 'boshafte': 1424, 'anstellt': 1425, 'beirren': 1426, 'abscheuliche': 1427, 'magda': 1428, 'nachthimmel': 1429, 'drittes': 1430, 'ausbildungsjahr': 1431, 'haarsträubende': 1432, 'busreise': 1433, 'fahrenden': 1434, 'ritter': 1435, 'winkelgasse': 1436, 'flüchtige': 1437, 'sträfling': 1438, 'sirius': 1439, 'schwierige': 1440, 'kunst': 1441, 'hippogreif': 1442, 'umzugehen': 1443, 'verändernden': 1444, 'irrwichte': 1445, 'lustige': 1446, 'formen': 1447, 'zurückzudrehen': 1448, 'seelen': 1449, 'aussaugenden': 1450, 'belauern': 1451, 'derdessennamenichtgenanntwerdendarf': 1452, 'burg': 1453, 'untergebracht': 1454, 'aufnehmen': 1455, 'potters': 1456, 'freigibt': 1457, 'wettbewerbs': 1458, 'ruhmreichen': 1459, 'zauberschulen': 1460, 'trimagischen': 1461, 'turniers': 1462, 'drachen': 1463, 'bezwingen': 1464, 'gespenstischen': 1465, 'wasserdämonen': 1466, 'verzauberten': 1467, 'labyrinth': 1468, 'demdessennamenichtgenanntwerdendarf': 1469, 'gegenüberzustehen': 1470, 'dramatischen': 1471, 'rückkehr': 1472, 'erzfeindes': 1473, 'voldemort': 1474, 'endete': 1475, 'graue': 1476, 'empfangen': 1477, 'üblich': 1478, 'verhassten': 1479, 'verwandten': 1480, 'dursleys': 1481, 'dudley': 1482, 'angegriffen': 1483, 'zaubers': 1484, 'vertreiben': 1485, 'hierdurch': 1486, 'ungerechterweise': 1487, 'vorladung': 1488, 'zaubereigericht': 1489, 'gegenwart': 1490, 'gezaubert': 1491, 'transportes': 1492, 'rücken': 1493, 'boeing': 1494, '747': 1495, 'space': 1496, 'shuttle': 1497, 'vernichtet': 1498, 'herstellerfirma': 1499, 'shuttles': 1500, 'besitzer': 1501, 'hugo': 1502, 'drax': 1503, 'showdown': 1504, 'fischkutter': 1505, 'getarntes': 1506, 'spionageschiff': 1507, 'engländer': 1508, 'ionischen': 1509, 'befindet': 1510, 'strenggeheimes': 1511, 'steuer': 1512, 'verschlüsselungsgerät': 1513, 'atac': 1514, 'händen': 1515, 'abschuss': 1516, 'atomraketen': 1517, 'westliche': 1518, 'verwendet': 1519, 'feind': 1520, 'gigantischen': 1521, 'juwelenschieberei': 1522, 'aufzuspüren': 1523, 'octopussy': 1524, 'fersen': 1525, 'wahnsinnigen': 1526, 'hinters': 1527, 'licht': 1528, 'orlov': 1529, 'octopussyzirkus': 1530, 'vorgeblich': 1531, 'geraubten': 1532, 'kremlschatz': 1533, 'schmuggeln': 1534, 'dient': 1535, 'trojanisches': 1536, 'pferd': 1537, 'atomaren': 1538, 'sprengkörper': 1539, 'gelände': 1540, 'usairforce': 1541, 'feldberg': 1542, 'detonieren': 1543, 'verflixte': 1544, 'gastfreundschaft': 1545, 'stummfilm': 1546, '1923': 1547, 'buster': 1548, 'keaton': 1549, 'familienfehde': 1550, 'ausgangslage': 1551, 'bildet': 1552, 'kultivierte': 1553, 'labile': 1554, 'lehrerin': 1555, 'unterschlupf': 1556, 'stella': 1557, 'schwülen': 1558, 'orleans': 1559, 'mitch': 1560, 'gemeinsamen': 1561, 'stellas': 1562, 'brutaler': 1563, 'stanley': 1564, 'kowalski': 1565, 'polnischer': 1566, 'einwanderer': 1567, 'bedrängt': 1568, 'zusehends': 1569, 'scharfzüngigen': 1570, 'standupcomedian': 1571, 'überzeugten': 1572, 'yorkers': 1573, 'singer': 1574, 'gutbürgerlichen': 1575, 'hall': 1576, 'gänzlich': 1577, 'verhältnissen': 1578, 'intellektuelle': 1579, 'überfordert': 1580, 'vergeistigten': 1581, 'gerne': 1582, 'furchteinflößenden': 1583, 'waspfamilie': 1584, 'befreundeten': 1585, 'trendhedonisten': 1586, 'alpträumen': 1587, 'kokain': 1588, 'konservengelächter': 1589, 'konfrontieren': 1590, 'leichtigkeit': 1591, 'ersetzten': 1592, 'entschließt': 1593, 'allerlei': 1594, 'kompromissen': 1595, '1964': 1596, 'typen': 1597, 'liverpool': 1598, 'davor': 1599, 'völlig': 1600, 'durchgedrehte': 1601, 'hotelzimmern': 1602, 'ließe': 1603, 'lesters': 1604, 'frechzeitgenössische': 1605, 'rocknrollkomödie': 1606, 'jungs': 1607, 'beatles': 1608, 'auftreten': 1609, 'strudel': 1610, 'kreischenden': 1611, 'fans': 1612, 'paranoiden': 1613, 'fanatischen': 1614, 'journalisten': 1615, 'nervenden': 1616, 'familienangehörigen': 1617, 'harrington': 1618, 'begeisterte': 1619, 'theaterschauspielerin': 1620, 'channing': 1621, 'aufführung': 1622, 'stückes': 1623, 'gereift': 1624, 'holz': 1625, 'hartnäckiger': 1626, 'beharrlichkeit': 1627, 'kennenzulernen': 1628, 'fortan': 1629, 'umfeld': 1630, 'margos': 1631, 'tatkraft': 1632, 'unterstützen': 1633, 'uneigennützige': 1634, 'meisterin': 1635, 'intrige': 1636, 'briest': 1637, 'wesentlich': 1638, 'regierungsinspektor': 1639, 'gert': 1640, 'trist': 1641, 'interessiert': 1642, 'kurzen': 1643, 'major': 1644, 'beendet': 1645, 'anschließend': 1646, 'instetten': 1647, 'liebesbriefe': 1648, 'scheiden': 1649, 'gut': 1650, 'vereinsamt': 1651, 'mikrochip': 1652, 'unempfindlich': 1653, 'strahlung': 1654, 'nuklearexplosionen': 1655, 'undichte': 1656, 'stelle': 1657, 'großindustriellen': 1658, 'zorin': 1659, 'verhilft': 1660, 'russischen': 1661, 'angelegten': 1662, 'schöpft': 1663, 'amerikanischer': 1664, 'felix': 1665, 'verhaften': 1666, 'drogenbaron': 1667, 'sanchez': 1668, 'rächt': 1669, 'furchtbare': 1670, 'mafiagruppe': 1671, 'janus': 1672, 'goldeneye': 1673, 'satelliten': 1674, 'strahlen': 1675, 'elektrischen': 1676, 'geräte': 1677, 'umkreis': 1678, 'anvisierten': 1679, 'ziels': 1680, 'kontrolle': 1681, 'gebracht': 1682, 'bande': 1683, 'ex006': 1684, 'alec': 1685, 'trevelyan': 1686, 'ehemaliger': 1687, 'computerspezialistin': 1688, 'natalya': 1689, 'simonova': 1690, 'verräters': 1691, 'gus': 1692, 'van': 1693, 'sant': 1694, 'afroamerikaners': 1695, 'begabung': 1696, 'strassen': 1697, 'verbringt': 1698, 'zufällig': 1699, 'forrester': 1700, 'leidenschaft': 1701, 'zurückgezogenen': 1702, 'stipendium': 1703, 'überzeugter': 1704, 'hochzeitfeier': 1705, 'bezaubernde': 1706, 'amerikanerin': 1707, 'währt': 1708, 'hochzeitsnacht': 1709, 'hindurch': 1710, 'kissen': 1711, 'leer': 1712, 'one': 1713, 'stand': 1714, 'weiterer': 1715, 'beweis': 1716, 'dauerhafte': 1717, 'hochzeit': 1718, 'stolpern': 1719, 'übereinander': 1720, 'stumme': 1721, 'piano': 1722, 'strand': 1723, 'neuseeland': 1724, 'abgesetzt': 1725, 'arrangierte': 1726, 'einzugehen': 1727, 'gatte': 1728, 'weigert': 1729, 'instrument': 1730, 'unwegsamen': 1731, 'dschungel': 1732, 'transportieren': 1733, 'eremitenhafte': 1734, 'arbeiter': 1735, 'baines': 1736, 'pakt': 1737, 'gewisse': 1738, 'freizügigkeiten': 1739, 'entsteht': 1740, 'innige': 1741, 'erotische': 1742, 'medienmogul': 1743, 'carver': 1744, 'manipulation': 1745, 'intrigen': 1746, 'china': 1747, 'schlechte': 1748, 'nachrichten': 1749, 'medienpräsenz': 1750, 'stockholm': 1751, '1975': 1752, 'packt': 1753, 'koffer': 1754, 'normale': 1755, 'durchschnittlich': 1756, 'kommune': 1757, 'langhaarigen': 1758, 'diskutiert': 1759, 'sex': 1760, 'gemüse': 1761, 'anpflanzt': 1762, 'rotwein': 1763, 'trinkt': 1764, 'haushalts': 1765, 'ereigniskette': 1766, 'bierfahrer': 1767, 'hobbyfahrplanexperte': 1768, 'richtung': 1769, 'polarkreis': 1770, 'nordfinnischen': 1771, 'lockt': 1772, '1': 1773, 'kursbuchspezialisten': 1774, '25000': 1775, 'winken': 1776, 'sieger': 1777, 'zugreise': 1778, 'halsüberkopf': 1779, 'geldfälscherring': 1780, 'coolcleveren': 1781, 'fanck': 1782, 'gejagt': 1783, 'abzufangen': 1784, 'regelrechtes': 1785, 'wettrennen': 1786, 'entbrennt': 1787, 'lieutenant': 1788, 'pete': 1789, 'mitchell': 1790, 'kampfpilot': 1791, 'heiklen': 1792, 'waffensystemoffizier': 1793, 'nick': 1794, 'bradshaw': 1795, 'kommandanten': 1796, 'missachten': 1797, 'kameraden': 1798, 'panikattacke': 1799, 'dadurch': 1800, 'fighter': 1801, 'weapons': 1802, 'gun': 1803, 'vorgeschlagen': 1804, 'liefert': 1805, 'rivalität': 1806, 'flugschüler': 1807, 'iceman': 1808, 'kazanski': 1809, 'rücksichtslose': 1810, 'flugweise': 1811, 'probleme': 1812, 'gewinnt': 1813, 'regelmäßig': 1814, 'flugkämpfe': 1815, 'zb': 1816, 'ausbilder': 1817, 'leutnant': 1818, 'jester': 1819, 'heatherly': 1820, 'einsatzregeln': 1821, 'teamfähig': 1822, 'erfolgreiche': 1823, 'radiodj': 1824, 'albträumen': 1825, 'anonymen': 1826, 'heimgesucht': 1827, 'nightshow': 1828, 'morddrohungen': 1829, 'quält': 1830, 'onenightstand': 1831, 'partnerin': 1832, 'anonyme': 1833, 'bekennt': 1834, 'weiteren': 1835, 'morden': 1836, 'marks': 1837, 'unschuld': 1838, 'freundinnen': 1839, 'ausflug': 1840, 'stürzt': 1841, 'melissa': 1842, 'wilkens': 1843, 'klippe': 1844, 'versicherung': 1845, 'zahlung': 1846, 'verweigert': 1847, 'wendet': 1848, 'melissas': 1849, 'louann': 1850, 'anwalt': 1851, 'steven': 1852, 'näher': 1853, 'pflegerin': 1854, 'zeugin': 1855, 'unfalls': 1856, 'ähnlichen': 1857, 'sturz': 1858, 'nachgeholfen': 1859, 'widerstand': 1860, 'behörden': 1861, 'ermittlungen': 1862, 'ddr': 1863, 'sollen': 1864, '1985': 1865, 'aufsatz': 1866, '2010': 1867, 'fontaine': 1868, 'doppelleben': 1869, 'vermutlich': 1870, 'hagen': 1871, 'lady': 1872, 'agentur': 1873, 'blutige': 1874, 'mächtigen': 1875, 'verführt': 1876, 'geständnis': 1877, 'zwingt': 1878, 'bietet': 1879, 'versteck': 1880, 'geldwäsche': 1881, 'asiatischen': 1882, 'drogenmafia': 1883, 'drews': 1884, 'komplizierte': 1885, 'recherchen': 1886, 'sadistischen': 1887, 'untergrund': 1888, 'chinatowns': 1889, 'hollywoods': 1890, 'schmierige': 1891, 'pornogeschäfte': 1892, 'gelockt': 1893, 'ehemalig': 1894, 'naziverbrecher': 1895, 'gemeingefährliche': 1896, 'mafiahändler': 1897, 'menscheit': 1898, 'chemischen': 1899, 'zauber': 1900, 'beherrscht': 1901, 'sechste': 1902, 'hormone': 1903, 'liebestrank': 1904, 'professors': 1905, 'horace': 1906, 'slughorn': 1907, 'gefühlsverwirrung': 1908, 'anhänger': 1909, 'severus': 1910, 'snape': 1911, 'attacken': 1912, 'verbündeten': 1913, 'formieren': 1914, 'dumbledore': 1915, 'ewiges': 1916, 'dunkle': 1917, 'entsandt': 1918, 'kindes': 1919, 'scotlandyardinspektor': 1920, 'fred': 1921, 'endgültig': 1922, 'bahn': 1923, 'drogen': 1924, 'opium': 1925, 'absinthrausch': 1926, 'visionen': 1927, 'grausigen': 1928, 'düstere': 1929, 'vorahnungen': 1930, 'besessenen': 1931, 'prostituiertenmörder': 1932, 'ripper': 1933, 'taten': 1934, 'slumähnliche': 1935, 'londoner': 1936, 'whitechapel': 1937, 'aufruhr': 1938, 'versetzen': 1939, 'engelsgleichen': 1940, 'irischen': 1941, 'prostituierten': 1942, 'mary': 1943, 'kelly': 1944, 'opfern': 1945, 'serienmörders': 1946, 'befreundet': 1947, 'quartiermafia': 1948, 'niemanden': 1949, 'rücksicht': 1950, 'nehmen': 1951, 'verdienen': 1952, 'henry': 1953, 'hill': 1954, 'organisiert': 1955, 'banküberfälle': 1956, 'weggeräumt': 1957, 'umgebracht': 1958, 'zimperlich': 1959, 'verstehen': 1960, 'handwerk': 1961, 'weder': 1962, 'pardon': 1963, 'egozentrische': 1964, 'ohara': 1965, 'amerikanischen': 1966, 'bewahrung': 1967, 'südstaatengutes': 1968, 'tara': 1969, 'aufwuchs': 1970, 'unsterblich': 1971, 'gutmütigen': 1972, 'ashley': 1973, 'wilkes': 1974, 'verliebte': 1975, 'bräutigam': 1976, 'naiven': 1977, 'melanie': 1978, 'langweiler': 1979, 'dauer': 1980, 'herzensbrecher': 1981, 'rhett': 1982, 'butler': 1983, 'zuneigung': 1984, 'schamlos': 1985, 'ausnützt': 1986, 'erkennt': 1987, 'wen': 1988, 'liebt': 1989, 'loszufliegen': 1990, 'leider': 1991, 'verschlafen': 1992, 'hektisch': 1993, 'unübersichtlich': 1994, 'verpassen': 1995, 'irgendwo': 1996, 'atlantik': 1997, 'jüngsten': 1998, 'alleine': 1999, 'einbrecher': 2000, 'nachbarn': 2001, 'weihnachten': 2002, 'ferienstimmung': 2003, 'angesagt': 2004, 'solls': 2005, 'sonnige': 2006, 'chaotischen': 2007, 'jahres': 2008, 'verlorengehen': 2009, 'flughafen': 2010, 'muß': 2011, 'sitzt': 2012, 'maschine': 2013, 'flieger': 2014, 'statue': 2015, 'heidenspaß': 2016, 'frechen': 2017, 'bengel': 2018, 'bescherung': 2019, 'wären': 2020, 'unfreiwilliges': 2021, 'zuhause': 2022, 'fieses': 2023, 'mächtig': 2024, 'sauer': 2025, 'gewitzten': 2026, 'chicago': 2027, 'olive': 2028, 'relativ': 2029, 'normales': 2030, 'irgendwie': 2031, 'endrunde': 2032, 'little': 2033, 'sunshineschönheitswettbewerbs': 2034, 'geschafft': 2035, 'braucht': 2036, 'komplette': 2037, 'vwbus': 2038, 'finale': 2039, 'dumm': 2040, 'läuft': 2041, 'erfolgloser': 2042, 'selbsthilfeguru': 2043, 'schwulen': 2044, 'collegeprofessor': 2045, 'selbstmordversuch': 2046, 'kümmern': 2047, 'bekennender': 2048, 'nietzschefan': 2049, 'schweigegelübde': 2050, 'abgelegt': 2051, 'jetpilot': 2052, 'rauswurf': 2053, 'seniorenresidenz': 2054, 'pornoheften': 2055, 'heroinschnupfen': 2056, 'bequem': 2057, 'voraussetzungen': 2058, 'sortie': 2059, 'usines': 2060, 'lumière': 2061, 'kinos': 2062, 'gilt': 2063, 'meilenstein': 2064, 'existieren': 2065, 'versionen': 2066, 'drachensurfer': 2067, 'großem': 2068, 'mitmischen': 2069, 'sportdrama': 2070, 'professionellen': 2071, 'kitesurfingstunts': 2072, 'kitesurfer': 2073, 'langzeitfreundin': 2074, 'sarah': 2075, 'vorbestimmt': 2076, 'hätte': 2077, 'kitesurfen': 2078, 'mitzumischen': 2079, 'coach': 2080, 'ticket': 2081, 'wettbewerbe': 2082, 'dorthin': 2083, 'tramperin': 2084, 'sky': 2085, 'wettkampf': 2086, 'verdreht': 2087, 'ultimative': 2088, 'globalen': 2089, 'turner': 2090, 'intime': 2091, 'huldigung': 2092, 'sängerin': 2093, 'gelang': 2094, 'gewährt': 2095, 'vielbewunderten': 2096, 'triumphen': 2097, 'persönlichsten': 2098, 'momenten': 2099, 'teilhaben': 2100, 'königin': 2101, 'rb': 2102, 'arenatourneen': 2103, '80er': 2104, '2021': 2105, 'musikfilm': 2106, 'umfänglichste': 2107, 'porträt': 2108, 'großartigsten': 2109, 'künstlerinnen': 2110, 'musikszene': 2111, 'regisseuren': 2112, 'daniel': 2113, 'lindsay': 2114, 'tj': 2115, 'martin': 2116, 'searching': 2117, 'sugar': 2118, 'whitney': 2119, 'on': 2120, 'wire': 2121, 'sffilm': 2122, 'gedreht': 2123, 'wissenschaftlern': 2124, 'barbenfouillis': 2125, 'kanone': 2126, 'kongress': 2127, 'astronomischen': 2128, 'gesellschaft': 2129, 'ausnahme': 2130, 'stimmte': 2131, 'projekt': 2132, 'einstimmig': 2133, 'vorbereitungen': 2134, 'verlaufen': 2135, 'zuversichtlich': 2136, 'attraktiven': 2137, 'damen': 2138, 'besteigen': 2139, 'feierlichen': 2140, 'flagge': 2141, 'geschwenkt': 2142, 'docht': 2143, 'angezündet': 2144, 'kugel': 2145, 'gen': 2146, 'verläuft': 2147, 'reibungslos': 2148, 'bizarre': 2149, 'mondoberfläche': 2150, 'unliebsame': 2151, 'mondbewohner': 2152, 'exakt': 2153, 'sank': 2154, 'leprakranken': 2155, 'küste': 2156, 'dorfbewohnern': 2157, 'absichtlich': 2158, 'klippen': 2159, 'gelenkt': 2160, 'toten': 2161, 'grab': 2162, 'nachfahren': 2163, 'gründerväter': 2164, 'nordkalifornischen': 2165, 'küstenstädtchens': 2166, 'versteckt': 2167, 'dichten': 2168, 'nebelbank': 2169, 'lauert': 2170, 'einwohner': 2171, 'sichere': 2172, 'grausame': 2173, 'rätsel': 2174, 'stacey': 2175, 'kent': 2176, 'gastierte': 2177, 'jazz': 2178, 'open': 2179, 'stuttgart': 2180, 'aufnahme': 2181, '3': 2182, '2003': 2183, 'komplizen': 2184, 'minime': 2185, 'ruft': 2186, 'swinging': 2187, 'international': 2188, 'mystery': 2189, 'gitter': 2190, 'schrille': 2191, 'nigel': 2192, 'altgedienter': 2193, 'holländischen': 2194, 'bösewicht': 2195, 'unberechenbare': 2196, 'schurke': 2197, 'plant': 2198, 'teufelei': 2199, 'fortbestand': 2200, 'gefährdet': 2201, 'schmach': 2202, 'vergreifen': 2203, 'ungesühnt': 2204, 'passenderweise': 2205, 'schranken': 2206, 'weisen': 2207, 'jugendlicher': 2208, 'wächst': 2209, 'hells': 2210, 'kitchen': 2211, 'vertrauensperson': 2212, 'pater': 2213, 'messdiener': 2214, 'kirche': 2215, 'kriminalität': 2216, 'rahmen': 2217, 'überbringen': 2218, 'schmiergelder': 2219, 'polizisten': 2220, 'stehlen': 2221, 'kleinigkeit': 2222, 'verschwindet': 2223, 'passanten': 2224, 'verletzen': 2225, 'jugendstrafe': 2226, 'verurteilt': 2227, 'jugendlichen': 2228, 'wärtern': 2229, 'geschlagen': 2230, 'gefoltert': 2231, 'vergewaltigt': 2232, 'sean': 2233, 'nokes': 2234, 'abgesessen': 2235, 'vorher': 2236, '1981': 2237, 'thommy': 2238, 'gegend': 2239, 'ehemaligen': 2240, 'peiniger': 2241, 'bar': 2242, 'viertels': 2243, '22': 2244, 'november': 2245, '1963': 2246, 'atem': 2247, 'f': 2248, 'kennedy': 2249, 'jüngste': 2250, 'amt': 2251, 'gewählte': 2252, 'mehreren': 2253, 'schüssen': 2254, 'niedergestreckt': 2255, 'windeseile': 2256, 'einzelgänger': 2257, 'lee': 2258, 'harvey': 2259, 'erschossen': 2260, 'klärung': 2261, 'beauftragte': 2262, 'warrenkommission': 2263, 'schluß': 2264, 'alleinige': 2265, 'staatsanwalt': 2266, 'zweifelt': 2267, 'theorie': 2268, 'mordpuzzle': 2269, 'zeugen': 2270, 'merkwürdigen': 2271, 'sterben': 2272, 'deckt': 2273, 'komplott': 2274, 'johnson': 2275, 'gleichsam': 2276, 'beteiligt': 2277, 'nsjuristen': 2278, 'nürnberg': 2279, 'gericht': 2280, 'vorsitz': 2281, 'haywood': 2282, 'verteidigt': 2283, 'hans': 2284, 'rolfs': 2285, 'bekennen': 2286, 'schuldig': 2287, 'vierte': 2288, 'ernst': 2289, 'janning': 2290, 'zeitweilig': 2291, 'justizminister': 2292, 'schweigt': 2293, '30ern': 2294, 'bürgerlicher': 2295, 'nachbar': 2296, 'mahim': 2297, 'gesellschaftlichen': 2298, 'feiert': 2299, 'adlige': 2300, 'huzur': 2301, 'biswambhar': 2302, 'roy': 2303, 'niedergang': 2304, 'glanzvollen': 2305, 'ertragen': 2306, 'einsam': 2307, 'verarmt': 2308, 'begeht': 2309, 'guten': 2310, 'verfilmung': 2311, '1958': 2312, 'kurzgeschichte': 2313, 'indischen': 2314, 'autors': 2315, 'tarashankar': 2316, 'banerjee': 2317, 'jinroh': 2318, 'japanischer': 2319, 'animepolitthriller': 2320, 'manga': 2321, 'mamoru': 2322, 'oshii': 2323, 'beruht': 2324, 'dystopie': 2325, 'staat': 2326, 'angebliche': 2327, 'paris': 2328, 'dreht': 2329, '1900': 2330, 'nachtclub': 2331, 'sinnlichen': 2332, 'atmosphäre': 2333, 'charme': 2334, 'hauses': 2335, 'entziehen': 2336, 'unnahbare': 2337, 'kurtisane': 2338, 'kurzentschlossen': 2339, 'reichen': 2340, 'duke': 2341, 'finanzierung': 2342, 'aufwändigen': 2343, 'theaterstücks': 2344, 'satines': 2345, 'erobert': 2346, 'faszinierenden': 2347, 'persönlichen': 2348, 'meredith': 2349, 'ehrgeizige': 2350, 'theaterregisseurin': 2351, 'mrright': 2352, 'charmanten': 2353, 'trent': 2354, 'angeln': 2355, 'hannah': 2356, 'stoßen': 2357, '40': 2358, 'ehejahren': 2359, 'verborgene': 2360, 'gracie': 2361, 'roger': 2362, 'faktor': 2363, 'sexonlyaffäre': 2364, 'attraktive': 2365, 'selbstbewusste': 2366, 'joan': 2367, 'club': 2368, 'keenan': 2369, 'hugh': 2370, 'verrückte': 2371, 'lebensgeschichten': 2372, 'wahres': 2373, 'preiszugeben': 2374, 'kriegsgefangene': 2375, 'japaner': 2376, 'gezwungen': 2377, 'eisenbahnbrücke': 2378, 'river': 2379, 'kwai': 2380, 'unmenschliche': 2381, 'saito': 2382, 'außergewöhnlichen': 2383, 'mut': 2384, 'einfallsreichtum': 2385, 'brücke': 2386, 'symbol': 2387, 'widerstandes': 2388, 'überlebenswillens': 2389, 'zwischenzeitlich': 2390, 'oberkommando': 2391, 'kommandotrupp': 2392, 'lebensader': 2393, 'feindes': 2394, 'delasalle': 2395, 'lehrer': 2396, 'ekelhaft': 2397, 'sadistischer': 2398, 'typ': 2399, 'demütigt': 2400, 'herzkranke': 2401, 'lehrerkollegium': 2402, 'öfteren': 2403, 'lehrerschaft': 2404, 'wäre': 2405, 'christinas': 2406, 'nicole': 2407, 'vorschlägt': 2408, 'worauf': 2409, 'vertuschen': 2410, 'geleert': 2411, 'spurlos': 2412, 'abgesandte': 2413, 'planetaren': 2414, 'begleitung': 2415, 'roboters': 2416, 'per': 2417, 'fliegender': 2418, 'untertasse': 2419, 'überbringt': 2420, 'eindringliche': 2421, 'mahnung': 2422, 'andernfalls': 2423, 'roboterheer': 2424, 'besetzen': 2425, 'technische': 2426, 'überlegenheit': 2427, 'demonstrieren': 2428, 'maschinen': 2429, 'stillstehen': 2430, '1930ern': 2431, 'privatdetektiv': 2432, 'jake': 2433, 'evelyn': 2434, 'angesehenen': 2435, 'lokalgröße': 2436, 'überwachen': 2437, 'verschafft': 2438, 'hollis': 2439, 'darauf': 2440, 'zeitung': 2441, 'feststellen': 2442, 'auftraggeberin': 2443, 'opfers': 2444, 'gekränkt': 2445, 'sticht': 2446, 'wespennest': 2447, 'korruptes': 2448, 'bewässerungsprojekt': 2449, 'wüstenregion': 2450, 'ertrunken': 2451, 'angelegenheit': 2452, 'mysteriöser': 2453, 'drahtzieher': 2454, 'gewisser': 2455, 'noah': 2456, 'cross': 2457, 'dame': 2458, 'rolle': 2459, 'raumkreuzer': 2460, 'c57d': 2461, 'vereinten': 2462, 'irgendwann': 2463, 'abgelegenen': 2464, 'siedler': 2465, 'abgestürzt': 2466, 'überreste': 2467, 'untergegangenen': 2468, 'erforschen': 2469, 'hochentwickelt': 2470, 'versehen': 2471, 'geisteskräften': 2472, 'riesige': 2473, 'maschinenkomplexe': 2474, 'tief': 2475, 'gebaut': 2476, 'unsichtbares': 2477, 'monstrum': 2478, 'kreuzer': 2479, 'beschädigt': 2480, 'mehrere': 2481, 'insassen': 2482, 'verantwortlich': 2483, 'außerirdische': 2484, 'irdischer': 2485, 'interplanetaren': 2486, 'sciencefictionbmovie': 2487, 'masse': 2488, '50erjahrefilme': 2489, 'herausragt': 2490, 'kultstatus': 2491, '1931': 2492, 'psychopathischer': 2493, 'kindermörder': 2494, 'ängstigt': 2495, 'bevölkerung': 2496, 'narrt': 2497, 'versetzt': 2498, 'aufregung': 2499, 'ständige': 2500, 'razzien': 2501, 'kontrollen': 2502, 'behindern': 2503, 'lohmann': 2504, 'sendet': 2505, 'bettler': 2506, 'ganovenorganisation': 2507, 'verbrechern': 2508, 'letzter': 2509, 'minute': 2510, 'aufgebrachten': 2511, 'arme': 2512, 'justiz': 2513, 'flieht': 2514, 'vampirältesten': 2515, 'viktor': 2516, 'lebensgefahr': 2517, 'vampirkönig': 2518, 'marcus': 2519, 'blutsaugerin': 2520, 'schutz': 2521, 'hybriden': 2522, 'werwolf': 2523, 'vampir': 2524, 'zweit': 2525, 'fehde': 2526, 'blutlinien': 2527, 'antwort': 2528, 'ewigen': 2529, 'anregung': 2530, 'ozeanfliegers': 2531, 'ensteht': 2532, 'mitten': 2533, 'schwimmender': 2534, 'flugplatz': 2535, 'gigantische': 2536, 'stahl': 2537, 'saboteure': 2538, 'planen': 2539, 'vernichtung': 2540, 'anlage': 2541, 'verräter': 2542, 'flutventile': 2543, 'schwimmenden': 2544, 'aufzuhalten': 2545, 'sturmwetter': 2546, 'pilot': 2547, 'flug': 2548, 'wagen': 2549, 'cinema': 2550, 'novo': 2551, 'vidas': 2552, 'secas': 2553, 'eindringlichen': 2554, 'bildern': 2555, 'viehtreibers': 2556, 'nordosten': 2557, 'brasiliens': 2558, 'vertreibung': 2559, 'dürre': 2560, 'wanderung': 2561, 'ausweglosigkeit': 2562, 'schicksals': 2563, 'renn': 2564, 'teilhaber': 2565, 'privaten': 2566, 'fernsehgesellschaft': 2567, 'pornos': 2568, 'gewaltfilme': 2569, 'ausstrahlt': 2570, 'horrorsexshow': 2571, 'hintermänner': 2572, 'heranzukommen': 2573, 'nicki': 2574, 'bänder': 2575, 'entsetzt': 2576, 'zuschauern': 2577, 'schreckliche': 2578, 'verursacht': 2579, 'alptraum': 2580, 'fließen': 2581, 'bunte': 2582, 'geflimmer': 2583, 'fersehschirm': 2584, 'einheit': 2585, 'brüder': 2586, 'gordon': 2587, 'perry': 2588, 'clay': 2589, 'vietnam': 2590, 'festen': 2591, 'gemeinschaft': 2592, 'zusammengefunden': 2593, 'jims': 2594, 'brand': 2595, 'erweisen': 2596, 'übles': 2597, 'drogenkomplott': 2598, 'gekostet': 2599, 'beschließen': 2600, 'aufzuräumen': 2601, 'junger': 2602, 'regisseurinnen': 2603, 'regisseure': 2604, 'zusammengetan': 2605, 'kurzfilmen': 2606, 'unkritisch': 2607, 'missstände': 2608, 'teppich': 2609, 'gekehrt': 2610, 'wütend': 2611, 'abgeschieden': 2612, 'reize': 2613, 'bücher': 2614, 'liest': 2615, 'kreiert': 2616, 'orte': 2617, 'schlaf': 2618, 'wachen': 2619, 'zustand': 2620, 'verlässt': 2621, 'mehrfach': 2622, 'gesehen': 2623, 'absurden': 2624, 'deal': 2625, 'impulsive': 2626, 'lori': 2627, 'geplanten': 2628, 'echten': 2629, 'brust': 2630, 'versinkt': 2631, 'golf': 2632, 'neapel': 2633, 'tiefe': 2634, 'driftet': 2635, 'oben': 2636, 'wasser': 2637, 'geräusche': 2638, 'tauchen': 2639, 'panikschreie': 2640, '1980': 2641, 'einstürzen': 2642, 'trümmern': 2643, 'hören': 2644, 'schrei': 2645, 'babys': 2646, 'di': 2647, 'marzio': 2648, 'unsterbliche': 2649, 'minimalismus': 2650, 'bewegung': 2651, 'joshua': 2652, 'fields': 2653, 'millburn': 2654, 'ryan': 2655, 'nicodemus': 2656, 'leitet': 2657, 'mine': 2658, 'afrika': 2659, 'alter': 2660, 'ladung': 2661, 'giftmüll': 2662, 'entsorgen': 2663, 'friede': 2664, 'dahin': 2665, 'söldner': 2666, 'lager': 2667, 'futsch': 2668, 'müll': 2669, 'wiederfinden': 2670, 'expertin': 2671, 'kim': 2672, 'enthalten': 2673, 'radioaktives': 2674, 'plutonium': 2675, 'mörders': 2676, 'liebhaber': 2677, 'archäologe': 2678, 'menschenleeren': 2679, 'nordamerikas': 2680, 'ehemannes': 2681, 'abgelegen': 2682, 'zwergkannibalen': 2683, 'medizinmänner': 2684, 'steindämonen': 2685, 'unwesen': 2686, 'ninja': 2687, 'monde': 2688, 'stärke': 2689, 'derjenige': 2690, 'besiegt': 2691, 'übernehmen': 2692, 'draufgängerische': 2693, 'fordert': 2694, 'heraus': 2695, 'arm': 2696, 'einholt': 2697, 'reiche': 2698, 'lebenslustige': 2699, 'brauereibesitzer': 2700, 'xaver': 2701, 'bogenrieder': 2702, 'trauergemeinde': 2703, 'beerdigung': 2704, 'wirtschaft': 2705, 'leichenschmaus': 2706, 'ärger': 2707, 'vorprogrammiert': 2708, 'nachfolge': 2709, 'unterbräus': 2710, 'honoratioren': 2711, 'schönen': 2712, 'hof': 2713, 'braumeister': 2714, 'stiller': 2715, 'passt': 2716, 'schäfer': 2717, 'unterbräu': 2718, 'geist': 2719, 'umgehen': 2720, 'falschen': 2721, 'dummerweise': 2722, 'totengräber': 2723, 'zwanzig': 2724, 'traumatischen': 2725, 'sexerlebnis': 2726, 'schloß': 2727, 'geholt': 2728, 'mittels': 2729, 'neuester': 2730, 'computertechnologie': 2731, 'rausch': 2732, 'virtuellen': 2733, 'geheimsten': 2734, 'anfänglich': 2735, 'widerstrebende': 2736, 'digitalen': 2737, 'lustgenuß': 2738, 'erfüllung': 2739, 'sehnsüchte': 2740, 'verholfen': 2741, 'ähnlich': 2742, 'belasteten': 2743, 'klienten': 2744, 'have': 2745, 'power': 2746, 'heißt': 2747, 'aufnahmestudio': 2748, 'improvisierte': 2749, 'song': 2750, 'selbstbewussten': 2751, 'zufälligerweise': 2752, 'namhafter': 2753, 'musikproduzent': 2754, 'dazustößt': 2755, 'entscheidung': 2756, 'verkaufen': 2757, 'vielleicht': 2758, 'erfolgreichen': 2759, 'botschaft': 2760, 'ermächtigung': 2761, 'unabhängigkeit': 2762, 'treu': 2763, 'wahlen': 2764, 'ostberlin': 2765, 'envoyé': 2766, 'spécial': 2767, 'erstellt': 2768, 'halbstündige': 2769, 'kurzfilm': 2770, 'wiedervereinigten': 2771, 'mauerfragmente': 2772, 'osteuropäer': 2773, 'kamen': 2774, 'zahl': 2775, 'bundestagswahlen': 2776, 'offstimme': 2777, 'katharina': 2778, 'belchodscha': 2779, 'spaziergang': 2780, 'erleichterung': 2781, 'unruhe': 2782, 'dissidenten': 2783, 'zweifel': 2784, 'neukölln': 2785, 'trendbezirk': 2786, 'wohnungen': 2787, 'knapp': 2788, 'schufa': 2789, 'gehaltsnachweis': 2790, 'bürgschaft': 2791, 'thies': 2792, 'immobilienverwaltung': 2793, 'wacht': 2794, 'einhaltung': 2795, 'bruno': 2796, 'sonja': 2797, 'ungleichen': 2798, 'geschwisterpaar': 2799, 'kostenlose': 2800, 'wohnung': 2801, 'tiefer': 2802, 'geschwister': 2803, 'jan': 2804, 'krügers': 2805, 'vierter': 2806, 'unterwegs': 2807, 'rückenwind': 2808, 'fluchtpunkt': 2809, 'freiheitssuchenden': 2810, 'verstrickt': 2811, 'zugang': 2812, 'verlieren': 2813, 'hexen': 2814, 'walpurgisnacht': 2815, 'tanzen': 2816, '127': 2817, 'jung': 2818, 'auferlegt': 2819, 'zaubersprüche': 2820, 'buch': 2821, 'rumpumpel': 2822, 'zudem': 2823, 'fleißig': 2824, 'raben': 2825, 'abraxas': 2826, 'ausmacht': 2827, 'hexenwelt': 2828, 'athlet': 2829, 'teilnahme': 2830, 'nationalen': 2831, 'sportverbänden': 2832, 'festgelegte': 2833, 'leistung': 2834, 'erbringen': 2835, 'olympianorm': 2836, 'fünf': 2837, 'spitzensportler': 2838, 'sportarten': 2839, 'monate': 2840, 'hautnah': 2841, 'spiele': 2842, 'erreichen': 2843, 'deutscher': 2844, 'alleinerziehende': 2845, 'stiehlt': 2846, 'affekt': 2847, 'not': 2848, 'fleisch': 2849, 'prozess': 2850, 'spricht': 2851, 'verständnisvolle': 2852, 'frei': 2853, 'verfahren': 2854, 'fühlt': 2855, 'ultrarechten': 2856, 'partei': 2857, 'gewählt': 2858, 'ausgenutzt': 2859, 'medien': 2860, 'missverstanden': 2861, 'jüdin': 2862, 'theresienstadt': 2863, 'überlebte': 2864, 'ganzes': 2865, 'wiedergutmachungsgeld': 2866, 'sparte': 2867, 'greta': 2868, 'garbo': 2869, 'leinwand': 2870, 'wiener': 2871, 'filmemacher': 2872, 'handelseinig': 2873, 'aufschneider': 2874, 'miesen': 2875, 'videoausrüstung': 2876, 'besondere': 2877, 'erfahrung': 2878, 'unterschiedlichsten': 2879, 'exhibitionismus': 2880, 'frönen': 2881, '23jährige': 2882, 'türkin': 2883, 'hauptstadt': 2884, 'streng': 2885, 'gläubige': 2886, 'türkischarabische': 2887, 'alewiten': 2888, 'versuche': 2889, 'aufbegehrens': 2890, 'unabhängiges': 2891, 'selbstbestimmtes': 2892, 'lieber': 2893, 'stewardess': 2894, 'aussuchen': 2895, 'darin': 2896, 'entschlossen': 2897, 'legionär': 2898, 'flotte': 2899, 'fahrt': 2900, 'ferne': 2901, 'ägypten': 2902, 'cäsar': 2903, 'kleopatra': 2904, 'schließen': 2905, 'kleopatras': 2906, 'arglistiger': 2907, 'ptolemaios': 2908, 'gutes': 2909, 'friedensvertrag': 2910, 'fluch': 2911, 'pharaonen': 2912, 'entfesseln': 2913, 'hals': 2914, 'fronten': 2915, 'bösen': 2916, 'pläne': 2917, 'spannendes': 2918, 'eigentlich': 2919, 'erträumen': 2920, 'wundervolle': 2921, 'kleider': 2922, 'kostbaren': 2923, 'schmuck': 2924, 'traumhaften': 2925, 'schloss': 2926, 'vollgepackter': 2927, 'prinzessinnenkalender': 2928, 'reiten': 2929, 'königlichen': 2930, 'pferdestall': 2931, 'abenteuerlustige': 2932, 'pferdenärrin': 2933, 'pina': 2934, 'ereignisreicher': 2935, 'rollentausch': 2936, 'vielen': 2937, 'lustigen': 2938, 'irrungen': 2939, 'wirrungen': 2940, 'physiker': 2941, 'matthäus': 2942, 'gray': 2943, 'archäologischen': 2944, 'expedition': 2945, 'sonnenlanze': 2946, 'lanze': 2947, 'berührt': 2948, 'übersinnliche': 2949, 'kapitel': 2950, 'kindersitcom': 2951, 'cosgrove': 2952, 'kress': 2953, 'trainor': 2954, 'heutige': 2955, 'komödiantischen': 2956, 'missgeschicke': 2957, 'kouzo': 2958, 'wynton': 2959, 'styles': 2960, 'lia': 2961, 'venegas': 2962, 'awesome': 2963, 'ones': 2964, 'begeben': 2965, 'epizentrum': 2966, 'sogenannten': 2967, 'kollision': 2968, 'cooles': 2969, 'video': 2970, 'drehen': 2971, 'bakuganpartner': 2972, 'drago': 2973, 'allzu': 2974, 'alternativen': 2975, 'kraftstoffen': 2976, 'gewächs': 2977, 'triffid': 2978, 'eigenleben': 2979, 'sonnensturm': 2980, 'erblindet': 2981, 'großteil': 2982, 'zusammenfällt': 2983, 'triffids': 2984, 'verbreiten': 2985, 'meter': 2986, 'hohe': 2987, 'wellen': 2988, 'eiseskälte': 2989, 'arktische': 2990, 'winde': 2991, '130': 2992, 'kmh': 2993, '300': 2994, 'kilo': 2995, 'schwere': 2996, 'fangkäfige': 2997, 'schiffsdeck': 2998, 'donnern': 2999, 'verletzungsrate': 3000, 'nahezu': 3001, 'prozent': 3002, 'blickend': 3003, 'extremsten': 3004, 'gefährlichsten': 3005, 'alaskas': 3006, 'fischen': 3007, 'königskrabben': 3008, 'geschiedene': 3009, 'handwerker': 3010, 'lambert': 3011, 'patrick': 3012, 'duffy': 3013, 'verwitwete': 3014, 'friseurin': 3015, 'foster': 3016, 'suzanne': 3017, 'somers': 3018, 'port': 3019, 'wisconsin': 3020, 'niederzulassen': 3021, 'problem': 3022, 'jonathan': 3023, 'jt': 3024, 'alicia': 3025, 'brendan': 3026, 'sprösslinge': 3027, 'dana': 3028, 'karen': 3029, 'begegnung': 3030, 'haare': 3031, 'kriegen': 3032, 'verständnis': 3033, 'raymond': 3034, 'begab': 3035, 'stevensons': 3036, 'legendärer': 3037, 'seitdem': 3038, 'verschollen': 3039, 'jacqui': 3040, 'karl': 3041, 'baumann': 3042, 'capitän': 3043, 'escovar': 3044, 'see': 3045, 'suchexpedition': 3046, 'erleidet': 3047, 'schiffbruch': 3048, 'ergeben': 3049, 'schatz': 3050, 'mahlstroms': 3051, 'nachhause': 3052, 'rückständigen': 3053, 'stämme': 3054, 'neuankömmlinge': 3055, 'reagieren': 3056, 'gilmartin': 3057, 'ruth': 3058, 'offenbart': 3059, 'glauben': 3060, 'eva': 3061, 'delectorskaya': 3062, 'briten': 3063, 'ausbruch': 3064, 'geheimdienst': 3065, 'rekrutiert': 3066, 'belgien': 3067, 'äußerst': 3068, 'fehlinformationen': 3069, 'streuen': 3070, 'allerhöchster': 3071, 'geändert': 3072, 'präsidenten': 3073, 'geprägt': 3074, 'bush': 3075, 'einflussreichen': 3076, 'matriarchinnen': 3077, 'erbitterten': 3078, 'konkurrenzkämpfen': 3079, 'triumphe': 3080, 'niederlagen': 3081, 'konflikte': 3082, 'skandale': 3083, 'biographen': 3084, 'historiker': 3085, 'bushclans': 3086, 'videoclips': 3087, 'gewähren': 3088, 'einblicke': 3089, 'vielschichtige': 3090, 'verändert': 3091, 'tlg': 3092, 'brit': 3093, 'dt': 3094, 'sciencefictioncomedyserie': 3095, 'gräfin': 3096, 'hardenberg': 3097, 'maidens': 3098, '1976als': 3099, 'lachen': 3100, 'halbe': 3101, 'sonnensystem': 3102, 'sklaven': 3103, 'luxus': 3104, 'ermöglichen': 3105, 'akam': 3106, 'pierre': 3107, 'brice': 3108, 'schemm': 3109, 'gareth': 3110, 'klauen': 3111, 'flüchten': 3112, 'akams': 3113, 'gebieterin': 3114, 'brisba': 3115, 'judy': 3116, 'geeson': 3117, 'ossrawa': 3118, 'christine': 3119, 'krüger': 3120, 'evans': 3121, 'derek': 3122, 'farr': 3123, 'ankunft': 3124, 'smith': 3125, 'quadflieg': 3126, 'liz': 3127, 'barry': 3128, 'lisa': 3129, 'harrow': 3130, 'weltraum': 3131, 'ungleiches': 3132, 'duo': 3133, 'fällen': 3134, 'danny': 3135, 'wilde': 3136, 'flapsigamerikanische': 3137, 'straßen': 3138, 'hochgearbeitet': 3139, 'zurückhaltendbritische': 3140, 'brett': 3141, 'sinclair': 3142, 'adeliger': 3143, 'abstammung': 3144, 'zetteln': 3145, 'schlägerei': 3146, 'pariser': 3147, 'luxushotel': 3148, 'pensionierten': 3149, 'richters': 3150, 'fulton': 3151, 'interessante': 3152, 'sitzen': 3153, '90': 3154, 'unaufgeklärte': 3155, 'voneinander': 3156, 'willigen': 3157, 'ermitteln': 3158, 'amateure': 3159, 'unkonventionellen': 3160, 'seltsamsten': 3161, 'freundschaften': 3162, 'fernsehgeschichte': 3163, 'zwerchfellreizendsten': 3164, 'mork': 3165, 'ork': 3166, 'beobachten': 3167, 'orson': 3168, 'ironischen': 3169, 'gefühlvollen': 3170, 'kommentars': 3171, 'greifen': 3172, 'bekämpfen': 3173, 'edward': 3174, 'straker': 3175, 'geheimorganisation': 3176, 'shado': 3177, 'invasion': 3178, 'gerry': 3179, 'anderson': 3180, 'meister': 3181, 'futuristischen': 3182, 'designs': 3183, 'shadoskydiver': 3184, 'unterwasserbasis': 3185, 'mondstation': 3186, 'warten': 3187, 'derweil': 3188, 'ladies': 3189, 'aufregenden': 3190, 'raumanzügen': 3191, 'strakers': 3192, 'macahan': 3193, 'scout': 3194, 'uskavallerie': 3195, 'einzugsgebiet': 3196, 'sioux': 3197, 'tätig': 3198, '1861': 3199, 'inmitten': 3200, 'wirren': 3201, 'bittet': 3202, 'macahans': 3203, 'farmland': 3204, 'erklärt': 3205, 'familientreck': 3206, 'oregon': 3207, 'abenteuern': 3208, 'rauen': 3209, 'natur': 3210, 'ant': 3211, 'decs': 3212, 'saturday': 3213, 'takeaway': 3214, 'livesendung': 3215, 'anthony': 3216, 'mcpartlin': 3217, 'declan': 3218, 'donnelly': 3219, 'stammlokal': 3220, 'abgebrannt': 3221, 'boss': 3222, 'seelensammlerregeln': 3223, 'abfärbt': 3224, 'opfer': 3225, 'wünsche': 3226, 'regel': 3227, 'enthüllt': 3228, 'wahre': 3229, 'identität': 3230, 'jüngeren': 3231, 'jugendjahren': 3232, 'halbgottes': 3233, 'prometheus': 3234, 'akademie': 3235, 'üblichen': 3236, 'problemen': 3237, 'teenagers': 3238, 'schreitet': 3239, 'unholde': 3240, 'böser': 3241, 'hades': 3242, 'wiederkehrender': 3243, 'cassandra': 3244, 'ikarus': 3245, 'unglaublichen': 3246, 'fähigkeit': 3247, 'einfache': 3248, 'berührung': 3249, 'wahrzunehmen': 3250, 'zurückschreckt': 3251, 'traumatisches': 3252, 'behalten': 3253, 'passieren': 3254, 'romantischer': 3255, 'thriller': 3256, 'darstellt': 3257, 'einander': 3258, 'heilen': 3259, 'größere': 3260, 'kleinere': 3261, 'beistehen': 3262, 'fugen': 3263, 'krankheit': 3264, 'sekundentod': 3265, 'schock': 3266, 'verdauen': 3267, 'plötzlichen': 3268, 'dystopischen': 3269, 'hightechjapan': 3270, 'paralleluniversum': 3271, 'existiert': 3272, 'humanoiden': 3273, 'miko': 3274, 'niko': 3275, 'gegenstück': 3276, 'verbunden': 3277, 'schützen': 3278, 'eiserne': 3279, 'herrschaft': 3280, 'gegenstücks': 3281, 'kotoko': 3282, 'todfeindin': 3283, 'finsteren': 3284, 'ecken': 3285, 'lauern': 3286, 'schulkrankenschwester': 3287, 'leuchtenden': 3288, 'beschützt': 3289, 'vertrauten': 3290, 'gefilden': 3291, 'tragischen': 3292, 'lebenserhaltung': 3293, 'angeschlossen': 3294, 'fünkchen': 3295, 'verloren': 3296, 'vrmmorpg': 3297, 'gewann': 3298, 'schaltet': 3299, 'lebenserhaltungssystem': 3300, 'verstirbt': 3301, 'erwachen': 3302, 'zweihundert': 3303, 'hochelfe': 3304, 'fähigkeiten': 3305, 'wiederzuerlangen': 3306, 'bewohnern': 3307, 'knüpfen': 3308, 'entworfen': 3309, 'weltweite': 3310, 'mormonentum': 3311, 'fälschung': 3312, 'historischer': 3313, 'dokumente': 3314, 'anschläge': 3315, 'grundfesten': 3316, 'erschüttert': 3317, 'fuji': 3318, 'morikawa': 3319, 'high': 3320, 'inzwischen': 3321, 'studenten': 3322, 'greifbare': 3323, 'nähe': 3324, 'karrierebedingten': 3325, 'verpflichtungen': 3326, 'touyas': 3327, 'aushilfsjobs': 3328, 'gemeinsame': 3329, 'leiden': 3330, 'treten': 3331, 'seien': 3332, 'studienkollegin': 3333, 'misaki': 3334, 'kindheitsfreundin': 3335, 'haruka': 3336, 'rina': 3337, 'ogata': 3338, 'zunehmenden': 3339, 'einsamkeit': 3340, 'gerissen': 3341, 'gelegenheiten': 3342, 'kleiner': 3343, 'detektei': 3344, 'feuers': 3345, 'truges': 3346, 'midgard': 3347, 'odin': 3348, 'verbannt': 3349, 'übernatürlichen': 3350, 'rätselhaften': 3351, 'vorkommnissen': 3352, 'schliche': 3353, '6tlg': 3354, 'porträtiert': 3355, 'schrecklichsten': 3356, 'diktator': 3357, 'schildert': 3358, 'untergang': 3359, 'nationalsozialistischen': 3360, 'nsdap': 3361, 'aufsteigen': 3362, 'analysiert': 3363, 'reden': 3364, 'gestik': 3365, 'selbstinszenierung': 3366, 'zusammenbruch': 3367, '1945': 3368, 'bk': 3369, 'mithilfe': 3370, 'videoaufzeichnungen': 3371, 'lucky': 3372, 'beast': 3373, 'möchte': 3374, 'safaritour': 3375, 'ceruleans': 3376, 'erschreckende': 3377, 'ähnlichkeit': 3378, 'aufzeigt': 3379, 'savanne': 3380, 'bemerken': 3381, 'caracal': 3382, 'überfallen': 3383, 'unruhestifterin': 3384, 'verfolgung': 3385, 'anschließen': 3386, 'heiße': 3387, 'neuartigen': 3388, '1751': 3389, 'balfour': 3390, 'tode': 3391, 'ebenezer': 3392, 'schottland': 3393, 'davids': 3394, 'erbschaft': 3395, 'gescheiterten': 3396, 'mordversuch': 3397, 'locken': 3398, 'verzweifelte': 3399, 'überraschend': 3400, 'schottische': 3401, 'rebell': 3402, 'alan': 3403, 'breck': 3404, 'verbünden': 3405, 'schmieden': 3406, 'kapitän': 3407, 'hoseason': 3408, 'viktorianischen': 3409, 'zeitalters': 3410, 'denise': 3411, 'lovett': 3412, 'textilwarenladen': 3413, 'onkels': 3414, 'kaufhaus': 3415, 'eröffnet': 3416, 'verwandter': 3417, 'anstellung': 3418, 'nichte': 3419, 'heuert': 3420, 'verkäuferin': 3421, 'strengen': 3422, 'audrey': 3423, 'witwer': 3424, 'moray': 3425, 'adrette': 3426, 'wiederum': 3427, 'clara': 3428, 'garten': 3429, 'kater': 3430, 'tsushima': 3431, 'aufzunehmen': 3432, 'gefräßig': 3433, 'faul': 3434, 'haustier': 3435, 'stört': 3436, 'aufregendes': 3437, 'zusammenleben': 3438, 'spätestens': 3439, 'millionär': 3440, 'beliebtesten': 3441, 'schlau': 3442, 'these': 3443, 'bewiesen': 3444, 'eigens': 3445, 'wissenschaftlich': 3446, 'fundierter': 3447, 'test': 3448, 'prominenten': 3449, 'gästen': 3450, 'nation': 3451, 'messen': 3452, '63jährige': 3453, 'liveshow': 3454, 'doppelfunktion': 3455, 'moderator': 3456, 'fungieren': 3457, 'matteson': 3458, 'daisy': 3459, 'haggard': 3460, '18': 3461, 'gittern': 3462, 'verbracht': 3463, 'eigenartig': 3464, 'anfang': 3465, '2000er': 3466, 'gewaltige': 3467, 'durchgemacht': 3468, 'heimatstadt': 3469, 'festes': 3470, 'brutale': 3471, 'killerin': 3472, 'momomiya': 3473, 'heimlichen': 3474, 'schwarm': 3475, 'masaya': 3476, 'aoyama': 3477, 'ausstellung': 3478, 'bedrohte': 3479, 'tierarten': 3480, 'besuch': 3481, 'ungewöhnliches': 3482, 'experiment': 3483, 'angriffen': 3484, 'alienrasse': 3485, 'beschützen': 3486, 'dna': 3487, 'verbindet': 3488, 'erbinformationen': 3489, 'bedrohten': 3490, 'tierart': 3491, 'mischform': 3492, 'kraft': 3493, 'eigenschaften': 3494, 'iriomotekatze': 3495, 'reflexe': 3496, 'vorteile': 3497, 'parasiten': 3498, 'tiere': 3499, 'mason': 3500, 'lomax': 3501, 'draufgänger': 3502, 'argentinien': 3503, 'straße': 3504, 'endet': 3505, 'prominente': 3506, 'krebsvorsorge': 3507, 'stilvoll': 3508, 'hüllen': 3509, 'fallen': 3510, 'intensive': 3511, 'trainingseinheiten': 3512, 'tänzern': 3513, 'mittelpunkt': 3514, 'wutang': 3515, 'hiphopgruppe': 3516, 'city': 3517, 'rapper': 3518, 'frontmann': 3519, 'gründung': 3520, '1990er': 3521, 'höhepunkts': 3522, 'crackepidemie': 3523, 'formiert': 3524, 'rappers': 3525, 'digs': 3526, 'alias': 3527, 'hiphopmusikern': 3528, 'künstler': 3529, 'bislang': 3530, 'armut': 3531, 'gefragten': 3532, 'musikern': 3533, 'millioneneinnahmen': 3534, 'musiktonträgern': 3535, 'nerv': 3536, 'reichtum': 3537, 'gza': 3538, 'method': 3539, 'raekwon': 3540, 'ghostface': 3541, 'killah': 3542, 'inspectah': 3543, 'deck': 3544, 'ugod': 3545, 'masta': 3546, 'killa': 3547, 'cappadonna': 3548, 'ol': 3549, 'dirty': 3550, 'bastard': 3551, 'starb': 3552, '2004': 3553, 'überdosis': 3554, 'rise': 3555, 'wirft': 3556, 'richtern': 3557, 'stellvertretenden': 3558, 'staatsanwälten': 3559, 'pflichtverteidigern': 3560, 'angestellten': 3561, 'gerichtsgebäude': 3562, 'marg': 3563, 'helgenberger': 3564, 'judith': 3565, 'weitergehende': 3566, 'aufsichtsaufgaben': 3567, 'richterschaft': 3568, 'übernimmt': 3569, 'progressive': 3570, 'richterbank': 3571, 'bahnbrechenden': 3572, 'mittlerweile': 3573, 'konservativer': 3574, 'simone': 3575, 'missick': 3576, 'zentrale': 3577, 'figur': 3578, 'staatsanwältin': 3579, 'testet': 3580, 'elan': 3581, 'grenzen': 3582, 'positiven': 3583, 'sherri': 3584, 'ruthie': 3585, 'ann': 3586, 'reibungslosen': 3587, 'ablauf': 3588, 'tragen': 3589, 'sopranos': 3590, 'amerikanisches': 3591, 'tvdrama': 3592, 'davic': 3593, 'chase': 3594, 'jersey': 3595, 'angesiedelte': 3596, 'italoamerikanischen': 3597, 'mafiaboss': 3598, 'tony': 3599, 'soprano': 3600, 'konflikten': 3601, 'oberhaupt': 3602, 'vereinigung': 3603, 'therapie': 3604, 'jennifer': 3605, 'melfi': 3606, 'deutlich': 3607, 'nebenplots': 3608, 'tonys': 3609, 'mafiamitglieder': 3610, 'involviert': 3611, 'carmela': 3612, 'protegé': 3613, 'christopher': 3614, 'moltisanti': 3615, 'focus': 3616, 'gerückt': 3617, 'handlung': 3618, 'kontinenten': 3619, 'gebiet': 3620, 'mauer': 3621, 'jenseits': 3622, 'essos': 3623, 'länge': 3624, 'winter': 3625, 'unvorhersehbar': 3626, 'variabel': 3627, 'jahreszeit': 3628, 'jahrzehnte': 3629, 'dauern': 3630, 'handlungsort': 3631, 'kontinent': 3632, 'mittelalterlichen': 3633, 'sommers': 3634, 'handlungssträngen': 3635, 'weitgehend': 3636, 'parallel': 3637, 'adelshäusern': 3638, 'reiches': 3639, 'spannungen': 3640, 'offenen': 3641, 'thronkampf': 3642, 'wintereinbruch': 3643, 'fremde': 3644, 'hohen': 3645, 'ereignis': 3646, 'größte': 3647, 'jerry': 3648, 'seinfeld': 3649, 'elaine': 3650, 'kramer': 3651, 'george': 3652, 'chaotenclique': 3653, 'sitzplatz': 3654, 'restaurant': 3655, 'illegaler': 3656, 'kabelanschluss': 3657, 'richtigen': 3658, 'höhe': 3659, 'trinkgeldes': 3660, 'falsche': 3661, 'bemerkung': 3662, 'anrufbeantworter': 3663, 'flamme': 3664, '1863': 3665, 'lincoln': 3666, 'transkontinentalen': 3667, 'eisenbahnbau': 3668, 'initiiert': 3669, 'spektakulären': 3670, 'wettstreit': 3671, 'gesellschaften': 3672, 'konföderierte': 3673, 'soldat': 3674, 'cullen': 3675, 'bohannon': 3676, 'anson': 3677, 'mount': 3678, 'bürgerkriegs': 3679, 'streben': 3680, 'hinterkopf': 3681, 'westwärts': 3682, 'ziehenden': 3683, 'zombieapokalypse': 3684, 'überlebender': 3685, 'führung': 3686, 'sheriffs': 3687, 'grimes': 3688, 'dauerhaften': 3689, 'sicheren': 3690, 'bleibe': 3691, 'überall': 3692, 'präsenten': 3693, 'untoten': 3694, 'permanent': 3695, 'vorhandene': 3696, 'bedrohung': 3697, 'dar': 3698, 'jederzeit': 3699, 'vorwarnung': 3700, 'marvels': 3701, 'agents': 3702, 'usamerikanische': 3703, 'fernsehserie': 3704, 'marvel': 3705, 'cinematic': 3706, 'universe': 3707, 'joss': 3708, 'jed': 3709, 'whedon': 3710, 'maurissa': 3711, 'tancharoen': 3712, 'entwickelt': 3713, 'marvelgeheimdienstorganisation': 3714, 'clark': 3715, 'gregg': 3716, 'gespielte': 3717, 'phil': 3718, 'coulson': 3719, 'computerfreak': 3720, 'bartowski': 3721, 'email': 3722, 'unsichtbar': 3723, 'staatsgeheimnisse': 3724, 'einkodiert': 3725, 'ahnungslos': 3726, 'kompletten': 3727, 'server': 3728, 'voller': 3729, 'geheimer': 3730, 'daten': 3731, 'gehirn': 3732, 'unversehens': 3733, 'laufbahn': 3734, 'katapultiert': 3735, 'wichtigste': 3736, 'geheimagent': 3737, 'länger': 3738, 'computerviren': 3739, 'leibe': 3740, 'jagt': 3741, 'profikiller': 3742, 'dexter': 3743, 'blutanalyst': 3744, 'miami': 3745, 'streift': 3746, 'serienkiller': 3747, 'ihrerseits': 3748, 'gemordet': 3749, 'berufs': 3750, 'nächtlichen': 3751, 'aktivität': 3752, 'wochen': 3753, 'custer': 3754, 'verübtem': 3755, 'massaker': 3756, 'regiert': 3757, 'korruption': 3758, 'desillusionierte': 3759, 'verbitterte': 3760, 'gesetzeshüter': 3761, 'wild': 3762, 'hickok': 3763, 'erreicht': 3764, 'seth': 3765, 'bullock': 3766, 'olyphant': 3767, 'kaff': 3768, 'neuanfang': 3769, 'geraten': 3770, 'herrscher': 3771, 'swearengen': 3772, 'ian': 3773, 'mcshane': 3774, 'saloon': 3775, 'hotelbesitzer': 3776, 'verstrickungen': 3777, '1876': 3778, 'officer': 3779, 'mathison': 3780, 'leistet': 3781, 'großartige': 3782, 'vielfältigen': 3783, 'terrorismus': 3784, 'saul': 3785, 'berenson': 3786, 'furchtlose': 3787, 'riskiert': 3788, 'hierfür': 3789, 'persönliches': 3790, 'geisteszustand': 3791, 'bipolare': 3792, 'störung': 3793, 'verletzlich': 3794, 'unberechenbar': 3795, 'gregory': 3796, 'princetonplainsboro': 3797, 'teaching': 3798, 'hospital': 3799, 'liebsten': 3800, 'sprechen': 3801, 'ungeschoren': 3802, 'erfolgreicher': 3803, 'entfernung': 3804, 'teile': 3805, 'nekrotisierten': 3806, 'gewebes': 3807, 'oberschenkel': 3808, 'leidet': 3809, 'ständigen': 3810, 'schmerzen': 3811, 'gehstock': 3812, 'angewiesen': 3813, 'bittere': 3814, 'schonungslose': 3815, 'haltung': 3816, 'zusätzlich': 3817, 'unterstreicht': 3818, 'ruppig': 3819, 'akurate': 3820, 'diagnosen': 3821, 'scheinbar': 3822, 'gezollt': 3823, 'verhalten': 3824, 'ans': 3825, 'unsoziale': 3826, 'grenzt': 3827, 'herausragender': 3828, 'eigenbrödlerischer': 3829, 'mediziner': 3830, 'unkonventionelle': 3831, 'denkweise': 3832, 'tadellosen': 3833, 'instinkte': 3834, 'respekt': 3835, 'eingebracht': 3836, 'bewaffnete': 3837, 'griff': 3838, 'gangs': 3839, 'rassisten': 3840, 'dasein': 3841, 'renegade': 3842, 'geschäft': 3843, 'verkommen': 3844, 'ehrenkodex': 3845, 'gesetzlosen': 3846, 'aussterbenden': 3847, 'charming': 3848, 'kalifornien': 3849, 'spielart': 3850, 'gerühmten': 3851, 'fiktive': 3852, 'kleinstadt': 3853, 'wüste': 3854, 'herrscht': 3855, 'motorradgang': 3856, 'bruderschaft': 3857, 'anständige': 3858, 'waffenhandel': 3859, 'illegale': 3860, 'geschäfte': 3861, 'teuer': 3862, 'paradox': 3863, 'söhne': 3864, 'anarchie': 3865, 'strenge': 3866, 'bruderkrieg': 3867, 'titos': 3868, 'erbe': 3869, 'originaltitel': 3870, 'death': 3871, 'yugoslavia': 3872, 'preisgekrönter': 3873, 'sechsteiliger': 3874, 'zerfall': 3875, 'jugoslawiens': 3876, 'josip': 3877, 'broz': 3878, 'tito': 3879, 'anschließenden': 3880, 'jugoslawienkriege': 3881, 'daytonabkommen': 3882, 'einzigartiger': 3883, 'kombiniert': 3884, 'gezeigtes': 3885, 'archivmaterial': 3886, 'hauptakteure': 3887, 'konflikts': 3888, 'slobodan': 3889, 'milošević': 3890, 'radovan': 3891, 'karadžić': 3892, 'franjo': 3893, 'tuđman': 3894, 'alija': 3895, 'izetbegović': 3896, 'schildern': 3897, 'entscheidenden': 3898, 'momente': 3899, 'krise': 3900, 'erzählen': 3901, 'getan': 3902, 'weshalb': 3903, 'betreffenden': 3904, 'unterlagen': 3905, 'vollständiger': 3906, 'abschriften': 3907, 'durchgeführten': 3908, 'hinterlegt': 3909, 'liddell': 3910, 'hart': 3911, 'centre': 3912, 'military': 3913, 'archives': 3914, 'kings': 3915, 'college': 3916, 'university': 3917, 'london': 3918, 'dokudramareihe': 3919, 'rote': 3920, 'berüchtigte': 3921, 'korruptionsskandale': 3922, 'sowjetunion': 3923, '1980erjahre': 3924, 'entschlossener': 3925, 'vernichtenden': 3926, 'toru': 3927, 'muranishi': 3928, 'revolutionierte': 3929, 'branche': 3930, 'internet': 3931, 'hypes': 3932, 'perfiden': 3933, 'konzerngiganten': 3934, 'allerneueste': 3935, 'sendemüll': 3936, 'tv': 3937, 'walulis': 3938, 'woche': 3939, 'tabu': 3940, 'solang': 3941, 'lustig': 3942, 'fun': 3943, 'fakten': 3944, 'etwa': 3945, 'firma': 3946, 'wework': 3947, 'firmengründer': 3948, 'hochtrabende': 3949, 'büroräume': 3950, 'arbeitsplätze': 3951, 'selbstständige': 3952, 'vereinen': 3953, 'verantwortlichen': 3954, 'bisweilen': 3955, 'standen': 3956, 'wuchs': 3957, 'unternehmens': 3958, 'wirtschaftlichen': 3959, 'folgte': 3960, 'harsche': 3961, 'landung': 3962, 'dokmentation': 3963, 'beantwortet': 3964, 'geschichtlich': 3965, 'interessierten': 3966, 'aufdrängt': 3967, 'kürzester': 3968, 'demokratischen': 3969, 'rechtsstaat': 3970, 'umformen': 3971, 'erdball': 3972, 'unglück': 3973, 'influencerin': 3974, 'comedienne': 3975, 'kommentiert': 3976, 'clips': 3977, 'formaten': 3978, 'frauensenders': 3979, 'tlc': 3980, 'tut': 3981, 'berühmte': 3982, 'gäste': 3983, 'jenny': 3984, 'elvers': 3985, 'mimi': 3986, 'fiedler': 3987, 'ira': 3988, 'wolff': 3989, 'aleksandra': 3990, 'bechtel': 3991, 'stieftochter': 3992, 'teenageralter': 3993, 'aufbauen': 3994, 'mysteriöse': 3995, 'stammende': 3996, 'jamu': 3997, 'aufenthaltserlaubnis': 3998, 'abgelaufen': 3999, 'erhofft': 4000, 'uwe': 4001, 'automatenzocker': 4002, 'stammkneipe': 4003, 'macker': 4004, 'erika': 4005, 'tür': 4006, 'juri': 4007, 'dauerkunde': 4008, 'waschsalon': 4009, 'paula': 4010, 'könnten': 4011, 'befüllen': 4012, 'waschtrommeln': 4013, 'gespräche': 4014, 'rotierende': 4015, 'wäsche': 4016, 'beschäftigen': 4017, 'selten': 4018, 'halter': 4019, 'mundanen': 4020, 'faszination': 4021, 'worten': 4022, 'berühmter': 4023, 'drang': 4024, 'verlockenden': 4025, 'internat': 4026, 'mitschülerin': 4027, 'young': 4028, 'selbe': 4029, 'umwerfend': 4030, 'gewitzt': 4031, 'witzig': 4032, 'sexy': 4033, 'selbstzerstörerisch': 4034, 'screwedup': 4035, 'unglaublich': 4036, 'faszinierend': 4037, 'event': 4038, 'zahllosen': 4039, 'danach': 4040, 'ehrgeizigen': 4041, 'filmemachern': 4042, 'schauspielern': 4043, 'homosexuelle': 4044, 'rock': 4045, 'hudson': 4046, 'hollywood': 4047, 'nachkriegszeit': 4048, 'durchbruch': 4049, 'erzwingen': 4050, 'preis': 4051, 'system': 4052, 'geschlecht': 4053, 'diskriminiert': 4054, 'ausländerbehörde': 4055, 'django': 4056, 'asül': 4057, 'geleitet': 4058, 'rolf': 4059, 'miller': 4060, 'wolfgang': 4061, 'krebs': 4062, 'ambitioniert': 4063, 'naht': 4064, 'inferno': 4065, 'peter': 4066, 'snow': 4067, 'zug': 4068, 'waggons': 4069, 'epochen': 4070, 'militärdienst': 4071, 'stehenden': 4072, 'italien': 4073, 'gefolgt': 4074, 'schwierigen': 4075, 'teenagerjahre': 4076, 'militärbasis': 4077, 'unwägbarkeiten': 4078, 'erwarten': 4079, 'dokureihe': 4080, 'beschäftigt': 4081, 'mordfällen': 4082, 'sicht': 4083, 'gerichtsmedizinern': 4084, 'forensikern': 4085, 'remnant': 4086, 'tierhybride': 4087, 'faunus': 4088, 'übermacht': 4089, 'grimm': 4090, 'monstern': 4091, 'mutige': 4092, 'krieger': 4093, 'speziellen': 4094, 'prestigeträchtige': 4095, 'beacon': 4096, 'academy': 4097, 'talentierte': 4098, 'rose': 4099, 'weiss': 4100, 'schnee': 4101, 'blake': 4102, 'belladonna': 4103, 'yang': 4104, 'xiao': 4105, 'long': 4106, 'rwby': 4107, 'ziehen': 4108, 'schuldirektors': 4109, 'ozpin': 4110, 'kameradinnen': 4111, 'bekämpft': 4112, 'faunusextremistengruppe': 4113, 'fang': 4114, 'gefährlich': 4115, 'nah': 4116, 'heran': 4117, 'geschicke': 4118, 'remnants': 4119, 'verborgenen': 4120, 'lenken': 4121, 'asahi': 4122, 'kashiwagi': 4123, 'typische': 4124, 'durchschnittlichen': 4125, 'oberschülers': 4126, 'vorhersagen': 4127, 'tvwahrsagers': 4128, 'eintreten': 4129, 'schlüpfrigen': 4130, 'zwischenfall': 4131, 'nämlich': 4132, '5': 4133, 'bildhübschen': 4134, 'gestehen': 4135, 'turbulente': 4136, 'pfad': 4137, 'tugend': 4138, 'perfekte': 4139, 'steuert': 4140, 'sauseschritt': 4141, 'epischsten': 4142, 'flop': 4143, 'lehrern': 4144, 'schülern': 4145, 'ärzten': 4146, 'künstlern': 4147, 'systemrelevant': 4148, 'homeoffice': 4149, 'verunsichert': 4150, 'lockdown': 4151, 'coronajahr': 4152, 'karle': 4153, 'auberle': 4154, 'erfinder': 4155, 'erfindet': 4156, 'mögliche': 4157, 'unterstützt': 4158, 'gertrudle': 4159, 'hund': 4160, 'conniele': 4161, 'klappt': 4162, 'meist': 4163, 'wunderbar': 4164, 'jagd': 4165, 'schnellem': 4166, 'loyalität': 4167, 'geschäftspartner': 4168, 'prüfstand': 4169, 'passiert': 4170, 'kriminelle': 4171, 'stockholms': 4172, 'startupunternehmertum': 4173, 'aufeinandertreffen': 4174, 'furchtbaren': 4175, 'bedroht': 4176, 'ereignet': 4177, 'aufeinander': 4178, 'hershel': 4179, 'great': 4180, 'craymels': 4181, 'gewissermaßen': 4182, 'schutzpatrone': 4183, 'unvorhergesehene': 4184, 'kopfgeldjägerin': 4185, 'natürlich': 4186, 'stich': 4187, 'erwartet': 4188, 'seht': 4189, 'bestehen': 4190, 'fernsehpreis': 4191, 'jährlich': 4192, 'prominent': 4193, 'besetzten': 4194, 'jury': 4195, 'fernsehschaffende': 4196, 'kategorien': 4197, 'bester': 4198, 'unterhaltung': 4199, 'ua': 4200, 'vergeben': 4201, 'victor': 4202, 'and': 4203, 'valentino': 4204, 'abenteuerliche': 4205, 'komödie': 4206, 'halbbrüder': 4207, 'großmutter': 4208, 'monte': 4209, 'macabre': 4210, 'mythen': 4211, 'legenden': 4212, 'mittelamerikanischen': 4213, 'folkore': 4214, 'lebendig': 4215, 'unterhaltungsserie': 4216, 'unterhaltungssendung': 4217, 'babara': 4218, 'salsch': 4219, 'scripted': 4220, 'reality': 4221, 'gerichtsshow': 4222, 'jährliche': 4223, 'verleihung': 4224, 'grimmepreise': 4225, 'otokojuku': 4226, 'straftäter': 4227, 'normalen': 4228, 'verwiesen': 4229, 'wurden': 4230, 'ritterlichkeit': 4231, 'feudalistische': 4232, 'militärische': 4233, 'grundlagen': 4234, 'gelehrt': 4235, 'actionfilm': 4236, 'klassen': 4237, 'überschüttet': 4238, 'überleben': 4239, 'männern': 4240, 'operation': 4241, 'walküre': 4242, 'offizieller': 4243, 'alarmplan': 4244, 'plans': 4245, 'wollten': 4246, 'verschwörer': 4247, 'claus': 4248, 'schenk': 4249, 'stauffenberg': 4250, 'umsturz': 4251, 'herbeiführen': 4252, 'stauffenbergs': 4253, 'attentat': 4254, 'missglückte': 4255, 'blieb': 4256, 'aufgebaute': 4257, 'rein': 4258, 'szenischen': 4259, 'rekonstruktion': 4260, 'eingeblendeten': 4261, 'berichten': 4262, 'beteiligten': 4263, 'augenzeugen': 4264, 'authentischen': 4265, 'zeugnissen': 4266, 'vorhanden': 4267, 'durchleuchtet': 4268, 'höchstem': 4269, 'realitätsbezug': 4270, 'unterhaltungsshow': 4271, 'villa': 4272, 'germania': 4273, 'thailändischen': 4274, 'dauerhaft': 4275, '11stöckigen': 4276, 'wohnkomplex': 4277, 'ausschließlich': 4278, 'deutschsprachige': 4279, 'auswanderer': 4280, 'verkauft': 4281, 'achtteilige': 4282, 'dokusoap': 4283, 'struktur': 4284, 'wahnsinn': 4285, 'verwaltet': 4286, 'wohnanlage': 4287, 'rentner': 4288, 'dauerurlauber': 4289, 'aussteiger': 4290, 'berühmtberüchtigte': 4291, 'nachtleben': 4292, 'bundesweit': 4293, 'schulwettbewerb': 4294, 'klasse': 4295, '2047': 4296, 'verschlingende': 4297, 'verwüstet': 4298, 'dirigenten': 4299, 'kompositionen': 4300, 'menschheitsgeschichte': 4301, 'musicarts': 4302, 'ebenjenen': 4303, 'partituren': 4304, 'verliehen': 4305, 'dirigent': 4306, 'takt': 4307, 'destiny': 4308, 'hoffen': 4309, 'klänge': 4310, 'bewahren': 4311, 'erzeugte': 4312, 'melodie': 4313, 'verzweiflung': 4314, 'auslösen': 4315, 'asuka': 4316, 'süßes': 4317, 'schulmädchen': 4318, 'meistern': 4319, 'unterschied': 4320, 'regen': 4321, 'unbewussten': 4322, 'anmutenden': 4323, 'verhaltensweisen': 4324, 'hormonspiegel': 4325, 'männlichen': 4326, 'umfeldes': 4327, 'höchstleistungen': 4328, 'reihenweise': 4329, 'fehlinterpretationen': 4330, 'prekären': 4331, 'situationen': 4332, 'missverständnissen': 4333, 'fackeln': 4334, 'elitepolizistin': 4335, 'klug': 4336, 'sonntag': 4337, 'stoischen': 4338, 'betrugsdezernates': 4339, 'polizeidirektion': 4340, '7': 4341, 'spittelmarkt': 4342, 'kopfarbeiter': 4343, 'analytisch': 4344, 'akribisch': 4345, 'geduldig': 4346, 'chefin': 4347, 'marei': 4348, 'schiller': 4349, 'präsentable': 4350, 'ermittlungsergebnisse': 4351, 'julia': 4352, 'dagegen': 4353, 'methode': 4354, 'konfrontation': 4355, 'pur': 4356, 'wissensmagazin': 4357, 'ralph': 4358, 'caspers': 4359, 'clarissa': 4360, 'corrêa': 4361, 'silva': 4362, '2017': 4363, 'shary': 4364, 'reeves': 4365, 'anschaulich': 4366, 'verständlich': 4367, 'antworten': 4368, 'alltags': 4369, 'bisher': 4370, 'nie': 4371, 'gab': 4372, 'windsurfer': 4373, 'kungfukämpfer': 4374, 'meisterdetektive': 4375, 'klavierträger': 4376, 'berühmtesten': 4377, 'sesamstraße': 4378, 'puppen': 4379, 'knetfiguren': 4380, 'fünfminütigen': 4381, 'reichlich': 4382, 'fliegendes': 4383, 'bett': 4384, 'schauplatz': 4385, 'traumland': 4386, 'einsamen': 4387, 'piratenschatz': 4388, 'bergen': 4389, 'südpol': 4390, 'ei': 4391, 'pinguindame': 4392, 'ausbrüten': 4393, 'superhelden': 4394, 'diebischen': 4395, 'pfannkuchen': 4396, 'verschlägt': 4397, 'bertianern': 4398, 'kika': 4399, 'erben': 4400, 'bbc': 4401, '2001': 4402, 'zweite': 4403, 'trilogie': 4404, 'ahnen': 4405, 'basis': 4406, 'wissenschaftlicher': 4407, 'forschungen': 4408, 'tertiär': 4409, 'aufkommende': 4410, 'dominanz': 4411, 'säugetiere': 4412, 'evolution': 4413, 'frühen': 4414, 'arten': 4415, 'beschrieben': 4416, 'sechs': 4417, 'episoden': 4418, 'minuten': 4419, 'spieldauer': 4420, 'worin': 4421, 'vorgänger': 4422, 'mausgroße': 4423, 'insektenfresser': 4424, 'mammuts': 4425, 'homo': 4426, 'sapiens': 4427, 'bewegten': 4428, 'großbritannien': 4429, 'zeitzeugeninterviews': 4430, 'ermittler': 4431, 'quirlige': 4432, 'sekretärin': 4433, 'klara': 4434, 'degen': 4435, 'hauptkommissar': 4436, 'kleinert': 4437, 'reizvollen': 4438, 'harz': 4439, 'dingen': 4440, 'zugeht': 4441, 'protagonistinnen': 4442, 'amouröse': 4443, 'sexuelle': 4444, 'erlebnisse': 4445, 'diskussionen': 4446, 'gedanken': 4447, 'menschlicher': 4448, 'dargestellt': 4449, 'spektakulärsten': 4450, 'autos': 4451, 'testfahrten': 4452, 'vulkan': 4453, 'coole': 4454, 'sprüche': 4455, 'dmax': 4456, 'holt': 4457, 'gear': 4458, 'autoshows': 4459, 'weltweit': 4460, 'tvformat': 4461, 'fahrbarer': 4462, 'untersatz': 4463, 'sensationellen': 4464, 'stunts': 4465, 'präzise': 4466, 'recherchierten': 4467, 'beiträgen': 4468, 'gefürchteten': 4469, 'kfzkritiker': 4470, 'klinik': 4471, 'südring': 4472, 'echte': 4473, 'ärzte': 4474, 'schwestern': 4475, 'medizin': 4476, 'krankenhausalltags': 4477, 'medizinische': 4478, 'ursachenforschung': 4479, 'krankenhauspersonal': 4480, 'lösung': 4481, 'kompetent': 4482, 'menschlich': 4483, 'zweiteiliges': 4484, 'penpaper': 4485, 'rocket': 4486, 'beans': 4487, 'bossanovaclub': 4488, 'eröffnen': 4489, 'titelgebenden': 4490, 'enthüllungsjournalisten': 4491, 'günter': 4492, 'wallraff': 4493, 'vergangenen': 4494, 'jahrzehnten': 4495, 'häufig': 4496, 'undercoverreporter': 4497, 'mitarbeiter': 4498, 'wirtschaftsbetrieben': 4499, 'filmen': 4500, 'versteckter': 4501, 'beurteilungen': 4502, 'experten': 4503, 'gezeigten': 4504, 'zuständen': 4505, 'mitarbeitern': 4506, 'unternehmen': 4507, 'eingespielt': 4508}\n" - ] - } - ], - "source": [ - "summary_tok = Tokenizer(oov_token='')\n", - "\n", - "summary_tok.fit_on_texts(media['summary'])\n", - "\n", - "summary_total_words = len(summary_tok.word_index) + 1\n", - "\n", - "print(summary_tok.word_index)\n" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-05-27T23:18:47.165193990Z", - "start_time": "2023-05-27T23:18:47.140443307Z" - } - } - }, - { - "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " vote\n", - "146 0\n", - "168 0\n", - "192 0\n", - "69 0\n", - "158 0\n", - "65 0\n", - "82 0\n", - "106 0\n", - "78 0\n", - "125 0\n", - "66 0\n", - "165 0\n", - "85 0\n", - "83 0\n", - "12 1\n", - "93 0\n", - "187 0\n", - "97 0\n", - "100 0\n", - "33 0\n", - "193 0\n", - "68 1\n", - "22 0\n", - "107 0\n", - "130 0\n", - "24 0\n", - "104 0\n", - "194 0\n", - "162 0\n", - "118 0\n", - "196 0\n", - "140 0\n", - "137 0\n", - "79 0\n", - "80 0\n", - "174 0\n", - "139 0\n", - "38 0\n", - "49 0\n", - "183 0\n", - "84 0\n", - "172 0\n", - "41 0\n", - "108 0\n", - "151 0\n", - "13 0\n", - "154 0\n", - "96 0\n", - "134 0\n", - "176 0\n" - ] - } - ], - "source": [ - "x_train, x_test, y_train, y_test = train_test_split(media[['genre_1', 'genre_2']], media[['vote']])\n", - "\n", - "print(y_test)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-05-27T23:19:31.390237971Z", - "start_time": "2023-05-27T23:19:31.381376459Z" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "start_time": "2023-05-27T23:18:47.170831734Z" - } - } - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.16" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/recommender/prep/.nvmrc b/recommender/prep/.nvmrc new file mode 100644 index 0000000..3c03207 --- /dev/null +++ b/recommender/prep/.nvmrc @@ -0,0 +1 @@ +18 diff --git a/recommender/prep/.prettierrc.json b/recommender/prep/.prettierrc.json new file mode 100644 index 0000000..74760d2 --- /dev/null +++ b/recommender/prep/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "printWidth": 80, + "singleQuote": true, + "tabWidth":2, + "endOfLine": "lf", + "useTabs": false, + "semi": true +} diff --git a/recommender/prep/all2json.ts b/recommender/prep/all2json.ts new file mode 100644 index 0000000..5a21337 --- /dev/null +++ b/recommender/prep/all2json.ts @@ -0,0 +1,85 @@ +import { Client } from 'pg'; +import * as fs from 'fs'; + +const enum MediaType { + TV = 1, + MOVIE = 2, +} + +const run = async () => { + const client = new Client({ + host: 'localhost', + user: 'pgres', + password: 'pgres', + database: 'movie_match', + }); + + await client.connect(); + + const result = await client.query(` + select m.id as media_id, + m.type as media_type, + m.title as media_title, + m.summary as media_summary, + m.rating as media_rating, + m.release_date as media_release_date, + g.name as genre_name + from media m + join media_genres mg on m.id = mg.media_id + join genres g on g.id = mg.genre_id + `); + + const data: Record< + string, + { + mediaId: string; + mediaType: MediaType; + mediaTitle: string; + mediaSummary: string; + mediaRating: number; + mediaReleaseDate: number; + genre0: string | null; + genre1: string | null; + genre2: string | null; + genre3: string | null; + } + > = {}; + + for (const row of result.rows) { + if (!data[row['media_id']]) { + data[row['media_id']] = { + mediaId: row['media_id'], + mediaType: + row['media_type'] === 'movie' ? MediaType.MOVIE : MediaType.TV, + mediaTitle: row['media_title'], + mediaSummary: row['media_summary'], + mediaRating: Number(row['media_rating']), + mediaReleaseDate: Date.parse(row['media_release_date']), + genre0: null, + genre1: null, + genre2: null, + genre3: null, + }; + } + + // place genre at correct index + for (let i = 0; i < 4; ++i) { + const idx = `genre${i}` as 'genre0' | 'genre1' | 'genre2' | 'genre3'; + + if (data[row['media_id']][idx] === null) { + data[row['media_id']][idx] = row['genre_name']; + break; + } + } + } + + fs.writeFileSync( + '../data/media_all.json', + JSON.stringify(Object.values(data)), + 'utf-8' + ); + + await client.end(); +}; + +run().then((r) => console.log('done!')); diff --git a/recommender/prep/package.json b/recommender/prep/package.json new file mode 100644 index 0000000..e294049 --- /dev/null +++ b/recommender/prep/package.json @@ -0,0 +1,24 @@ +{ + "name": "@movie-match/prep", + "version": "1.0.0", + "description": "Prep scripts for recommender", + "scripts": { + "voted": "ts-node vote2json.ts", + "all": "ts-node all2json.ts" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "@tsconfig/node18": "^18.2.0", + "@types/node": "^18.16.20", + "@types/pg": "^8.10.2", + "csv": "^6.3.1", + "pg": "^8.11.1", + "prettier": "^2.8.8", + "typescript": "^5.1.6" + }, + "dependencies": { + "ts-node": "^10.9.1" + } +} diff --git a/recommender/prep/pnpm-lock.yaml b/recommender/prep/pnpm-lock.yaml new file mode 100644 index 0000000..ae74b87 --- /dev/null +++ b/recommender/prep/pnpm-lock.yaml @@ -0,0 +1,343 @@ +lockfileVersion: '6.0' + +dependencies: + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@18.16.20)(typescript@5.1.6) + +devDependencies: + '@tsconfig/node18': + specifier: ^18.2.0 + version: 18.2.0 + '@types/node': + specifier: ^18.16.20 + version: 18.16.20 + '@types/pg': + specifier: ^8.10.2 + version: 8.10.2 + csv: + specifier: ^6.3.1 + version: 6.3.1 + pg: + specifier: ^8.11.1 + version: 8.11.1 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + typescript: + specifier: ^5.1.6 + version: 5.1.6 + +packages: + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: false + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: false + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: false + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: false + + /@tsconfig/node18@18.2.0: + resolution: {integrity: sha512-yhxwIlFVSVcMym3O31HoMnRXpoenmpIxcj4Yoes2DUpe+xCJnA7ECQP1Vw889V0jTt/2nzvpLQ/UuMYCd3JPIg==} + dev: true + + /@types/node@18.16.20: + resolution: {integrity: sha512-nL54VfDjThdP2UXJXZao5wp76CDiDw4zSRO8d4Tk7UgDqNKGKVEQB0/t3ti63NS+YNNkIQDvwEAF04BO+WYu7Q==} + + /@types/pg@8.10.2: + resolution: {integrity: sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==} + dependencies: + '@types/node': 18.16.20 + pg-protocol: 1.6.0 + pg-types: 4.0.1 + dev: true + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: false + + /buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: false + + /csv-generate@4.2.6: + resolution: {integrity: sha512-VtnYqhWLcsUocA346ewFOk+rrqcoT663j11vXzD2uelXq9WguQ3QzDeVD8ISso7hhVtkDSHcWl9psdemeiEHDA==} + dev: true + + /csv-parse@5.4.0: + resolution: {integrity: sha512-JiQosUWiOFgp4hQn0an+SBoV9IKdqzhROM0iiN4LB7UpfJBlsSJlWl9nq4zGgxgMAzHJ6V4t29VAVD+3+2NJAg==} + dev: true + + /csv-stringify@6.4.0: + resolution: {integrity: sha512-HQsw0QXiN5fdlO+R8/JzCZnR3Fqp8E87YVnhHlaPtNGJjt6ffbV0LpOkieIb1x6V1+xt878IYq77SpXHWAqKkA==} + dev: true + + /csv@6.3.1: + resolution: {integrity: sha512-ZTcWLvr0Ux0IQDz/QzhCToBVIZtF5GDrStMt9I8mRSk0jPnfF9OeYKz0EZTspaAEOK6hf515ag97nKmwoyU8ZA==} + engines: {node: '>= 0.1.90'} + dependencies: + csv-generate: 4.2.6 + csv-parse: 5.4.0 + csv-stringify: 6.4.0 + stream-transform: 3.2.6 + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: false + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: false + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + dev: true + + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: true + optional: true + + /pg-connection-string@2.6.1: + resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} + dev: true + + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: true + + /pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + dev: true + + /pg-pool@3.6.1(pg@8.11.1): + resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.11.1 + dev: true + + /pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + dev: true + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: true + + /pg-types@4.0.1: + resolution: {integrity: sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==} + engines: {node: '>=10'} + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.2 + postgres-bytea: 3.0.0 + postgres-date: 2.0.1 + postgres-interval: 3.0.0 + postgres-range: 1.1.3 + dev: true + + /pg@8.11.1: + resolution: {integrity: sha512-utdq2obft07MxaDg0zBJI+l/M3mBRfIpEN3iSemsz0G5F2/VXx+XzqF4oxrbIZXQxt2AZzIUzyVg/YM6xOP/WQ==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.6.1 + pg-pool: 3.6.1(pg@8.11.1) + pg-protocol: 1.6.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + dev: true + + /pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + dependencies: + split2: 4.2.0 + dev: true + + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: true + + /postgres-array@3.0.2: + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} + engines: {node: '>=12'} + dev: true + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: true + + /postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + dependencies: + obuf: 1.1.2 + dev: true + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /postgres-date@2.0.1: + resolution: {integrity: sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==} + engines: {node: '>=12'} + dev: true + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: true + + /postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + dev: true + + /postgres-range@1.1.3: + resolution: {integrity: sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==} + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + + /stream-transform@3.2.6: + resolution: {integrity: sha512-/pyOvaCQFqYTmrFhmMbnAEVo3SsTx1H39eUVPOtYeAgbEUc+rDo7GoP8LbHJgU83mKtzJe/7Nq/ipaAnUOHgJQ==} + dev: true + + /ts-node@10.9.1(@types/node@18.16.20)(typescript@5.1.6): + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.16.20 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.1.6 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: false + + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: false + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: false diff --git a/recommender/prep/tsconfig.json b/recommender/prep/tsconfig.json new file mode 100644 index 0000000..3e1e0c9 --- /dev/null +++ b/recommender/prep/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "ts-node": { + "transpileOnly": true, + "files": true, + "compilerOptions": {} + }, + "compilerOptions": {} +} diff --git a/recommender/prep/vote2json.ts b/recommender/prep/vote2json.ts new file mode 100644 index 0000000..71b30cd --- /dev/null +++ b/recommender/prep/vote2json.ts @@ -0,0 +1,102 @@ +import { Client } from 'pg'; +import * as fs from 'fs'; + +const enum VoteType { + NEGATIVE = -1, + NEUTRAL = 0, + POSITIVE = 1, +} + +const voteTypeMap: Record = { + negative: VoteType.NEGATIVE, + neutral: VoteType.NEUTRAL, + positive: VoteType.POSITIVE, +}; + +const enum MediaType { + TV = 1, + MOVIE = 2, +} + +const run = async () => { + const client = new Client({ + host: 'localhost', + user: 'pgres', + password: 'pgres', + database: 'movie_match', + }); + + await client.connect(); + + const result = await client.query(` + select v.type as vote_type, + m.id as media_id, + m.type as media_type, + m.title as media_title, + m.summary as media_summary, + m.rating as media_rating, + m.release_date as media_release_date, + g.name as genre_name + from votes v + join media m on v.media_id = m.id + join media_genres mg on m.id = mg.media_id + join genres g on g.id = mg.genre_id + where v.user_id = 'f5319987-66cb-40a1-b12c-0a3360db7819' + `); + + const data: Record< + string, + { + mediaId: string; + voteType: VoteType; + mediaType: MediaType; + mediaTitle: string; + mediaSummary: string; + mediaRating: number; + mediaReleaseDate: number; + genre0: string | null; + genre1: string | null; + genre2: string | null; + genre3: string | null; + } + > = {}; + + for (const row of result.rows) { + if (!data[row['media_id']]) { + data[row['media_id']] = { + mediaId: row['media_id'], + voteType: voteTypeMap[row['vote_type']], + mediaType: + row['media_type'] === 'movie' ? MediaType.MOVIE : MediaType.TV, + mediaTitle: row['media_title'], + mediaSummary: row['media_summary'], + mediaRating: Number(row['media_rating']), + mediaReleaseDate: Date.parse(row['media_release_date']), + genre0: null, + genre1: null, + genre2: null, + genre3: null, + }; + } + + // place genre at correct index + for (let i = 0; i < 4; ++i) { + const idx = `genre${i}` as 'genre0' | 'genre1' | 'genre2' | 'genre3'; + + if (data[row['media_id']][idx] === null) { + data[row['media_id']][idx] = row['genre_name']; + break; + } + } + } + + fs.writeFileSync( + '../data/media_all_voted.json', + JSON.stringify(Object.values(data)), + 'utf-8' + ); + + await client.end(); +}; + +run().then((r) => console.log('done!')); diff --git a/recommender/py/make_model.py b/recommender/py/make_model.py deleted file mode 100644 index 9b55f95..0000000 --- a/recommender/py/make_model.py +++ /dev/null @@ -1,98 +0,0 @@ -import re -import string - -import pandas as pd -from keras import Sequential -from keras.layers import Dense -from keras_preprocessing.text import Tokenizer -from nltk.corpus import stopwords -from sklearn.model_selection import train_test_split - - -def make_model(): - media = pd.read_json('../data/media-200.json', lines=True) - - # transpose genres into columns - - def extract_names(row): - if row is None: - return [] - return sorted([re.sub('\s+', '', obj['name'].lower()) for obj in row]) - - max_genres = media['genres'].apply(lambda x: len(extract_names(x))).max() - column_names = [f'genre_{i + 1}' for i in range(max_genres)] - - media[column_names] = pd.DataFrame(media['genres'].apply(lambda x: extract_names(x)).tolist()) - - media[['summary', 'title']] = media[['summary', 'title']].apply(lambda x: x.apply(lambda y: y.lower())) - - media = media.drop(columns=['id', 'genres', 'createdAt', 'updatedAt']) - - # remove punctuation - - media['summary'] = media['summary'].apply(lambda x: re.sub('[^\w\s]', '', x)) - - # remove stopwords - - stops = stopwords.words('german') - - media['summary'] = media['summary'].apply( - lambda x: ' '.join([word for word in x.lower().translate(x.maketrans('', '', string.punctuation)).split() if - word not in stops]) - ) - - media.fillna('', inplace=True) - - # add vote to movies - # vote all "historie" movies "positive" - - # 1 = positive - # 0 = neutral - # -1 = negative - - def vote(row): - for i in range(max_genres): - if row[f'genre_{i + 1}'] == 'historie': - return 1 - - return 0 - - media['vote'] = media.apply(lambda x: vote(x), axis=1) - - genre_tok = Tokenizer(oov_token='') - - for i in range(max_genres): - genre_tok.fit_on_texts(media[f'genre_{i + 1}']) - - model = Sequential() - - model.add(Dense(24, input_dim=max_genres)) - model.add(Dense(1)) - - model.summary() - - model.compile(optimizer='adam', loss='mean_squared_error') - - genre_cols = [] - - for i in range(max_genres): - genre_cols.append(f'genre_{i + 1}') - - media[genre_cols] = media[genre_cols].apply( - lambda x: x.apply( - lambda y: (lambda z: z[0][0] if z[0] else float(1))(genre_tok.texts_to_sequences([y])) - ) - ) - - x_train, x_test, y_train, y_test = train_test_split(media[genre_cols], media['vote']) - - model.fit(x_train, y_train, epochs=100) - - y_pred = model.predict(x_test) - - print(x_test) - print(y_pred) - - -if __name__ == "__main__": - make_model() diff --git a/recommender/scripts/recommend_media.py b/recommender/scripts/recommend_media.py new file mode 100644 index 0000000..92fe885 --- /dev/null +++ b/recommender/scripts/recommend_media.py @@ -0,0 +1,125 @@ +import re +import string + +import pandas as pd +from keras_preprocessing.sequence import pad_sequences +from keras_preprocessing.text import Tokenizer +from nltk.corpus import stopwords +from sklearn.naive_bayes import GaussianNB + + +def process_media(media): + # remove unneeded columns + # not sure how to process mediaReleaseDate for now - maybe use unix seconds since 1970 + + media = media.drop(columns=['mediaId', 'mediaReleaseDate']) + + # remove punctuation + + media['mediaSummary'] = media['mediaSummary'].apply(lambda x: re.sub('[^\w\s]', '', x)) + + # remove stopwords + + stops = stopwords.words('german') + + media['mediaSummary'] = media['mediaSummary'].apply( + lambda x: ' '.join([word for word in x.lower().translate(x.maketrans('', '', string.punctuation)).split() if + word not in stops]) + ) + + media['mediaTitle'] = media['mediaTitle'].apply( + lambda x: ' '.join([word for word in x.lower().translate(x.maketrans('', '', string.punctuation)).split() if + word not in stops]) + ) + + # fill null with empty strings + + media.fillna('', inplace=True) + + # fit tokenizer for genres + + max_genres = 4 + + genre_tok = Tokenizer(oov_token='') + + for i in range(4): + genre_tok.fit_on_texts(media[f'genre{i}']) + + # map genres to tokens + + genre_cols = [] + + for i in range(max_genres): + genre_cols.append(f'genre{i}') + + media[genre_cols] = media[genre_cols].apply( + lambda x: x.apply( + lambda y: (lambda z: z[0][0] if z[0] else float(0))(genre_tok.texts_to_sequences([y])) + ) + ) + + # fit tokenizer on summaries and titles + + prosa_tokenizer = Tokenizer(oov_token='') + + prosa_tokenizer.fit_on_texts(media['mediaSummary']) + prosa_tokenizer.fit_on_texts(media['mediaTitle']) + + # map prosa to tokens + + summary_word_count = 20 + + summary_seqs = pad_sequences(prosa_tokenizer.texts_to_sequences(media['mediaSummary']), maxlen=summary_word_count, + padding='post') + + for i in range(summary_word_count): + media[f'summary{i}'] = summary_seqs[:, i] + + title_word_count = 5 + + title_seqs = pad_sequences(prosa_tokenizer.texts_to_sequences(media['mediaTitle']), maxlen=title_word_count, + padding='post') + + for i in range(title_word_count): + media[f'title{i}'] = title_seqs[:, i] + + return media.drop(columns=['mediaSummary', 'mediaTitle']) + + +def main(): + print("hello world!") + + media_voted_raw = pd.read_json('../data/media_all_voted.json') + media_voted = process_media(media_voted_raw) + + # x_train, x_test, y_train, y_test = train_test_split(media, media['voteType'], test_size=.25, random_state=0) + # cm = confusion_matrix(y_test, y_pred) + + classifier = GaussianNB() + + x = media_voted.drop(columns=['voteType']) + y = media_voted['voteType'] + + classifier.fit(x, y) + + # vote all media + + media_all_raw = pd.read_json('../data/media_all.json') + media_all = process_media(media_all_raw) + + pred_all = classifier.predict(media_all) + + media_all_raw['voteType'] = pred_all + + recommended_media = media_all_raw[media_all_raw['voteType'] == 1] + + merged_df = recommended_media.merge(media_voted_raw, on='mediaId', how='left', indicator=True) + + recommended_media = merged_df[merged_df['_merge'] == 'left_only'] + recommended_media.drop(columns=['_merge'], inplace=True) + + media_voted.head() + + +if __name__ == "__main__": + main()