So how should we tokenize such texts? One obvious way is a character-level tokenization, i.e. treating every character as a token. However, it might be counterintuitive to break up multiple-character entities having inseparable encodings (e.g. Br, Sr). To develop a more coherent strategy, we will try following at least basic SMILES language rules. First, our algorithm will match both single-and multi-character symbols by comparison with the set of available atomic and non-atomic symbols. Note that numbers greater than 9 follow % character, so %10 will become a separate token. Second, as atoms in aromatic rings are specified by lower case symbols, they will be treated as separate tokens (e.g. n, [se]). Finally, we will provide an option to capture special aggregate symbols such as hydrogen specifications (e.