Publications

to browse

Programming Techniques in Computational Linguistics

Original title (German): Programmiertechniken der Computerlinguistik

A lecture series on programming techniques in computational linguistics, taught from winter semester 1997/98 through summer semester 1999. The winter part introduces Prolog and basic parsing techniques; the summer part goes deeper into chart parsing, efficient Prolog techniques, and formal language hierarchies. It comes with six downloadable Prolog programs as starting points for exercises.

University of Zurich, Department of Informatics, Computational Linguistics — winter semester 1997/98 through summer semester 1999.

I designed this course from scratch. Prolog wouldn’t necessarily have been my first choice for it — I’m a systems programmer at heart — but the department insisted I teach exactly this language. It looks fairly odd from today’s vantage point, but back in the 1990s, Prolog, together with Lisp, was the language of choice in artificial intelligence.

Winter Semester

  1. Introduction
  2. Structures
  3. Control Flow
  4. Recursion
  5. Tracing
  6. Lists
  7. Arithmetic
  8. Term Predicates
  9. Occurs Check
  10. Introduction to Parsing
  11. Review
  12. Input/Output
  13. Parsing Review
  14. Definite Clause Grammars
  15. Shift-Reduce Parsing
  16. Control Constructs
  17. Sample Solutions for All Exercises

Summer Semester

  1. Introduction
  2. Tokenizer
  3. Parsing Review
  4. Morphology
  5. Selection Restrictions
  6. Chart Parsing
  7. Bottom-Up Chart Parsing
  8. Earley Parsing
  9. Edge Subsumption
  10. Efficient Prolog Techniques
  11. Faster Parsing
  12. Finite Automata
  13. Language Hierarchy; Non-Context-Freeness of Zurich German
  14. Feature Structures
  15. Keyword Recognition

Prolog Programs to Download

Tokenizer
A simple Prolog tokenizer.
Definite Clause Grammar
A very simple definite clause grammar, meant as a starting point for an exercise.
Shift-Reduce Parser
A simple shift-reduce parser in Prolog.
Bottom-Up Chart Parser
A simple bottom-up chart parser in Prolog.
Earley Parser
A simple chart parser in Prolog using the Earley algorithm. Note: two bugs are left as exercises to fix!
Keyword Recognition
A Prolog program that recognizes certain keywords in natural-language (English) input and issues corresponding “database” queries. Requires the Tokenizer.