如何处理句子中的换行符?- 斯帕西 NER

ero*_*las 2 python spacy

我正在尝试训练 spacy NER,并且收集了所有句子,但许多句子都嵌入了换行符 '\n',因此当我将训练数据输入我的 jupyter 笔记本时,它失败并出现错误

                 TRAIN_DATA = [('Who is 
                                       ^
SyntaxError: EOL when scanning string literal
Run Code Online (Sandbox Code Playgroud)

我应该用这些做什么?

数据看起来像这样(

TRAIN_DATA = [('Who is 
Shaka Khan?', {'entities': [(7, 17, 'PERSON')]}),
Run Code Online (Sandbox Code Playgroud)

Phi*_*lip 5

朱皮特

如果问题出在 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)

解释

  1. 行:导入正则表达式模块
  2. Line:使用“sub”方法,将字符串中的第一个输入“\n”替换为“”。

    out: '这个字符串有很多行在这里和这里继续'

我猜测您可能正在使用 pandas,因此要在列上执行此操作,您可以执行以下操作:

df[col_name]=df[col_name].str.replace(r'^\n','')
Run Code Online (Sandbox Code Playgroud)