我想在将字符串传递给令牌生成器之前对其进行预处理。
例如,在令牌生成器之前添加一个大写字母。
"apple" -> "APPLE" -> doc
换句话说,我想将此组件放在管道中的分词器的前面。
def capitalizer(text: str) -> str:
return text.upper()
答案 0 :(得分:1)
不可能在管道中的令牌生成器之前添加组件,因为令牌生成器作为初始组件具有特殊状态,该初始组件采用字符串并返回Doc。 (所有其他组件都使用文档并返回文档。)通常,我认为最好在spacy之外对文本进行预处理。
但是,您可以创建一个自定义令牌生成器来进行一些预处理,因为您所需要的只是一个接受字符串并返回Doc的组件。临时修改管道非常容易,但是要使修改完全集成到要保存和重新加载模型的情况下,可以将其保存到磁盘上则比较困难。这是一个无法保存到磁盘的最低版本:
import os
def makepython3():
"""This is a script to transform all the solutions into
Python 3 solutions."""
files = os.listdir('exercises')
exfolder = 'exercises'
ex3folder = 'exercisespy3'
if not os.path.exists(ex3folder):
os.mkdir(ex3folder)
for f in files:
os.system('cp {} {}'.format(exfolder+os.sep+f, ex3folder+os.sep+f))
if f.endswith('.py'):
os.system('"C:\Users\HP\AppData\Local\Programs\Python\Python37-32\Tools\scripts\2to3.py" -w -n --no-diffs {}'.format(ex3folder+os.sep+f))
print('All done!')
if __name__ == '__main__':
makepython3()