Research : Overview

If you are just interested in downloading papers and code, you want the next section.

Also this section isn't done yet.

Abstract : Clustering

Specifically, the general theme of all my work: determining that two corpora are different and explaining why in a way that humans can understand. This uses various techniques, including machine learning, which is an important component of Old AI. So I'm really doing Artificial Intelligence here, it's just not popular to call it that any more.

Dialectometry : Clustering

Specifically, what is dialectometry? How is it different from sociolinguistics? What have I done with dialectometry?

Dialectometry : Cochlear Implants

Specifically, why should dialectometry work for cochlear implant speech? Does it work? How is it different from dialectometry data? What are the practical applications?

Phonology : Optimality Theory

Specifically, what is Optimality Theory? How does it explain the choices we face when pronouncing a word? (Like 'months' or 'clothes'. But also 'Caribbean'.) How is the theory structured? What are its learnability and computability characteristics? What have I done with OT algorithms?

Research : Papers and Code

Dialectometry (Syntax)

Dialectometry (Phonology)

Optimality Theory

Error Correction in Parsers

My undergraduate senior project was the development of an Earley parser and an LR parser that tried to give useful feedback. As research, I would not call it too impressive. But there was a lot of code involved, some of which might be interesting. On the other hand, it was written while I was learning functional programming, so it is hairy in the places where I interspersed recursion and state changes. Oh, well. 5-year-old code. I've improved since then.

Other Projects : Code

Utilities

Utility functions to bring other languages up to Haskell's level.

OTableau

Interactively build OT tableaux using an ugly Tk interface. Also some OT learning algorithms.

Explanatory Code

These are short programs I wrote for the blog. Or just for fun.

  • compile.scm : compiles an imperative language to assembler for a virtual machine that supports (1) garbage collection or (2) an unlimited memory space.
  • kmeans.pyw : Use k-means to cluster users by movie preferences. As I recall, it treats users as vectors of scores for each movie.
  • User.java : The same k-means program, but in Java. It's a lot lower level, so it should be faster. I haven't tested it.
  • sudoku.scm : Solve sudoku puzzles that don't require backtracking.
  • typed.pyw : Decorators and various other type checking things for Python, in case you want to write down your types or ask the runtime what the complete type of a list is. This is not, I believe, the newest version.
  • cons.pyw : An OO implementation of cons, with all the lispy names like car, cdr, reverse, append, etc. I don't use it, but it's cute. Also comes with a decent number of tests.
  • subst_cipher.pyw : An unfinished attempt to solve substitution ciphers. I may have switched over to Haskell, or maybe I just dropped it.

Thingy32

An ancient hex editor that displays and edits data with your own custom character encoding.

sandersn.com

Search the Blog

Blog Feeds

What is RSS?