Automating the Analysis of Parsing Algorithms (and other Dynamic Programs)
By: Tim Vieira, Ryan Cotterell, Jason Eisner
Much algorithmic research in NLP aims to efficiently manipulate rich formal structures. An algorithm designer typically seeks to provide guarantees about their proposed algorithm -- for example, that its running time or space complexity is upper-bounded as a certain function of its input size. They may also wish to determine the necessary properties of the quantities derived by the algorithm to synthesize efficient data structures and verify type errors. In this paper, we develop a system for helping programmers to perform these types of analyses. We apply our system to a number of NLP algorithms and find that it successfully infers types, dead and redundant code, and parametric runtime and space complexity bounds.
Similar Papers
A Data-driven Analysis of Code Optimizations
Programming Languages
Makes computer programs run faster automatically.
Discovering Algorithms with Computational Language Processing
Artificial Intelligence
Finds better computer instructions to solve hard problems.
A Fundamental Algorithm for Dependency Parsing (With Corrections)
Computation and Language
Helps computers understand sentences like people do.