Learning Deep Representations for Natural Language Processing Applications