使用 Spacy 中的自定义分词器对不带空格的字符串进行分词
Tokenize a String without spaces using a custom tokenizer in Spacy
我想标记化一些名为 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一小段就可以做到,那也是可以接受的。任何帮助将不胜感激!
我认为正则表达式很简单所以
s = "[c]1ccc(C(=O)Nc2ccc(Br)cc2)cc1[N+](=O)[O-].C[NH]"
tokens = re.findall("\[.+?]|.",s)
我猜是你想要的
我想标记化一些名为 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一小段就可以做到,那也是可以接受的。任何帮助将不胜感激!
我认为正则表达式很简单所以
s = "[c]1ccc(C(=O)Nc2ccc(Br)cc2)cc1[N+](=O)[O-].C[NH]"
tokens = re.findall("\[.+?]|.",s)
我猜是你想要的