1. A method of inserting diacritics into an input language sample, the method comprising: generating, with at least one processor, a set of diacritics for at least one grapheme in the input language sample; assigning a probability to each diacritic and/or diacritic combination in the set of diacritics, wherein each probability is determined based, at least in part, on a diacritization model that jointly models a weighted sum of a first plurality of information source types associated with the input language sample, wherein at least two of the first plurality of information source types are selected from the group consisting of lexical analysis, syntactic analysis, semantic analysis, and morphological analysis; building a Diacritization Parse Tree (DPT) based on the input language sample; generating a diacritic lattice from the DPT, wherein the diacritic lattice is generated for graphemes in the input language sample to determine a best diacritic representation for the graphemes of the input language sample based on a best match with the diacritization model; associating at least one diacritic from the corresponding set of diacritics with the at least one grapheme in the input language sample based, at least in part, on the probability assigned to the at least one diacritic, wherein the associating comprises searching the diacritic lattice to determine a best diacritic and/or combination of diacritics for each grapheme in the input language sample; and outputting a diacritically restored representation of the input language sample, wherein the diacritically restored representation includes the associated at least one diacritic for the at least one grapheme in the input language sample.