Speech and Language Processing, a review of natural language processing