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

时间:2017-12-05 08:46:08

标签: python nlp removing-whitespace spacy

我正在为NER模型预处理一些文字我的训练,而且我遇到了很多这个角色。 strip()不会删除此字符:

>>> 'Hello world!\u200b'.strip()
'Hello world!\u200b'

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

>>> re.sub('\s+', ' ', "hello\u200bworld!")
'hello\u200bworld!'

和spaCy的标记生成器不会在其上分割标记:

>>> [t.text for t in nlp("hello\u200bworld!")]
['hello\u200bworld', '!']

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

感谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在NLP之前简单地执行字符串替换怎么样?

'Hello world!\u200b'.replace('\u200b', ' ').strip()