Ошибка вида json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) указывает на то, что при чтении файла с датасетом какой-то из line (строка) не является корректным JSON (либо пуста, либо содержит пробелы / недопустимые символы).
Наиболее частые причины:
- В файле dataset.jsonl есть пустые строки.
- В файле dataset.jsonl есть неверно сформированный JSON. Например, какая-то строка содержит данные не в формате JSON или содержит «мусорные» символы.
Некорректная кодировка файла или наличие невидимых символов (например, BOM).
Способы решения:
1. Убедиться, что каждая строка в dataset.jsonl – валидный JSON
Если ваш файл dataset.jsonl должен выглядеть в стиле:
{"text": "Пример текста 1"}
{"text": "Пример текста 2"}
{"text": "Пример текста 3"}
то каждая строка должна точно содержать корректный JSON-объект и не иметь пустых строк.
Убедитесь, что в конце файла нет лишних пустых строк.
2. Пропуск пустых строк при чтении
Если в вашем датасете точно могут встречаться пустые строки и вы хотите их игнорировать, можете добавить проверку. Например:
def load_data(self, dataset_path):
corpus = []
with open(dataset_path, 'r', encoding='utf-8') as file:
for line in file:
line = line.strip()
if not line:
# Пустая строка – пропускаем
continue
data = json.loads(line) # Тут возможен json.JSONDecodeError, если формат неверен
if 'text' in data:
corpus.append(data['text'])
return corpus
Здесь перед json.loads() мы удаляем пробелы по краям и пропускаем, если строка пустая.
3. Обработка ошибок парсинга (если есть заведомо «плохие» строки)
Если в некоторых строках может быть неправильный JSON и вы хотите продолжить обработку, можно добавить try-except. Но лучше, конечно, поправить сам датасет, чтобы таких проблем не было.
def load_data(self, dataset_path):
corpus = []
with open(dataset_path, 'r', encoding='utf-8') as file:
for line in file:
line = line.strip()
if not line:
continue
try:
data = json.loads(line)
if 'text' in data:
corpus.append(data['text'])
except json.JSONDecodeError:
print(f"Некорректная строка: {line}")
continue
return corpus
4. Проверить кодировку файла
Иногда проблема появляется при наличии BOM или неправильной кодировке. Убедитесь, что ваш dataset.jsonl – в UTF-8 (без BOM).
В большинстве современных редакторов кода есть возможность пересохранить файл в правильной кодировке.
Если вы открываете файл в Notepad (Windows) – будьте внимательны, чтобы не появился BOM.
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Сам код (думаю, что ошибка происходит на этапе выполнения функции load_data, в качестве датасета), в котором что-то не так: