保留所有空格作为标记

ama*_*net 2 python spacy

我有一个问题,即是否有办法在 spaCy 标记化中将单个空格作为独立标记保留。

例如,如果我跑:

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp("This is easy.")
toks = [w.text for w in doc]
toks
Run Code Online (Sandbox Code Playgroud)

结果是

['This', 'is', 'easy', '.']
Run Code Online (Sandbox Code Playgroud)

相反,我想要类似的东西

['This', ' ', 'is', ' ', 'easy', '.']
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点?

Ine*_*ani 7

spaCy 将令牌的空白作为whitespace_属性公开。所以如果你只需要一个字符串列表,你可以这样做:

token_texts = []
for token in doc:
   token_texts.append(token.text)
   if token.whitespace_:  # filter out empty strings
       token_texts.append(token.whitespace_)
Run Code Online (Sandbox Code Playgroud)

如果您想Doc从这些令牌中创建一个实际对象,那也是可能的。Doc可以使用关键字参数(要添加为标记的字符串列表)构造对象words。但是,我不确定这会有多大用处。