Natural Language Processing: Challenges and Applications