I'm Esther, a Computational Linguist with a B.A. from Ruhr-Universität Bochum, Germany. Here's a list of things I've made.
Presentations and Teaching
- In July 2016, I organized my own Unconference about bots, called "Let's talk about bots!" We talked about bots, art, trust, intelligence, responsibility and language. I wrote a blog post with a protocol of the day (German). We decided to use the hashtag #botsruhr for further online discussion - I hope we can establish a little German-language bot community around that.
- On June 23, 2016, I gave a talk at WebWorker Ruhr about computational linguistics and bots, for an audience unfamiliar with but interested in the basics of the field of computational linguistics. My slides are here (German).
- On May 10, 2016, I gave a 30-minute talk at the OpenTechSchool Meetup in Dortmund, titled "What's wrong with bots?". I gave an introduction to bot ethics and presented different points of view that you can take when talking about bots. I really enjoyed that event and the discussions with the other participants afterwards! My slides contain a lot of interesting links about each topic I talked about.
- I gave a talk at Bot Summit 2016 about bots in different languages and cultures. The slides for my talk are here, and I also posted a blog post version of the talk here.
- In March 2016, I gave a five-day seminar about Twitterbots and natural language generation at Heinrich-Heine-Universität Düsseldorf. We talked about text generation, how generated texts feel to human readers, and about twitter bot ethics. Participants developed and presented their own bots.
- I co-taught a beginner's programming class at Heinrich-Heine-Universität Düsseldorf: Python für Linguisten (Summer Semester 2015).
- I gave a one-day Twitterbot workshop at Heinrich-Heine-Universität Düsseldorf in the summer of 2015. I made a GitHub repo with a howto (German) and an example bot for that occasion.
- At TaCoS25 I moderated a discussion session about programming classes for computational linguists. I made a set of slides for that session, and I wrote a blog post (German) about the results of our discussion.
- At StuTS56 I gave a talk titled "Computerlinguistische Gelegenheitsprogrammierung". You can view my slides here.
- At PyUnconf 2015 I gave a talk titled "Why Twitterbot?" You can view my slides here.
Bots using no or no specific language
- My first physical bot, Book On Balcony, regularly posts pictures of a book that's lying on my balcony, almost completely exposed to the weather. The bot has a twitter feed and a flickr feed. I wrote an article about it on Medium (English).
- @me_irl_bot was the first media-posting bot I made. It pulls random gifs from Giphy and pretends the gifs all describe the bot itself. It feels to me like the bot has a very fascinating personality.
- @regexicon takes a random group of words from an English word list and generates a regular expression that will match exactly those words, and nothing else. One thing I like about this one is how it sometimes just shows different word forms of one lexeme, and other times it combines words that have nothing in common except a couple of characters.
- @FrenchVocabBot tweets vocabulary questions and tells anyone who replies whether their answer is correct. I shared the code on GitHub and also reused it for @ArabischBot (see below).
- @Deutsch_Falsch is an idea I had when thinking about German bots for people who don't speak German. There's a sort of meme that German has words for absurdly complex situations or emotions, and I made this bot to illustrate that meme. It invents fake German words with corresponding random definitions. The definitions are retrieved from Wordnik, the German-looking words are generated from a trigram model I trained on a corpus of actual German words. I currently use compound nouns as well as single-morpheme nouns for the trigram model, which leads to some unusual consonant clusters in the fake words. I thought about leaving out the compound words, but I like the unpronouncable and ridiculously long words that result from using the compounds. You can view the code on GitHub.
- @OMG_Wikipedia opens two random English Wikipedia pages and connects their first sentences. That way, it pretends that lots and lots of things, places or people are actually types of moths. The code is available on GitHub. After a while, I decided to also make a German version, @Wiki_Irrtum (see also in the section for German-language Twitterbots).
- @NoSoundex selects a random English word from a word list, calculates its Soundex value and looks for other words in the list with the same Soundex value. I made it to show how very very unreliable Soundex is.
- @AdNauseosity uses a word list, looks for adjectives ending in -ous and tweets sentences that contain nominalizations of those adjectives.
- @AeltesterMensch is a bot that replicates a joke format my sister likes to use in all sorts of contexts.
- @BILD_Komposita is a bot that works on current data. It retrieves the strange compound words contained in BILD headlines from their RSS feed and remixes them to form new, even stranger compound words. You can view the code on GitHub.
- @Wiki_Irrtum is the German version of @OMG_Wikipedia. The only thing I changed was translating the connecting verb (is, are, was, were) to German (ist, sind, war, waren). The tone of the German output feels very different to me.
- @Best_of_HP generates fake German Harry Potter book titles. It uses a corpus of German nouns in the genitive case and combines them randomly. I also made a website version. You can view the code for the bot on GitHub.
- @Kulturkomposita generates German compound nouns ending in -kultur, using a list of German verbs as its source.
- @GredUndForge is a private account that emulates my family. It will reply to any mentions by its followers with a quote from someone in my family, and it lets its followers add quotes by tweeting them at it. Here's a short description of the bot (German).
- @ArabischBot is a tool I made to help me with my Arabic vocabulary for the A2 course I'm taking. It tweets vocabulary questions and tells people who reply to the questions whether their reply is correct.
- @VergleichBot compares two random German nouns using a random German adjective. You can view the code in the GitHub repo.
- @ParsExToto (currently inactive) finds German words that contain other words and tweets its observations. I made this with @noeddl for the Hackathon at the Computational Linguistics Unconference in Stuttgart in February 2015. You can view the code in the GitHub repo.
- @Best_of_3F (currently inactive) generates fake titles of "Drei Fragezeichen" episodes, using two sources: The Spiegel bestseller list and a list of classic books. You can view the code on GitHub.
Non-Twitterbot creative text manipulation
- Computer-aided, human-curated Shakespeare sonnet remixes: Part 1, Part 2, Part 3. I used the CMUdict to determine which lines from all of Shakespeare's sonnets have the same end-rhyme, and rearranged them by hand to make new poems.
- Typo Generation: I made a tool that takes an input text of any length and returns the same text with a number of typos added. You can view the source code and example output in the GitHub repo.
- For NaNoGenMo 2015, I created a text that contains every German syllable. You can view the source code in the GitHub repo, and the output of my program here.
- As of 2016, I have been a teaching assistant for 9 separate undergraduate classes, with a focus on introductions to logic and programming languages.
- In 2015, I spent 9 weeks doing an internship at Kauz Semantic Technologies in Düsseldorf, where I helped teach a chatbot to understand written German. My work included creating dictionary entries for specific vocabulary items and extending a Java project to get rid of errors in the parsing of the input sentences.
- I am currently a research assistant in Laura Kallmeyer's project B08 in the CRC 991 at Düsseldorf University. The project deals with unsupervised frame induction for events described by verbs. I work on a task to improve the Dependency Parser that provides the analyses that are used for the frame induction process.