About Me

Alistair Fisher

I'm a 4th year student at the University of Cambridge, studying Part III of the Computer Science Tripos (equivalent to a masters). This year I am focusing on natural language processing, with the hope of moving on to a career in commerical research in that field in Summer 2017.

My Skills

During my time in Cambridge, I've received a broad education in natural language processing, taking courses in linguistics, parsing of natural language, machine learning and other facets of artificial intelligence, and discourse processing. I have reinforced this teaching with practical projects, implementing stochastic part of speech tagging, topic segmentation and anaphora resolution. I tend to favour the Java language in my recent work, primarily for ease of use, but have previously implemented sizable projects in OCaml and C++, and have some experience with Python, C and Clojure.

My Projects

Stochastic Part of Speech Tagging

My current personal project, I am implementing stochastic part of speech tagging in Java. This aims to assign the most likely sequence of CLAWS5 tags to an input phrase, using probabilities estimated from frequencies in a corpus, currently the BNC-Baby. I have implemented XML parsing of the corpus and use the Viterbi algorithm to calculate the most likely tag sequence. The next steps are implementing evaluation and a visualisation of the result.

Orochi

Orochi was my 3rd year undergraduate project. It was a compiler optimisation aimed to increase software performance on multicore systems by automatically inserting parallelism at function calls. The system was implemented as a pass for the LLVM compiler framework, with software transactional memory used to manage memory side effects and ensure the expected sequential behaviour occured despite out of order execution. Orochi provided performance benefits of up to 3.5X on a 4 core machine and the dissertation describing it received a high first class grade. It can be read here.

Tweet Puller

I've implemented a slightly reduced version of Twitter's advanced search page in Java, constructing the GUI using the JavaFX library and retrieving results using the Twitter API, assembling requests by hand and making requests with HTTP. This personal project was intended to serve as teaching experience with web APIs, and I hope to use it to gather data for use in NLP experiments in the future.

OCaml DHCP

During the summer of 2015, I wrote a DHCP server in OCaml, for use with the Mirage platform. I was working within the OCaml Labs research team at the University of Cambridge, and utilised several research projects in the implementation: Mirage itself for networking and the Irmin distributed database system to handle the mutable state of the server, e.g. in use leases. Package demultiplexing was handled in a purely functional manner, and the functional paradigm lead to an elegant solution to this problem.