Итак, я ввел фрейм данных предложений для предсказания токена в BERT, и я получил в качестве вывода вместе с предсказаниями предложения, разбитые на слова. Теперь я хочу вернуть мой фрейм данных разделенных / токенизированных предложений и прогнозов обратно к исходному предложению (конечно, у меня есть исходное предложение, но мне нужно сделать этот процесс, чтобы прогнозы согласовывались с токенами предложений)
original sentence
You couldn't have done any better because if you could have, you would have.
Post processing
['[CLS]', 'You', 'couldn', "'", 't', 'have', 'done', 'any', 'better', 'because', 'if', 'you', 'could', 'have', ',', 'you', 'would', 'have', '.', '[SEP]']
Я определил три необходимых процесса. 1. Удалите кавычки 2. Удалите CLS, SEP и их лишние кавычки и запятые, 3. Удалите запятые, разделяющие слова, и объедините их.
def fix_df(row):
sentences = row['t_words']
return remove_edges(sentences)
def remove_edges(sentences):
x = sentences[9:-9]
return remove_qmarks(x)
def remove_qmarks(x):
y = x.replace("'", "")
return join(y)
def join(y):
z = ' '.join(y)
return z
a_df['sents'] = a_df.apply(fix_df, axis=1)
Первые две функции в основном работали правильно, а последняя - нет. вместо этого я получил результат, который выглядел так.
Y o u , c o u l d n , " " , t , h a v e, d o n e ,...
Запятые не исчезли, а текст был искажен. Я определенно что-то упускаю. что это могло быть?
row['t_words']
? - person Anwarvic   schedule 27.04.2020remove_qmarks()
наy = x.replace(",", "")
. Иz = ''.join(y)
вjoin()
функции. - person Anwarvic   schedule 27.04.2020