Natural Language Processing (NLP) designs algorithms for accessing knowledge conveyed by unstructured, heterogeneous text (e.g. text mining, machine reading) and for language-mediated human-machine communication (e.g. chatbots). Building upon the very active community in this field, we aim at creating NLP algorithms that can process and produce language in its context, in all its modalities (spoken, written, and signed), take advantage of both linguistic and domain knowledge, draw inferences when extracting knowledge from language input, and explain themselves, in a robust, scalable way. NLP combines many challenges from data, knowledge, machine learning, and human interaction. The main difficulty is that NLP has to estimate a large number of parameters with limited prior knowledge and training data for many different languages and specialized domains. Such a situation results in strong data dependencies that impact experiment replicability.