Computational Analysis of Natural Languages

Natural Language Processing (NLP) is a field in computer science and linguistics. It involves programming computers to process and analyze large amounts of natural language data, with the goal of enabling computers to understand, interpret, and respond to human language in a valuable way. NLP includes a range of tasks like sentiment analysis, language translation, speech recognition, and text summarization. It is used in various applications like virtual assistants, language translation services, and text analytics tools.


In the Computational Analysis of Natural Languages course I gained a deep understanding of Natural Language Processing. The course began with an introduction to Python, which is essential for text processing in NLP, followed by a deep dive into N-gram language models. The N-gram models are fundamental to understanding linguistic patterns and helped me to understand how probabilities can predict word sequences in language processing.


The progression to text classification with Naïve Bayes was a significant leap, where I learned to categorize text based on probabilistic models. This part of the course was crucial in understanding how sentiment analysis works, a key aspect of modern NLP applications. The inclusion of logistic regression and vector semantics further expanded my knowledge, introducing me to more sophisticated methods of analyzing textual data.


Neural networks and neural language models were other critical areas covered. Here, I learned about the architecture of neural networks and their application in language modeling. This knowledge was vital for understanding advanced topics like machine translation and chatbots, which we explored in depth. The course's hands-on approach, particularly through the homework assignments, allowed me to experiment with these concepts in practical scenarios.


For the final project, my group and I recreated a complex NLP model. This project demanded an application of all the skills and knowledge we had accumulated, from Python programming to machine learning techniques. Completing the project was a challenging yet rewarding experience. 


After our project was complete, the class gathered to discuss ethical considerations in NLP. The discussion was crucial for understanding the rapidly evolving landscape of NLP and its impact on technology and society. By the end of the course, I had gained a great understanding of NLP. The skills I developed are not just academically valuable but also highly applicable in the real world, where language and technology constantly meet.

For this course's group project, my team chose to reproduce the work titled "Using Commonsense Knowledge to Answer Why-Questions" by authors Yash Kumar Lal, Niket Tandon, Tanvi Aggarwal, Horace Liu, Nathanael Chambers, Raymond Mooney, and Niranjan Balasubramanian. During the project, we faced some challenges, but successfully achieved our goals by adjusting our scope.

nlpproject.pdf