在Spacy中使用自定义标记器标记不带空格的字符串

2024-10-01 00:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想标记一些称为SMILES的化学表达式,例如[c]1ccc(C(=O)Nc2ccc(Br)cc2)cc1[N+](=O)[O-].C[NH]。字符串中没有空格,在标记化之后,我们应该得到[c], 1, c, c, c, (, C, (, =, O, ), N, c, 2, c, c, c, (, Br, ), c, c, 2, ), c, c, 1, [N+], (, =, O, ), [O-], ., C, [NH],这意味着一些特殊的标记具有多个字符,例如[c]Br[N+],并且它们不应该被拆分。除了这些令牌之外,其他令牌只有一个字符,例如c(N。我如何使用来自Spacy的标记器实现这一点?如果这里不需要spacy,并且只有一段python可以做到这一点,那么它也是可以接受的。任何帮助都将不胜感激


Tags: 字符串标记brspacy表达式字符空格smiles
1条回答
网友
1楼 · 发布于 2024-10-01 00:20:56

我认为这方面的正则表达式非常简单,所以

s = "[c]1ccc(C(=O)Nc2ccc(Br)cc2)cc1[N+](=O)[O-].C[NH]"
tokens = re.findall("\[.+?]|.",s)

我想这是你想要的

相关问题 更多 >