This document provides an introduction to machine learning techniques for natural language processing. It discusses how machines can be trained to predict labels, reason, understand language, and generate text. Some challenges of language like ambiguity and subjectivity are also covered. Classical NLP techniques like using term frequencies and probabilistic models are compared to modern deep learning approaches that use word embeddings to represent text, recurrent neural networks to encode sentences, and attention mechanisms. Applications mentioned include text summarization, classification of toxic language, and analyzing language over time.