code: def pcfgtokensofw(self, word):
          
          tok = helper.tokens(word)
  
          sym = ['__{0}{1}__'.format(helper.whatchar(w), len(w))
                 for w in tok]
          S = ['__S__' + ''.join(sym).replace('_', '') + '__']
          return S + sym + tok
docs: This splits the word into chunks similar to as described in Weir
          et al Oakland'14 paper.
          E.g.,
          >> ngrampw.pcfgtokensofw('password@123')
          ['password', '@', '123', '__L8__', '__Y1__', '__D3__']