docs: def orthographic(token):
      """
      Extract orthographic features from a given token
      
      There are 11 kinds of orthographic features, take 'Windows10' as an example:
  
      1. shape: 'Aaaaaaa00'
      2. length: 9
      3. contains_a_letter: True
      4. contains_a_capital: True
      5. begins_with_capital: True
      6. all_capital: False
      7. contains_a_digit: True
      8. all_digit: False
      9. contains_a_punctuation: False
      10. consists_letters_n_digits: True
      11. consists_digits_n_punctuations: False
      """
  
      return OrderedDict([
                      ('shape', _shape(token)), 
                      ('length', len(token)), 
                      ('contains_a_letter', _contains_a_letter(token)), 
                      ('contains_a_capital', _contains_a_capital(token)),
                      ('begins_with_capital', _begins_with_capital(token)), 
                      ('all_capital', _all_capital(token)), 
                      ('contains_a_digit', _contains_a_digit(token)),
                      ('all_digit', _all_digit(token)),
                      ('contains_a_punctuation', _contains_a_punctuation(token)),
                      ('consists_letters_n_digits', _consists_letters_n_digits(token)),
                      ('consists_digits_n_punctuations', _consists_digits_n_punctuations(token)),
                     ])