Computational Formal Semantics (Spring 2013)

Tue 19 March 2013 by Adrian Brasoveanu

LaLoCo will meet regularly during the spring 2013 quarter, basically every Tuesday 11 am-12 pm in the Meeting & Analysis room (Stevenson 217).

The main topic will be a tutorial on how to implement formal semantics theories in functional languages, Haskell in particular (but OCaml-based implementations, for example, should be fairly easy to put together based on the Haskell ones). As a general intro to Haskell, we will use this book: Learn You a Haskell for Great Good!: A Beginner’s Guide, Miran Lipovača. For the computational formal semantics part, we will use this book: Computational Semantics with Functional Programming, Jan van Eijck & Christina Unger.

Robin Cooper’s review of the “Computational Semantics with Functional Programming” book provides reasons for choosing functional programming languages rather than Prolog or Python (the 2 most salient alternatives) to implement formal semantics theories.

But why implement formal semantics theories in the first place? The “Computational Semantics with Functional Programming” book offers various reasons. A related and enlightening discussion can be found on the website of the following NYU course co-taught by Chris Barker and Jim Pryor: What Philosophers and Linguists Can Learn From Theoretical Computer Science But Didn’t Know To Ask.

But one of the most persuasive reasons for devoting time and energy to implementing formal semantics theories is that we will probably need to interface them with some form of plausible / probabilistic inference as soon as we start thinking seriously about their cognitive consequences, e.g., about the acquisition or processing of the logical representations proposed in formal semantics theories.

And understanding the theoretical import and empirical consequences of such probabilistic semantic theories is very difficult or straight-up impossible just using traditional pencil-and-paper methods. So implementing (non-probabilistic) formal semantics theories is a necessary first step towards this goal.

Among other things, Haskell and OCaml are good choices because they have both interactive interpreters that make learning easier and native-code compilers that can make more complex simulations run (much) faster.