#python #spacy #huggingface-transformers #named-entity-recognition
Вопрос:
Я использую NER (spacy amp; 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')
Ответ №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')