Python 如何处理句子中的新行字符斯帕西纳

Python 如何处理句子中的新行字符斯帕西纳,python,spacy,Python,Spacy,我正在尝试训练spacy NER,我收集了我所有的句子,但许多句子都嵌入了新行字符“\n”,因此当我将训练数据输入jupyter笔记本时,它失败了,出现了一个错误 我该怎么处理这些 数据如下所示( Jupyter 如果问题出在jupyter中,则需要在像这样的几行上的字符串周围设置3x“ string=""" This string has many lines that continues here and here """ 在你的情况下,那就

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

我该怎么处理这些

数据如下所示(


Jupyter

如果问题出在jupyter中,则需要在像这样的几行上的字符串周围设置3x

string=""" This string has many lines
            that continues here
            and here """
在你的情况下,那就是

TRAIN_DATA = [('''Who is 
      Shaka Khan?''', {'entities': [(7, 17, 'PERSON')]})
如果我错了,请纠正我,但看起来您已复制粘贴了数据,这就是为什么会发生这种情况。您只需删除换行即可在Jupyter中解决此问题。或者,我建议您将数据导入Jupyter,而不使用复制粘贴

删除换行符

如果您想删除字符串中的换行符,有很多选项

import re
string = re.sub('\n', '', string)
解释

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

    输出: '此字符串有许多行在此处和此处继续'

  • 我猜您可能正在使用pandas,因此要在专栏中执行此操作,您可以执行以下操作:

    df[col_name]=df[col_name].str.replace(r'^\n','')
    

    Jupyter

    如果问题出在jupyter中,则需要在像这样的几行上的字符串周围设置3x

    string=""" This string has many lines
                that continues here
                and here """
    
    在你的情况下,那就是

    TRAIN_DATA = [('''Who is 
          Shaka Khan?''', {'entities': [(7, 17, 'PERSON')]})
    
    如果我错了,请纠正我,但看起来您已复制粘贴了数据,这就是为什么会发生这种情况。您只需删除换行即可在Jupyter中解决此问题。或者,我建议您将数据导入Jupyter,而不使用复制粘贴

    删除换行符

    如果您想删除字符串中的换行符,有很多选项

    import re
    string = re.sub('\n', '', string)
    
    解释

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

    输出: '此字符串有许多行在此处和此处继续'

  • 我猜您可能正在使用pandas,因此要在专栏中执行此操作,您可以执行以下操作:

    df[col_name]=df[col_name].str.replace(r'^\n','')
    

    原始文本包含换行符。我可以很容易地删除它们,但如果我这样做,我将不得不用另一个长度相等的字符(可能是空格)替换它,以保持实体的开始和结束索引。删除原始换行符会对生成的模型产生任何影响吗?我还生成了train data从c#程序中,如果我这样做的话,我可能不得不稍微调整它以输出三重引号。它认为这取决于你试图实现的目标。如果你试图分析句子,我建议用空格替换换行符。除非换行符有意义,否则用一个可以表示b的句尾字符替换它当你标记句子时使用e。我猜删除换行符不会对生成的模型产生影响。但是,你可以很容易地在之后测试它。原始文本包含换行符。我可以很容易地删除它们,但如果我这样做,我将不得不用另一个等效l的字符替换它长度可能是空白,以保持实体的开始和结束索引。删除原始换行符会对生成的模型产生任何影响吗?此外,我从c#程序生成了列车数据,如果我走这条路线,我可能需要调整它以输出三重引号。它认为这取决于您试图实现的目标。如果如果您试图分析句子,我建议将换行符替换为空白。除非换行符具有含义,否则请将其替换为可以在标记句子时使用的句尾字符。我猜删除换行符不会对生成的模型产生影响。但是,之后您可以很容易地对其进行测试。