Symbolic natural language processing