Schlagwort-Archive: Programmieren

Vorher, nachher, H5P

Der H5P Content Type Hub steht in den Startlöchern, und selbst einen „Inhaltstyp“ zu erstellen, ist gar nicht so kompliziert. Dokumentation zum Einstieg gibt existiert, und auch ein Video. Ich habe mir den freien Quelltext von Juxtapose geschnappt, und mit ein wenig Drumherum von mir gibt es bereits ein funktionieren neuen Inhaltstyp für H5P. Ich werde noch Fehler ausmerzen, den Code noch aufräumen und die Benutzeroberfläche etwas anpassen, und dann erwartet euch so etwas hier …

Wer es gar nicht mehr erwarten kann, darf sich natürlich wie gewohnt auch bereits bei github bedienen

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!