1

我正在研究具有称为 SMILES 的表示的分子数据。一个示例分子字符串看起来像Cc1ccccc1N1C(=O)NC(=O)C(=Cc2cc(Br)c(N3CCOCC3)o2)C1=O

现在,我想要一个Tokenizer可以与 Huggingface 转换器 API 一起使用的自定义。我也不想使用现有的标记器模型等BPE。我希望通过正则表达式解析 SMILES 字符串以将单个字符作为标记,如下所示:

import re

SMI_REGEX_PATTERN = r"""(\[[^\]]+]|Br?|Cl?|N|O|S|P|F|I|b|c|n|o|s|p|\(|\)|\.|=|
#|-|\+|\\|\/|:|~|@|\?|>>?|\*|\$|\%[0-9]{2}|[0-9])"""

regex = re.compile(SMI_REGEX_PATTERN)

molecule = 'Cc1ccccc1N1C(=O)NC(=O)C(=Cc2cc(Br)c(N3CCOCC3)o2)C1=O'
tokens = regex.findall(molecule)

执行上述操作相当简单,但我需要一个可以与BERTHuggingface API 一起使用的标记器。另外,我不想使用小写转换,但仍然使用 BERT。

4

0 回答 0