CS378 Natural Language Processing semantics