Schlagwort-Archive: Programmieren

Mein Abschlussprojekt zum Maschinenlernen … Los geht’s!

Nachdem ich Ende letzten Jahres zwei Wochen Urlaub dafür genutzt hatte, um Zeit für die „Machine Learning Engineer“-Fortbildung bei Udacity zu investieren, ging es danach deutlich langsamer voran. Es war schwieriger als gedacht, ein Thema für mein Abschlussprojekt zu finden. Ich hatte ja auch hier etwas dazu geschrieben. Datensätze gibt es im Netz genug, aber ich wollte an etwas arbeiten, was auch jemand gebrauchen könnte.

Tatsächlich hätte ich für OpenSNP an einem Modell arbeiten können, um anhand von Genomdaten die Herkunft einer Person zu bestimmen, aber dafür kenne ich mich dann mit Biologie doch zu wenig aus. Danach hatte ich Kontakt zu jemandem, der die Problemlösungskompetenz von Studierenden untersucht und auch zahlreiche Daten dazu gesammelt hatte. Seinen Artikel habe ich dank Sci-Hub … per Zufall gefunden. Die Daten lagen allerdings unter Verschluss. Closed Science. Ich sollte erst einmal meinen Lebenslauf schicken, vermutlich um zu prüfen, ob da ein böser Konkurrenzforscher seine Arbeit „stehlen“ wolle. Habe ich verschickt, aber danach nie wieder etwas gehört und auch nicht nachgebohrt. So ein Umfeld meide ich doch lieber … Was soll’s.

Analysesoftware auf einem Laptop

Da der Gebührenzähler unerbittlich tickt, habe ich mich dazu entschlossen, doch einfach ein Wald-und-Wiesen-Thema zu nehmen. Ich habe ein paar Datensätze zu Videospielen gefunden und werde versuchen, damit etwas auf die Beine zu stellen. Vielleicht ist es möglich, darauf aufbauend ein Model zu erstellen, mit dem man anhand von Kritiker- und Kundenbewertungen und ein paar anderen Daten die Verkaufszahlen vorhersagen kann. Der von mir eingereichte Vorschlag ist jedenfalls gerade angenommen worden, und ich kann nun loslegen.

Als Nebenprodukt ist außerdem noch eine weitere Projektidee für H5P (und darüber hinaus) entstanden, die allerdings den Rahmen eines Abschlussprojektes sprengen würde. Werde ich im Nachgang angehen. Offen. Mehr dazu gibt es in Kürze.

Make H5P fuzzy and fluffy!

Just before we were able to eventually say Goodbye to ugly 2016, I visited the 33rd Chaos Communication Congress in Hamburg. One evening, I chatted with a physicist. He asked me whether it was possible to use something like fuzzy answers with clozes in H5P.  It wasn’t. But indeed, this might come in handy. Thanks for sharing the idea! Such a feature would be pretty neat in order to forgive typos. It could also be useful for accepting different spellings of names without explicitly stating all possible alternatives.

Well, what do you think I did after I returned home? 😉 As always, I cannot promise a date for a release. The guys over at Joubel are busy working on other cool new stuff for H5P and will have to find some time first for checking my contribution. Anyway, if you’re impatient („Patience is for wimps!„), you can get the code from github. Please note that you will also need the new library H5P.TextUtilities that I created to source some functions that may also be relevant for other interactivities.

Tech Talk

I simply used two common string metrics: (Damerau-)Levenshtein distance and Jaro(-Winkler) distance.

The Levenshtein distance uses the number of operations necessary to transform one string into the other. Operations are deleting, inserting or exchanging a character. Damerau added swapping a character to the pool of operations. Consequently, the few operations you need for a transformation, the more similar the strings are.

The Jaro distance on the other hand „simply“ represents the similarity in percent. Winkler refined the algorithm a little bit for particular cases. I also found a paper from 2012 that suggests a more general improvement. Well, I need something to explore in the future, right? 😉

The users of H5P can, of course, use the options to tweak both algorithms a little bit. It’s hard to say in advance what the maximum number of operations for Damerau-Levenshtein or the minimum threshold for Jaro-Winkler should be. Also, the options might change. I just noticed that a discussion started whether an on/off switch might be more user friendly. Gotta go!

