我正在尝试训练 spacy NER,并且收集了所有句子,但许多句子都嵌入了换行符 '\n',因此当我将训练数据输入我的 jupyter 笔记本时,它失败并出现错误
Run Code Online (Sandbox Code Playgroud)TRAIN_DATA = [('Who is ^ SyntaxError: EOL when scanning string literal
我应该用这些做什么?
数据看起来像这样(
TRAIN_DATA = [('Who is
Shaka Khan?', {'entities': [(7, 17, 'PERSON')]}),
Run Code Online (Sandbox Code Playgroud)
朱皮特
如果问题出在 jupyter 中,您需要在位于几行的字符串周围有 3x ' ,如下所示
string=""" This string has many lines
that continues here
and here """
Run Code Online (Sandbox Code Playgroud)
在你的情况下,那就是
TRAIN_DATA = [('''Who is
Shaka Khan?''', {'entities': [(7, 17, 'PERSON')]})
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我,但看起来您已经复制粘贴了数据,这就是为什么会发生这种情况。您只需删除换行符即可解决 Jupyter 中的问题。或者,我建议您将数据导入 Jupyter,而不是使用复制粘贴。
删除换行符
如果你想删除字符串中的换行符,有很多选项。这是一个
import re
string = re.sub('\n', '', string)
Run Code Online (Sandbox Code Playgroud)
解释
Line:使用“sub”方法,将字符串中的第一个输入“\n”替换为“”。
out: '这个字符串有很多行在这里和这里继续'
我猜测您可能正在使用 pandas,因此要在列上执行此操作,您可以执行以下操作:
df[col_name]=df[col_name].str.replace(r'^\n','')
Run Code Online (Sandbox Code Playgroud)