Ошибка токенизации Берта ValueError: ввод nan недействителен. Должна быть строка, список/кортеж строк или список/кортеж целых чисел

Я использую Bert для задачи классификации текста, когда пытаюсь токенизировать один образец данных, используя код:

encoded_sent = tokenizer.encode(
                        sentences[7],                       
                        add_special_tokens = True)

все идет хорошо, но когда я пытаюсь токенизировать все данные, используя код:

# For every sentence...
for sent in sentences:
    
    encoded_sent = tokenizer.encode(
                        sent,                       
                        add_special_tokens = True)

это дает мне ошибку:

"ValueError: Input nan is not valid. Should be a string, a list/tuple of strings or a list/tuple of integers."

Я попробовал данные на английском языке, которые были кем-то успешно токенизированы, и получил ту же ошибку. Вот как я загружаю свои данные:

import pandas as pd

df=pd.read_csv("/content/DATA.csv",header=0,dtype=str)
DATA_COLUMN = 'sentence'
LABEL_COLUMN = 'label'
df.columns = [DATA_COLUMN, LABEL_COLUMN]

df["sentence"].head

и вот как я загружаю токенизатор:

# Load the BERT tokenizer.
print('Loading BERT tokenizer...')
tokenizer = AutoTokenizer.from_pretrained('aubmindlab/bert-base-arabert')

образец моих данных:

Оригинал: مساعد نائب رئيس المنزل: لم نر حتى رسالة كومي حتى غردها جيسون تشافيتز

Токенизировано: ['مساعد', 'نائب', 'رئيس', 'ال', '##منزل', ':', 'لم', 'نر', 'حتى', 'رسال', '##ة' , 'كومي', 'حتى', 'غرد', '##ها', 'جيسون', 'تشافي', '##ت', '##ز']

любые предложения, пожалуйста?!


person Yaman Afadar    schedule 04.11.2020    source источник
comment
Пожалуйста, опубликуйте еще немного кода. Можете ли вы показать пример переменной предложений?   -  person Stefano Fiorucci - anakin87    schedule 04.11.2020
comment
Пожалуйста, перепроверьте, я предоставляю больше информации. @anakin87   -  person Yaman Afadar    schedule 04.11.2020
comment
Вставьте print (sent) и print (type(sent)) в цикл for и сообщите о результатах. Наверное, там что-то не так.   -  person Stefano Fiorucci - anakin87    schedule 05.11.2020
comment
Большое спасибо! в наборе данных были некоторые данные с плавающей запятой под именем nan.   -  person Yaman Afadar    schedule 05.11.2020


Ответы (1)


Похоже, что ваши данные содержат значения NAN, чтобы решить эту проблему, вам необходимо исключить значения NAN или преобразовать все данные в строку (локальное решение).

Попробуйте использовать:

encoded_sent = tokenizer.encode(
        str(sent),                       
        add_special_tokens = True)

Если вы уверены, что набор данных не учитывает значения NAN, вы можете использовать это решение или определить, содержит ли ваш набор данных значения NAN, которые вы можете использовать:

for sent in sentences: 
    print(sent) 
    encoded_sent = tokenizer.encode( sent, add_special_tokens = True)
person rulcaster    schedule 15.03.2021
comment
Привет и добро пожаловать в Stack Overflow. Если бы вы объяснили, как работает ваш ответ, качество вашего ответа улучшилось бы. Даже просто краткое изложение может очень помочь! - person Ruzihm; 16.03.2021
comment
кажется, что его данные содержат значения NAN, чтобы решить эту проблему, он должен исключить значения NAN или преобразовать все данные в строку (локальное решение). Если он уверен, что набор данных не учитывает значения NAN, он может использовать это решение или определить, содержит ли его набор данных значения NAN, которые он может использовать: для отправленных в предложениях: Истинный) - person rulcaster; 21.04.2021