Welcome to the LingHacks Resources page! Below is a growing collection of natural language processing/computational linguistics-related resources, primarily for students (though many may be applicable to non-students as well). Have a resource you think the community would find helpful? Let us know via this form!
Before (or while) jumping into NLP-related activities, it might be helpful to learn some introductory material. Below are some free resources that you can use to get up-to-speed on NLP.
Before learning computational linguistics, it would be beneficial to have a baseline level of familiarity with introductory computer science/programming. The maintainers of this resource page mostly use Python, so that's what this page will be centered around, but NLP resources in other programming languages do exist as well. We also include some references to Python software packages commonly used in NLP.
Math and Statistics
For a precise understanding of the quantitative workings of NLP systems, it helps to understand some [multivariable] calculus, linear algebra, probability, and statistics. It is possible to understand some basic algorithms with less mathematical background, but these areas of math and statistics become more important as NLP systems--particularly deep learning systems--become more complex. We recommend doing calculus (single-variable then multivariable), followed by linear algebra, followed by probability, followed by statistics (though high school AP-level statistics is helpful and can be done before or at the same time as single-variable calculus), but this is by no means a strict ordering requirement.
NLP can be considered a subfield of machine learning, so it's beneficial to have a general understanding of the machine learning field before diving into the specifics of applying machine learning to language.
Udacity's Introduction to Artificial Intelligence (you'll have to make a free account to access this link)
Understanding linguistics--the science of language--isn't strictly necessary to do many computational linguistics-related things, but we still think it's helpful to grasp some basic terminology and concepts and ground your study of NLP in linguistic principles.
Natural Language Processing
At last, some courses and reference sites specific to NLP!
Whether you're interested in pursuing a research career or just want to be familiar with some hot topics in NLP, here are some websites where you can read the latest NLP research:
The Association for Computational Linguistics Anthology (papers from most of the big NLP conferences and journals, including ACL, IJCNLP, TACL, and EMNLP)
ArXiv Computation and Language (pre-prints of NLP-related papers that may or may not have been peer-reviewed yet)
Papers With Code NLP Tasks (NLP papers accompanied by code, organized by computational task)
Connected Papers: a general paper search tool that helps you visually explore papers that are related to each other/to a certain topic
Caring About the World
NLP does not exist in a vacuum. Here are some resources that you can use to learn how/why that is and what you can do about it. Some of these resources extend to AI/tech in general as well.
Queer in AI's preprint on a case study of community-led participatory AI
Dev et al's paper on challenges in representation of non-binary people in language technologies
Hassan et al's paper on the intersectional harms of NLP toward disabled people
Herold et al's paper on disability biases in assistive AI technologies, grounded in psychological literature
Caliskan et al's paper on human-like biases in machine learning algorithms (source: Race After Technology by Professor Ruha Benjamin)
Data & Society Research Institute's Algorithmic Accountability Primer (source: Race After Technology by Professor Ruha Benjamin)
Allied Media Conference (source: Race After Technology and Anti-Racism Daily)
GramBank (grammatical information for 2400 languages, source: Graham Neubig)
You're probably here to ultimately add to your resumé. So, here's how you can do that.