在 NLP 任务的文本预处理中处理 \u200b(零宽度空间)字符

Gin*_*ino 7 python nlp removing-whitespace spacy

我正在为我正在训练的 NER 模型预处理一些文本,并且我经常遇到这个角色。这个字符不会被删除strip()

>>> 'Hello world!\u200b'.strip()
'Hello world!\u200b'
Run Code Online (Sandbox Code Playgroud)

它不被视为正则表达式的空格:

>>> re.sub('\s+', ' ', "hello\u200bworld!")
'hello\u200bworld!'
Run Code Online (Sandbox Code Playgroud)

并且 spaCy 的标记器不会在其上拆分标记:

>>> [t.text for t in nlp("hello\u200bworld!")]
['hello\u200bworld', '!']
Run Code Online (Sandbox Code Playgroud)

那么,我应该如何处理呢?我可以简单地替换它,但是我不想为这个角色做一个特例,而是替换所有具有相似特征的角色。

谢谢。

小智 5

正如您所提到的,\u200b (零宽度空格)\u200c (零宽度非连接符)等字符不被视为空格字符。因此,您不能使用可用于空格字符的技术来省略此类字符。您可能已经注意到,唯一的方法是将此类字符视为特殊情况。