A Babel fish for H5P?

It’s so sad. The Babel fish still has not been found on earth. If we want to present videos to a wider audience, we have to rely on dubbing, voice-over, or captions. Unfortunately, the Interactive Video Library of H5P doesn’t support the latter yet. Someone gave it a shot late last year, but it seems it never got implemented.

Well, YouTube offers to augment videos with captions. Also, H5P supports to use videos directly from YouTube. I took the liberty of digging into some undocumented features of YouTube’s API, and I wrote some code. As a result, I have something that seems to be working. Start the video and see for yourself…

UPDATE: YouTube changed its API. My implementation won’t work anymore.

Make it cute and cuddly!

As I mentioned on Twitter already: We want it to be cute and cuddly, right?

First of all, I am not sure if it runs smoothly on all the major browsers and platforms. Maybe you could have a look on your system and report your findings in the comments below?

Secondly, the video has to be started before you can choose a language (if there are captions available). The same is true for choosing the video quality by the way, and that’s why both icons are ghosted before playing. A workaround would be to start the video automatically, wait for a certain signal from YouTube, and then stop playing and jump back to the start. This shouldn’t take too much time, but it might be visible. I still have to check that.

Furthermore, we slowly but surely might run into trouble with all the icons down in the player’s toolbar. It’s becoming quite crowded, although here on this blog the content width is so small that H5P switches to its alternate mode anyway. It hides options behind the button with the three dots. What do you think? Is it user friendly enough? Should the alternate version become the default? Just leave me a comment!

Oh, and if you happen to come across any other bugs, please just let me know!

Braucht ihr Unterstützung? Gebt her eure Daten!

Arbeitet ihr mit Daten und braucht kostenlose Arbeitskraft? Dann solltet ihr weiterlesen!

Vor nicht ganz drei Wochen habe ich bei Udacity mit dem Nanodegree-Programm zum „Machine Learning Engineer“ begonnen. Gestern Abend zeigte mir die App dann bereits das Erreichen der 95-Prozent-Marke an. Tatsächlich muss ich nur noch ein Projekt bearbeiten, das ein Thema abschließt. Danach steht schon das finale Projekt an.

Fortschrittsbalken mit 95 %Das tolle an diesem Abschlussprojekt: Ich kann mir Problem und Fragestellung selbst wählen und dann bearbeiten. Das wird das Analysieren passender Daten umfassen, um daraufhin Software zu schreiben, mit deren Hilfe Erkenntnisse gewonnen werden können. Außerdem müssen die Gedankengänge dahinter samt der Ergebnisse in einem Bericht festgehalten werden. Der soll rund 10-15 Seiten umfassen. Ist also im Prinzip so etwas wie eine Seminararbeit an einer Hochschule. Damit man sich vorstellen kann, wie so etwas aussieht, stellt Udacity auch Beispiele bereit.

Ich habe schon ein paar Ideen, was ich machen könnte. Die haben den ein oder anderen Pferdefuß. Manchmal fehlt mir das Wissen zu einem bestimmten Fachgebiet, aus dem die Daten kommen. Manchmal habe ich ethische Bedenken, weil die Datensätze auch in anonymisierter Form mit ein bisschen Aufwand Rückschlüsse auf Einzelpersonen zuließen. Das ist durchaus relevant, weil ich natürlich alles offen erarbeiten und bereitstellen möchte.

Ich hätte da ein Angebot…

Falls ihr mit Daten hantiert und vielleicht gerade nicht die Zeit oder Kenntnisse habt, mit denen weiter zu arbeiten, hätte ich ein Angebot für euch. Ich könnte euch kostenlose Arbeitskraft dafür schenken. Bedingung wäre halt, dass ich neben meinem Bericht und meinem Quelltext auch die Daten offen zur Verfügung stellen dürfte. Das ermöglicht es anderen, meine Ergebnisse bei Bedarf nachzuvollziehen und zu überprüfen. Schließt diverse Dinge vermutlich aus, aber das ist dann halt so.

Falls ihr mehr dazu wissen möchtet oder eine Idee habt, hinterlasst doch einfach einen Kommentar oder meldet euch direkt bei mir. Lasst mich aber nicht zu lange warten. Ich möchte bald loslegen 😀