Functional programming is hard!
I recently got re-interested* in natural language processing, in conjunction with working on a taxonomy/ontology and reading about applications for taxonomies and ontologies.
I found a course with all materials on GitHub that looked pretty interesting: Applied Natural Language Processing, and thought I’d give the exercises a go in my free time.
But. But. From day one, the coursework emphasizes functional programming. And it’s like starting from square one!
Even capturing parameters from the command line stumped me. I felt like a total dope, until I went home and talked to my spouse, who, keep in mind, is getting a PhD in computational and applied math. “Ohhh…yeah, functional programming is really academically interesting but hard,” he says. Then he starts talking about lambda calculus and provable code, and I get a bit lost. “Wait…so what’s the advantage of functional programming for natural language processing?” I ask. “Good question; I don’t know.” So, the next day I spend time trying to answer that question, and I suppose I have a little bit of an answer–it’s good for cleanly defining mappings and therefore good for tree manipulation(?)
However, it felt like a bit much to learn functional programming and a little bit of linguistics and programming tasks in the NLP domain in my free time. So after a bit more sleuthing, I stumbled across Python’s Natural Language Toolkit (NLTK), and was bowled over by the resources–there’s an entire book online!
So I’ve temporarily abandoned Scala and I’m currently in the second chapter of the Python NLTK book. It hasn’t gotten hard yet and is still a ton of fun.
*Actually, I’ve been interested in NLP for a while, but when I checked out Coursera’s NLP class a couple years ago, I got discouraged–it seemed very mathy! Coming back to it now, I feel more confident in my technical skills in general, and I’ve started to incompletely connect the dots between NLP and less-mathy linguistics–this post in particular encouraged me by arguing that the math that computational linguists need to know is ‘not that hard’.
Comments