【问题标题】:NER using spaCy & Transformers - different result when running inside and outside of a loopNER 使用 spaCy 和 Transformers - 在循环内部和外部运行时结果不同
【发布时间】:2021-11-26 06:07:23
【问题描述】:

我正在使用 NER (spacy & Transformer) 来查找和匿名化个人信息。我注意到直接给出输入行时得到的输出与从文件中读取输入行时得到的输出不同(参见下面的屏幕截图)。有人对如何解决这个问题有建议吗?

这是我的代码:

import pandas as pd
import csv
import spacy
from spacy import displacy
from transformers import pipeline
import re

!python -m spacy download en_core_web_trf
nlp = spacy.load('en_core_web_trf')

sent = nlp('Yesterday I went out with Andrew, johanna and Jonathan Sparow.')
displacy.render(sent, style = 'ent')

with open('Synth_dataset_raw.txt', 'r') as fd:
    reader = csv.reader(fd)
    for row in reader:
        sent = nlp(str(row))
        displacy.render(sent, style = 'ent')

【问题讨论】:

    标签: python spacy huggingface-transformers named-entity-recognition


    【解决方案1】:

    您正在使用 csv 模块读取文件,然后尝试将文件的每一行(也称为行)转换为带有 str(row) 的字符串。

    如果您的文件每行只有一个句子,那么您根本不需要 csv 模块。你可以这样做

    with open('Synth_dataset_raw.txt', 'r') as fd:
        for line in fd:
            # Remove the trailing newline
            line = line.rstrip()
            sent = nlp(line)
            displacy.render(sent, style = 'ent')
    

    如果您实际上有一个 csv(可能有多个列和一个标题),您可以这样做

    open('Synth_dataset_raw.txt', 'r') as fd:
        reader = csv.reader(fd)
        header = next(reader)
        text_column_index = 0
        for row in reader:
            sent = nlp(row[text_column_index])
            displacy.render(sent, style = 'ent')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多