Skip to main content
In this chapter, we will introduce the topic of processing with neural architectures language in general. This includes natural language, code etc. Python and almost all programming languages are formal. They define a strict set of rules called a grammar that the programmer must follow religiously. In addition formal languages also define semantics or meaning of the program via a set of rules. So the exit code 0 after the execution of a routine has the meaning of successful termination but a 1 the opposite. The English language on the other hand is “free wheeling” so to speak due to its ambiguity and size. Some examples are in order:
  • Ambiguity: “he met his maker”
  • Same context, different meaning:
    1. “The food in this restaurant was good, not bad at all”
    2. “The food in this restaurant was bad, not good at all.”
  • Different context alltogether:
    1. “The bank’s profits eroded soon after the 2008 crisis”
    2. “The river’s bank eroded after the 2008 floods”
To capture the fuzziness of language we need to define probabilistic models. In other words we will be speaking of a probability distribution over possible meanings of the input text.

NLP Pipelines

This paragraph is heavily borrowed from here. Key references: (Kim et al., 2015; Dauphin et al., 2016; Ling et al., 2017; Collobert et al., 2011)

References

  • Collobert, R., Weston, J., Bottou, L., Karlen, M., Kavukcuoglu, K., et al. (2011). Natural Language Processing (almost) from Scratch.
  • Dauphin, Y., Fan, A., Auli, M., Grangier, D. (2016). Language Modeling with Gated Convolutional Networks.
  • Kim, Y., Jernite, Y., Sontag, D., Rush, A. (2015). Character-Aware Neural Language Models.
  • Ling, W., Yogatama, D., Dyer, C., Blunsom, P. (2017). Program induction by rationale generation : Learning to solve and explain algebraic word problems.