How to create word frequency lists in Python

A few weeks ago I introduced my students to the notion of dictionaries in python. The obvious way of teaching them, especially in the context of my module, is to use dictionaries to create word frequency lists. In order to make the students understand better why dictionaries are useful, we discussed other ways to produce frequency lists which use only lists. This prompted me to try to think as many ways as possible to produce frequency lists. I also wanted to see how feasible is to use these methods.

(more…)

Python programming for linguists: Introduction

This is a very much delayed series of posts related the yearly module I give on Python programming for Natural Language Processing. The purpose of this module is to teach students how to use Python for processing corpora and for other Natural Language Processing (NLP) related tasks. The background of students is different from year to year, but in general students come with non-computer science related backgrounds. This makes the module a bit challenging because in about 12 weeks, I need to bring these students from zero to an intermediate level.

(more…)

Varying Vagrant Vagrants, theme development and Dropbox

When my university decided to discontinue the support for personal webpages (i.e. literally pull the plug from the server hosting them), I was left with a dilemma. I had a pretty static HTML page that was hosted there and a rather standard (and largely abandoned) WordPress installation. Because I liked the structure of my HTML page, I decided to create a theme based on it and restart using my WordPress blog. What you read now, is the result of this conversion. Depending on when you read this post, there may still be some rough patches. In this post, I will show how you can develop a theme for WordPress using Varying Vagrant Vagrants and synchornise it using Dropbox.

(more…)

Word embeddings for aggression identification

The First Shared task on Aggression Identification was organised in conjunction with the First Workshop on Trolling, Aggression and Cyberbullying. The idea of the shared task was fairly simple. Classify a text in one of the following three categories: Overtly Aggressive (OAG), Covertly Aggressive (CAG) and Non-aggressive (NAG). This means that the task is essentially a standard text categorisation task and an approach based on bag-of-words is a good baseline to start with (neither me, nor the task organisers provided a baseline based on bag-of-words, so I don’t know what is the accuracy of the method).

(more…)

How to add definition lists to WordPress

The other day I wanted to format the text in a post using a definition list-like structure. Basically I wanted something like this:

May 2018Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ac quam venenatis, finibus nunc ac, congue nisi. Aliquam erat volutpat. Ut auctor neque a sodales fermentum.

June 2018Proin nisl mauris, tempus vitae venenatis vel, maximus vel leo. Etiam aliquam semper orci eu bibendum.

(more…)

What happens if you set the position of an invisible div

The other day I wanted to allow users of the metadiscourse annotator to quickly locate in text the marker they tag. This is particularly important if the text contains many markers. When the user presses a button I wanted the following effect:

(more…)

Ajax calls stopped working in my Symfony 2.8 application

Update: One day after I wrote this post, version 2.8.36 was released to fix this problem. It seem that other versions of Symfony were also affected. If you are interested in this problem, read on. If you are affected by it, you should upgrade, not use the fix from here.

Last night I implemented a few improvements in the Metadiscourse annotator which I am developing in my spare time. (I rewrote several functions that cut the running time of two actions from minutes to seconds … but that’s for a different post, maybe …). I tested the new code on my development computer and everything seemed perfect, so I deployed the new version. Just before sending an email to the people who use this program, I noticed that a particular functionality that relied on AJAX requests no longer worked. This was completely unrelated to the changes I made. Initially, I thought it is because I restricted the HTTP method to GET, whilst the request was done using POST. I fixed that, but it was still not working. After spending a bit of time, I realised that none of the AJAX requests worked anymore. This was at 1am, how else 🙂

(more…)

Dependencies not installable in SensioLabsInsight

I analyse my Symfony applications using SensioLabsInsight. The reports I receive are not always useful, but many point to various problems that should be considered. SensioLabInsight integrates with GitHub so you can get an analysis with each commit without doing anything. That’s definitely a nice feature. One of the errors I had from the beginning was a critical error “Dependencies not installable”. The problem is caused by a “Connection refused” error that had not much to do with my code. (more…)

Problems running NetBeans in Fedora

I am not quite sure when the problem began, but at some point I noticed that the tabs do not look good when I run Netbeans in Fedora. and they look like in this screenshot.

(more…)